| void test(long double val, int *eval) | |
| { | |
| long double tmp = 1.0l; | |
| int i = 0; | |
| if (val < 0.0l) | |
| val = -val; | |
| if (val >= tmp) | |
| while (tmp < val) | |
| { | |
| tmp *= 2.0l; | |
| if (i++ >= 10) | |
| abort (); | |
| } | |
| else if (val != 0.0l) | |
| while (val < tmp) | |
| { | |
| tmp /= 2.0l; | |
| if (i++ >= 10) | |
| abort (); | |
| } | |
| *eval = i; | |
| } | |
| int main(void) | |
| { | |
| int eval; | |
| test(3.0, &eval); | |
| test(3.5, &eval); | |
| test(4.0, &eval); | |
| test(5.0, &eval); | |
| exit (0); | |
| } |