/* Tail call optimizations would reverse the order of additions in func(). */ double func (const double *array) { double d = *array; if (d == 0.0) return d; else return d + func (array + 1); } int main () { double values[] = { 0.1e-100, 1.0, -1.0, 0.0 }; if (func (values) != 0.1e-100) abort (); exit (0); }