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

     1  /* { dg-skip-if "requires io" { freestanding } }  */
     2  
     3  /* This test tests complex conjugate and passing/returning of
     4     complex parameter.  */
     5  
     6  #include <stdlib.h>
     7  #include <stdio.h>
     8  
     9  int err;
    10  
    11  #define TEST(TYPE, FUNC)					\
    12  __complex__ TYPE						\
    13  ctest_ ## FUNC (__complex__ TYPE x)				\
    14  {								\
    15    __complex__ TYPE res;						\
    16  								\
    17    res = ~x;							\
    18  								\
    19    return res;							\
    20  }								\
    21  								\
    22  void								\
    23  test_ ## FUNC (void)						\
    24  {								\
    25    __complex__ TYPE res, x;					\
    26  								\
    27    x = 1.0 + 2.0i;						\
    28  								\
    29    res = ctest_ ## FUNC (x);					\
    30  								\
    31    if (res != 1.0 - 2.0i)					\
    32      {								\
    33        printf ("test_" #FUNC " failed\n");			\
    34        ++err;							\
    35      }								\
    36  }
    37  
    38  
    39  TEST(float, float)
    40  TEST(double, double)
    41  TEST(long double, long_double)
    42  TEST(int, int)
    43  TEST(long int, long_int)
    44  
    45  int
    46  main (void)
    47  {
    48  
    49    err = 0;
    50  
    51    test_float ();
    52    test_double ();
    53    test_long_double ();
    54    test_int ();
    55    test_long_int ();
    56  
    57    if (err != 0)
    58      abort ();
    59  
    60    return 0;
    61  }