(a, b)
Construct field isomorphism via factorization.
Construct field isomorphism via factorization.
Construct field isomorphism via factorization .
def field_isomorphism_factor(a, b):
    """Construct field isomorphism via factorization. """
    _, factors = factor_list(a.minpoly, extension=b)

    for f, _ in factors:
        if f.degree() == 1:
            coeffs = f.rep.TC().to_sympy_list()
            d, terms = len(coeffs) - 1, []

            for i, coeff in enumerate(coeffs):
                terms.append(coeff*b.root**(d - i))

            root = Add(*terms)

            if (a.root - root).evalf(chop=True) == 0:
                return coeffs

            if (a.root + root).evalf(chop=True) == 0:
                return [ -c for c in coeffs ]
    else:
        return None
def field_isomorphism_factor ( a , b ) : _ , factors = factor_list ( a . minpoly , extension = b ) for f , _ in factors : if f . degree ( ) == 1 : coeffs = f . rep . TC ( ) . to_sympy_list ( ) d , terms = len ( coeffs ) - 1 , [ ] for i , coeff in enumerate ( coeffs ) : terms . append ( coeff * b . root ** ( d - i ) ) root = Add ( * terms ) if ( a . root - root ) . evalf ( chop = True ) == 0 : return coeffs if ( a . root + root ) . evalf ( chop = True ) == 0 : return [ - c for c in coeffs ] else : return None