42 lines
813 B
C
42 lines
813 B
C
/* { dg-do run } */
|
|
/* { dg-options "-O1 -funroll-loops" } */
|
|
/* { dg-add-options ieee } */
|
|
|
|
extern void exit (int);
|
|
extern void abort (void);
|
|
|
|
void
|
|
compare (double a, double b)
|
|
{
|
|
do
|
|
{
|
|
double s1 = __builtin_copysign ((double) 1.0, a);
|
|
double s2 = __builtin_copysign ((double) 1.0, b);
|
|
|
|
if (s1 != s2)
|
|
abort ();
|
|
|
|
if ((__builtin_isnan (a) != 0) != (__builtin_isnan (b) != 0))
|
|
abort ();
|
|
|
|
if ((a != b) != (__builtin_isnan (a) != 0))
|
|
abort ();
|
|
} while (0);
|
|
}
|
|
|
|
int
|
|
main ()
|
|
{
|
|
double a = 0.0;
|
|
double b = 0.0;
|
|
_Complex double cr = __builtin_complex (a, b);
|
|
static _Complex double cs = __builtin_complex (0.0, 0.0);
|
|
|
|
compare (__real__ cr, 0.0);
|
|
compare (__imag__ cr, 0.0);
|
|
compare (__real__ cs, 0.0);
|
|
compare (__imag__ cs, 0.0);
|
|
|
|
exit (0);
|
|
}
|