1 /* Tail call optimizations would reverse the order of additions in func(). */ 2 func(const double * array)3double 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 main()12int 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 } 19