packages feed

egison-5.0.0: test/lib/core/number.egi

--
-- 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" (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"
  (regularContinuedFractionOfSqrt 2)
  (1, [], [2])

assertEqual
  "regularContinuedFractionOfSqrt case 2"
  (rtof
     (let (x, s, c) := regularContinuedFractionOfSqrt 2
       in regularContinuedFraction x (take 100 (s ++ repeat c))))
  1.4142135623730951