packages feed

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

;;
;; Matcher
;;
(assert-equal "nat's o - case 1"
  (match 0 nat
    {[<o> #t]
     [_ #f]})
  #t)

(assert-equal "nat's o - case 2"
  (match 1 nat
    {[<o> #t]
     [_ #f]})
  #f)

(assert-equal "nat's s - case 1"
  (match 10 nat
    {[<s $n> n]})
  9)

(assert-equal "nat's s - case 2"
  (match 0 nat
    {[<s <o>> #t]
     [_ #f]})
  #f)

;;
;; Sequences
;;
(assert-equal "nats"
  (take 10 nats)
  {1 2 3 4 5 6 7 8 9 10})

(assert-equal "nats0"
  (take 10 nats0)
  {0 1 2 3 4 5 6 7 8 9})

(assert-equal "odds"
  (take 10 odds)
  {1 3 5 7 9 11 13 15 17 19})

(assert-equal "evens"
  (take 10 evens)
  {2 4 6 8 10 12 14 16 18 20})

(assert-equal "primes"
  (take 10 primes)
  {2 3 5 7 11 13 17 19 23 29})

;;
;; Natural numbers
;;
(assert-equal "divisor?"
  (divisor? 10 5)
  #t)

(assert-equal "find-factor"
  (find-factor 100)
  2)

(assert-equal "p-f"
  (p-f 100)
  {2 2 5 5})

(assert-equal "odd? - case 1"
  (odd? 3)
  #t)

(assert-equal "odd? - case 2"
  (odd? 4)
  #f)

(assert-equal "even? - case 1"
  (even? 4)
  #t)

(assert-equal "even? - case 2"
  (even? 5)
  #f)

(assert-equal "prime? - case 1"
  (prime? 17)
  #t)

(assert-equal "prime? - case 2"
  (prime? 18)
  #f)

(assert-equal "perm"
  (perm 5 2)
  20)

(assert-equal "comb"
  (comb 5 2)
  10)

(assert-equal "n-adic - case 1"
  (n-adic 10 123)
  {1 2 3})

(assert-equal "n-adic - case 2"
  (n-adic 2 10)
  {1 0 1 0})

;;
;; Dicimal fractions
;;
(assert-equal "rtod"
  (2#[%1 (take 10 %2)] (rtod (/ 6 35)))
  [0 {1 7 1 4 2 8 5 7 1 4}])

(assert-equal "rtod'"
  (rtod' (/ 6 35))
  [0 {1} {7 1 4 2 8 5}])

(assert-equal "show-decimal"
  (show-decimal 10 (/ 6 35))
  "0.1714285714")

(assert-equal "show-decimal'"
  (show-decimal' (/ 6 35))
  "0.1 714285 ...")

(assert-equal "regular-continued-fraction sqrt of 2"
  (rtof (regular-continued-fraction 1 {2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2}))
  1.4142135623730951)

(assert-equal "regular-continued-fraction pi"
  (rtof (regular-continued-fraction 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)

(assert-equal "continued-fraction pi"
  (rtof (continued-fraction 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)

(assert-equal "regular-continued-fraction-of-sqrt case 1"
  (2#[%1 (take 10 %2)] (regular-continued-fraction-of-sqrt 2))
  [1 {2 2 2 2 2 2 2 2 2 2}])
  
(assert-equal "regular-continued-fraction-of-sqrt case 2"
  (rtof (regular-continued-fraction (2#[%1 (take 100 %2)] (regular-continued-fraction-of-sqrt 2))))
  1.4142135623730951)