1  /* Tail call optimizations would reverse the order of additions in func().  */
       2  
       3  double func (const double *array)
       4  {
       5    double d = *array;
       6    if (d == 0.0)
       7      return d;
       8    else
       9      return d + func (array + 1);
      10  }
      11  
      12  int main ()
      13  {
      14    double values[] = { 0.1e-100, 1.0, -1.0, 0.0 };
      15    if (func (values) != 0.1e-100)
      16      abort ();
      17    exit (0);
      18  }