From a71253fa5806295fb7cb37d3b407ba5a8fcacec3 Mon Sep 17 00:00:00 2001 From: Sebastian Sumpf Date: Fri, 17 May 2019 14:33:16 +0200 Subject: [PATCH] ieee754: adjust to libc/libm update * Adjust expected pow(-1/1, inf/-inf/nan) output to current libm behavior (as in FreeBSD, glibc, and OpenLibm) and return 1 on x86_64/x86_32/arm * Add 'double float' outputs for ARM which are defined to float issue #3289 --- repos/libports/run/ieee754.run | 574 ++++++++++++++++++++++++++++++--- 1 file changed, 522 insertions(+), 52 deletions(-) diff --git a/repos/libports/run/ieee754.run b/repos/libports/run/ieee754.run index 2fc46d1416..0f7b14e486 100644 --- a/repos/libports/run/ieee754.run +++ b/repos/libports/run/ieee754.run @@ -96,15 +96,15 @@ LDBL_MAX_EXP = 1024 FLT_EPSILON = 1.19209e-07 = 0x1p-23 DBL_EPSILON = 2.22045e-16 = 0x1p-52 -LDBL_EPSILON = 0 = 0x1p-52 +LDBL_EPSILON = 2.22045e-16 = 0x1p-52 FLT_MIN = 1.17549e-38 = 0x1p-126 DBL_MIN = 2.22507e-308 = 0x1p-1022 -LDBL_MIN = 0 = 0x1p-1022 +LDBL_MIN = 2.22507e-308 = 0x1p-1022 FLT_MAX = 3.40282e+38 = 0x1.fffffep+127 DBL_MAX = 1.79769e+308 = 0x1.fffffffffffffp+1023 -LDBL_MAX = 8.98846e+307 = 0x1.fffffffffffffp+1023 +LDBL_MAX = 1.79769e+308 = 0x1.fffffffffffffp+1023 sizeof(float) = 4 sizeof(double) = 8 @@ -131,7 +131,6 @@ The FE_INVALID flag is not set for NAN < 0. x * y + z with FP_CONTRACT OFF is not fused. Rounding to nearest -Error, but let's do the test since it should be the default rounding mode. (double) 0 = 0 Signed zero tests (x is 0.0 and y is -0.0): Test 1.0 / x != 1.0 / y returns 1 (should be 1). @@ -246,9 +245,9 @@ pow(-0.5, 1) = -0.5 pow(-0.5, -1) = -2 pow(-0.5, 2) = 0.25 pow(-0.5, -2) = 4 -pow(1, nan) = nan -pow(1, inf) = nan -pow(1, -inf) = nan +pow(1, nan) = 1 +pow(1, inf) = 1 +pow(1, -inf) = 1 pow(1, 0) = 1 pow(1, -0) = 1 pow(1, 0.5) = 1 @@ -258,8 +257,8 @@ pow(1, -1) = 1 pow(1, 2) = 1 pow(1, -2) = 1 pow(-1, nan) = nan -pow(-1, inf) = nan -pow(-1, -inf) = nan +pow(-1, inf) = 1 +pow(-1, -inf) = 1 pow(-1, 0) = 1 pow(-1, -0) = 1 pow(-1, 0.5) = nan @@ -292,13 +291,484 @@ pow(-2, 2) = 4 pow(-2, -2) = 0.25 Rounding toward 0 -Error +(double) 0 = 0 +Signed zero tests (x is 0.0 and y is -0.0): + Test 1.0 / x != 1.0 / y returns 1 (should be 1). + Test 1.0 / x == 1.0 / +x returns 1 (should be 1). + Test 1.0 / x != 1.0 / +y returns 1 (should be 1). + Test 1.0 / x != 1.0 / -x returns 1 (should be 1). + Test 1.0 / x == 1.0 / -y returns 1 (should be 1). +0 + 0 = 0 +0 - 0 = 0 +0 + -0 = 0 +0 - -0 = 0 +-0 + 0 = 0 +-0 - 0 = -0 +-0 + -0 = -0 +-0 - -0 = 0 +1 + 1 = 2 +1 - 1 = 0 +1 + -1 = 0 +1 - -1 = 2 +0 * 0 = 0 +0 * -0 = -0 +-0 * 0 = -0 +-0 * -0 = 0 +Constant expression 1 + DBL_MIN = 1 +Variable expression 1 + DBL_MIN = 1 +Constant expression 1 - DBL_MIN = 1 +Variable expression 1 - DBL_MIN = 0.99999999999999988897 +1/3 in float : 0x1.555554p-2 +1/3 in double : 0x1.5555555555555p-2 +1/3 in long double : 0x1.5555555555555p-2 +Dec 1.1 = 0x1.199999999999ap+0 +FLT_MAX = 0x1.fffffep+127 +DBL_MAX = 0x1.fffffffffffffp+1023 +LDBL_MAX = 0x1.fffffffffffffp+1023 +FLT_EPSILON = 0x1p-23 +DBL_EPSILON = 0x1p-52 +LDBL_EPSILON = 0x1p-52 +pow(nan, nan) = nan +pow(nan, inf) = nan +pow(nan, -inf) = nan +pow(nan, 0) = 1 +pow(nan, -0) = 1 +pow(nan, 0.5) = nan +pow(nan, -0.5) = nan +pow(nan, 1) = nan +pow(nan, -1) = nan +pow(nan, 2) = nan +pow(nan, -2) = nan +pow(inf, nan) = nan +pow(inf, inf) = inf +pow(inf, -inf) = 0 +pow(inf, 0) = 1 +pow(inf, -0) = 1 +pow(inf, 0.5) = inf +pow(inf, -0.5) = 0 +pow(inf, 1) = inf +pow(inf, -1) = 0 +pow(inf, 2) = inf +pow(inf, -2) = 0 +pow(-inf, nan) = nan +pow(-inf, inf) = inf +pow(-inf, -inf) = 0 +pow(-inf, 0) = 1 +pow(-inf, -0) = 1 +pow(-inf, 0.5) = inf +pow(-inf, -0.5) = 0 +pow(-inf, 1) = -inf +pow(-inf, -1) = -0 +pow(-inf, 2) = inf +pow(-inf, -2) = 0 +pow(0, nan) = nan +pow(0, inf) = 0 +pow(0, -inf) = inf +pow(0, 0) = 1 +pow(0, -0) = 1 +pow(0, 0.5) = 0 +pow(0, -0.5) = inf +pow(0, 1) = 0 +pow(0, -1) = inf +pow(0, 2) = 0 +pow(0, -2) = inf +pow(-0, nan) = nan +pow(-0, inf) = 0 +pow(-0, -inf) = inf +pow(-0, 0) = 1 +pow(-0, -0) = 1 +pow(-0, 0.5) = 0 +pow(-0, -0.5) = inf +pow(-0, 1) = -0 +pow(-0, -1) = -inf +pow(-0, 2) = 0 +pow(-0, -2) = inf +pow(0.5, nan) = nan +pow(0.5, inf) = 0 +pow(0.5, -inf) = inf +pow(0.5, 0) = 1 +pow(0.5, -0) = 1 +pow(0.5, 0.5) = 0.707106 +pow(0.5, -0.5) = 1.41421 +pow(0.5, 1) = 0.5 +pow(0.5, -1) = 2 +pow(0.5, 2) = 0.25 +pow(0.5, -2) = 4 +pow(-0.5, nan) = nan +pow(-0.5, inf) = 0 +pow(-0.5, -inf) = inf +pow(-0.5, 0) = 1 +pow(-0.5, -0) = 1 +pow(-0.5, 0.5) = nan +pow(-0.5, -0.5) = nan +pow(-0.5, 1) = -0.5 +pow(-0.5, -1) = -2 +pow(-0.5, 2) = 0.25 +pow(-0.5, -2) = 4 +pow(1, nan) = 1 +pow(1, inf) = 1 +pow(1, -inf) = 1 +pow(1, 0) = 1 +pow(1, -0) = 1 +pow(1, 0.5) = 1 +pow(1, -0.5) = 1 +pow(1, 1) = 1 +pow(1, -1) = 1 +pow(1, 2) = 1 +pow(1, -2) = 1 +pow(-1, nan) = nan +pow(-1, inf) = 1 +pow(-1, -inf) = 1 +pow(-1, 0) = 1 +pow(-1, -0) = 1 +pow(-1, 0.5) = nan +pow(-1, -0.5) = nan +pow(-1, 1) = -1 +pow(-1, -1) = -1 +pow(-1, 2) = 1 +pow(-1, -2) = 1 +pow(2, nan) = nan +pow(2, inf) = inf +pow(2, -inf) = 0 +pow(2, 0) = 1 +pow(2, -0) = 1 +pow(2, 0.5) = 1.41421 +pow(2, -0.5) = 0.707106 +pow(2, 1) = 2 +pow(2, -1) = 0.5 +pow(2, 2) = 4 +pow(2, -2) = 0.25 +pow(-2, nan) = nan +pow(-2, inf) = inf +pow(-2, -inf) = 0 +pow(-2, 0) = 1 +pow(-2, -0) = 1 +pow(-2, 0.5) = nan +pow(-2, -0.5) = nan +pow(-2, 1) = -2 +pow(-2, -1) = -0.5 +pow(-2, 2) = 4 +pow(-2, -2) = 0.25 Rounding to -oo -Error +(double) 0 = 0 +Signed zero tests (x is 0.0 and y is -0.0): + Test 1.0 / x != 1.0 / y returns 1 (should be 1). + Test 1.0 / x == 1.0 / +x returns 1 (should be 1). + Test 1.0 / x != 1.0 / +y returns 1 (should be 1). + Test 1.0 / x != 1.0 / -x returns 1 (should be 1). + Test 1.0 / x == 1.0 / -y returns 1 (should be 1). +0 + 0 = 0 +0 - 0 = -0 +0 + -0 = -0 +0 - -0 = 0 +-0 + 0 = -0 +-0 - 0 = -0 +-0 + -0 = -0 +-0 - -0 = -0 +1 + 1 = 2 +1 - 1 = -0 +1 + -1 = -0 +1 - -1 = 2 +0 * 0 = 0 +0 * -0 = -0 +-0 * 0 = -0 +-0 * -0 = 0 +Constant expression 1 + DBL_MIN = 1 +Variable expression 1 + DBL_MIN = 1 +Constant expression 1 - DBL_MIN = 1 +Variable expression 1 - DBL_MIN = 0.99999999999999988897 +1/3 in float : 0x1.555554p-2 +1/3 in double : 0x1.5555555555555p-2 +1/3 in long double : 0x1.5555555555555p-2 +Dec 1.1 = 0x1.199999999999ap+0 +FLT_MAX = 0x1.fffffep+127 +DBL_MAX = 0x1.fffffffffffffp+1023 +LDBL_MAX = 0x1.fffffffffffffp+1023 +FLT_EPSILON = 0x1p-23 +DBL_EPSILON = 0x1p-52 +LDBL_EPSILON = 0x1p-52 +pow(nan, nan) = nan +pow(nan, inf) = nan +pow(nan, -inf) = nan +pow(nan, 0) = 1 +pow(nan, -0) = 1 +pow(nan, 0.5) = nan +pow(nan, -0.5) = nan +pow(nan, 1) = nan +pow(nan, -1) = nan +pow(nan, 2) = nan +pow(nan, -2) = nan +pow(inf, nan) = nan +pow(inf, inf) = inf +pow(inf, -inf) = 0 +pow(inf, 0) = 1 +pow(inf, -0) = 1 +pow(inf, 0.5) = inf +pow(inf, -0.5) = 0 +pow(inf, 1) = inf +pow(inf, -1) = 0 +pow(inf, 2) = inf +pow(inf, -2) = 0 +pow(-inf, nan) = nan +pow(-inf, inf) = inf +pow(-inf, -inf) = 0 +pow(-inf, 0) = 1 +pow(-inf, -0) = 1 +pow(-inf, 0.5) = inf +pow(-inf, -0.5) = 0 +pow(-inf, 1) = -inf +pow(-inf, -1) = -0 +pow(-inf, 2) = inf +pow(-inf, -2) = 0 +pow(0, nan) = nan +pow(0, inf) = 0 +pow(0, -inf) = inf +pow(0, 0) = 1 +pow(0, -0) = 1 +pow(0, 0.5) = 0 +pow(0, -0.5) = inf +pow(0, 1) = 0 +pow(0, -1) = inf +pow(0, 2) = 0 +pow(0, -2) = inf +pow(-0, nan) = nan +pow(-0, inf) = 0 +pow(-0, -inf) = inf +pow(-0, 0) = 1 +pow(-0, -0) = 1 +pow(-0, 0.5) = 0 +pow(-0, -0.5) = inf +pow(-0, 1) = -0 +pow(-0, -1) = -inf +pow(-0, 2) = 0 +pow(-0, -2) = inf +pow(0.5, nan) = nan +pow(0.5, inf) = 0 +pow(0.5, -inf) = inf +pow(0.5, 0) = 1 +pow(0.5, -0) = 1 +pow(0.5, 0.5) = 0.707106 +pow(0.5, -0.5) = 1.41421 +pow(0.5, 1) = 0.5 +pow(0.5, -1) = 2 +pow(0.5, 2) = 0.25 +pow(0.5, -2) = 4 +pow(-0.5, nan) = nan +pow(-0.5, inf) = 0 +pow(-0.5, -inf) = inf +pow(-0.5, 0) = 1 +pow(-0.5, -0) = 1 +pow(-0.5, 0.5) = nan +pow(-0.5, -0.5) = nan +pow(-0.5, 1) = -0.5 +pow(-0.5, -1) = -2 +pow(-0.5, 2) = 0.25 +pow(-0.5, -2) = 4 +pow(1, nan) = 1 +pow(1, inf) = 1 +pow(1, -inf) = 1 +pow(1, 0) = 1 +pow(1, -0) = 1 +pow(1, 0.5) = 1 +pow(1, -0.5) = 1 +pow(1, 1) = 1 +pow(1, -1) = 1 +pow(1, 2) = 1 +pow(1, -2) = 1 +pow(-1, nan) = nan +pow(-1, inf) = 1 +pow(-1, -inf) = 1 +pow(-1, 0) = 1 +pow(-1, -0) = 1 +pow(-1, 0.5) = nan +pow(-1, -0.5) = nan +pow(-1, 1) = -1 +pow(-1, -1) = -1 +pow(-1, 2) = 1 +pow(-1, -2) = 1 +pow(2, nan) = nan +pow(2, inf) = inf +pow(2, -inf) = 0 +pow(2, 0) = 1 +pow(2, -0) = 1 +pow(2, 0.5) = 1.41421 +pow(2, -0.5) = 0.707106 +pow(2, 1) = 2 +pow(2, -1) = 0.5 +pow(2, 2) = 4 +pow(2, -2) = 0.25 +pow(-2, nan) = nan +pow(-2, inf) = inf +pow(-2, -inf) = 0 +pow(-2, 0) = 1 +pow(-2, -0) = 1 +pow(-2, 0.5) = nan +pow(-2, -0.5) = nan +pow(-2, 1) = -2 +pow(-2, -1) = -0.5 +pow(-2, 2) = 4 +pow(-2, -2) = 0.25 Rounding to +oo -Error +(double) 0 = 0 +Signed zero tests (x is 0.0 and y is -0.0): + Test 1.0 / x != 1.0 / y returns 1 (should be 1). + Test 1.0 / x == 1.0 / +x returns 1 (should be 1). + Test 1.0 / x != 1.0 / +y returns 1 (should be 1). + Test 1.0 / x != 1.0 / -x returns 1 (should be 1). + Test 1.0 / x == 1.0 / -y returns 1 (should be 1). +0 + 0 = 0 +0 - 0 = 0 +0 + -0 = 0 +0 - -0 = 0 +-0 + 0 = 0 +-0 - 0 = -0 +-0 + -0 = -0 +-0 - -0 = 0 +1 + 1 = 2 +1 - 1 = 0 +1 + -1 = 0 +1 - -1 = 2 +0 * 0 = 0 +0 * -0 = -0 +-0 * 0 = -0 +-0 * -0 = 0 +Constant expression 1 + DBL_MIN = 1 +Variable expression 1 + DBL_MIN = 1.0000000000000002221 +Constant expression 1 - DBL_MIN = 1 +Variable expression 1 - DBL_MIN = 1 +1/3 in float : 0x1.555556p-2 +1/3 in double : 0x1.5555555555556p-2 +1/3 in long double : 0x1.5555555555556p-2 +Dec 1.1 = 0x1.199999999999ap+0 +FLT_MAX = 0x1.fffffep+127 +DBL_MAX = 0x1.fffffffffffffp+1023 +LDBL_MAX = 0x1.fffffffffffffp+1023 +FLT_EPSILON = 0x1p-23 +DBL_EPSILON = 0x1p-52 +LDBL_EPSILON = 0x1p-52 +pow(nan, nan) = nan +pow(nan, inf) = nan +pow(nan, -inf) = nan +pow(nan, 0) = 1 +pow(nan, -0) = 1 +pow(nan, 0.5) = nan +pow(nan, -0.5) = nan +pow(nan, 1) = nan +pow(nan, -1) = nan +pow(nan, 2) = nan +pow(nan, -2) = nan +pow(inf, nan) = nan +pow(inf, inf) = inf +pow(inf, -inf) = 0 +pow(inf, 0) = 1 +pow(inf, -0) = 1 +pow(inf, 0.5) = inf +pow(inf, -0.5) = 0 +pow(inf, 1) = inf +pow(inf, -1) = 0 +pow(inf, 2) = inf +pow(inf, -2) = 0 +pow(-inf, nan) = nan +pow(-inf, inf) = inf +pow(-inf, -inf) = 0 +pow(-inf, 0) = 1 +pow(-inf, -0) = 1 +pow(-inf, 0.5) = inf +pow(-inf, -0.5) = 0 +pow(-inf, 1) = -inf +pow(-inf, -1) = -0 +pow(-inf, 2) = inf +pow(-inf, -2) = 0 +pow(0, nan) = nan +pow(0, inf) = 0 +pow(0, -inf) = inf +pow(0, 0) = 1 +pow(0, -0) = 1 +pow(0, 0.5) = 0 +pow(0, -0.5) = inf +pow(0, 1) = 0 +pow(0, -1) = inf +pow(0, 2) = 0 +pow(0, -2) = inf +pow(-0, nan) = nan +pow(-0, inf) = 0 +pow(-0, -inf) = inf +pow(-0, 0) = 1 +pow(-0, -0) = 1 +pow(-0, 0.5) = 0 +pow(-0, -0.5) = inf +pow(-0, 1) = -0 +pow(-0, -1) = -inf +pow(-0, 2) = 0 +pow(-0, -2) = inf +pow(0.5, nan) = nan +pow(0.5, inf) = 0 +pow(0.5, -inf) = inf +pow(0.5, 0) = 1 +pow(0.5, -0) = 1 +pow(0.5, 0.5) = 0.707107 +pow(0.5, -0.5) = 1.41422 +pow(0.5, 1) = 0.5 +pow(0.5, -1) = 2 +pow(0.5, 2) = 0.25 +pow(0.5, -2) = 4 +pow(-0.5, nan) = nan +pow(-0.5, inf) = 0 +pow(-0.5, -inf) = inf +pow(-0.5, 0) = 1 +pow(-0.5, -0) = 1 +pow(-0.5, 0.5) = nan +pow(-0.5, -0.5) = nan +pow(-0.5, 1) = -0.5 +pow(-0.5, -1) = -2 +pow(-0.5, 2) = 0.25 +pow(-0.5, -2) = 4 +pow(1, nan) = 1 +pow(1, inf) = 1 +pow(1, -inf) = 1 +pow(1, 0) = 1 +pow(1, -0) = 1 +pow(1, 0.5) = 1 +pow(1, -0.5) = 1 +pow(1, 1) = 1 +pow(1, -1) = 1 +pow(1, 2) = 1 +pow(1, -2) = 1 +pow(-1, nan) = nan +pow(-1, inf) = 1 +pow(-1, -inf) = 1 +pow(-1, 0) = 1 +pow(-1, -0) = 1 +pow(-1, 0.5) = nan +pow(-1, -0.5) = nan +pow(-1, 1) = -1 +pow(-1, -1) = -1 +pow(-1, 2) = 1 +pow(-1, -2) = 1 +pow(2, nan) = nan +pow(2, inf) = inf +pow(2, -inf) = 0 +pow(2, 0) = 1 +pow(2, -0) = 1 +pow(2, 0.5) = 1.41422 +pow(2, -0.5) = 0.707107 +pow(2, 1) = 2 +pow(2, -1) = 0.5 +pow(2, 2) = 4 +pow(2, -2) = 0.25 +pow(-2, nan) = nan +pow(-2, inf) = inf +pow(-2, -inf) = 0 +pow(-2, 0) = 1 +pow(-2, -0) = 1 +pow(-2, 0.5) = nan +pow(-2, -0.5) = nan +pow(-2, 1) = -2 +pow(-2, -1) = -0.5 +pow(-2, 2) = 4 +pow(-2, -2) = 0.25 } set reference_output_x86_64 { @@ -467,9 +937,9 @@ pow(-0.5, 1) = -0.5 pow(-0.5, -1) = -2 pow(-0.5, 2) = 0.25 pow(-0.5, -2) = 4 -pow(1, nan) = nan -pow(1, inf) = nan -pow(1, -inf) = nan +pow(1, nan) = 1 +pow(1, inf) = 1 +pow(1, -inf) = 1 pow(1, 0) = 1 pow(1, -0) = 1 pow(1, 0.5) = 1 @@ -479,8 +949,8 @@ pow(1, -1) = 1 pow(1, 2) = 1 pow(1, -2) = 1 pow(-1, nan) = nan -pow(-1, inf) = nan -pow(-1, -inf) = nan +pow(-1, inf) = 1 +pow(-1, -inf) = 1 pow(-1, 0) = 1 pow(-1, -0) = 1 pow(-1, 0.5) = nan @@ -627,9 +1097,9 @@ pow(-0.5, 1) = -0.5 pow(-0.5, -1) = -2 pow(-0.5, 2) = 0.25 pow(-0.5, -2) = 4 -pow(1, nan) = nan -pow(1, inf) = nan -pow(1, -inf) = nan +pow(1, nan) = 1 +pow(1, inf) = 1 +pow(1, -inf) = 1 pow(1, 0) = 1 pow(1, -0) = 1 pow(1, 0.5) = 1 @@ -639,8 +1109,8 @@ pow(1, -1) = 1 pow(1, 2) = 1 pow(1, -2) = 1 pow(-1, nan) = nan -pow(-1, inf) = nan -pow(-1, -inf) = nan +pow(-1, inf) = 1 +pow(-1, -inf) = 1 pow(-1, 0) = 1 pow(-1, -0) = 1 pow(-1, 0.5) = nan @@ -787,9 +1257,9 @@ pow(-0.5, 1) = -0.5 pow(-0.5, -1) = -2 pow(-0.5, 2) = 0.25 pow(-0.5, -2) = 4 -pow(1, nan) = nan -pow(1, inf) = nan -pow(1, -inf) = nan +pow(1, nan) = 1 +pow(1, inf) = 1 +pow(1, -inf) = 1 pow(1, 0) = 1 pow(1, -0) = 1 pow(1, 0.5) = 1 @@ -799,8 +1269,8 @@ pow(1, -1) = 1 pow(1, 2) = 1 pow(1, -2) = 1 pow(-1, nan) = nan -pow(-1, inf) = nan -pow(-1, -inf) = nan +pow(-1, inf) = 1 +pow(-1, -inf) = 1 pow(-1, 0) = 1 pow(-1, -0) = 1 pow(-1, 0.5) = nan @@ -947,9 +1417,9 @@ pow(-0.5, 1) = -0.5 pow(-0.5, -1) = -2 pow(-0.5, 2) = 0.25 pow(-0.5, -2) = 4 -pow(1, nan) = nan -pow(1, inf) = nan -pow(1, -inf) = nan +pow(1, nan) = 1 +pow(1, inf) = 1 +pow(1, -inf) = 1 pow(1, 0) = 1 pow(1, -0) = 1 pow(1, 0.5) = 1 @@ -959,8 +1429,8 @@ pow(1, -1) = 1 pow(1, 2) = 1 pow(1, -2) = 1 pow(-1, nan) = nan -pow(-1, inf) = nan -pow(-1, -inf) = nan +pow(-1, inf) = 1 +pow(-1, -inf) = 1 pow(-1, 0) = 1 pow(-1, -0) = 1 pow(-1, 0.5) = nan @@ -1165,9 +1635,9 @@ pow(-0.5, 1) = -0.5 pow(-0.5, -1) = -2 pow(-0.5, 2) = 0.25 pow(-0.5, -2) = 4 -pow(1, nan) = nan -pow(1, inf) = nan -pow(1, -inf) = nan +pow(1, nan) = 1 +pow(1, inf) = 1 +pow(1, -inf) = 1 pow(1, 0) = 1 pow(1, -0) = 1 pow(1, 0.5) = 1 @@ -1177,8 +1647,8 @@ pow(1, -1) = 1 pow(1, 2) = 1 pow(1, -2) = 1 pow(-1, nan) = nan -pow(-1, inf) = nan -pow(-1, -inf) = nan +pow(-1, inf) = 1 +pow(-1, -inf) = 1 pow(-1, 0) = 1 pow(-1, -0) = 1 pow(-1, 0.5) = nan @@ -1325,9 +1795,9 @@ pow(-0.5, 1) = -0.5 pow(-0.5, -1) = -2 pow(-0.5, 2) = 0.25 pow(-0.5, -2) = 4 -pow(1, nan) = nan -pow(1, inf) = nan -pow(1, -inf) = nan +pow(1, nan) = 1 +pow(1, inf) = 1 +pow(1, -inf) = 1 pow(1, 0) = 1 pow(1, -0) = 1 pow(1, 0.5) = 1 @@ -1337,8 +1807,8 @@ pow(1, -1) = 1 pow(1, 2) = 1 pow(1, -2) = 1 pow(-1, nan) = nan -pow(-1, inf) = nan -pow(-1, -inf) = nan +pow(-1, inf) = 1 +pow(-1, -inf) = 1 pow(-1, 0) = 1 pow(-1, -0) = 1 pow(-1, 0.5) = nan @@ -1485,9 +1955,9 @@ pow(-0.5, 1) = -0.5 pow(-0.5, -1) = -2 pow(-0.5, 2) = 0.25 pow(-0.5, -2) = 4 -pow(1, nan) = nan -pow(1, inf) = nan -pow(1, -inf) = nan +pow(1, nan) = 1 +pow(1, inf) = 1 +pow(1, -inf) = 1 pow(1, 0) = 1 pow(1, -0) = 1 pow(1, 0.5) = 1 @@ -1497,8 +1967,8 @@ pow(1, -1) = 1 pow(1, 2) = 1 pow(1, -2) = 1 pow(-1, nan) = nan -pow(-1, inf) = nan -pow(-1, -inf) = nan +pow(-1, inf) = 1 +pow(-1, -inf) = 1 pow(-1, 0) = 1 pow(-1, -0) = 1 pow(-1, 0.5) = nan @@ -1645,9 +2115,9 @@ pow(-0.5, 1) = -0.5 pow(-0.5, -1) = -2 pow(-0.5, 2) = 0.25 pow(-0.5, -2) = 4 -pow(1, nan) = nan -pow(1, inf) = nan -pow(1, -inf) = nan +pow(1, nan) = 1 +pow(1, inf) = 1 +pow(1, -inf) = 1 pow(1, 0) = 1 pow(1, -0) = 1 pow(1, 0.5) = 1 @@ -1657,8 +2127,8 @@ pow(1, -1) = 1 pow(1, 2) = 1 pow(1, -2) = 1 pow(-1, nan) = nan -pow(-1, inf) = nan -pow(-1, -inf) = nan +pow(-1, inf) = 1 +pow(-1, -inf) = 1 pow(-1, 0) = 1 pow(-1, -0) = 1 pow(-1, 0.5) = nan