Skip to content

Latest commit

 

History

History
161 lines (146 loc) · 13.4 KB

notes-0.10.rst

File metadata and controls

161 lines (146 loc) · 13.4 KB

Diofant 0.10

27 Jan 2019

New features

  • New representation for elements of ~diofant.domains.AlgebraicField, see 619, 631 and 763.
  • Support towers of algebraic field extensions: ground domain for ~diofant.domains.AlgebraicField can be also an instance of ~diofant.domains.AlgebraicField, see 653.
  • New subclasses of ~diofant.domains.AlgebraicField: ~diofant.domains.RealAlgebraicField and ~diofant.domains.ComplexAlgebraicField, see 669, 630 and 748. Thanks to Kalevi Suominen for help with review.
  • Added ~diofant.core.numbers.integer_digits, see 765.
  • ~diofant.domains.FiniteField support prime power orders, forbid everything else, see 622 and 762.

Major changes

  • Stable enumeration of polynomial roots in ~diofant.polys.rootoftools.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 ~diofant.domains.domain.Domain.poly_ring to create polynomial rings, see 622.
  • Removed FracField class, see 622.
  • get_field() method for domains, derived from ~diofant.domains.ring.CommutativeRing, now is a property, e.g. ~diofant.domains.field.Field.field, see 622.
  • Removed PolyRing class, see 621.
  • get_ring() method for domains, derived from ~diofant.domains.ring.CommutativeRing, now is a property, e.g. ~diofant.domains.ring.CommutativeRing.ring, see 621.
  • Removed compose option for ~diofant.polys.numberfields.minimal_polynomial, use method instead, see 624.
  • ~diofant.polys.numberfields.field_isomorphism take fields as arguments, see 627.
  • Functions ~diofant.polys.numberfields.minimal_polynomial and ~diofant.polys.numberfields.primitive_element return ~diofant.polys.polytools.PurePoly instances, see 628.
  • Removed ANP class, see 619.
  • Removed to_number_field(), use ~diofant.domains.domain.Domain.convert instead, see 619.
  • Removed RealNumber alias, see 635.
  • Method characteristic() now is a property of ~diofant.domains.characteristiczero.CharacteristicZero and ~diofant.domains.FiniteField, see 636.
  • Removed of_type(), abs(), is_one(), unify_with_symbols() and map() methods and has_CharacteristicZero attribute of ~diofant.domains.domain.Domain, see 636, 704 and 637.
  • Removed is_unit(), numer() and denom() methods of ~diofant.domains.ring.CommutativeRing, see 637.
  • from_<Foo>() methods of ~diofant.domains.domain.Domain now are private, see 637.
  • Method ~diofant.domains.domain.Domain.from_expr was renamed from from_diofant(), see 637.
  • Method ~diofant.domains.domain.Domain.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 ~diofant.core.numbers.Rational, see 654.
  • Removed @public decorator, see 666.
  • Removed dummy_eq() method from ~diofant.core.basic.Basic, see 666.
  • ~diofant.core.function.Subs now support only Subs(expr, (var1, val1), (var2, val2), ...) syntax, see 667.
  • ~diofant.polys.rootoftools.RootOf don't canonicalize anymore polynomials to have integer coefficients, use ~diofant.core.function.expand_func instead, see 679.
  • Removed Theano support, see 681.
  • Removed minpoly alias for ~diofant.polys.numberfields.minimal_polynomial, see 684.
  • Method ~diofant.polys.polytools.GroebnerBasis.set_order was renamed from fglm(), see 688.
  • Removed row(), col(), row_del() and col_del() methods of ~diofant.matrices.Matrix, see 688.
  • Removed add() and mul() methods for ~diofant.polys.rings.PolynomialRing, see 697.
  • Removed itercoeffs(), itermonoms(), iterterms(), listcoeffs(), listmonoms(), listterms(), const(), imul_num() and square() methods of ~diofant.polys.rings.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 ~diofant.polys.polytools.Poly, see 688, 701, 732, 717, 727, 729 and 747.
  • ~diofant.core.basic.Basic.subs support one argument (a mapping or an iterable of pairs), see 532.
  • Renamed is_sqf property of ~diofant.polys.polytools.Poly to ~diofant.polys.polytools.Poly.is_squarefree, see 724.
  • Removed all option for ~diofant.polys.polytools.Poly.sqf_list method, see 727.
  • Renamed has_Ring/Field attributes of ~diofant.domains.domain.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 ~diofant.polys.polytools.Poly.as_dict method, see 771.
  • Removed lift() method of ~diofant.polys.polytools.Poly, see 771.

