Diofant 0.9
23 Feb 2018
New features
Polynomial solvers now express all available solutions with
RootOf
, see #400.Added
mod_inverse()
andinvert()
, see #390. Thanks to Chris Smith.Support solving linear programming problems, see #283 and #461.
Added AST transformation
IntegerDivisionWrapper
to wrap integer division, see #519.Added AST transformation
FloatRationalizer
to wrapfloat
’s, see #538.Compute
independent_sets
and dimension of the ideal, generated by Gröbner basis, see #573.Added
permutedims()
andderive_by_array()
, see #567. Thanks to Francesco Bonazzi.Added
is_square()
,ordered_partitions()
,permute_signs()
andsigned_permutations()
, see #578. Thanks to Chris Smith.
Major changes
diofant.polys.domains
module is now top-level moduledomains
, see #487.Optionally reduce
RootOf
instances to have polynomials with integer coefficients, see #430.solve_poly_system()
now able to solve positive-dimensional systems, see #448 and #573.Big update of the
diophantine
module with a lot of bugfixes, see #578. Thanks to Chris Smith.
Compatibility breaks
Removed
assumption0
property, see #382.check_assumptions()
moved toassumptions
, see #387.Removed
nsolve()
function, see #387.is_comparable
andis_hypergeometric()
moved toExpr
, see #391.Removed
solve_triangulated()
andsolve_biquadratic()
functions,solve_poly_system()
now usedict
as output, see #389 and #448.Removed support for solving undetermined coefficients in
solve()
, see #389.Removed
intersect()
alias forintersection()
, see #396.Removed
interactive_traversal()
, see #395.Removed
xring()
andxfield()
, see #403.Removed
jscode
submodule andTableForm
class, see #403.Removed
pager_print()
andprint_fcode()
, see #411.Disallow “increase” precision of
Float
’s withevalf()
, see #380.Removed
experimental_lambdify()
andintervalmath
module from plotting package, see #384.Removed
solve()
flagsset
,manual
,minimal
,implicit
,particular
,quick
,exclude
,force
andnumerical
see #426, #554 and #549.Removed support for inequalities in
solve()
, please usereduce_inequalities()
instead, see #426.Removed
get_domain()
method ofPoly
, usedomain
property instead, see #479.Removed
canonical_variables()
property tocanonical_variables()
, see #534.Removed
group
option offind()
, which now return adict
, see #529.Removed support for Python 3.4, see #543.
Second argument of
checksol()
must be adict
. See #549.Removed
solve_undetermined_coeffs()
function, see #554.Removed
I
property of theMatrixExpr
, see #577.Removed
isolate()
function, see #585.Removed
is_zero_dimensional()
function andGroebnerBasis
’s property of the same name, usedimension
instead, see #573.Removed
MonomialOps
class, see #586.Return representation of elements via primitive in
primitive_element()
(formerex=True
format), see #597.Removed
pprint_try_use_unicode()
function, see #605.
Minor changes
New integration heuristics for integrals with
Abs
, see #321.Sorting of symbolic quadratic roots now same as in
RootOf
for numerical coefficients, see #400.Improve printing of Mathematica code, see #400, #433, #438, #519, #553 and #571.
Support simple first-order DAE with
dsolve()
helperode_lie_group()
, see #413.Added support for limits of relational expressions, see #414.
Make
MatrixSymbol
truly atomic, see #415.minimal_polynomial()
fixed to support genericAlgebraicNumber
’s, see #433 and #438.AlgebraicNumber
now support arithmetic operations, see #428 and #485.Export set singletons, see #577.
Correct implementation of the trial method (uses Gröbner bases) in
primitive_element()
, see #608 and #609.Support (not in
RootOf
yet) of root isolation for polynomials over Gaussian rationals, see #606.100% test coverage for
matrices
,domains
,logic
,parsing
andprinting
modules. Overall test coverage is 96%.
Developer changes
Enabled docstring testing with flake8, see #408.
Use only relative imports in the codebase, see #421.
Enabled flake8-comprehensions plugin, see #420.
Depend on hypothesis, see #547.
Depend on pytest-xdist, see #551.
Depend on pytest-timeout, see #608.
Issues closed
See the release milestone for complete list of issues and pull requests involved in this release.
These Sympy issues also were addressed:
sympy/sympy#11879 Strange output from common limit used in elementary calculus
sympy/sympy#11884 Addition with Order gives wrong result
sympy/sympy#11045 integrate(1/(x*sqrt(x**2-1)), (x, 1, 2)) Sympy latest version AttributeError: ‘Or’ object has no attribute ‘lts’
sympy/sympy#7165 integrate(abs(y - x**2), (y,0,2)) raises ValueError: gamma function pole
sympy/sympy#8733 integrate(abs(x+1), (x, 0, 1)) raises gamma function pole error
sympy/sympy#8430 integrate(abs(x), (x, 0, 1)) does not simplify
sympy/sympy#12005 Subs._eval_derivative doubles derivatives
sympy/sympy#11799 Something wrong with the Riemann tensor?
sympy/sympy#12018 solution not found by Sum and gosper_sum
sympy/sympy#5649 Bug with AlgebraicNumber.__eq__
sympy/sympy#11538 Bug in solve maybe
sympy/sympy#12081 integrate(x**(-S(3)/2)*exp(-x), (x, 0, oo)) encounters Runtime Error
sympy/sympy#7214 Move old assumptions from Basic to Expr
sympy/sympy#4678 Have solve() return RootOf when it can’t solve equations
sympy/sympy#7789 Poly(…).all_roots fails for general quadratic equation
sympy/sympy#8255 roots_quadratic should return roots in same order as Poly.all_roots(radicals=False)
sympy/sympy#7138 How to solve system of differential equations with symbolic solution?
sympy/sympy#11691 Test failing with matplotlib 2.0.0
sympy/sympy#7457 TypeError when using both multiprocessing and gmpy
sympy/sympy#12115 Cannot access imported submodules in sympy.core
sympy/sympy#4315 series expansion of piecewise fails
sympy/sympy#6807 atoms does not work correctly in the otherwise case of Piecewise
sympy/sympy#12114 solve() leads to ZeroDivisionError: polynomial division
sympy/sympy#5169 All elements of .args should be Basic
sympy/sympy#6249 Problems with MatrixSymbol and simplifying functions
sympy/sympy#6426 test_args.py should also test rebuilability
sympy/sympy#11461 NameError: name ‘Ne’ is not defined plotting real_root((log(x/(x-2))), 3)
sympy/sympy#10925 plot doesn’t work with Piecewise
sympy/sympy#12180 Confusing output from sympy.solve
sympy/sympy#5786 factor(extension=[I]) gives wrong results
sympy/sympy#9607 factor - incorrect result
sympy/sympy#8754 Problem factoring trivial polynomial
sympy/sympy#8697 rsolve fails to find solutions to some higer order recurrence relations
sympy/sympy#8694 Match fail
sympy/sympy#8710 geometry’s encloses method fails for non-polygons
sympy/sympy#10337 bad Boolean args not rejected
sympy/sympy#9447 sets.Complement fails on certain Unions
sympy/sympy#10305 Complement Of Universal Subsets
sympy/sympy#10413 ascii pprint of ProductSet uses non-ascii multiplication symbol
sympy/sympy#10414 pprint(Union, use_unicode=False) raises error (but str(Union) works)
sympy/sympy#10375 lambdify on sympy.Min does not work with NumPy
sympy/sympy#10433 Dict does not accept collections.defaultdict
sympy/sympy#9044 pretty printing: Trace could be improved (and LaTeX)
sympy/sympy#10445 Improper integral does not evaluate
sympy/sympy#10379 dsolve() converts floats to integers/rationals
sympy/sympy#10633 Eq(True, False) doesn’t evaluate
sympy/sympy#7163 integrate((sign(x - 1) - sign(x - 2))*cos(x), x) raises TypeError: doit() got an unexpected keyword argument ‘manual’
sympy/sympy#11881 ZeroDivisionError: pole in hypergeometric series random test failure
sympy/sympy#11801 Exception when printing Symbol(‘’)
sympy/sympy#11911 typo in docs of printing
sympy/sympy#10489 Mathematical Symbol does not seem to serialize correctly LaTeX printer
sympy/sympy#10336 nsimplify problems with oo and inf
sympy/sympy#12345 nonlinsolve (solve_biquadratic) gives no solution with radical
sympy/sympy#12375 sympy.series() is broken?
sympy/sympy#5514 Poly(x, x) * I != I * Poly(x, x)
sympy/sympy#12398 Limits With abs in certain cases remains unevaluated
sympy/sympy#12400 polytool.poly() can’t raise polynomial to negative power?
sympy/sympy#12221 Issue with definite piecewise integration
sympy/sympy#12522 BooleanTrue and Boolean False should have simplify method
sympy/sympy#12555 limit((3**x + 2 * x**10) / (x**10 + E**x), x, -oo) gives 0 instead of 2
sympy/sympy#12569 problem with polygamma or im
sympy/sympy#12578 Taylor expansion wrong (likely because of wrong substitution at point of evaluation?)
sympy/sympy#12582 Can’t solve integrate(abs(x**2-3*x), (x, -15, 15))
sympy/sympy#12747 Missing constant coefficient in Taylor series of degree 1
sympy/sympy#12769 Slow limit() calculation?!
sympy/sympy#12942 Remove x**1.0 == x hack from core
sympy/sympy#12238 match can take a long time (possibly forever)
sympy/sympy#4269 ordering of classes
sympy/sympy#13081 Some comparisons between rational and irrational numbers are incorrect
sympy/sympy#13078 Return NotImplemented, not False, upon rich comparison with unknown type
sympy/sympy#13098 sympy.floor() sometimes returns the wrong answer
sympy/sympy#13312 SymPy does not evaluate integrals of exponentials with symbolic parameter and limit
sympy/sympy#13111 Don’t use “is” to compare classes
sympy/sympy#10488 integrate(x/(a*x+b), x) gives wrong answer
sympy/sympy#9706 Interval(-oo, 0).closure hangs
sympy/sympy#10740 Add a test for Interval(..) in Interval(..) == False
sympy/sympy#10592 zeta(0, n) where n is negative is wrong
sympy/sympy#7858 Nth root mod giving wrong solutions
sympy/sympy#5412 N(oo*I) returns wrong result
sympy/sympy#10710 Any dict-like object in expr.subs
sympy/sympy#10810 Implemented function gives ValueError when constructing float expression in sympy 1.0
sympy/sympy#10867 Getting KeyError while solving ode : dsolve(Eq(g(x).diff(x).diff(x) , (x-2)**2 +(x-3)**3), g(x))
sympy/sympy#10782 condition_number() for empty matrices giving ValueError
sympy/sympy#10719 eigenvals of empty matrix raises IndexError
sympy/sympy#10680 unable to get unevaluated Integral object for integrate ( x**log (x**log (x**log(x) ) ) , x) .
sympy/sympy#10701 Is the empty matrix nilpotent? IndexError: Index out of range: a[0]
sympy/sympy#10770 Adding a row or a column to an empty matrix
sympy/sympy#10773 sympify evaluates Div Operation in case of Unary Operator when evaluate = False
sympy/sympy#13332 limit(): AttributeError: ‘NoneType’ object has no attribute ‘rewrite’
sympy/sympy#13382 Incorrect Result for limit(n*(((n+1)**2+1)/(n**2+1)-1), n ,oo)
sympy/sympy#13403 Incorrect Result for limit(n*(-1 + (n + log(n + 1) + 1)/(n + log(n))), n ,oo)
sympy/sympy#13416 Incorrect Result for limit((-n**3*log(n)**3 + (n - 1)*(n + 1)**2*log(n + 1)**3)/(n**2*log(n)**3), n ,oo)
sympy/sympy#13462 Bug in sympy.limit()
sympy/sympy#13501 Incorrect integral of a rational function with a symbolic coefficient
sympy/sympy#13536 TypeError for integration from infinity to a positive value
sympy/sympy#13545 Poly loses modulus after arithemetic
sympy/sympy#13460 Integration of certain cubic rational functions is incorrect
sympy/sympy#13071 meijerg.is_number is wrong
sympy/sympy#13575 limit(acos(erfi(x)), x, 1) causes recursion error
sympy/sympy#13629 bug in rsolve
sympy/sympy#13645 sympy hangs on evaluating expression
sympy/sympy#7067 factor_list() error Python3
sympy/sympy#11378 S.Reals should be accessible as just “Reals”
sympy/sympy#10999 diop: holzer error
sympy/sympy#11000 diop: power_representation
sympy/sympy#11026 diophantine(x**3+y**3-2) -> KeyError instead of {(1, 1)}
sympy/sympy#8943 diophantine misses trivial solution
sympy/sympy#11016 diop: sum of squares needs to try more options to satisfy conditions
sympy/sympy#9538 diophantine() doesn’t let you specify the variable order
sympy/sympy#11049 diop: recursion error
sympy/sympy#11021 diop: power_representation(4**5, 3, 1) -> (4,)
sympy/sympy#11050 diop: partition(n, k) gives redundant result
sympy/sympy#13853 Why does the expansion of polylog(1, z) have exp_polar(-I*pi)?
sympy/sympy#13849 solve/nonlinsolve: RuntimeError: run out of coefficient configurations
sympy/sympy#9366 rootof: Constructing RootOfs with polys containing RootOf coefficients
sympy/sympy#13914 The power of zoo
sympy/sympy#14000 sqrt and other root functions should inherit from Function
sympy/sympy#11099 Min and Max would not substitute in evalf
sympy/sympy#8257 Interval(-oo, oo) + FiniteSet(oo) takes forever
sympy/sympy#11198 factor_list(sqrt(const)*x) error
sympy/sympy#10784 autowrap on windows – distutils doesn’t work with C compiler
sympy/sympy#10897 rewrite im() in terms of re() and vice versa
sympy/sympy#10963 x**6000%400 hangs
sympy/sympy#10931 S.Integers - S.Integers does not evaluate
sympy/sympy#2799 S.UniversalSet + Interval(0, oo) takes forever
sympy/sympy#11090 ImmutableMatrix * MatrixSymbol raises AttributeError
sympy/sympy#11207 floor(ceiling(x)) doesn’t simplify
sympy/sympy#9135 Incorrect subsitution of partial derivatives by .subs()
sympy/sympy#10829 subs method gives wrong result for powers
sympy/sympy#10816 is_nthpow_residue(a,n,m) gives NotImplemented error when m don’t have primitive root
sympy/sympy#10886 No solution by nthroot_mod
sympy/sympy#10157 Replace needs_brackets with parenthesize in the latex printer
sympy/sympy#10972 [tensor module] incorrect evaluation of TensMul.data
sympy/sympy#10044 Error pretty printing a tuple with a sympy.vector basis vector
sympy/sympy#10395 nfloat changes the arguments inside Max.
sympy/sympy#10641 Or, And don’t evaluate
sympy/sympy#10821 latex bug for commutator output
sympy/sympy#9296 simplify(a)+simplify(b) Is Not simplify(a+b)
sympy/sympy#9630 simplify() rounds a numerical coefficient (indeed very close to unity) to 1
sympy/sympy#12792 Simplify with float values leads to non-equal result
sympy/sympy#12506 Simplify() returns wrong simplified expressions using Sympy 1.0 (trigonometric functions)
sympy/sympy#13115 Bug in simplify ?
sympy/sympy#13149 factor() of expression with float coefficients gives incorrect result
sympy/sympy#14117 Run out of coefficient configurations in primitive_element()
sympy/sympy#14159 Can’t set bottom and top bounds of root isolation rectangle with dup_isolate_complex_roots_sqf()
sympy/sympy#11122 x > 0 doesn’t evaluate for x = Symbol(‘x’, positive=False)
sympy/sympy#11418 diophantine: misclassification
sympy/sympy#9862 [tensor] error when retrieving data from TensAdd instance involving fully contracted tensor and scalar
sympy/sympy#11525 [tensor] TensAdd ignores all but one scalar argument
sympy/sympy#11530 ITE(x, True, False) should auto simplify to x
sympy/sympy#11559 str of Transpose should be valid Python
sympy/sympy#11547 mathml(Matrix([0,1,2])) gives back error
sympy/sympy#11306 numpy lambdify of piecewise doesn’t work for invalid values
sympy/sympy#7171 sin(x).rewrite(pow) raises RuntimeError: maximum recursion depth
sympy/sympy#2866 lambdify inserts numpy after math
sympy/sympy#11351 TypeError exception in totient and reduced_totient LaTeX printers
sympy/sympy#14289 Sign of generator of an algebraic numberfield