Listing 1.1 has a nasty surprise if you don't like the fact that the golden ratio is only computed to a precision of 1.0e9, and so you make a seeming reasonable change and make the convergence test 1.0e15. (Not understanding how groovy is treating untyped numbers you make the assumption that at least IEEE double precision would be available. The Java programmer thinks integer division might be a problem, but clearly decimal numbers are getting computed...)
The surprise is the algorithm no longer terminates.
The example is almost Python syntax, so with a few tweaks you can run it as Python, and Python dutifully computes a more accurate golden ratio with only a few more iterations.
So you make "fibo" start with "[1.0, 1.0]" but strangely this does not fix the problem (and it is not because float precision is being used). So you set "fibo" to "[1.0d, 1.0d]" and now it works. But "[1.0f, 1.0f]" also works because computations are always double precision.
Given that the example is numerical in nature it seems that the example should use doubles  the reader should learn early that 1.0 is not going to behave like 1.0d as it would in Java (and maybe the book will reveal why this is a good design decision in groovy, although it escapes me at the moment).
