27 Jan 2019
- New representation for elements of
~diofant.domains.AlgebraicField
, see619
,631
and763
. - Support towers of algebraic field extensions: ground domain for
~diofant.domains.AlgebraicField
can be also an instance of~diofant.domains.AlgebraicField
, see653
. - New subclasses of
~diofant.domains.AlgebraicField
:~diofant.domains.RealAlgebraicField
and~diofant.domains.ComplexAlgebraicField
, see669
,630
and748
. Thanks to Kalevi Suominen for help with review. - Added
~diofant.core.numbers.integer_digits
, see765
. ~diofant.domains.FiniteField
support prime power orders, forbid everything else, see622
and762
.
- Stable enumeration of polynomial roots in
~diofant.polys.rootoftools.RootOf
, see633
,658
,741
and768
. Thanks to Kalevi Suominen for the implementation idea and help with review. - Support root isolation for polynomials with algebraic coefficients, see
673
and630
. Thanks to Kalevi Suominen for help with review. - Polynomials with algebraic coefficients will use algebraic number domains per default, see
478
.
- Removed
DMF
class, see620
. - Removed
K[x, y, ...]
sugar, use~diofant.domains.domain.Domain.poly_ring
to create polynomial rings, see622
. - Removed
FracField
class, see622
. get_field()
method for domains, derived from~diofant.domains.ring.CommutativeRing
, now is a property, e.g.~diofant.domains.field.Field.field
, see622
.- Removed
PolyRing
class, see621
. get_ring()
method for domains, derived from~diofant.domains.ring.CommutativeRing
, now is a property, e.g.~diofant.domains.ring.CommutativeRing.ring
, see621
.- Removed
compose
option for~diofant.polys.numberfields.minimal_polynomial
, usemethod
instead, see624
. ~diofant.polys.numberfields.field_isomorphism
take fields as arguments, see627
.- Functions
~diofant.polys.numberfields.minimal_polynomial
and~diofant.polys.numberfields.primitive_element
return~diofant.polys.polytools.PurePoly
instances, see628
. - Removed
ANP
class, see619
. - Removed
to_number_field()
, use~diofant.domains.domain.Domain.convert
instead, see619
. - Removed
RealNumber
alias, see635
. - Method
characteristic()
now is a property of~diofant.domains.characteristiczero.CharacteristicZero
and~diofant.domains.FiniteField
, see636
. - Removed
of_type()
,abs()
,is_one()
,unify_with_symbols()
andmap()
methods andhas_CharacteristicZero
attribute of~diofant.domains.domain.Domain
, see636
,704
and637
. - Removed
is_unit()
,numer()
anddenom()
methods of~diofant.domains.ring.CommutativeRing
, see637
. from_<Foo>()
methods of~diofant.domains.domain.Domain
now are private, see637
.- Method
~diofant.domains.domain.Domain.from_expr
was renamed fromfrom_diofant()
, see637
. - Method
~diofant.domains.domain.Domain.to_expr
was renamed fromto_diofant()
, see637
. - Removed
AlgebraicNumber
class, see631
. - Removed
polys.distributedmodules
module, see648
. - Removed
p
andq
properties of~diofant.core.numbers.Rational
, see654
. - Removed
@public
decorator, see666
. - Removed
dummy_eq()
method from~diofant.core.basic.Basic
, see666
. ~diofant.core.function.Subs
now support onlySubs(expr, (var1, val1), (var2, val2), ...)
syntax, see667
.~diofant.polys.rootoftools.RootOf
don't canonicalize anymore polynomials to have integer coefficients, use~diofant.core.function.expand_func
instead, see679
.- Removed Theano support, see
681
. - Removed
minpoly
alias for~diofant.polys.numberfields.minimal_polynomial
, see684
. - Method
~diofant.polys.polytools.GroebnerBasis.set_order
was renamed fromfglm()
, see688
. - Removed
row()
,col()
,row_del()
andcol_del()
methods of~diofant.matrices.Matrix
, see688
. - Removed
add()
andmul()
methods for~diofant.polys.rings.PolynomialRing
, see697
. - Removed
itercoeffs()
,itermonoms()
,iterterms()
,listcoeffs()
,listmonoms()
,listterms()
,const()
,imul_num()
andsquare()
methods of~diofant.polys.rings.PolyElement
, see697
. - 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()
andne()
methods of~diofant.polys.polytools.Poly
, see688
,701
,732
,717
,727
,729
and747
. ~diofant.core.basic.Basic.subs
support one argument (a mapping or an iterable of pairs), see532
.- Renamed
is_sqf
property of~diofant.polys.polytools.Poly
to~diofant.polys.polytools.Poly.is_squarefree
, see724
. - Removed
all
option for~diofant.polys.polytools.Poly.sqf_list
method, see727
. - Renamed
has_Ring/Field
attributes of~diofant.domains.domain.Domain
tois_Ring/Field
, see729
. - Removed
symmetric
option for polynomial functions, see761
. - Removed
print_mathml()
function andtree
submodule, see769
. - Removed
zero
option from~diofant.polys.polytools.Poly.as_dict
method, see771
. - Removed
lift()
method of~diofant.polys.polytools.Poly
, see771
.
- Be sure that
~diofant.polys.numberfields.minimal_polynomial
returns an irreducible polynomial over specified domain, see622
. - Support algebraic function fields in
~diofant.polys.numberfields.minpoly_groebner
, see623
. - Added argument
method
for~diofant.polys.numberfields.minimal_polynomial
andMINPOLY_METHOD
configuration option to select default algorithm, see624
. - Support derivatives of
~diofant.polys.rootoftools.RootOf
instances, see624
. ~diofant.polys.numberfields.primitive_element
now return an algebraic integer and support algebraic fields, see643
,655
and659
.- 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
, see661
and668
. ~diofant.polys.rootoftools.RootOf.refine
method to refine interval for the root, see670
.- Support detection of imaginary roots in
~diofant.polys.rootoftools.RootOf
, see625
. - Mutable matrices support indexed deletion with
~object.__delitem__
, see688
. - Integer powers of
~diofant.polys.rootoftools.RootOf
instances are automatically reduced, according to their minimal polynomial, see691
. - Support gmpy2.mpz ground type for numerator/denominator of
~diofant.core.numbers.Rational
, see694
. - Added
FALLBACK_GCD_ZZ_METHOD
configuration option to specify GCD algorithm for polynomials with integer coefficients if heuristic GCD was off or just unlucky, see721
. - Added
GCD_AA_METHOD
configuration option to specify GCD algorithm for polynomials with algebraic coefficients, see721
. ~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, see726
.- 100% test coverage for
~diofant.core
,~diofant.polys
andstats
modules. Overall test coverage is around 97%.
- 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
.
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 limit14414
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 + I5850
minpoly() should use PurePoly14494
make better decisions for minpoly based on domain14389
AlgebraicNumber should be a domain element?14291
poly(((x - 1)2 + 1)*((x - 1)2 + 2)*(x - 1)).all_roots() hangs14590
limit((n*3((n + 1)/n)*n)/((n + 1)(n + 2)*(n + 3)), n, oo) is incorrect14645
Bug when solving multivariate polynomial systems with identical equations14294
to_number_field should be idempotent for single extension14721
solve can't find solution14293
Sorting of polynomial roots14380
AlgebraicField.numer() could return an algebraic integer14442
Should AlgebraicField be a Composite domain?14759
dup_isolate_real_roots_list() docstring is wrong14738
dup_count_complex_roots() can't handle degenerate cases14782
integrate(sqrt(-x*2 + 1)(-x**2 + x), [x, -1, 1]) is incorrect14791
No solution is returned for solve(exp(log(5)x) - exp(log(2)x), x)14793
Limit involving log(factorial(x)) incorrect14811
Exception during evaluation of limit (only locally, not in the live version)14822
RisingFactorial cannot do numerical (floating point) evaluations14820
octave/matlab codegen wrong for two argument zeta14831
minpoly(-3*sqrt(12*sqrt(2) + 17) + 12*sqrt(2) + 17 -2*sqrt(2)sqrt(12sqrt(2) + 17), x) fails14476
QQ.algebraic_field(Rational) should be just QQ14885
Sympy series gives TypeError on x^(-3/2) * exp(x) at x = 015055
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 Functions6938
Undefined Functions should not use the evalf name lookup scheme8945
integrate(sin(x)**3/x, (x, 0, 1)) can't do it15146
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() error11775
TypeError: unorderable types: PolyElement() < mpz() from factor_list7047
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 answer15344
mathematica_code gives wrong output with Max12602
count_roots is extremely slow with Python ground types5595
Should mpmath use the polys ground types?5602
Poly should use free_symbols to check for variable dependence5555
Explain coefficient domain handling in groebner()'s docstring15407
BUG: dsolve fails for linear first order ODE with three equations15311
3rd-order ODE with irrational coefficient fails11668
Get rid of bare "except"s4511
integrate(cos(x)**2 / (1-sin(x))) gives too complicated answer15474
dsolve system gives complicated solution for diagonal system15502
Python 3.7 test failures15520
5th-order ODE with irrational coefficient fails15539
Order at negative infinity15561
SymPy's Number.__divmod__ doesn't agree with the builtin divmod15574
dsolve fails for a system of independent equations12695
[matrices] remove dead files densearith.py densetools.py and densesolve.py5428
Should Poly use an algebraic domain by default?14337
Poly constructor uses domain EX when it's not necessary8818
lambdify precision loss with module=mpmath from high-precision Floats9544
Finite fields15798
Poly.copy() does not copy unused generators15810
integrate(1/(2*(2x/3)+1), (x,0,oo)) is wrong