+/* It's not clear these are worth adding. */
+
+DEFUN ("fceiling", Ffceiling, Sfceiling, 1, 1, 0,
+ doc: /* Return the smallest integer no less than ARG, as a float.
+\(Round toward +inf.\) */)
+ (arg)
+ register Lisp_Object arg;
+{
+ double d = extract_float (arg);
+ IN_FLOAT (d = ceil (d), "fceiling", arg);
+ return make_float (d);
+}
+
+DEFUN ("ffloor", Fffloor, Sffloor, 1, 1, 0,
+ doc: /* Return the largest integer no greater than ARG, as a float.
+\(Round towards -inf.\) */)
+ (arg)
+ register Lisp_Object arg;
+{
+ double d = extract_float (arg);
+ IN_FLOAT (d = floor (d), "ffloor", arg);
+ return make_float (d);
+}
+
+DEFUN ("fround", Ffround, Sfround, 1, 1, 0,
+ doc: /* Return the nearest integer to ARG, as a float. */)
+ (arg)
+ register Lisp_Object arg;
+{
+ double d = extract_float (arg);
+ IN_FLOAT (d = emacs_rint (d), "fround", arg);
+ return make_float (d);
+}
+
+DEFUN ("ftruncate", Fftruncate, Sftruncate, 1, 1, 0,
+ doc: /* Truncate a floating point number to an integral float value.
+Rounds the value toward zero. */)
+ (arg)
+ register Lisp_Object arg;
+{
+ double d = extract_float (arg);
+ if (d >= 0.0)
+ IN_FLOAT (d = floor (d), "ftruncate", arg);
+ else
+ IN_FLOAT (d = ceil (d), "ftruncate", arg);
+ return make_float (d);
+}
+\f
+#ifdef FLOAT_CATCH_SIGILL