def test_parallel_dict_from_expr(): parallel_dict_from_expr([Eq(x, 1), Eq(x**2, 2)]) == ([{ (1, ): Integer(1) }, { (2, ): Integer(2) }], (x, )) raises(PolynomialError, lambda: parallel_dict_from_expr([A * B - B * A]))
def test__parallel_dict_from_expr_no_gens(): assert parallel_dict_from_expr([x * y, Integer(3)]) == ( [{ (1, 1): Integer(1) }, { (0, 0): Integer(3) }], (x, y), ) assert parallel_dict_from_expr([x * y, 2 * z, Integer(3)]) == ( [{ (1, 1, 0): Integer(1) }, { (0, 0, 1): Integer(2) }, { (0, 0, 0): Integer(3) }], (x, y, z), ) assert parallel_dict_from_expr((Mul(x, x**2, evaluate=False), )) == ( [{ (3, ): 1 }], (x, ), )
def test__parallel_dict_from_expr_no_gens(): assert parallel_dict_from_expr([x*y, Integer(3)]) == \ ([{(1, 1): Integer(1)}, {(0, 0): Integer(3)}], (x, y)) assert parallel_dict_from_expr([x*y, 2*z, Integer(3)]) == \ ([{(1, 1, 0): Integer( 1)}, {(0, 0, 1): Integer(2)}, {(0, 0, 0): Integer(3)}], (x, y, z)) assert parallel_dict_from_expr((Mul(x, x**2, evaluate=False),)) == \ ([{(3,): 1}], (x,))
def test__parallel_dict_from_expr_if_gens(): assert parallel_dict_from_expr( [x + 2 * y + 3 * z, Integer(7)], gens=(x, )) == ( [{ (1, ): Integer(1), (0, ): 2 * y + 3 * z }, { (0, ): Integer(7) }], (x, ), )
def sdm_from_vector(vec, O, K, **opts): """ Create an sdm from an iterable of expressions. Coefficients are created in the ground field ``K``, and terms are ordered according to monomial order ``O``. Named arguments are passed on to the polys conversion code and can be used to specify for example generators. Examples ======== >>> from sympy.polys.distributedmodules import sdm_from_vector >>> from sympy.abc import x, y, z >>> from sympy.polys import QQ, lex >>> sdm_from_vector([x**2+y**2, 2*z], lex, QQ) [((1, 0, 0, 1), 2), ((0, 2, 0, 0), 1), ((0, 0, 2, 0), 1)] """ dics, gens = parallel_dict_from_expr(sympify(vec), **opts) dic = {} for i, d in enumerate(dics): for k, v in d.items(): dic[(i, ) + k] = K.convert(v) return sdm_from_dict(dic, O)
def sdm_from_vector(vec, O, K, **opts): """ Create an sdm from an iterable of expressions. Coefficients are created in the ground field ``K``, and terms are ordered according to monomial order ``O``. Named arguments are passed on to the polys conversion code and can be used to specify for example generators. Examples ======== >>> from sympy.polys.distributedmodules import sdm_from_vector >>> from sympy.abc import x, y, z >>> from sympy.polys import QQ, lex >>> sdm_from_vector([x**2+y**2, 2*z], lex, QQ) [((1, 0, 0, 1), 2/1), ((0, 2, 0, 0), 1/1), ((0, 0, 2, 0), 1/1)] """ dics, gens = parallel_dict_from_expr(sympify(vec), **opts) dic = {} for i, d in enumerate(dics): for k, v in d.iteritems(): dic[(i,) + k] = K.convert(v) return sdm_from_dict(dic, O)
def test__parallel_dict_from_expr_no_gens(): assert parallel_dict_from_expr([x*y, Integer(3)]) == \ ([{(1,1): Integer(1)}, {(0,0): Integer(3)}], (x,y)) assert parallel_dict_from_expr([x*y, 2*z, Integer(3)]) == \ ([{(1,1,0): Integer(1)}, {(0,0,1): Integer(2)}, {(0,0,0): Integer(3)}], (x,y,z))
def test_parallel_dict_from_expr(): assert parallel_dict_from_expr([Eq(x, 1), Eq( x**2, 2)]) == ([{(0,): -Integer(1), (1,): Integer(1)}, {(0,): -Integer(2), (2,): Integer(1)}], (x,)) raises(PolynomialError, lambda: parallel_dict_from_expr([A*B - B*A]))
def test__parallel_dict_from_expr_no_gens(): assert parallel_dict_from_expr([x*y, Integer(3)]) == \ ([{(1, 1): Integer(1)}, {(0, 0): Integer(3)}], (x, y)) assert parallel_dict_from_expr([x*y, 2*z, Integer(3)]) == \ ([{(1, 1, 0): Integer( 1)}, {(0, 0, 1): Integer(2)}, {(0, 0, 0): Integer(3)}], (x, y, z))
def test__parallel_dict_from_expr_if_gens(): assert parallel_dict_from_expr([x + 2*y + 3*z, Integer(7)], gens=(x,)) == \ ([{(1,): Integer(1), (0,): 2*y + 3*z}, {(0,): Integer(7)}], (x,))
def test_parallel_dict_from_expr(): parallel_dict_from_expr([Eq(x, 1), Eq(x**2, 2)]) == ([{(1,): Integer(1)}, {(2,): Integer(2)}], (x,)) raises(PolynomialError, "parallel_dict_from_expr([A*B - B*A])")