Diofant 0.10

27 Jan 2019

New features

Major changes

  • Stable enumeration of polynomial roots in RootOf, see #633, #658, #741 and #768. Thanks to Kalevi Suominen for the implementation idea and help with review.

  • Support root isolation for polynomials with algebraic coefficients, see #673 and #630. Thanks to Kalevi Suominen for help with review.

  • Polynomials with algebraic coefficients will use algebraic number domains per default, see #478.

Compatibility breaks

  • Removed DMF class, see #620.

  • Removed K[x, y, ...] sugar, use poly_ring() to create polynomial rings, see #622.

  • Removed FracField class, see #622.

  • get_field() method for domains, derived from CommutativeRing, now is a property, e.g. field, see #622.

  • Removed PolyRing class, see #621.

  • get_ring() method for domains, derived from CommutativeRing, now is a property, e.g. ring, see #621.

  • Removed compose option for minimal_polynomial(), use method instead, see #624.

  • field_isomorphism() take fields as arguments, see #627.

  • Functions minimal_polynomial() and primitive_element() return PurePoly instances, see #628.

  • Removed ANP class, see #619.

  • Removed to_number_field(), use convert() instead, see #619.

  • Removed RealNumber alias, see #635.

  • Method characteristic() now is a property of CharacteristicZero and FiniteField, see #636.

  • Removed of_type(), abs(), is_one(), unify_with_symbols() and map() methods and has_CharacteristicZero attribute of Domain, see #636, #704 and #637.

  • Removed is_unit(), numer() and denom() methods of CommutativeRing, see #637.

  • from_<Foo>() methods of Domain now are private, see #637.

  • Method from_expr() was renamed from from_diofant(), see #637.

  • Method to_expr() was renamed from to_diofant(), see #637.

  • Removed AlgebraicNumber class, see #631.

  • Removed polys.distributedmodules module, see #648.

  • Removed p and q properties of Rational, see #654.

  • Removed @public decorator, see #666.

  • Removed dummy_eq() method from Basic, see #666.

  • Subs now support only Subs(expr, (var1, val1), (var2, val2), ...) syntax, see #667.

  • RootOf don’t canonicalize anymore polynomials to have integer coefficients, use expand_func() instead, see #679.

  • Removed Theano support, see #681.

  • Removed minpoly alias for minimal_polynomial(), see #684.

  • Method set_order() was renamed from fglm(), see #688.

  • Removed row(), col(), row_del() and col_del() methods of Matrix, see #688.

  • Removed add() and mul() methods for PolynomialRing, see #697.

  • Removed itercoeffs(), itermonoms(), iterterms(), listcoeffs(), listmonoms(), listterms(), const(), imul_num() and square() methods of PolyElement, see #697.

  • Removed abs(), neg(), add(), add_ground(), sub(), sub_ground(), mul(), mul_ground(), pow(), sqr(), nth(), factor_list_include(), revert(), gff(), gff_list(), sqf_list_include(), homogenize(), homogeneous_order(), eq() and ne() methods of Poly, see #688, #701, #732, #717, #727, #729 and #747.

  • subs() support one argument (a mapping or an iterable of pairs), see #532.

  • Renamed is_sqf property of Poly to is_squarefree, see #724.

  • Removed all option for sqf_list() method, see #727.

  • Renamed has_Ring/Field attributes of Domain to is_Ring/Field, see #729.

  • Removed symmetric option for polynomial functions, see #761.

  • Removed print_mathml() function and tree submodule, see #769.

  • Removed zero option from as_dict() method, see #771.

  • Removed lift() method of Poly, see #771.

Minor changes

  • Be sure that minimal_polynomial() returns an irreducible polynomial over specified domain, see #622.

  • Support algebraic function fields in minpoly_groebner(), see #623.

  • Added argument method for minimal_polynomial() and MINPOLY_METHOD configuration option to select default algorithm, see #624.

  • Support derivatives of RootOf instances, see #624.

  • primitive_element() now return an algebraic integer and support algebraic fields, see #643, #655 and #659.

  • Support conjugate, Abs, re and im in minimal_polynomial(), see #661 and #668.

  • refine() method to refine interval for the root, see #670.

  • Support detection of imaginary roots in RootOf, see #625.

  • Mutable matrices support indexed deletion with __delitem__(), see #688.

  • Integer powers of RootOf instances are automatically reduced, according to their minimal polynomial, see #691.

  • Support gmpy2.mpz ground type for numerator/denominator of Rational, see #694.

  • Added FALLBACK_GCD_ZZ_METHOD configuration option to specify GCD algorithm for polynomials with integer coefficients if heuristic GCD was off or just unlucky, see #721.

  • Added GCD_AA_METHOD configuration option to specify GCD algorithm for polynomials with algebraic coefficients, see #721.

  • sqf_part(), sqf_norm(), sqf_list() methods and is_squarefree property use notion of being square-free w.r.t. to all polynomial variables, see #726.

  • 100% test coverage for core, polys and stats modules. Overall test coverage is around 97%.

Developer changes

  • Removed cachetools dependence, see #647.

  • Depend on pylint, see #668.

  • Use setuptools_scm to track package versions, see #725.

  • Don’t use doctests for code coverage statistics, see #739.

Issues closed

See the release milestone for complete list of issues and pull requests involved in this release.

These Sympy issues also were addressed: