(expr, opt)
return rep, opt.clone({'gens': gens})
Transform an expression into a multinomial form.
Transform an expression into a multinomial form.
Transform an expression into a multinomial form .
def _dict_from_expr(expr, opt):
    """Transform an expression into a multinomial form. """
    if expr.is_commutative is False:
        raise PolynomialError('non-commutative expressions are not supported')

    def _is_expandable_pow(expr):
        return (expr.is_Pow and expr.exp.is_positive and expr.exp.is_Integer
                and expr.base.is_Add)

    if opt.expand is not False:
        expr = expr.expand()
        # TODO: Integrate this into expand() itself
        while any(_is_expandable_pow(i) or i.is_Mul and
            any(_is_expandable_pow(j) for j in i.args) for i in
                Add.make_args(expr)):

            expr = expand_multinomial(expr)
        while any(i.is_Mul and any(j.is_Add for j in i.args) for i in Add.make_args(expr)):
            expr = expand_mul(expr)

    if opt.gens:
        rep, gens = _dict_from_expr_if_gens(expr, opt)
    else:
        rep, gens = _dict_from_expr_no_gens(expr, opt)

    return rep, opt.clone({'gens': gens})
def _dict_from_expr ( expr , opt ) : if expr . is_commutative is False : raise PolynomialError ( 'non-commutative expressions are not supported' ) def _is_expandable_pow ( expr ) : return ( expr . is_Pow and expr . exp . is_positive and expr . exp . is_Integer and expr . base . is_Add ) if opt . expand is not False : expr = expr . expand ( ) # TODO: Integrate this into expand() itself while any ( _is_expandable_pow ( i ) or i . is_Mul and any ( _is_expandable_pow ( j ) for j in i . args ) for i in Add . make_args ( expr ) ) : expr = expand_multinomial ( expr ) while any ( i . is_Mul and any ( j . is_Add for j in i . args ) for i in Add . make_args ( expr ) ) : expr = expand_mul ( expr ) if opt . gens : rep , gens = _dict_from_expr_if_gens ( expr , opt ) else : rep , gens = _dict_from_expr_no_gens ( expr , opt ) return rep , opt . clone ( { 'gens' : gens } )