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:
teo3300
2025-07-22 11:49:19 +09:00
parent 9af7ada706
commit 1af7d68261
8 changed files with 207 additions and 43 deletions

View File

@ -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)))