コード例 #1
0
ファイル: floor.c プロジェクト: smackers/smack
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;
}
コード例 #2
0
ファイル: w_exp2.c プロジェクト: AdvancedC/glibc
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;
}
コード例 #3
0
ファイル: w_exp10.c プロジェクト: Xilinx/eglibc
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;
}
コード例 #4
0
ファイル: main.c プロジェクト: Heizmann/sv-benchmarks
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;
}
コード例 #5
0
ファイル: fmod.c プロジェクト: smackers/smack
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;
}
コード例 #6
0
ファイル: round.c プロジェクト: smackers/smack
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;
}
コード例 #7
0
ファイル: mathcalls.c プロジェクト: fidian/MathLib
Err mathlib_signbit(UInt16 refnum, double x, UInt32 *result) {
#pragma unused(refnum)
	*result = __signbit(x);
	return mlErrNone;
}
コード例 #8
0
int
attribute_hidden
__signbitl (double x)
{
  return __signbit (x);
}
コード例 #9
0
TEST(math, __signbit) {
  ASSERT_EQ(0, __signbit(0.0));
  ASSERT_EQ(0, __signbit(1.0));
  ASSERT_NE(0, __signbit(-1.0));
}
コード例 #10
0
int __signbitl(long double x)
{
	return __signbit(x);
}
コード例 #11
0
__MATH_FUNCTIONS_DBL_PTX3_DECL__ int __signbitl(/* we do not support long double yet, hence double */double a)
{
  return __signbit((double)a);
}