Diofant 0.8
7 Nov 2016
New features
MrvAsympt algorithm to find asymptotic expansion, see
aseries()
method and #6. Thanks to Avichal Dayal.findrecur()
method to find recurrence relations (with Sister Celine’s algorithm), see #15.Added basic optimization package, see
minimize()
and #108.Cartesian product of iterables using Cantor pairing, see
cantor_product()
and #276.New simple and robust solver for systems of linear ODEs, see #286. Thanks to Colin B. Macdonald.
Added mutable/immutable N-dim arrays, sparse and dense, see #275.
dsolve()
now support initial conditions for ODEs, see #307. Thanks to Aaron Meurer.
Major changes
Depend on setuptools, see #44.
The Gruntz Algorithm
reimplemented correctly, see #68.Replaced
exp(x)
withE**x
internally, see #79.Used
srepr()
instead ofsstr()
for__repr__()
printing, see #39.Major cleanup for series methods, see #187.
Depend on cachetools to implement caching, see #72 and #209.
Assumption system (old) was validated (#316 and #334) and improved:
Compatibility breaks
Removed physics submodule, see #23.
Removed galgebra submodule, see #45.
Removed pyglet plotting, see #50.
Removed TextBackend from plotting, see #67.
Removed SageMath support, see #84.
Removed unify submodule, see #88.
Removed crypto submodule, see #102.
Removed print_gtk, see #114.
Unbundle strategies module, see #103.
Removed “old” argument for match/matches, see #141.
Removed when_multiple kwarg in Piecewise, see #156.
Support for Python 2 was removed, see #160.
Removed S(foo) syntax, see #115.
Removed (new) assumptions submodule, see #122.
Removed undocumented Symbol.__call__, see #201
Removed categories and liealgebras submodules, see #280.
Rename module sympy -> diofant, see #315.
Use gmpy2, drop gmpy support, see #292.
Removed redundant dom properties in polys, see #308.
Removed manualintegrate function, see #279.
Minor changes
Add support for bidirectional limits, see #10.
A better implementation of
singularities()
, see #147.Fix “flip” of arguments in relational expressions, see #30.
Make Gosper code use new dispersion algorithm, see #205. Thanks to Raoul Bourquin.
Consolidate code for solving linear systems, see #253.
Hacks for automatic symbols and wrapping int’s replaced with AST transformers, see #278 and #167.
Build correct inhomogeneous solution in
rsolve_hyper()
, see #298.Evaluate matrix powers for non-diagonalizable matrices, see #275.
Support non-orthogonal Jordan blocks, see #275.
Make risch_integrate(x**x, x) work, see #275.
Developer changes
Unbundle numpydoc, see #26.
Deprecate AUTHORS file, all credits go to the aboutus.rst, see #87.
Use python’s
tokenize()
, see #120.Drop using bundled pytest fork, depend on pytest for testing, see #38, #152, #91, #48, #90, #96 and #99.
Adopt No Code Of Conduct, see #212.
Measure code coverage, enable codecov.io reports. See #217.
Adopt pep8 (#2) and then flake8 (#214) for code quality testing.
Add regression tests with DIOFANT_USE_CACHE=False #323.
Test for no DeprecationWarning in the codebase, see #356.
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#9351 order-1 series wrong with non-zero expansion point
sympy/sympy#9034 Unicode printing problem with mixture of logs and powers
sympy/sympy#7927 pretty print incorrect result with powers of sin
sympy/sympy#9283 KroneckerDelta(p, 0) raises IndexError
sympy/sympy#9274 Wrong Jordan form: complex eigenvalues w/ geo. mult. > alg. mult.
sympy/sympy#9398 Simplify of small imaginary number yields 0
sympy/sympy#7259 LambertW has no series expansion at x=0 (nan)
sympy/sympy#9832 x**2 < oo returns True but x < oo un-evaluated for real x
sympy/sympy#9053 MatMul(2, Matrix(…)).doit() doesn’t do it
sympy/sympy#9052 trace(2*A) != 2*Trace(A) because LHS still has an MatMul
sympy/sympy#9533 Logical operators in octave_code
sympy/sympy#9545 Mod(zoo, 0) causes RunTime Error
sympy/sympy#9652 Fail in plot_implicit test on OSX 10.8.5
sympy/sympy#8432 Tests fail, seems like Cython is not configured to compile with numpy correctly
sympy/sympy#9542 codegen octave global vars should print “global foo” at top of function
sympy/sympy#9326 Bug with Dummy
sympy/sympy#9413 Circularity in assumptions of products
sympy/sympy#8840 sympy fails to construct (1 + x)*x with disabled cache
sympy/sympy#4898 Replace exp(x) with E**x internally
sympy/sympy#10195 Simplification bug on alternating series.
sympy/sympy#10196 reduce_inequalities error
sympy/sympy#10198 solving abs with negative powers
sympy/sympy#7917 Implement cot as a ReciprocalTrigonometricFunction
sympy/sympy#8649 If t is transcendental, t**n is determined (wrongly) to be non-integer
sympy/sympy#5641 Compatibility with py.test
sympy/sympy#10258 Relational involving Piecewise evaluates incorrectly as True
sympy/sympy#10268 solving inequality involving exp fails for large values
sympy/sympy#10237 improper inequality reduction
sympy/sympy#10255 solving a Relational involving Piecewise fails
sympy/sympy#10290 Computing series where the free variable is not just a symbol is broken
sympy/sympy#10304 Equality involving expression with known real part and 0 should evaluate
sympy/sympy#9471 Wrong limit with log and constant in exponent
sympy/sympy#9449 limit fails with “maximum recursion depth exceeded” / Python crash
sympy/sympy#8462 Trivial bounds on binomial coefficients
sympy/sympy#9917 O(n*sin(n) + 1, (n, oo)) returns O(n*sin(n), (n, oo))
sympy/sympy#7383 Integration error
sympy/sympy#7098 Incorrect expression resulting from integral evaluation
sympy/sympy#10323 bad ceiling(sqrt(big integer))
sympy/sympy#10326 Interval(-oo, oo) contains oo
sympy/sympy#10095 simplify((1/(2*E))**oo) returns nan
sympy/sympy#4187 integrate(log(x)*exp(x), (x, 0, oo)) should return -EulerGamma
sympy/sympy#10383 det of empty matrix is 1
sympy/sympy#10382 limit(fibonacci(n + 1)/fibonacci(n), n, oo) does not give GoldenRatio
sympy/sympy#10388 factorial2 runs into RunTimeError for non-integer
sympy/sympy#10391 solve((2*x + 8)*exp(-6*x), x) can’t find any solution
sympy/sympy#8241 Wrong assumption/result in a parametric limit
sympy/sympy#3539 Symbol.__call__ should not create a Function
sympy/sympy#7216 Limits involving branch cuts of elementary functions not handled
sympy/sympy#10503 Series return an incorrect result
sympy/sympy#10567 Integral(v,t).doit() differs from integrate(v,t)
sympy/sympy#9075 sympy.limit yields incorrect result
sympy/sympy#10610 limit(3**n*3**(-n - 1)*(n + 1)**2/n**2, n, oo) is wrong
sympy/sympy#4173 implement maximize([x**(1/x), x>0], x)
sympy/sympy#10803 Bad pretty printing of power of Limit
sympy/sympy#10836 Latex generation error for .series expansion for rightarrow term
sympy/sympy#9558 Bug with limit
sympy/sympy#4949 solve_linear_system contains duplicate rref algorithm
sympy/sympy#5952 Standard sets (ZZ, QQ, RR, etc.) for the sets module
sympy/sympy#9608 Partition can’t be ordered
sympy/sympy#10961 fractional order Laguerre gives wrong result
sympy/sympy#10976 incorrect answer for limit involving erf
sympy/sympy#10995 acot(-x) evaluation
sympy/sympy#11011 Scientific notation should be delimited for LaTeX
sympy/sympy#11062 Error while simplifying equations containing csc and sec using trigsimp_groebner
sympy/sympy#10804 1/limit(airybi(x)*root(x, 4)*exp(-2*x**(S(3)/2)/3), x, oo)**2 is wrong
sympy/sympy#11063 Some wrong answers from rsolve
sympy/sympy#9480 Matrix.rank() incorrect results
sympy/sympy#10497 next(iter(S.Integers*S.Integers)) hangs (expected (0, 0), …)
sympy/sympy#5383 Calculate limit error
sympy/sympy#11270 Limit erroneously reported as infinity
sympy/sympy#5172 limit() throws TypeError: an integer is required
sympy/sympy#7055 Failures in rsolve_hyper from test_rsolve_bulk()
sympy/sympy#11261 Recursion solver fails
sympy/sympy#11313 Series of Derivative
sympy/sympy#11290 1st_exact_Integral wrong result
sympy/sympy#10761 (1/(x**-2 + x**-3)).series(x, 0) gives wrong result
sympy/sympy#10024 Eq( Mod(x, 2*pi), 0 ) evaluates to False
sympy/sympy#7985 Indexed should work with subs on a container
sympy/sympy#9637 S.Reals - FiniteSet(n) returns EmptySet - FiniteSet(n)
sympy/sympy#10003 P(X < -1) of ExponentialDistribution
sympy/sympy#10052 P(X < oo ) for any Continuous Distribution raises AttributeError
sympy/sympy#10063 Integer raised to Float power does not evaluate
sympy/sympy#10075 X.pdf(x) for Symbol x returns 0
sympy/sympy#9823 Matrix power of identity matrix fails
sympy/sympy#10156 do not use has() to test against self.variables when factoring Sum
sympy/sympy#10113 imageset(lambda x: x**2/(x**2 - 4), S.Reals) returns (1, oo)
sympy/sympy#10020 oo**I raises RunTimeError
sympy/sympy#10240 Not(And(x>2, x<3)) does not evaluate
sympy/sympy#8510 Differentiation of general functions
sympy/sympy#10220 Matrix.jordan_cells() fails
sympy/sympy#10092 subs into inequality involving RootOf raises GeneratorsNeeded
sympy/sympy#10161 factor gives an invalid expression
sympy/sympy#10243 Run the examples during automated testing or at release
sympy/sympy#10274 The helpers kwarg in autowrap method is probably broken.
sympy/sympy#10210 LaTex printing of Cycle
sympy/sympy#9539 diophantine(6*k + 9*n + 20*m - x) gives TypeError: unsupported operand type(s) for *: ‘NoneType’ and ‘Symbol’
sympy/sympy#11407 Series expansion of the square root gives wrong result
sympy/sympy#11413 Wrong result from Matrix norm
sympy/sympy#11434 Matrix rank() produces wrong result
sympy/sympy#11526 Different result of limit after simplify
sympy/sympy#11553 Polynomial solve with GoldenRatio causes Traceback
sympy/sympy#8045 make all NaN is_* properties that are now None -> False (including is_complex)
sympy/sympy#11602 Replace dots with ldots or cdots
sympy/sympy#4720 Initial conditions in dsolve()
sympy/sympy#11623 Wrong groebner basis
sympy/sympy#10292 poly cannot generically be rebuilt from its args
sympy/sympy#6572 Remove “#doctest: +SKIP” comments on valid docstrings
sympy/sympy#10134 Remove “raise StopIteration”
sympy/sympy#11672 limit(Rational(-1,2)**k, k, oo) fails
sympy/sympy#11678 Invalid limit of floating-point matrix power
sympy/sympy#11746 undesired (wrong) substition behavior in sympy?
sympy/sympy#3904 missing docstrings in core
sympy/sympy#3112 Asymptotic expansion
sympy/sympy#9173 Series/limit fails unless expression is simplified first.
sympy/sympy#9808 Complements with symbols should remain unevaluated
sympy/sympy#9341 Cancelling very long polynomial expression
sympy/sympy#9908 Sum(1/(n**3 - 1), (n, -oo, -2)).doit() raise UnboundLocalVariable
sympy/sympy#6171 Limit of a piecewise function
sympy/sympy#9276 ./bin/diagnose_imports: does it work at all?!
sympy/sympy#10201 Solution of “first order linear non-homogeneous ODE-System” is wrong
sympy/sympy#9057 segfault on printing Integral of phi(t)
sympy/sympy#11159 Substitution with E fails
sympy/sympy#2839 init_session(auto_symbols=True) and init_session(auto_int_to_Integer=True) do not work
sympy/sympy#11081 where possible, use python fractions for Rational
sympy/sympy#10974 solvers.py contains BOM character
sympy/sympy#10806 LaTeX printer: Integral not surrounded in brackets
sympy/sympy#10801 Make limit work with binomial
sympy/sympy#9549 series expansion: (x**2 + x + 1)/(x**3 + x**2) about oo gives wrong result
sympy/sympy#4231 add a test for complex integral from wikipedia
sympy/sympy#8634 limit(x**n, x, -oo) is sometimes wrong
sympy/sympy#8481 Wrong error raised trying to calculate limit of Poisson PMF
sympy/sympy#9956 Union(Interval(-oo, oo), FiniteSet(1)) not evaluated
sympy/sympy#9747 test_piecewise_lambdify fails locally
sympy/sympy#7853 Deprecation of lambdify converting Matrix -> numpy.matrix
sympy/sympy#9634 Repeated example in the docstring of hermite
sympy/sympy#8500 Using and operator vs fuzzy_and while querying assumptions
sympy/sympy#9192 O(y + 1) = O(1)
sympy/sympy#7130 Definite integral returns an answer with indefinite integrals
sympy/sympy#8514 Inverse Laplace transform of a simple function fails after updating from 0.7.5 to 0.7.6
sympy/sympy#9334 Numexpr must be string argument to lambdify
sympy/sympy#8229 limit((x**Rational(1,4)-2)/(sqrt(x)-4)**Rational(2, 3), x, 16) NotImplementedError
sympy/sympy#8061 limit(4**(acos(1/(1+x**2))**2)/log(1+x, 4), x, 0) raises NotImplementedError
sympy/sympy#7872 Substitution in Order fails
sympy/sympy#3496 limits for complex variables
sympy/sympy#2929 limit((x*exp(x))/(exp(x)-1), x, -oo) gives -oo
sympy/sympy#8203 Why is oo real?
sympy/sympy#7649 S.Zero.is_imaginary should be True?
sympy/sympy#7256 use old assumptions in code
sympy/sympy#6783 Get rid of confusing assumptions
sympy/sympy#5662 AssocOp._eval_template_is_attr is wrong or misused
sympy/sympy#5295 Document assumptions
sympy/sympy#4856 coding style
sympy/sympy#4555 use pyflakes to identify simple bugs in sympy and fix them
sympy/sympy#5773 Remove the cmp_to_key() helper function
sympy/sympy#5484 use sort_key instead of old comparison system
sympy/sympy#8825 Can’t use both weakref’s & cache
sympy/sympy#8635 limit(x**n-x**(n-k), x, oo) sometimes raises NotImplementedError
sympy/sympy#8157 Non-informative error raised when computing limit of cos(n*pi)
sympy/sympy#7599 Addition of expression and order term fails
sympy/sympy#6179 wrong order in series
sympy/sympy#5415 limit involving multi-arg function (polygamma) fails
sympy/sympy#2865 gruntz doesn’t work properly for big-O with point!=0
sympy/sympy#5907 integrate(1/(x**2 + a**2)**2, x) is wrong if a is real
sympy/sympy#11722 series() calculation up to O(t**k) returns invalid coefficients for t**k * log(t)
sympy/sympy#8804 series expansion of 1/x ignores order parameter
sympy/sympy#10728 Dummy(commutative=False).is_zero -> False