Diofant 0.10

Not Released Yet

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.
  • Allow only prime orders for FiniteField, see #622.
  • Removed FracField class, see #622.
  • get_field() method for domains, derived from Ring, now is a property, e.g. field, see #622.
  • Removed PolyRing class, see #621.
  • get_ring() method for domains, derived from Ring, 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.
  • Removed of_type() method of Domain, see #636.
  • Method characteristic() now is a property of CharacteristicZero and FiniteField, see #636.
  • Removed abs(), is_one() and unify_with_symbols() methods and has_CharacteristicZero attribute of Domain, see #637.
  • Removed is_unit(), numer() and denom() methods of Ring, 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.
  • Removed abs() and neg() methods of Poly, see #688.
  • 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 add(), add_ground(), sub(), sub_ground(), mul(), mul_ground(), pow(), sqr() and nth() methods of Poly, see #701, #732.
  • Removed map() method of Domain, see #704.
  • subs() support one argument (a mapping or an iterable of pairs), see #532.
  • Removed factor_list_include() method of Poly, see #717.
  • Renamed is_sqf property of Poly to is_squarefree, see #724.
  • Removed revert() method of Poly, see #727.
  • Removed all option for sqf_list() method, see #727.
  • Renamed has_Ring/Field attributes of Domain to is_Ring/Field, see #729.
  • Removed gff(), gff_list() functions and methods of Poly, see #729.
  • Removed sqf_list_include(), homogenize(), homogeneous_order(), eq() and ne() methods of Poly, see #747.
  • Removed symmetric option for polynomial functions, see #761.

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 97%.

Developer changes

Issues closed

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

These Sympy issues also were addressed: