1void test(long double val, int *eval) 2{ 3 long double tmp = 1.0l; 4 int i = 0; 5 6 if (val < 0.0l) 7 val = -val; 8 9 if (val >= tmp) 10 while (tmp < val) 11 { 12 tmp *= 2.0l; 13 if (i++ >= 10) 14 abort (); 15 } 16 else if (val != 0.0l) 17 while (val < tmp) 18 { 19 tmp /= 2.0l; 20 if (i++ >= 10) 21 abort (); 22 } 23 24 *eval = i; 25} 26 27int main(void) 28{ 29 int eval; 30 31 test(3.0, &eval); 32 test(3.5, &eval); 33 test(4.0, &eval); 34 test(5.0, &eval); 35 exit (0); 36} 37