Nyquist / XLISP 2.0 - Contents | Tutorials | Examples | Reference

# cl:mod

(cl:mod number divisor)
  number - an integer or floating-point number
  divisor - an integer or floating-point number
  returns - the remainder of a cl:floor operation

    (defun cl:mod (number divisor)
      (if (= (abs number) (abs divisor))
          (if (and (integerp number) (integerp divisor)) 0 0.0)
          (let* ((i-quotient (/ (truncate number) (truncate divisor)))
                 (f-quotient (/ (float number) divisor))
                 (quotient (if (or (= i-quotient f-quotient)  ; integer result
                                   (not (minusp f-quotient)))
                               (truncate f-quotient)
                               (1- (truncate f-quotient)))))
            (- number (* quotient divisor)))))

The cl:mod function performs the cl:floor operation on its arguments and returns the remainder of the cl:floor operation. The result is either zero or an integer or floating-point number with the same sign as the 'divisor' argument. If both arguments are integer numbers, the cl:mod function is equal to the mathematical modulus function.

Back to top

Nyquist / XLISP 2.0 - Contents | Tutorials | Examples | Reference