1 /* Copyright (C) 2003, 2006 Free Software Foundation. 2 3 Verify that built-in math function constant folding of functions 4 with one constant argument is correctly performed by the compiler. 5 6 Written by Roger Sayle, 30th March 2003. */ 7 8 /* { dg-do run } */ 9 /* { dg-options "-O2 -ffast-math" } */ 10 11 extern void abort(void); 12 extern double pow(double, double); 13 extern double sqrt(double); 14 extern double cbrt(double); 15 test(double x)16void test(double x) 17 { 18 if (pow(x,-1.0) != 1.0/x) 19 abort (); 20 21 if (pow(x,2.0) != x*x) 22 abort (); 23 24 if (pow(x,-2.0) != 1.0/(x*x)) 25 abort (); 26 27 if (pow(x,0.5) != sqrt(x)) 28 abort (); 29 30 #ifdef HAVE_C99_RUNTIME 31 if (pow(x,1.0/3.0) != cbrt(x)) 32 abort (); 33 #endif 34 } 35 main()36int main() 37 { 38 test (1.0); 39 test (2.0); 40 return 0; 41 } 42 43