1 /* Test for builtin conj, creal, cimag. */ 2 /* Origin: Joseph Myers <jsm28@cam.ac.uk> */ 3 4 extern float _Complex conjf (float _Complex); 5 extern double _Complex conj (double _Complex); 6 extern long double _Complex conjl (long double _Complex); 7 8 extern float crealf (float _Complex); 9 extern double creal (double _Complex); 10 extern long double creall (long double _Complex); 11 12 extern float cimagf (float _Complex); 13 extern double cimag (double _Complex); 14 extern long double cimagl (long double _Complex); 15 16 extern void abort (void); 17 extern void link_error (void); 18 19 void main_test(void)20main_test (void) 21 { 22 /* For each type, test both runtime and compile time (constant folding) 23 optimization. */ 24 volatile float _Complex fc = 1.0F + 2.0iF; 25 volatile double _Complex dc = 1.0 + 2.0i; 26 volatile long double _Complex ldc = 1.0L + 2.0iL; 27 /* Test floats. */ 28 if (conjf (fc) != 1.0F - 2.0iF) 29 abort (); 30 if (__builtin_conjf (fc) != 1.0F - 2.0iF) 31 abort (); 32 if (conjf (1.0F + 2.0iF) != 1.0F - 2.0iF) 33 link_error (); 34 if (__builtin_conjf (1.0F + 2.0iF) != 1.0F - 2.0iF) 35 link_error (); 36 if (crealf (fc) != 1.0F) 37 abort (); 38 if (__builtin_crealf (fc) != 1.0F) 39 abort (); 40 if (crealf (1.0F + 2.0iF) != 1.0F) 41 link_error (); 42 if (__builtin_crealf (1.0F + 2.0iF) != 1.0F) 43 link_error (); 44 if (cimagf (fc) != 2.0F) 45 abort (); 46 if (__builtin_cimagf (fc) != 2.0F) 47 abort (); 48 if (cimagf (1.0F + 2.0iF) != 2.0F) 49 link_error (); 50 if (__builtin_cimagf (1.0F + 2.0iF) != 2.0F) 51 link_error (); 52 /* Test doubles. */ 53 if (conj (dc) != 1.0 - 2.0i) 54 abort (); 55 if (__builtin_conj (dc) != 1.0 - 2.0i) 56 abort (); 57 if (conj (1.0 + 2.0i) != 1.0 - 2.0i) 58 link_error (); 59 if (__builtin_conj (1.0 + 2.0i) != 1.0 - 2.0i) 60 link_error (); 61 if (creal (dc) != 1.0) 62 abort (); 63 if (__builtin_creal (dc) != 1.0) 64 abort (); 65 if (creal (1.0 + 2.0i) != 1.0) 66 link_error (); 67 if (__builtin_creal (1.0 + 2.0i) != 1.0) 68 link_error (); 69 if (cimag (dc) != 2.0) 70 abort (); 71 if (__builtin_cimag (dc) != 2.0) 72 abort (); 73 if (cimag (1.0 + 2.0i) != 2.0) 74 link_error (); 75 if (__builtin_cimag (1.0 + 2.0i) != 2.0) 76 link_error (); 77 /* Test long doubles. */ 78 if (conjl (ldc) != 1.0L - 2.0iL) 79 abort (); 80 if (__builtin_conjl (ldc) != 1.0L - 2.0iL) 81 abort (); 82 if (conjl (1.0L + 2.0iL) != 1.0L - 2.0iL) 83 link_error (); 84 if (__builtin_conjl (1.0L + 2.0iL) != 1.0L - 2.0iL) 85 link_error (); 86 if (creall (ldc) != 1.0L) 87 abort (); 88 if (__builtin_creall (ldc) != 1.0L) 89 abort (); 90 if (creall (1.0L + 2.0iL) != 1.0L) 91 link_error (); 92 if (__builtin_creall (1.0L + 2.0iL) != 1.0L) 93 link_error (); 94 if (cimagl (ldc) != 2.0L) 95 abort (); 96 if (__builtin_cimagl (ldc) != 2.0L) 97 abort (); 98 if (cimagl (1.0L + 2.0iL) != 2.0L) 99 link_error (); 100 if (__builtin_cimagl (1.0L + 2.0iL) != 2.0L) 101 link_error (); 102 } 103