1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-29 19:48:19 +00:00

(Fexpt): Manually check for overflows, so that a power

of a non-zero value can't yield zero.
This commit is contained in:
Michaël Cadilhac 2007-10-01 09:17:29 +00:00
parent 5db1723918
commit 2742fe3068
2 changed files with 11 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2007-10-01 Micha,Ak(Bl Cadilhac <michael@cadilhac.name>
* floatfns.c (Fexpt): Manually check for overflows, so that a power
of a non-zero value can't yield zero.
2007-09-29 Stefan Monnier <monnier@iro.umontreal.ca>
* term.c (term_clear_mouse_face, term_mouse_highlight)

View File

@ -454,7 +454,7 @@ DEFUN ("expt", Fexpt, Sexpt, 2, 2, 0,
(arg1, arg2)
register Lisp_Object arg1, arg2;
{
double f1, f2;
double f1, f2, f3;
CHECK_NUMBER_OR_FLOAT (arg1);
CHECK_NUMBER_OR_FLOAT (arg2);
@ -500,8 +500,11 @@ DEFUN ("expt", Fexpt, Sexpt, 2, 2, 0,
else if ((f1 == 0.0 && f2 < 0.0) || (f1 < 0 && f2 != floor(f2)))
domain_error2 ("expt", arg1, arg2);
#endif
IN_FLOAT2 (f1 = pow (f1, f2), "expt", arg1, arg2);
return make_float (f1);
IN_FLOAT2 (f3 = pow (f1, f2), "expt", arg1, arg2);
/* Check for overflow in the result. */
if (f1 != 0.0 && f3 == 0.0)
range_error ("expt", arg1);
return make_float (f3);
}
DEFUN ("log", Flog, Slog, 1, 2, 0,