]> code.delx.au - gnu-emacs/blobdiff - src/floatfns.c
(Fnext_property_change): Properly offset interval
[gnu-emacs] / src / floatfns.c
index 11cf657f105fc3d1b5089d103a79f61061a54c4f..cd1c0c4441e857f75068285512339226e2b577e9 100644 (file)
@@ -25,7 +25,7 @@ Boston, MA 02111-1307, USA.  */
 
    Define HAVE_INVERSE_HYPERBOLIC if you have acosh, asinh, and atanh.
    Define HAVE_CBRT if you have cbrt.
-   Define HAVE_RINT if you have rint.
+   Define HAVE_RINT if you have a working rint.
    If you don't define these, then the appropriate routines will be simulated.
 
    Define HAVE_MATHERR if on a system supporting the SysV matherr callback.
@@ -824,9 +824,13 @@ round2 (i1, i2)
   return q + (abs_r + (q & 1) <= abs_r1 ? 0 : (i2 ^ r) < 0 ? -1 : 1);
 }
 
-#ifndef HAVE_RINT
+/* The code uses emacs_rint, so that it works to undefine HAVE_RINT
+   if `rint' exists but does not work right.  */
+#ifdef HAVE_RINT
+#define emacs_rint rint
+#else
 static double
-rint (d)
+emacs_rint (d)
      double d;
 {
   return floor (d + 0.5);
@@ -864,7 +868,7 @@ With optional DIVISOR, return the nearest integer to ARG/DIVISOR.")
   (arg, divisor)
      Lisp_Object arg, divisor;
 {
-  return rounding_driver (arg, divisor, rint, round2, "round");
+  return rounding_driver (arg, divisor, emacs_rint, round2, "round");
 }
 
 DEFUN ("truncate", Ftruncate, Struncate, 1, 2, 0,
@@ -929,12 +933,12 @@ DEFUN ("fround", Ffround, Sfround, 1, 1, 0,
      register Lisp_Object arg;
 {
   double d = extract_float (arg);
-  IN_FLOAT (d = rint (d), "fround", arg);
+  IN_FLOAT (d = emacs_rint (d), "fround", arg);
   return make_float (d);
 }
 
 DEFUN ("ftruncate", Fftruncate, Sftruncate, 1, 1, 0,
-       "Truncate a floating point number to an integral float value.\n\
+  "Truncate a floating point number to an integral float value.\n\
 Rounds the value toward zero.")
   (arg)
      register Lisp_Object arg;
@@ -1006,6 +1010,7 @@ matherr (x)
 }
 #endif /* HAVE_MATHERR */
 
+void
 init_floatfns ()
 {
 #ifdef FLOAT_CATCH_SIGILL
@@ -1021,6 +1026,7 @@ init_floatfns ()
 
 #endif /* not LISP_FLOAT_TYPE */
 
+void
 syms_of_floatfns ()
 {
 #ifdef LISP_FLOAT_TYPE