boot2

Playing with the boostrap
git clone https://git.ryansepassi.com/git/boot2.git
Log | Files | Refs | README

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)