#include <math.h>
#include <float.h>
+#include <stdio.h>
#include <stdlib.h>
#include "fpucw.h"
#include "isnanl-nolibm.h"
-#define ASSERT(expr) if (!(expr)) abort ();
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ abort (); \
+ } \
+ } \
+ while (0)
int
main ()
{ /* Positive zero. */
x = 0.0L;
- y = ldexpl (x, 0); ASSERT (y == x);
- y = ldexpl (x, 5); ASSERT (y == x);
- y = ldexpl (x, -5); ASSERT (y == x);
+ y = ldexpl (x, 0); ASSERT (y == x); ASSERT (!signbit (x));
+ y = ldexpl (x, 5); ASSERT (y == x); ASSERT (!signbit (x));
+ y = ldexpl (x, -5); ASSERT (y == x); ASSERT (!signbit (x));
}
{ /* Negative zero. */
x = -0.0L;
- y = ldexpl (x, 0); ASSERT (y == x);
- y = ldexpl (x, 5); ASSERT (y == x);
- y = ldexpl (x, -5); ASSERT (y == x);
+ y = ldexpl (x, 0); ASSERT (y == x); ASSERT (signbit (x));
+ y = ldexpl (x, 5); ASSERT (y == x); ASSERT (signbit (x));
+ y = ldexpl (x, -5); ASSERT (y == x); ASSERT (signbit (x));
}
{ /* Positive finite number. */