# [latex3-commits] [l3svn] r6891 - Remove "division by zero" exception for 0^-inf and (-0)^-inf (see #272)

Sat Feb 11 19:37:26 CET 2017

Author: bruno
Date: 2017-02-11 19:37:26 +0100 (Sat, 11 Feb 2017)
New Revision: 6891

Modified:
trunk/l3kernel/l3fp-expo.dtx
trunk/l3kernel/l3fp.dtx
trunk/l3kernel/testfiles/m3fp-expo001.tlg
Log:
Remove "division by zero" exception for 0^-inf and (-0)^-inf (see #272)

This is to follow the standard.  The idea: even though we are dividing
by zero and obtaining an infinite result, there was already an infinity
so it is not useful to treat that case as exceptional.

Modified: trunk/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/l3kernel/l3fp-expo.dtx	2017-02-11 16:31:25 UTC (rev 6890)
+++ trunk/l3kernel/l3fp-expo.dtx	2017-02-11 18:37:26 UTC (rev 6891)
@@ -938,9 +938,9 @@
%   power or $\infty$ to a negative power, and $+\infty$ otherwise.
%   Thus, if the type of $a$ and the sign of $b$ coincide, the result
%   is~$0$, since those conveniently take the same possible values, $0$
-%   and~$2$.  Otherwise, either $a=\pm 0$ with $b<0$ and we have a
-%   division by zero, or $a=\pm\infty$ and $b>0$ and the result is also
-%   $+\infty$, but without any exception.
+%   and~$2$.  Otherwise, either $a=\pm\infty$ and $b>0$ and the result
+%   is $+\infty$, or $a=\pm 0$ with $b<0$ and we have a division by zero
+%   unless $b=-\infty$.
%    \begin{macrocode}
\cs_new:Npn \@@_pow_zero_or_inf:ww
\s_@@ \@@_chk:w #1#2; \s_@@ \@@_chk:w #3#4
@@ -951,14 +951,17 @@
\if_meaning:w #1 #4
\@@_case_return_o:Nw \c_zero_fp
\fi:
-    \if_meaning:w 0 #1
+    \if_meaning:w 2 #1
+      \@@_case_return_o:Nw \c_inf_fp
+    \fi:
+    \if_meaning:w 2 #3
+      \@@_case_return_o:Nw \c_inf_fp
+    \else:
\@@_case_use:nw
{
\@@_division_by_zero_o:NNww \c_inf_fp ^
\s_@@ \@@_chk:w #1 #2 ;
}
-    \else:
-      \@@_case_return_o:Nw \c_inf_fp
\fi:
\s_@@ \@@_chk:w #3#4
}

Modified: trunk/l3kernel/l3fp.dtx
===================================================================
--- trunk/l3kernel/l3fp.dtx	2017-02-11 16:31:25 UTC (rev 6890)
+++ trunk/l3kernel/l3fp.dtx	2017-02-11 18:37:26 UTC (rev 6891)
@@ -937,7 +937,7 @@
%   of the form $p/q$ with $p$ integer and $q$ odd,
%   unless the result is zero (in that case, the sign is
%   chosen arbitrarily to be $+0$).  \enquote{Division by zero} occurs
-%   when raising $\pm 0$ to a strictly negative power.
+%   when raising $\pm 0$ to a finite strictly negative power.
%   \enquote{Underflow} and \enquote{overflow} occur when appropriate.
% \end{function}
%

Modified: trunk/l3kernel/testfiles/m3fp-expo001.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3fp-expo001.tlg	2017-02-11 16:31:25 UTC (rev 6890)
+++ trunk/l3kernel/testfiles/m3fp-expo001.tlg	2017-02-11 18:37:26 UTC (rev 6891)
@@ -191,15 +191,6 @@
'(-1)^(1.3)' = nan
'(0)^(nan)' = nan
'(0)^(inf)' = 0
-! Undefined control sequence.
-<argument> \LaTeX3 error:
-                           Division by zero in (0)^(-inf)
-l. ...  }
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., \hobx'), type I' and the correct
-spelling (e.g., I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
'(0)^(-inf)' = inf
'(0)^(1)' = 0
! Undefined control sequence.
@@ -230,15 +221,6 @@
'(-0)^(inf)' = 0
! Undefined control sequence.
<argument> \LaTeX3 error:
-                           Division by zero in (-0)^(-inf)
-l. ...  }
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., \hobx'), type I' and the correct
-spelling (e.g., I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-! Undefined control sequence.
-<argument> \LaTeX3 error:
Invalid operation (-0)^(-inf)
l. ...  }
The control sequence at the end of the top line