| /* Tail call optimizations would reverse the order of multiplications | |
| in func(). */ | |
| double func (const double *array) | |
| { | |
| double d = *array; | |
| if (d == 1.0) | |
| return d; | |
| else | |
| return d * func (array + 1); | |
| } | |
| int main () | |
| { | |
| double values[] = { __DBL_MAX__, 2.0, 0.5, 1.0 }; | |
| if (func (values) != __DBL_MAX__) | |
| abort (); | |
| exit (0); | |
| } |