diff options
-rw-r--r-- | arith.c | 6 | ||||
-rw-r--r-- | txr.1 | 3 |
2 files changed, 9 insertions, 0 deletions
@@ -2468,6 +2468,8 @@ tail: cnum a = c_n(anum); double b = c_flo(bnum, self); + if (b == 0.0) + return flo(1.0); if (a == 0 && b < 0) goto divzero; return flo(pow(a, b)); @@ -2477,6 +2479,8 @@ tail: double a = c_flo(anum, self); cnum b = c_n(bnum); + if (b == 0) + return flo(1.0); if (a == 0 && b < 0) goto divzero; return flo(pow(a, b)); @@ -2486,6 +2490,8 @@ tail: { double a = c_flo(anum, self); double b = c_flo(bnum, self); + if (b == 0.0) + return flo(1.0); if (a == 0 && b < 0) goto divzero; return flo(pow(a, b)); @@ -48549,6 +48549,9 @@ operand is converted to a float, and a floating point exponentiation is performed. Exponentiation that would produce a complex number is not supported. +If the exponent is zero, then the return value is 1.0 if at least one operand +is floating-point, otherwise 1. + The .code sqrt function produces a floating-point square root of |