Minor changes

  • Be sure that ~diofant.polys.numberfields.minimal_polynomial returns an irreducible polynomial over specified domain, see 622.
  • Support algebraic function fields in ~diofant.polys.numberfields.minpoly_groebner, see 623.
  • Added argument method for ~diofant.polys.numberfields.minimal_polynomial and MINPOLY_METHOD configuration option to select default algorithm, see 624.
  • Support derivatives of ~diofant.polys.rootoftools.RootOf instances, see 624.
  • ~diofant.polys.numberfields.primitive_element now return an algebraic integer and support algebraic fields, see 643, 655 and 659.
  • Support ~diofant.functions.elementary.complexes.conjugate, ~diofant.functions.elementary.complexes.Abs, ~diofant.functions.elementary.complexes.re and ~diofant.functions.elementary.complexes.im in ~diofant.polys.numberfields.minimal_polynomial, see 661 and 668.
  • ~diofant.polys.rootoftools.RootOf.refine method to refine interval for the root, see 670.
  • Support detection of imaginary roots in ~diofant.polys.rootoftools.RootOf, see 625.
  • Mutable matrices support indexed deletion with ~object.__delitem__, see 688.
  • Integer powers of ~diofant.polys.rootoftools.RootOf instances are automatically reduced, according to their minimal polynomial, see 691.
  • Support gmpy2.mpz ground type for numerator/denominator of ~diofant.core.numbers.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.
  • ~diofant.polys.polytools.Poly.sqf_part, ~diofant.polys.polytools.Poly.sqf_norm, ~diofant.polys.polytools.Poly.sqf_list methods and ~diofant.polys.polytools.Poly.is_squarefree property use notion of being square-free w.r.t. to all polynomial variables, see 726.
  • 100% test coverage for ~diofant.core, ~diofant.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:

  • 14384 An unspecified power of x is reported to be O(log(x)**6)
  • 14393 Incorrect limit
  • 14414 Should QQ[x, y, ...] syntax be removed?
  • 13886 Raise an exception for non-prime p in FiniteFIeld(p)
  • 14220 Should be there both PolyRing and PolynomialRing?
  • 7724 roots should find the roots of x*4I + x**2 + I
  • 5850 minpoly() should use PurePoly
  • 14494 make better decisions for minpoly based on domain
  • 14389 AlgebraicNumber should be a domain element?
  • 14291 poly(((x - 1)2 + 1)*((x - 1)2 + 2)*(x - 1)).all_roots() hangs
  • 14590 limit((n*3((n + 1)/n)*n)/((n + 1)(n + 2)*(n + 3)), n, oo) is incorrect
  • 14645 Bug when solving multivariate polynomial systems with identical equations
  • 14294 to_number_field should be idempotent for single extension
  • 14721 solve can't find solution
  • 14293 Sorting of polynomial roots
  • 14380 AlgebraicField.numer() could return an algebraic integer
  • 14442 Should AlgebraicField be a Composite domain?
  • 14759 dup_isolate_real_roots_list() docstring is wrong
  • 14738 dup_count_complex_roots() can't handle degenerate cases
  • 14782 integrate(sqrt(-x*2 + 1)(-x**2 + x), [x, -1, 1]) is incorrect
  • 14791 No solution is returned for solve(exp(log(5)x) - exp(log(2)x), x)
  • 14793 Limit involving log(factorial(x)) incorrect
  • 14811 Exception during evaluation of limit (only locally, not in the live version)
  • 14822 RisingFactorial cannot do numerical (floating point) evaluations
  • 14820 octave/matlab codegen wrong for two argument zeta
  • 14831 minpoly(-3*sqrt(12*sqrt(2) + 17) + 12*sqrt(2) + 17 -2*sqrt(2)sqrt(12sqrt(2) + 17), x) fails
  • 14476 QQ.algebraic_field(Rational) should be just QQ
  • 14885 Sympy series gives TypeError on x^(-3/2) * exp(x) at x = 0
  • 15055 Incorrect limit of n*3((-n - 1)sin(1/n) + (n + 2)sin(1/(n + 1)))/(-n + 1)
  • 15056 dsolve: get_numbered_constants should consider Functions
  • 6938 Undefined Functions should not use the evalf name lookup scheme
  • 8945 integrate(sin(x)**3/x, (x, 0, 1)) can't do it
  • 15146 Incorrect limit (n/2) * (-2*n*3 - 2(n*3 - 1) n*2 digamma(n*3 + 1) + 2(n*3 - 1) n*2 digamma(n**3 +n + 1) + n + 3)
  • 5934 PolynomialError with minpoly()
  • 8210 Zero degree polynomial copy() error
  • 11775 TypeError: unorderable types: PolyElement() < mpz() from factor_list
  • 7047 Python and gmpy ground type specific stuff from "from sympy import *"
  • 15323 limit of the derivative of (1-1/x)^x as x --> 1+ gives wrong answer
  • 15344 mathematica_code gives wrong output with Max
  • 12602 count_roots is extremely slow with Python ground types
  • 5595 Should mpmath use the polys ground types?
  • 5602 Poly should use free_symbols to check for variable dependence
  • 5555 Explain coefficient domain handling in groebner()'s docstring
  • 15407 BUG: dsolve fails for linear first order ODE with three equations
  • 15311 3rd-order ODE with irrational coefficient fails
  • 11668 Get rid of bare "except"s
  • 4511 integrate(cos(x)**2 / (1-sin(x))) gives too complicated answer
  • 15474 dsolve system gives complicated solution for diagonal system
  • 15502 Python 3.7 test failures
  • 15520 5th-order ODE with irrational coefficient fails
  • 15539 Order at negative infinity
  • 15561 SymPy's Number.__divmod__ doesn't agree with the builtin divmod
  • 15574 dsolve fails for a system of independent equations
  • 12695 [matrices] remove dead files densearith.py densetools.py and densesolve.py
  • 5428 Should Poly use an algebraic domain by default?
  • 14337 Poly constructor uses domain EX when it's not necessary
  • 8818 lambdify precision loss with module=mpmath from high-precision Floats
  • 9544 Finite fields
  • 15798 Poly.copy() does not copy unused generators
  • 15810 integrate(1/(2*(2x/3)+1), (x,0,oo)) is wrong