With 1.3/OSX this code worked up to:

user=> (sqrt 1000000000000)
1000000.0

and then hanged here:

user=> (sqrt 10000000000000)
~ $

On Oct 13, 7:04 pm, "Alan O'Donnell" <alan.m.odonn...@gmail.com>
wrote:
> Hi everyone,
>
> I've encountered an unexpected NullPointerException while translating
> some early SICP code into Clojure 1.3.0. In particular, I'm
> implementing the iterative sqrt procedure from section 1.1.7.
>
> Here's my code:
>
> (defn square [x] (* x x))
>
> (defn abs [x]
>   (cond
>     (< x 0) (- x)
>     :else x))
>
> (defn average [x y]
>   (/ (+ x y) 2))
>
> (defn sqrt
>   ([x] (sqrt 1.0 x))
>   ([guess x]
>     (letfn [(good-enough? [guess]
>               (< (abs (- (square guess) x)) 0.001))
>             (improve [guess]
>               (average guess (/ x guess)))]
>       (if (good-enough? guess)
>         guess
>         (recur (improve guess) x)))))
>
> Rather mysteriously, this works correctly for inputs less than roughly
> (square 2718.259...); anything larger throws a "NullPointerException
> clojure.lang.Numbers.lt (Numbers.java:3693)".
>
> Any ideas?

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to