Integer.extended_gcd

You're seeing just the function extended_gcd, go back to Integer module for more information.
Link to this function

extended_gcd(n, n)

View Source (since 1.12.0)

Specs

extended_gcd(integer(), integer()) :: {non_neg_integer(), integer(), integer()}

Returns the extended greatest common divisor of the two given integers.

It uses the Extended Euclidean algorithm to return a three-element tuple with the gcd and the coefficients m and n of Bézout's identity such that:

gcd(a, b) = m*a + n*b

By convention, extended_gcd(0, 0) returns {0, 0, 0}.

Examples

iex> Integer.extended_gcd(240, 46)
{2, -9, 47}
iex> Integer.extended_gcd(46, 240)
{2, 47, -9}
iex> Integer.extended_gcd(-46, 240)
{2, -47, -9}
iex> Integer.extended_gcd(-46, -240)
{2, -47, 9}

iex> Integer.extended_gcd(14, 21)
{7, -1, 1}

iex> Integer.extended_gcd(10, 0)
{10, 1, 0}
iex> Integer.extended_gcd(0, 10)
{10, 0, 1}
iex> Integer.extended_gcd(0, 0)
{0, 0, 0}