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