+/* It's not clear these are worth adding. */
+
+DEFUN ("fceiling", Ffceiling, Sfceiling, 1, 1, 0,
+ "Return the smallest integer no less than ARG, as a float.\n\
+\(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,
+ "Return the largest integer no greater than ARG, as a float.\n\
+\(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,
+ "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,
+ "Truncate a floating point number to an integral float value.\n\
+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