Skip to content

Instantly share code, notes, and snippets.

@george124816
Created June 5, 2021 13:28
Show Gist options
  • Save george124816/55978e9b019f75c8dc9a703e1433b3b0 to your computer and use it in GitHub Desktop.
Save george124816/55978e9b019f75c8dc9a703e1433b3b0 to your computer and use it in GitHub Desktop.
Square Roots by Newton's Method
defmodule Sqrt do
def sqrtiter(guess, x) do
if (goodenought?(guess, x)) do
guess
else
guess
|> improve(x)
|> sqrtiter(x)
end
end
def goodenought?(guess, x) do
guess
|> square
|> Kernel.-(x)
|> abs()
|> Kernel.<(0.001)
end
def improve(guess, x), do: average(guess, x / guess)
def average(x, y), do: (x + y) / 2
def square(x), do: x * x
end
Sqrt.sqrtiter(1, 2) |> IO.puts()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment