From 7562b4d3d13bdd0d3991651f19ae1747d088258e Mon Sep 17 00:00:00 2001
From: Ramakrishnan Muthukrishnan <vu3rdd@gmail.com>
Date: Sun, 30 May 2010 08:36:07 +0530
Subject: [PATCH] solution to 1.46

---
 src/sicp/ex1_46.clj | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)
 create mode 100644 src/sicp/ex1_46.clj

diff --git a/src/sicp/ex1_46.clj b/src/sicp/ex1_46.clj
new file mode 100644
index 0000000..0cf3d0c
--- /dev/null
+++ b/src/sicp/ex1_46.clj
@@ -0,0 +1,33 @@
+(ns sicp.ex1_46
+  (:use [clojure.contrib test-is]
+	[sicp utils]))
+
+(defn iterative-improve [good-enough-fn? improve-guess-fn]
+  (fn [guess]
+    (let [new-guess (improve-guess-fn guess)]
+      (if (good-enough-fn? guess new-guess)
+	new-guess
+	(recur new-guess)))))
+
+(defn sqrt [x]
+  (let [initial-guess 1.0]
+    ((iterative-improve
+      (fn [old new] (< (Math/abs (- old new)) 0.00001))
+      (fn [guess] (average guess x)))
+     initial-guess)))
+
+(defn fixed-point [f initial-guess]
+  ((iterative-improve
+    (fn [old new] (< (Math/abs (- old new)) 0.00001))
+    f) initial-guess))
+
+(comment
+(sqrt 4)
+;;=> 3.9999942779541016
+user> (sqrt (* 2 2))
+;;=> 3.9999942779541016
+user> (fixed-point #(Math/cos %) 1.0)
+;;=> 0.7390822985224024
+user> (fixed-point #(+ (Math/cos %) (Math/sin %)) 1.0)
+;;=> 1.2587315962971173  
+)
\ No newline at end of file
-- 
2.45.2