1 /* Copyright (C) 2003 Free Software Foundation. 2 3 Check that built-in cabs, cabsf and cabsl functions don't 4 break anything and produces the expected results. 5 6 Written by Roger Sayle, 1st June 2003. */ 7 8 /* { dg-do link } */ 9 /* { dg-options "-O2 -ffast-math" } */ 10 11 #include "builtins-config.h" 12 13 extern void link_error(void); 14 15 extern float cabsf (float _Complex); 16 extern double cabs (double _Complex); 17 extern long double cabsl (long double _Complex); 18 19 int main(void)20main (void) 21 { 22 /* For each type, test both runtime and compile time (constant folding) 23 optimization. */ 24 float _Complex fc = 3.0F + 4.0iF; 25 double _Complex dc = 3.0 + 4.0i; 26 long double _Complex ldc = 3.0L + 4.0iL; 27 28 #ifdef HAVE_C99_RUNTIME 29 /* Test floats. */ 30 if (cabsf (fc) != 5.0F) 31 link_error (); 32 if (__builtin_cabsf (fc) != 5.0F) 33 link_error (); 34 if (cabsf (3.0F + 4.0iF) != 5.0F) 35 link_error (); 36 if (__builtin_cabsf (3.0F + 4.0iF) != 5.0F) 37 link_error (); 38 #endif 39 40 /* Test doubles. */ 41 if (cabs (dc) != 5.0) 42 link_error (); 43 if (__builtin_cabs (dc) != 5.0) 44 link_error (); 45 if (cabs (3.0 + 4.0i) != 5.0) 46 link_error (); 47 if (__builtin_cabs (3.0 + 4.0i) != 5.0) 48 link_error (); 49 50 #ifdef HAVE_C99_RUNTIME 51 /* Test long doubles. */ 52 if (cabsl (ldc) != 5.0L) 53 link_error (); 54 if (__builtin_cabsl (ldc) != 5.0L) 55 link_error (); 56 if (cabsl (3.0L + 4.0iL) != 5.0L) 57 link_error (); 58 if (__builtin_cabsl (3.0L + 4.0iL) != 5.0L) 59 link_error (); 60 #endif 61 62 return 0; 63 } 64 65