Skip to content

Instantly share code, notes, and snippets.

View rkwofford's full-sized avatar

Richard Wofford rkwofford

  • Ringoes, New Jersey, USA
View GitHub Profile
@rkwofford
rkwofford / IRR in Clojure.clj
Created April 13, 2017 23:01
IRR in Clojure created by rkwofford - https://repl.it/HGae/9
(defn deriv [f dx] (fn [x] (/ (- (f (+ x dx)) (f x) ) dx)))
(defn make-improver [f dx] (fn [guess] (- guess (/ (f guess) ((deriv f dx) guess)))))
(defn make-good-enough [f tolerance] (fn [guess] (< (Math/abs (f guess)) tolerance)))
(defn iterative-improve [x improve good?] (if (good? x) x (iterative-improve (improve x) improve good?)))
(defn solve [f guess dx tolerance] (iterative-improve guess (make-improver f dx) (make-good-enough f tolerance)))
(defn pv
([] 0)
([i] (/ (+ 1 i)))
([i t] (Math/pow (pv i) t))
([i t c] (* c (pv i t))))