The
| the result of truncating the result of number divided by divisor | ||
| the remainder of the truncate operation |
(defun cl:ceiling (number &optional (divisor
(if (integerp number) 1 1.0)
divisor-p))
(let ((quotient
(cond ((and (not divisor-p) (integerp number)) number)
((= number divisor) 1)
(t (let ((i-quotient (/ (truncate number) (truncate divisor)))
(f-quotient (/ (float number) divisor)))
(if (or (= i-quotient f-quotient) ; integer result
(not (plusp f-quotient)))
(truncate f-quotient)
(1+ (truncate f-quotient))))))))
(setq *rslt* (list quotient (- number (* quotient divisor)))
cl:*multiple-values* t)
quotient))
The
The quotient is directly returned by the function, while a list:
(quotient remainder)
is stored in the Nyquist/XLISP *rslt* variable and the cl:*multiple-values* is set to T to signal that Multiple Values are returned.
Examples:
(cl:ceiling 3.5) => 4 ; *rslt* => ( 4 -0.5) (cl:ceiling -3.5) => -3 ; *rslt* => (-3 -0.5)