egison-4.1.3: test/lib/core/number.egi
--
-- Matcher
--
assertEqual "nat's o"
(match 0 as nat with
| o -> True
| _ -> False)
True
assertEqual "nat's o"
(match 1 as nat with
| o -> True
| _ -> False)
False
assertEqual "nat's s"
(match 10 as nat with
| s $n -> n)
9
assertEqual "nat's s"
(match 0 as nat with
| s o -> True
| _ -> False)
False
--
-- Sequences
--
assertEqual "nats" (take 10 nats) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
assertEqual "nats0" (take 10 nats0) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
assertEqual "odds" (take 10 odds) [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
assertEqual "evens" (take 10 evens) [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
assertEqual "primes" (take 10 primes) [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
--
-- Natural numbers
--
assertEqual "divisor" (divisor 10 5) True
assertEqual "findFactor" (findFactor 1) 1
assertEqual "findFactor" (findFactor 35) 5
assertEqual "findFactor" (findFactor 100) 2
assertEqual "pF" (pF 1) []
assertEqual "pF" (pF 3) [3]
assertEqual "pF" (pF 100) [2, 2, 5, 5]
assertEqual "isOdd" (isOdd 3) True
assertEqual "isOdd" (isOdd 4) False
assertEqual "isEven" (isEven 4) True
assertEqual "isEven" (isEven 5) False
assertEqual "isPrime" (isPrime 17) True
assertEqual "isPrime" (isPrime 18) False
assertEqual "perm" (perm 5 2) 20
assertEqual "comb" (comb 5 2) 10
assertEqual "nAdic" (nAdic 10 123) [1, 2, 3]
assertEqual "nAdic" (nAdic 2 10) [1, 0, 1, 0]
assertEqual "rtod"
((2)#(%1, take 10 %2) (rtod (6 / 35)))
(0, [1, 7, 1, 4, 2, 8, 5, 7, 1, 4])
assertEqual "rtod'" (rtod' (6 / 35)) (0, [1], [7, 1, 4, 2, 8, 5])
assertEqual "showDecimal" (showDecimal 10 (6 / 35)) "0.1714285714"
assertEqual "showDecimal'" (showDecimal' (6 / 35)) "0.1 714285 ..."
assertEqual
"regular-continued-fraction sqrt of 2"
(rtof
(regularContinuedFraction
1
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]))
1.4142135623730951
assertEqual "regular-continued-fraction pi"
(rtof
(regularContinuedFraction
3
[7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 2, 1, 1, 2, 2, 2, 2, 1, 84, 2,
1, 1, 15, 3, 13]))
3.141592653589793
assertEqual "continued-fraction pi"
(rtof
(continuedFraction
3
[7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 2, 1, 1, 2, 2, 2, 2, 1, 84, 2,
1, 1, 15, 3, 13]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1]))
3.141592653589793
assertEqual
"regularContinuedFractionOfSqrt case 1"
((2)#(%1, take 10 %2) (regularContinuedFractionOfSqrt 2))
(1, [2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
assertEqual
"regularContinuedFractionOfSqrt case 2"
(rtof
(let (x, y) := regularContinuedFractionOfSqrt 2
in regularContinuedFraction x (take 100 y)))
1.4142135623730951