aboutsummaryrefslogtreecommitdiffstats
path: root/src/floatfns.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/floatfns.c')
-rw-r--r--src/floatfns.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/floatfns.c b/src/floatfns.c
index c68b9bd3a65..072e85776b5 100644
--- a/src/floatfns.c
+++ b/src/floatfns.c
@@ -185,14 +185,14 @@ If X is zero, both parts (SGNFCAND and EXP) are zero. */)
185 return Fcons (make_float (sgnfcand), make_number (exponent)); 185 return Fcons (make_float (sgnfcand), make_number (exponent));
186} 186}
187 187
188DEFUN ("ldexp", Fldexp, Sldexp, 1, 2, 0, 188DEFUN ("ldexp", Fldexp, Sldexp, 2, 2, 0,
189 doc: /* Construct number X from significand SGNFCAND and exponent EXP. 189 doc: /* Return X * 2**EXP, as a floating point number.
190Returns the floating point value resulting from multiplying SGNFCAND 190EXP must be an integer. */)
191(the significand) by 2 raised to the power of EXP (the exponent). */)
192 (Lisp_Object sgnfcand, Lisp_Object exponent) 191 (Lisp_Object sgnfcand, Lisp_Object exponent)
193{ 192{
194 CHECK_NUMBER (exponent); 193 CHECK_NUMBER (exponent);
195 return make_float (ldexp (XFLOATINT (sgnfcand), XINT (exponent))); 194 int e = min (max (INT_MIN, XINT (exponent)), INT_MAX);
195 return make_float (ldexp (XFLOATINT (sgnfcand), e));
196} 196}
197 197
198DEFUN ("exp", Fexp, Sexp, 1, 1, 0, 198DEFUN ("exp", Fexp, Sexp, 1, 1, 0,