Е
defmodule QE do
def solve(a, b, c) do
case discriminant(a, b, c) do
discriminant when discriminant >= 0 ->
{
root(a, b, :plus, discriminant),
root(a, b, :minus, discriminant)
}
_ ->
:error
end
end
defp root(a, b, sign, discriminant) do
case sign do
:plus -> (-b + :math.sqrt(discriminant)) / (2 * a)
:minus -> (-b - :math.sqrt(discriminant)) / (2 * a)
end
end
defp discriminant(a, b, c) do
b * b - 4 * a * c
end
end
