msvcrt: Don't report an underflow for ldexp(0, x) or _scalb(0, x).
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com> Signed-off-by: piotr@codeweavers.com Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
96ba1bc478
commit
b6774e38e6
@ -1015,7 +1015,7 @@ double CDECL MSVCRT_ldexp(double num, MSVCRT_long exp)
|
|||||||
|
|
||||||
if (isfinite(num) && !isfinite(z))
|
if (isfinite(num) && !isfinite(z))
|
||||||
math_error(_OVERFLOW, "ldexp", num, exp, z);
|
math_error(_OVERFLOW, "ldexp", num, exp, z);
|
||||||
else if (isfinite(num) && !z)
|
else if (num && isfinite(num) && !z)
|
||||||
math_error(_UNDERFLOW, "ldexp", num, exp, z);
|
math_error(_UNDERFLOW, "ldexp", num, exp, z);
|
||||||
else if (z == 0 && signbit(z))
|
else if (z == 0 && signbit(z))
|
||||||
z = 0.0; /* Convert -0 -> +0 */
|
z = 0.0; /* Convert -0 -> +0 */
|
||||||
|
@ -694,11 +694,13 @@ static void test_math_errors(void)
|
|||||||
} testsdl[] = {
|
} testsdl[] = {
|
||||||
{"_scalb", -INFINITY, 1, -1, -1},
|
{"_scalb", -INFINITY, 1, -1, -1},
|
||||||
{"_scalb", -1e100, 1, -1, -1},
|
{"_scalb", -1e100, 1, -1, -1},
|
||||||
|
{"_scalb", 0, 1, -1, -1},
|
||||||
{"_scalb", 1e100, 1, -1, -1},
|
{"_scalb", 1e100, 1, -1, -1},
|
||||||
{"_scalb", INFINITY, 1, -1, -1},
|
{"_scalb", INFINITY, 1, -1, -1},
|
||||||
{"_scalb", 1, 1e9, ERANGE, _OVERFLOW},
|
{"_scalb", 1, 1e9, ERANGE, _OVERFLOW},
|
||||||
{"ldexp", -INFINITY, 1, -1, -1},
|
{"ldexp", -INFINITY, 1, -1, -1},
|
||||||
{"ldexp", -1e100, 1, -1, -1},
|
{"ldexp", -1e100, 1, -1, -1},
|
||||||
|
{"ldexp", 0, 1, -1, -1},
|
||||||
{"ldexp", 1e100, 1, -1, -1},
|
{"ldexp", 1e100, 1, -1, -1},
|
||||||
{"ldexp", INFINITY, 1, -1, -1},
|
{"ldexp", INFINITY, 1, -1, -1},
|
||||||
{"ldexp", 1, -1e9, -1, _UNDERFLOW},
|
{"ldexp", 1, -1e9, -1, _UNDERFLOW},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user