modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/builtins/complex-1.c (about)

     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
    20  main_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  }