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