mirror of
https://github.com/teo3300/rust-mal.git
synced 2026-01-12 09:15:32 +01:00
feat(types.rs): Implemented fractional numbers
Fracional numbers as extension of integernumbers, with Euclid's algorithm for fractional simplification, added functions "floor" "num" "den", added syntax [+/-]<num>/<den> to define fractional numbers BREAKING CHANGE:
This commit is contained in:
@ -1,23 +1,28 @@
|
||||
; +
|
||||
(assert (= (+ 1 -4) -3))
|
||||
(assert (= (+ 1 1) 2))
|
||||
|
||||
(assert-eq (+ 1 -4) -3)
|
||||
(assert-eq (+ 1 1) 2)
|
||||
; -
|
||||
(assert (= (- 2 1) 1))
|
||||
(assert (= (- 1 2) -1))
|
||||
(assert-eq (- 2 1) 1)
|
||||
(assert-eq (- 1 2) -1)
|
||||
|
||||
; *
|
||||
(assert (= (* 2 3) 6))
|
||||
(assert (= (* -2 3) -6))
|
||||
(assert (= (* -2 -3) 6))
|
||||
(assert-eq (* 2 3) 6)
|
||||
(assert-eq (* -2 3) -6)
|
||||
(assert-eq (* -2 -3) 6)
|
||||
|
||||
; /
|
||||
(assert (= (/ 3 2) 1))
|
||||
(assert (= (/ 2 3) 0))
|
||||
(assert (= (/ -10 2) -5))
|
||||
(assert (= (/ -10 -2) 5))
|
||||
(assert-eq (/ 3 2) 3/2)
|
||||
(assert-eq (floor (/ 3 2)) 1)
|
||||
(assert-eq (/ 2 3) 2/3)
|
||||
(assert-eq (floor (/ 2 3)) 0)
|
||||
(assert-eq (/ -10 2) -5)
|
||||
(assert-eq (/ -10 -2) 5)
|
||||
(assert (not (ok? (/ 12 0))))
|
||||
|
||||
; frac rart
|
||||
(assert-eq (num 3/2) 3)
|
||||
(assert-eq (den 3/2) 2)
|
||||
|
||||
; >
|
||||
(assert (> 3 2))
|
||||
(assert (not (> 1 2)))
|
||||
|
||||
Reference in New Issue
Block a user