diff --git a/lib/elixir/lib/integer.ex b/lib/elixir/lib/integer.ex index 5506fac8d0..d8ed7ed154 100644 --- a/lib/elixir/lib/integer.ex +++ b/lib/elixir/lib/integer.ex @@ -545,10 +545,10 @@ defmodule Integer do @doc since: "1.12.0" @spec extended_gcd(integer, integer) :: {non_neg_integer, integer, integer} def extended_gcd(0, 0), do: {0, 0, 0} - def extended_gcd(0, b) when b > 0, do: {b, 0, 1} - def extended_gcd(0, b) when b < 0, do: {-b, 0, -1} - def extended_gcd(a, 0) when a > 0, do: {a, 1, 0} - def extended_gcd(a, 0) when a < 0, do: {-a, -1, 0} + def extended_gcd(0, b) when is_integer(b) and b > 0, do: {b, 0, 1} + def extended_gcd(0, b) when is_integer(b) and b < 0, do: {-b, 0, -1} + def extended_gcd(a, 0) when is_integer(a) and a > 0, do: {a, 1, 0} + def extended_gcd(a, 0) when is_integer(a) and a < 0, do: {-a, -1, 0} def extended_gcd(integer1, integer2) when is_integer(integer1) and is_integer(integer2) do extended_gcd(integer2, integer1, 0, 1, 1, 0)