(a, b)
return (x*x_sign, y*y_sign, a)
Returns x, y, g such that g = x*a + y*b = gcd(a, b).

       >>> from sympy.core.numbers import igcdex
       >>> igcdex(2, 3)
       (-1, 1, 1)
       >>> igcdex(10, 12)
       (-1, 1, 2)

       >>> x, y, g = igcdex(100, 2004)
       >>> x, y, g
       (-20, 1, 4)
       >>> x*100 + y*2004
       4
Returns x, y, g such that g = x*a + y*b = gcd(a, b).
Returns x y g such that g = x * a + y * b = gcd ( a b ) .
def igcdex(a, b):
    """Returns x, y, g such that g = x*a + y*b = gcd(a, b).

       >>> from sympy.core.numbers import igcdex
       >>> igcdex(2, 3)
       (-1, 1, 1)
       >>> igcdex(10, 12)
       (-1, 1, 2)

       >>> x, y, g = igcdex(100, 2004)
       >>> x, y, g
       (-20, 1, 4)
       >>> x*100 + y*2004
       4

    """
    if (not a) and (not b):
        return (0, 1, 0)

    if not a:
        return (0, b//abs(b), abs(b))
    if not b:
        return (a//abs(a), 0, abs(a))

    if a < 0:
        a, x_sign = -a, -1
    else:
        x_sign = 1

    if b < 0:
        b, y_sign = -b, -1
    else:
        y_sign = 1

    x, y, r, s = 1, 0, 0, 1

    while b:
        (c, q) = (a % b, a // b)
        (a, b, r, s, x, y) = (b, c, x - q*r, y - q*s, r, s)

    return (x*x_sign, y*y_sign, a)
def igcdex ( a , b ) : if ( not a ) and ( not b ) : return ( 0 , 1 , 0 ) if not a : return ( 0 , b // abs ( b ) , abs ( b ) ) if not b : return ( a // abs ( a ) , 0 , abs ( a ) ) if a < 0 : a , x_sign = - a , - 1 else : x_sign = 1 if b < 0 : b , y_sign = - b , - 1 else : y_sign = 1 x , y , r , s = 1 , 0 , 0 , 1 while b : ( c , q ) = ( a % b , a // b ) ( a , b , r , s , x , y ) = ( b , c , x - q * r , y - q * s , r , s ) return ( x * x_sign , y * y_sign , a )