#include <stdio.h>
#include <stdlib.h>
int max_int(){
int t1=1,t2=1,d=1,p;
for(;;){
t2=t1+d;
if (t2-t1==t2 || t2<0){
d/=2;
continue;
}
if (t1==t2)
return t2;
if (t2>0){
p=d*2;
if (p>0 && p-d!=p)
d=p;
t1=t2;
continue;
}
}
}
int min_int(){
int t1=-1,t2=-1,d=1,p;
for(;;){
t2=t1-d;
if (t2+t1==t2 || t2>0){
d/=2;
continue;
}
if (t1==t2)
return t2; if (t2<0){
p=d*2;
if (p>0 && p-d!=p)
d=p;
t1=t2;
continue;
}
}
}
float max_float(){
float t1=1,t2=1,d=1,p;
for(;;){
t2=t1+d;
if (t2-t1==t2 || t2<0){
d/=2;
continue;
}
if (t1==t2)
return t2;
if (t2>0){
p=d*2;
if (p>0 && p-d!=p)
d=p;
t1=t2;
continue;
}
}
}
float min_float(){
float t1=-1,t2=-1,d=1,p;
for(;;){
t2=t1-d;
if (t2+t1==t2 || t2>0){
d/=2;
continue;
}
if (t1==t2)
return t2; if (t2<0){
p=d*2;
if (p>0 && p-d!=p)
d=p;
t1=t2;
continue;
}
}
}
double max_double(){
double t1=1,t2=1,d=1,p;
for(;;){
t2=t1+d;
if (t2-t1==t2 || t2<0){
d/=2;
continue;
}
if (t1==t2)
return t2;
if (t2>0){
p=d*2;
if (p>0 && p-d!=p)
d=p;
t1=t2;
continue;
}
}
}
double min_double(){
double t1=-1,t2=-1,d=1,p;
for(;;){
t2=t1-d;
if (t2+t1==t2 || t2>0){
d/=2;
continue;
}
if (t1==t2)
return t2; if (t2<0){
p=d*2;
if (p>0 && p-d!=p)
d=p;
t1=t2;
continue;
}
}
}
long double max_extended(){
long double t1=1,t2=1,d=1,p;
for(;;){
t2=t1+d;
if (t2-t1==t2 || t2<0){
d/=2;
continue;
}
if (t1==t2)
return t2;
if (t2>0){
p=d*2;
if (p>0 && p-d!=p)
d=p;
t1=t2;
continue;
}
}
}
long double min_extended(){
long double t1=-1,t2=-1,d=1,p;
for(;;){
t2=t1-d;
if (t2+t1==t2 || t2>0){
d/=2;
continue;
}
if (t1==t2)
return t2; if (t2<0){
p=d*2;
if (p>0 && p-d!=p)
d=p;
t1=t2;
continue;
}
}
}
int main()
{
printf("int %d ... %d\n",max_int
(),min_int
()); printf("float %e ... %e\n",max_float
(),min_float
()); printf("double %e ... %e\n",max_double
(),min_double
()); printf("long double %Le ... %Le\n",max_extended
(),min_extended
());
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCgppbnQgbWF4X2ludCgpewogICBpbnQgdDE9MSx0Mj0xLGQ9MSxwOwogICBmb3IoOzspewogICAgICB0Mj10MStkOwogICAgICBpZiAodDItdDE9PXQyIHx8IHQyPDApewogICAgICAgICBkLz0yOwogICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICBpZiAodDE9PXQyKQogICAgICAgICByZXR1cm4gdDI7CiAgICAgIGlmICh0Mj4wKXsKICAgICAgICAgcD1kKjI7CiAgICAgICAgIGlmIChwPjAgJiYgcC1kIT1wKQogICAgICAgICAgICBkPXA7CiAgICAgICAgIHQxPXQyOwogICAgICAgICBjb250aW51ZTsKICAgICAgfQogICB9Cn0KCgppbnQgbWluX2ludCgpewogICBpbnQgdDE9LTEsdDI9LTEsZD0xLHA7CiAgIGZvcig7Oyl7CiAgICAgIHQyPXQxLWQ7CiAgICAgIGlmICh0Mit0MT09dDIgfHwgdDI+MCl7CiAgICAgICAgIGQvPTI7CiAgICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGlmICh0MT09dDIpCiAgICAgICAgIHJldHVybiB0MjsgaWYgKHQyPDApewogICAgICAgICBwPWQqMjsKICAgICAgICAgaWYgKHA+MCAmJiBwLWQhPXApCiAgICAgICAgICAgIGQ9cDsKICAgICAgICAgdDE9dDI7CiAgICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgIH0KfQoKZmxvYXQgbWF4X2Zsb2F0KCl7CiAgIGZsb2F0IHQxPTEsdDI9MSxkPTEscDsKICAgZm9yKDs7KXsKICAgICAgdDI9dDErZDsKICAgICAgaWYgKHQyLXQxPT10MiB8fCB0MjwwKXsKICAgICAgICAgZC89MjsKICAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaWYgKHQxPT10MikKICAgICAgICAgcmV0dXJuIHQyOwogICAgICBpZiAodDI+MCl7CiAgICAgICAgIHA9ZCoyOwogICAgICAgICBpZiAocD4wICYmIHAtZCE9cCkKICAgICAgICAgICAgZD1wOwogICAgICAgICB0MT10MjsKICAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgfQp9CgoKZmxvYXQgbWluX2Zsb2F0KCl7CiAgIGZsb2F0IHQxPS0xLHQyPS0xLGQ9MSxwOwogICBmb3IoOzspewogICAgICB0Mj10MS1kOwogICAgICBpZiAodDIrdDE9PXQyIHx8IHQyPjApewogICAgICAgICBkLz0yOwogICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICBpZiAodDE9PXQyKQogICAgICAgICByZXR1cm4gdDI7IGlmICh0MjwwKXsKICAgICAgICAgcD1kKjI7CiAgICAgICAgIGlmIChwPjAgJiYgcC1kIT1wKQogICAgICAgICAgICBkPXA7CiAgICAgICAgIHQxPXQyOwogICAgICAgICBjb250aW51ZTsKICAgICAgfQogICB9Cn0KCgpkb3VibGUgbWF4X2RvdWJsZSgpewogICBkb3VibGUgdDE9MSx0Mj0xLGQ9MSxwOwogICBmb3IoOzspewogICAgICB0Mj10MStkOwogICAgICBpZiAodDItdDE9PXQyIHx8IHQyPDApewogICAgICAgICBkLz0yOwogICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICBpZiAodDE9PXQyKQogICAgICAgICByZXR1cm4gdDI7CiAgICAgIGlmICh0Mj4wKXsKICAgICAgICAgcD1kKjI7CiAgICAgICAgIGlmIChwPjAgJiYgcC1kIT1wKQogICAgICAgICAgICBkPXA7CiAgICAgICAgIHQxPXQyOwogICAgICAgICBjb250aW51ZTsKICAgICAgfQogICB9Cn0KCgpkb3VibGUgbWluX2RvdWJsZSgpewogICBkb3VibGUgdDE9LTEsdDI9LTEsZD0xLHA7CiAgIGZvcig7Oyl7CiAgICAgIHQyPXQxLWQ7CiAgICAgIGlmICh0Mit0MT09dDIgfHwgdDI+MCl7CiAgICAgICAgIGQvPTI7CiAgICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGlmICh0MT09dDIpCiAgICAgICAgIHJldHVybiB0MjsgaWYgKHQyPDApewogICAgICAgICBwPWQqMjsKICAgICAgICAgaWYgKHA+MCAmJiBwLWQhPXApCiAgICAgICAgICAgIGQ9cDsKICAgICAgICAgdDE9dDI7CiAgICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgIH0KfQoKCmxvbmcgZG91YmxlIG1heF9leHRlbmRlZCgpewogIGxvbmcgIGRvdWJsZSB0MT0xLHQyPTEsZD0xLHA7CiAgIGZvcig7Oyl7CiAgICAgIHQyPXQxK2Q7CiAgICAgIGlmICh0Mi10MT09dDIgfHwgdDI8MCl7CiAgICAgICAgIGQvPTI7CiAgICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGlmICh0MT09dDIpCiAgICAgICAgIHJldHVybiB0MjsKICAgICAgaWYgKHQyPjApewogICAgICAgICBwPWQqMjsKICAgICAgICAgaWYgKHA+MCAmJiBwLWQhPXApCiAgICAgICAgICAgIGQ9cDsKICAgICAgICAgdDE9dDI7CiAgICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgIH0KfQoKCmxvbmcgZG91YmxlIG1pbl9leHRlbmRlZCgpewogICBsb25nIGRvdWJsZSB0MT0tMSx0Mj0tMSxkPTEscDsKICAgZm9yKDs7KXsKICAgICAgdDI9dDEtZDsKICAgICAgaWYgKHQyK3QxPT10MiB8fCB0Mj4wKXsKICAgICAgICAgZC89MjsKICAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaWYgKHQxPT10MikKICAgICAgICAgcmV0dXJuIHQyOyBpZiAodDI8MCl7CiAgICAgICAgIHA9ZCoyOwogICAgICAgICBpZiAocD4wICYmIHAtZCE9cCkKICAgICAgICAgICAgZD1wOwogICAgICAgICB0MT10MjsKICAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgfQp9CgoKCgppbnQgbWFpbigpCnsKICAgcHJpbnRmKCJpbnQgJWQgLi4uICVkXG4iLG1heF9pbnQoKSxtaW5faW50KCkpOwogICBwcmludGYoImZsb2F0ICVlIC4uLiAlZVxuIixtYXhfZmxvYXQoKSxtaW5fZmxvYXQoKSk7CiAgIHByaW50ZigiZG91YmxlICVlIC4uLiAlZVxuIixtYXhfZG91YmxlKCksbWluX2RvdWJsZSgpKTsKICAgcHJpbnRmKCJsb25nIGRvdWJsZSAlTGUgLi4uICVMZVxuIixtYXhfZXh0ZW5kZWQoKSxtaW5fZXh0ZW5kZWQoKSk7CgoKICAgcmV0dXJuIDA7Cn0K