Re: Integer residue-classes
Paul Schlie 26 Feb 2006 16:58 UTC
Personally, I find the following definitions more generally useful:
; q/d :: (+ (quo q d) (/ (mod q d) d)) ; being asymmetric about 0
; q/d :: (+ (div q d) (/ (rem q d) (abs d))) ; being symmetric about 0
(define (quo q d) ; asymmetric about 0
(if (= q 0) 0 (floor (/ q d))))
(define (mod q d) ; having the same sign as d
(- q (* (if (= d 0) 0 (quo q d)) d)))
(define (div q d) ; symmetric about 0
(if (= q 0) 0 (truncate (/ q d))))
(define (rem q d) ; having the same sign as (div q d)
(* (if (= d 0) 1 (/ d (abs d))) (- q (* (if (= d 0) 0 (div q d)) d))))