2016 Update
This commit is contained in:
parent
948b86eafa
commit
dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions
|
|
@ -0,0 +1,52 @@
|
|||
(ns tanevaulator
|
||||
(:gen-class))
|
||||
|
||||
;; Notation: [a b c] -> a x arctan(a/b)
|
||||
(def test-cases [
|
||||
[[1, 1, 2], [1, 1, 3]],
|
||||
[[2, 1, 3], [1, 1, 7]],
|
||||
[[4, 1, 5], [-1, 1, 239]],
|
||||
[[5, 1, 7], [2, 3, 79]],
|
||||
[[1, 1, 2], [1, 1, 5], [1, 1, 8]],
|
||||
[[4, 1, 5], [-1, 1, 70], [1, 1, 99]],
|
||||
[[5, 1, 7], [4, 1, 53], [2, 1, 4443]],
|
||||
[[6, 1, 8], [2, 1, 57], [1, 1, 239]],
|
||||
[[8, 1, 10], [-1, 1, 239], [-4, 1, 515]],
|
||||
[[12, 1, 18], [8, 1, 57], [-5, 1, 239]],
|
||||
[[16, 1, 21], [3, 1, 239], [4, 3, 1042]],
|
||||
[[22, 1, 28], [2, 1, 443], [-5, 1, 1393], [-10, 1, 11018]],
|
||||
[[22, 1, 38], [17, 7, 601], [10, 7, 8149]],
|
||||
[[44, 1, 57], [7, 1, 239], [-12, 1, 682], [24, 1, 12943]],
|
||||
[[88, 1, 172], [51, 1, 239], [32, 1, 682], [44, 1, 5357], [68, 1, 12943]],
|
||||
[[88, 1, 172], [51, 1, 239], [32, 1, 682], [44, 1, 5357], [68, 1, 12944]]
|
||||
])
|
||||
|
||||
(defn tan-sum [a b]
|
||||
" tan (a + b) "
|
||||
(/ (+ a b) (- 1 (* a b))))
|
||||
|
||||
(defn tan-eval [m]
|
||||
" Evaluates tan of a triplet (e.g. [1, 1, 2])"
|
||||
(let [coef (first m)
|
||||
rat (/ (nth m 1) (nth m 2))]
|
||||
(cond
|
||||
(= 1 coef) rat
|
||||
(neg? coef) (tan-eval [(- (nth m 0)) (- (nth m 1)) (nth m 2)])
|
||||
:else (let [
|
||||
ca (quot coef 2)
|
||||
cb (- coef ca)
|
||||
a (tan-eval [ca (nth m 1) (nth m 2)])
|
||||
b (tan-eval [cb (nth m 1) (nth m 2)])]
|
||||
(tan-sum a b)))))
|
||||
|
||||
(defn tans [m]
|
||||
" Evaluates tan of set of triplets (e.g. [[1, 1, 2], [1, 1, 3]])"
|
||||
(if (= 1 (count m))
|
||||
(tan-eval (nth m 0))
|
||||
(let [a (tan-eval (first m))
|
||||
b (tans (rest m))]
|
||||
(tan-sum a b))))
|
||||
|
||||
(doseq [q test-cases]
|
||||
" Display results "
|
||||
(println "tan " q " = "(tans q)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue