(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
torture/
builtin-round-roundeven.c
       1  /* { dg-do link } */
       2  
       3  extern int link_error (int);
       4  
       5  #define TEST(FN, VALUE, RESULT) \
       6    if (__builtin_##FN (VALUE) != RESULT) link_error (__LINE__);
       7  
       8  int
       9  main (void)
      10  {
      11    TEST(roundeven,  0, 0);
      12    TEST(roundeven,  0.5, 0);
      13    TEST(roundeven,  -0.5, 0);
      14    TEST(roundeven,  6, 6);
      15    TEST(roundeven,  -8, -8);
      16    TEST(roundeven,  2.5, 2);
      17    TEST(roundeven,  3.5, 4);
      18    TEST(roundeven,  -1.5, -2);
      19    TEST(roundeven,  3.499, 3);
      20    TEST(roundeven,  3.501, 4);
      21    TEST(roundeven,  __DBL_MAX__, __DBL_MAX__);
      22    TEST(roundeven,  -__DBL_MAX__, -__DBL_MAX__);
      23    TEST(roundeven,  __builtin_inf (), __builtin_inf ());
      24    TEST(roundeven,  -__builtin_inf (), -__builtin_inf ());
      25  
      26    if (!__builtin_isnan (__builtin_roundeven (__builtin_nan (""))))
      27      link_error (__LINE__);
      28  
      29    if (__builtin_copysign (1, __builtin_roundeven (-0.5)) != -1)
      30      link_error (__LINE__);
      31    if (__builtin_copysign (1, __builtin_roundeven (-0.0)) != -1)
      32      link_error (__LINE__);
      33    if (__builtin_copysign (-1, __builtin_roundeven (0.5)) != 1)
      34      link_error (__LINE__);
      35    if (__builtin_copysign (-1, __builtin_roundeven (0.0)) != 1)
      36      link_error (__LINE__);
      37    if (__builtin_copysign (1, __builtin_roundeven (-0.25)) != -1)
      38      link_error (__LINE__);
      39    if (__builtin_copysign (-1, __builtin_roundeven (0.25)) != 1)
      40      link_error (__LINE__);
      41    return 0;
      42  }