071-quot-rem-mod.scm (1108B)
1 ; quotient, remainder, modulo. Truncating semantics for q/r (sign of 2 ; remainder = sign of dividend); modulo's result has sign of divisor. 3 4 ; Positive / positive. 5 (if (= 3 (quotient 17 5)) 0 (sys-exit 1)) 6 (if (= 2 (remainder 17 5)) 0 (sys-exit 2)) 7 (if (= 2 (modulo 17 5)) 0 (sys-exit 3)) 8 9 ; Negative dividend, positive divisor. 10 (if (= -3 (quotient -17 5)) 0 (sys-exit 4)) 11 (if (= -2 (remainder -17 5)) 0 (sys-exit 5)) 12 (if (= 3 (modulo -17 5)) 0 (sys-exit 6)) 13 14 ; Positive dividend, negative divisor. 15 (if (= -3 (quotient 17 -5)) 0 (sys-exit 7)) 16 (if (= 2 (remainder 17 -5)) 0 (sys-exit 8)) 17 (if (= -3 (modulo 17 -5)) 0 (sys-exit 9)) 18 19 ; Negative / negative. 20 (if (= 3 (quotient -17 -5)) 0 (sys-exit 10)) 21 (if (= -2 (remainder -17 -5)) 0 (sys-exit 11)) 22 (if (= -2 (modulo -17 -5)) 0 (sys-exit 12)) 23 24 ; Exact division. 25 (if (= 4 (quotient 20 5)) 0 (sys-exit 13)) 26 (if (= 0 (remainder 20 5)) 0 (sys-exit 14)) 27 (if (= 0 (modulo 20 5)) 0 (sys-exit 15)) 28 29 ; Dividend smaller than divisor. 30 (if (= 0 (quotient 3 7)) 0 (sys-exit 16)) 31 (if (= 3 (remainder 3 7)) 0 (sys-exit 17)) 32 (if (= 3 (modulo 3 7)) 0 (sys-exit 18)) 33 34 (sys-exit 0)