summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arith.c6
-rw-r--r--txr.13
2 files changed, 9 insertions, 0 deletions
diff --git a/arith.c b/arith.c
index fad3e15b..32f3da44 100644
--- a/arith.c
+++ b/arith.c
@@ -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));
diff --git a/txr.1 b/txr.1
index cf6289d3..4e97200a 100644
--- a/txr.1
+++ b/txr.1
@@ -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