modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20020413-1.c (about)

     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  }