blob: a564fc62d479d780db3cf721848c150db1fdbd5c [file] [log] [blame]
#ifndef LONG_DOUBLE_WF_H
#define LONG_DOUBLE_WF_H 1
#include <math.h>
#define ADD(x, y, z) ((x) + (z))
#define DIV(x, y, z) ((x) / (z))
#define FABSL(x, y, z) (fabsl (y))
#define ISINFL(x, y, z) (isinfl (x) ? (y) : (z))
#define MUL(x, y, z) ((x) * (z))
#define MUL_ADD(x, y, z) ((x) * (y) + (z))
#define MUL_SUB(x, y, z) ((x) * (y) - (z))
#define NEG(x, y, z) \
({ \
volatile long double r = -(y); \
r; \
})
#define NEG_MUL_ADD(x, y, z) NEG (0, MUL_ADD (x, y, z), 0)
#define NEG_MUL_SUB(x, y, z) NEG (0, MUL_SUB (x, y, z), 0)
#define QUIET_IFEQUAL(x, y, z) ((x) == (y) ? (z) : 0)
#define QUIET_IFGREATER(x, y, z) (__builtin_isgreater (x, y) ? (z) : 0)
#define QUIET_IFLESS(x, y, z) (__builtin_isless (x, y) ? (z) : 0)
#define QUIET_IFUNORDERED(x, y, z) (__builtin_isunordered (x, y) ? (z) : 0)
#define SIGNALING_IFEQUAL(x, y, z) (((x) >= (y) && (x) <= (y)) ? (z) : 0)
#define SIGNALING_IFGREATER(x, y, z) ((x) > (y) ? (z) : 0)
#define SIGNALING_IFLESS(x, y, z) ((x) < (y) ? (z) : 0)
#define ROUNDL(x, y, z) (roundl (y))
#define SQRTL(x, y, z) (sqrtl (y))
#define SUB(x, y, z) ((x) - (z))
#define LONG_DOUBLE_WF(op) \
long double test ( \
long double x0, long double x1, long double x2, long double x3, \
long double x4, long double x5, long double x6, long double x7, \
long double x8, long double x9, long double x10, long double x11, \
long double x12, long double x13, long double x14, long double x15) \
{ \
while (x15 < 1E+30) \
{ \
x0 = op (x1, x2, x3); \
x1 = op (x2, x3, x4) + 1; \
x2 = op (x3, x4, x5) + 2; \
x3 = op (x4, x5, x6) + 3; \
x4 = op (x5, x6, x7) + 4; \
x5 = op (x6, x7, x8) + 5; \
x6 = op (x7, x8, x9) + 6; \
x7 = op (x8, x9, x10) + 7; \
x8 = op (x9, x10, x11) + 8; \
x9 = op (x10, x11, x12) + 9; \
x10 = op (x11, x12, x13) + 10; \
x11 = op (x12, x13, x14) + 11; \
x12 = op (x13, x14, x15) + 12; \
x13 = op (x14, x15, x0) + 13; \
x14 = op (x15, x0, x1) + 14; \
x15 = op (x0, x1, x2) + 15; \
} \
return x15; \
}
#endif