blob: b99d61e7915f9fde9ddfb8d58c88991ba35db984 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
object Main extends App {
def abs(x:Double) = if (x < 0) -x else x
def sqrt(x: Double) = {
def sqrtIter(guess: Double): Double =
if (isGoodEnough(guess)) guess
else sqrtIter(improve(guess))
def isGoodEnough(guess: Double) =
abs(guess * guess - x ) /x < 0.001
def improve(guess: Double) =
(guess + x / guess) / 2
sqrtIter(1.0)
}
println(sqrt(2))
println(sqrt(0.001))
println(sqrt(0.1e-20))
println(sqrt(1.0e20))
println(sqrt(1.0e50))
}
|