1  void 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  
      27  int 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  }