1/* Copyright (C) 2004 Free Software Foundation. 2 3 Check that constant folding of copysign, copysignf and copysignl math 4 functions doesn't break anything and produces the expected results. 5 6 Written by Roger Sayle, 6th June 2004. */ 7 8/* { dg-do link } */ 9/* { dg-options "-O2" } */ 10 11extern void link_error(void); 12 13extern double copysign(double, double); 14extern float copysignf(float, float); 15extern long double copysignl(long double, long double); 16 17int main() 18{ 19 if (copysign (2.0, 1.0) != 2.0) 20 link_error (); 21 if (copysign (2.0, -1.0) != -2.0) 22 link_error (); 23 if (copysign (-2.0, 1.0) != 2.0) 24 link_error (); 25 if (copysign (-2.0, -1.0) != -2.0) 26 link_error (); 27 28 if (copysign (2.0, 1.0) != 2.0) 29 link_error (); 30 if (copysign (2.0, -1.0) != -2.0) 31 link_error (); 32 if (copysign (-2.0, 1.0) != 2.0) 33 link_error (); 34 if (copysign (-2.0, -1.0) != -2.0) 35 link_error (); 36 37 if (copysignf (2.0f, 1.0f) != 2.0f) 38 link_error (); 39 if (copysignf (2.0f, -1.0f) != -2.0f) 40 link_error (); 41 if (copysignf (-2.0f, 1.0f) != 2.0f) 42 link_error (); 43 if (copysignf (-2.0f, -1.0f) != -2.0f) 44 link_error (); 45 46 if (copysignl (2.0l, 1.0l) != 2.0l) 47 link_error (); 48 if (copysignl (2.0l, -1.0l) != -2.0l) 49 link_error (); 50 if (copysignl (-2.0l, 1.0l) != 2.0l) 51 link_error (); 52 if (copysignl (-2.0l, -1.0l) != -2.0l) 53 link_error (); 54 55 return 0; 56} 57 58