int main(void) { assert(floor(2.7) == 2.0); assert(floor(-2.7) == -3.0); double c = floor(-0.0); assert(c == -0.0); assert(sizeof(c) == sizeof(float) ? __signbitf(c) : sizeof(c) == sizeof(double) ? __signbit(c) : __signbitl(c)); c = floor(-(__builtin_inff())); assert(sizeof((__builtin_inff())) == sizeof(float) ? __isinff((__builtin_inff())) : sizeof((__builtin_inff())) == sizeof(double) ? __isinf((__builtin_inff())) : __isinfl((__builtin_inff()))); assert(sizeof(c) == sizeof(float) ? __signbitf(c) : sizeof(c) == sizeof(double) ? __signbit(c) : __signbitl(c)); return 0; }
double __exp2 (double x) { double z = __ieee754_exp2 (x); if (__builtin_expect (!__finite (z), 0) && __finite (x) && _LIB_VERSION != _IEEE_) /* exp2 overflow: 44, exp2 underflow: 45 */ return __kernel_standard (x, x, 44 + !!__signbit (x)); return z; }
double __exp10 (double x) { double z = __ieee754_exp10 (x); if (__builtin_expect (!__finite (z), 0) && __finite (x) && _LIB_VERSION != _IEEE_) /* exp10 overflow (46) if x > 0, underflow (47) if x < 0. */ return __kernel_standard (x, x, 46 + !!__signbit (x)); return z; }
int main() { double a = __VERIFIER_nondet_double(); __VERIFIER_assume(!__isnan(a)); __VERIFIER_assume(!__isinf(a)); __VERIFIER_assume(a != 0.0); double plus_zero = 0.0; double plus_zero_mod = fmod(plus_zero, a); _Bool plus_zero_mod_sign = __signbit(plus_zero); __VERIFIER_assert((plus_zero_mod == 0.0) && !plus_zero_mod_sign); double minus_zero = -0.0; double minus_zero_mod = fmod(minus_zero, a); _Bool minus_zero_mod_sign = signbit(minus_zero); __VERIFIER_assert((minus_zero_mod == 0.0) && minus_zero_mod_sign); return 0; }
int main(void) { double NaN = 0.0 / 0.0; double Inf = 1.0 / 0.0; double negInf = -1.0 / 0.0; double x = 2.0; double y = -8.5; double a = 5.1; double b = -3.0; double c = fmod(a, b); assert(fabs(c - 2.1) < 1e-8); if (!__isnan(y)) { assert(__isnan(fmod(Inf, y))); assert(__isnan(fmod(negInf, y))); } if (!__isnan(x)) { assert(__isnan(fmod(x, 0.0))); assert(__isnan(fmod(x, -0.0))); } if (!__isnan(x) && !__isinf(x)) { assert(fmod(x, Inf) == x); assert(fmod(x, negInf) == x); } if (!__isnan(y) && !__iszero(y)) { assert(fmod(0.0, y) == 0.0); assert(fmod(-0.0, y) == -0.0); int isNeg = __signbit(fmod(-0.0, y)); assert(isNeg); } assert(__isnan(fmod(NaN, y))); assert(__isnan(fmod(x, NaN))); return 0; }
int main(void) { double NaN = 0.0 / 0.0; double Inf = 1.0 / 0.0; double negInf = -1.0 / 0.0; double val = __VERIFIER_nondet_double(); if (!__isnan(val) && !__isinf(val) && !__iszero(val)) { double rval = round(val); assert(rval == floor(val) || rval == ceil(val)); } assert(round(0.0) == 0.0); assert(round(-0.0) == -0.0); int isNeg = __signbit(round(-0.0)); assert(isNeg); assert(round(Inf) == Inf); assert(round(negInf) == negInf); assert(__isnan(round(NaN))); return 0; }
Err mathlib_signbit(UInt16 refnum, double x, UInt32 *result) { #pragma unused(refnum) *result = __signbit(x); return mlErrNone; }
int attribute_hidden __signbitl (double x) { return __signbit (x); }
TEST(math, __signbit) { ASSERT_EQ(0, __signbit(0.0)); ASSERT_EQ(0, __signbit(1.0)); ASSERT_NE(0, __signbit(-1.0)); }
int __signbitl(long double x) { return __signbit(x); }
__MATH_FUNCTIONS_DBL_PTX3_DECL__ int __signbitl(/* we do not support long double yet, hence double */double a) { return __signbit((double)a); }