Ejemplo n.º 1
0
double
SDL_scalbn(double x, int n)
{
#if defined(HAVE_SCALBN)
    return scalbn(x, n);
#elif defined(HAVE__SCALB)
    return _scalb(x, n);
#else
    return SDL_uclibc_scalbn(x, n);
#endif /* HAVE_SCALBN */
}
Ejemplo n.º 2
0
void test_scalb(void)
{
    ieee_double tested;
    ieee_double expected;
    ieee_double result;

    expected.l = 0;

    errno = 0xDEADBEEF;
    tested.l = 0xFFFFFFFFFFFFFFFFLL;
    expected.l = 0xFFFFFFFFFFFFFFFFLL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == EDOM, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0xFFF8000000000001LL;
    expected.l = 0xFFF8000000000001LL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == EDOM, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0xFFF8000000000000LL;
    expected.l = 0xFFF8000000000000LL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == EDOM, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0xFFF7FFFFFFFFFFFFLL;
    expected.l = 0xFFFFFFFFFFFFFFFFLL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == EDOM, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0xFFF0000000000001LL;
    expected.l = 0xFFF8000000000001LL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == EDOM, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0xFFF0000000000000LL;
    expected.l = 0xFFF0000000000000LL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == 0xDEADBEEF, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0xFFEFFFFFFFFFFFFFLL;
    expected.l = 0xFFF0000000000000LL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == ERANGE, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0x8010000000000000LL;
    expected.l = 0x8040000000000000LL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == 0xDEADBEEF, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0x800FFFFFFFFFFFFFLL;
    expected.l = 0x803FFFFFFFFFFFFELL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == 0xDEADBEEF, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0x8000000000000001LL;
    expected.l = 0x8000000000000008LL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == 0xDEADBEEF, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0x8000000000000000LL;
    expected.l = 0x8000000000000000LL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == 0xDEADBEEF, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0x0000000000000000LL;
    expected.l = 0x0000000000000000LL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == 0xDEADBEEF, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0x0000000000000001LL;
    expected.l = 0x0000000000000008LL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == 0xDEADBEEF, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0x000FFFFFFFFFFFFFLL;
    expected.l = 0x003FFFFFFFFFFFFELL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == 0xDEADBEEF, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0x0010000000000000LL;
    expected.l = 0x0040000000000000LL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == 0xDEADBEEF, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0x7FEFFFFFFFFFFFFFLL;
    expected.l = 0x7FF0000000000000LL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == ERANGE, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0x7FF0000000000000LL;
    expected.l = 0x7FF0000000000000LL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == 0xDEADBEEF, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0x7FF0000000000001LL;
    expected.l = 0x7FF8000000000001LL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == EDOM, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0x7FF7FFFFFFFFFFFFLL;
    expected.l = 0x7FFFFFFFFFFFFFFFLL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == EDOM, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0x7FF8000000000000LL;
    expected.l = 0x7FF8000000000000LL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == EDOM, "errno: %d\n", errno);
    errno = 0xDEADBEEF;
    tested.l = 0x7FFFFFFFFFFFFFFFLL;
    expected.l = 0x7FFFFFFFFFFFFFFFLL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == EDOM, "errno: %d\n", errno);

    /* MSDN example */
    errno = 0xDEADBEEF;
    tested.d = 2.387000;
    expected.l = 0x4033189374BC6A7FLL;
    result.d =  _scalb(tested.d, 3);
    ok(result.l == expected.l, "_scalb returned: %I64x\n", result.l);
    ok(errno == 0xDEADBEEF, "errno: %d\n", errno);
}