fork(4) download
  1. object Main extends App {
  2. def sqrt(x: Double) = {
  3. def square(num: Double): Double =
  4. num * num
  5. def sqrtIter(guess: Double): Double =
  6. if (isGoodEnough(guess)) guess
  7. else sqrtIter(improve(guess))
  8. def improve(guess: Double) =
  9. (guess + x / guess) / 2
  10. def isGoodEnough(guess: Double) =
  11. math.abs(square(guess) - x) < 0.001 * x
  12. sqrtIter(1.0)
  13. }
  14. Seq(
  15. math.sqrt(2),
  16. sqrt(2),
  17. math.sqrt(0.001),
  18. math.sqrt(0.1e-20),
  19. math.sqrt(1.0e20),
  20. math.sqrt(1.0e50),
  21. sqrt(0.001),
  22. sqrt(0.1e-20),
  23. sqrt(1.0e20),
  24. sqrt(1.0e50)
  25. ).foreach(println)
  26. }
Success #stdin #stdout 0.4s 322176KB
stdin
Standard input is empty
stdout
1.4142135623730951
1.4142156862745097
0.03162277660168379
3.1622776601683794E-11
1.0E10
1.0E25
0.03162278245070105
3.1633394544890125E-11
1.0000021484861237E10
1.0000003807575104E25