7 Nov 2016
- MrvAsympt algorithm to find asymptotic expansion, see
~diofant.core.expr.Expr.aseries
method and6
. Thanks to Avichal Dayal. ~diofant.concrete.summations.Sum.findrecur
method to find recurrence relations (with Sister Celine's algorithm), see15
.- Support for
~diofant.core.power.Pow
/~diofant.functions.elementary.exponential.log
branch-cuts in limits, see140
. - Added basic optimization package, see
~diofant.calculus.optimization.minimize
and108
. - Cartesian product of iterables using Cantor pairing, see
~diofant.utilities.iterables.cantor_product
and276
. ~diofant.sets.fancysets.Rationals
set,255
.- 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
. ~diofant.solvers.ode.dsolve
now support initial conditions for ODEs, see307
. Thanks to Aaron Meurer.
- Depend on setuptools, see
44
. The Gruntz Algorithm <diofant.series.gruntz>
reimplemented correctly, see68
.- Replaced
exp(x)
withE**x
internally, see79
. - Used
~diofant.printing.repr.srepr
instead of~diofant.printing.str.sstr
for~object.__repr__
printing, see39
. - Major cleanup for series methods, see
187
. - Depend on cachetools to implement caching, see
72
and209
. Assumption system (old) was validated (
316
and334
) and improved:- 0 now is imaginary, see
8
- extended_real fact added, reals are finite now, see
36
- complex are finite now, see
42
. - added docstrings for assumption properties, see
354
.
- 0 now is imaginary, see
- 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 core.py, see
60
and164
. - 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
.
- Add support for bidirectional limits, see
10
. - Reimplement
~diofant.functions.elementary.trigonometric.cot
, see113
. - A better implementation of
~diofant.calculus.singularities.singularities
, see147
. - 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
and167
. - Build correct inhomogeneous solution in
~diofant.solvers.recurr.rsolve_hyper
, see298
. - 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
. - Support CPython 3.6, see
337
and356
.
- Unbundle numpydoc, see
26
. - Deprecate AUTHORS file, all credits go to the aboutus.rst, see
87
. - Use python's
~tokenize.tokenize
, see120
. - Drop using bundled pytest fork, depend on pytest for testing, see
38
,152
,91
,48
,90
,96
and99
. - 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
. - Add interface tests, see
219
and307
. - Test for no DeprecationWarning in the codebase, see
356
.
See the release milestone for complete list of issues and pull requests involved in this release.
These Sympy issues also were addressed:
9351
order-1 series wrong with non-zero expansion point9034
Unicode printing problem with mixture of logs and powers7927
pretty print incorrect result with powers of sin9283
KroneckerDelta(p, 0) raises IndexError9274
Wrong Jordan form: complex eigenvalues w/ geo. mult. > alg. mult.9398
Simplify of small imaginary number yields 07259
LambertW has no series expansion at x=0 (nan)9832
x**2 < oo returns True but x < oo un-evaluated for real x9053
MatMul(2, Matrix(...)).doit() doesn't do it9052
trace(2*A) != 2*Trace(A) because LHS still has an MatMul9533
Logical operators in octave_code9545
Mod(zoo, 0) causes RunTime Error9652
Fail in plot_implicit test on OSX 10.8.58432
Tests fail, seems like Cython is not configured to compile with numpy correctly9542
codegen octave global vars should print "global foo" at top of function9326
Bug with Dummy9413
Circularity in assumptions of products8840
sympy fails to construct (1 + x)*x with disabled cache4898
Replace exp(x) with E**x internally10195
Simplification bug on alternating series.10196
reduce_inequalities error10198
solving abs with negative powers7917
Implement cot as a ReciprocalTrigonometricFunction8649
If t is transcendental, t**n is determined (wrongly) to be non-integer5641
Compatibility with py.test10258
Relational involving Piecewise evaluates incorrectly as True10268
solving inequality involving exp fails for large values10237
improper inequality reduction10255
solving a Relational involving Piecewise fails10290
Computing series where the free variable is not just a symbol is broken10304
Equality involving expression with known real part and 0 should evaluate9471
Wrong limit with log and constant in exponent9449
limit fails with "maximum recursion depth exceeded" / Python crash8462
Trivial bounds on binomial coefficients9917
O(n*sin(n) + 1, (n, oo)) returns O(n*sin(n), (n, oo))7383
Integration error7098
Incorrect expression resulting from integral evaluation10323
bad ceiling(sqrt(big integer))10326
Interval(-oo, oo) contains oo10095
simplify((1/(2*E))**oo) returns nan4187
integrate(log(x)*exp(x), (x, 0, oo)) should return -EulerGamma10383
det of empty matrix is 110382
limit(fibonacci(n + 1)/fibonacci(n), n, oo) does not give GoldenRatio10388
factorial2 runs into RunTimeError for non-integer10391
solve((2*x + 8)exp(-6x), x) can't find any solution8241
Wrong assumption/result in a parametric limit3539
Symbol.__call__ should not create a Function7216
Limits involving branch cuts of elementary functions not handled10503
Series return an incorrect result10567
Integral(v,t).doit() differs from integrate(v,t)9075
sympy.limit yields incorrect result10610
limit(3*n3*(-n - 1)(n + 1)2/n2, n, oo) is wrong4173
implement maximize([x**(1/x), x>0], x)10803
Bad pretty printing of power of Limit10836
Latex generation error for .series expansion for rightarrow term9558
Bug with limit4949
solve_linear_system contains duplicate rref algorithm5952
Standard sets (ZZ, QQ, RR, etc.) for the sets module9608
Partition can't be ordered10961
fractional order Laguerre gives wrong result10976
incorrect answer for limit involving erf10995
acot(-x) evaluation11011
Scientific notation should be delimited for LaTeX11062
Error while simplifying equations containing csc and sec using trigsimp_groebner10804
1/limit(airybi(x)root(x, 4)exp(-2*x*(S(3)/2)/3), x, oo)*2 is wrong11063
Some wrong answers from rsolve9480
Matrix.rank() incorrect results10497
next(iter(S.Integers*S.Integers)) hangs (expected (0, 0), ...)5383
Calculate limit error11270
Limit erroneously reported as infinity5172
limit() throws TypeError: an integer is required7055
Failures in rsolve_hyper from test_rsolve_bulk()11261
Recursion solver fails11313
Series of Derivative11290
1st_exact_Integral wrong result10761
(1/(x*-2 + x*-3)).series(x, 0) gives wrong result10024
Eq( Mod(x, 2*pi), 0 ) evaluates to False7985
Indexed should work with subs on a container9637
S.Reals - FiniteSet(n) returns EmptySet - FiniteSet(n)10003
P(X < -1) of ExponentialDistribution10052
P(X < oo ) for any Continuous Distribution raises AttributeError10063
Integer raised to Float power does not evaluate10075
X.pdf(x) for Symbol x returns 09823
Matrix power of identity matrix fails10156
do not use has() to test against self.variables when factoring Sum10113
imageset(lambda x: x*2/(x*2 - 4), S.Reals) returns (1, oo)10020
oo**I raises RunTimeError10240
Not(And(x>2, x<3)) does not evaluate8510
Differentiation of general functions10220
Matrix.jordan_cells() fails10092
subs into inequality involving RootOf raises GeneratorsNeeded10161
factor gives an invalid expression10243
Run the examples during automated testing or at release10274
The helpers kwarg in autowrap method is probably broken.10210
LaTex printing of Cycle9539
diophantine(6*k + 9*n + 20*m - x) gives TypeError: unsupported operand type(s) for *: 'NoneType' and 'Symbol'11407
Series expansion of the square root gives wrong result11413
Wrong result from Matrix norm11434
Matrix rank() produces wrong result11526
Different result of limit after simplify11553
Polynomial solve with GoldenRatio causes Traceback8045
make all NaN is* properties that are now None -> False (including is_complex)11602
Replace dots with ldots or cdots4720
Initial conditions in dsolve()11623
Wrong groebner basis10292
poly cannot generically be rebuilt from its args6572
Remove "#doctest: +SKIP" comments on valid docstrings10134
Remove "raise StopIteration"11672
limit(Rational(-1,2)**k, k, oo) fails11678
Invalid limit of floating point matrix power11746
undesired (wrong) substition behavior in sympy?3904
missing docstrings in core3112
Asymptotic expansion9173
Series/limit fails unless expression is simplified first.9808
Complements with symbols should remain unevaluated9341
Cancelling very long polynomial expression9908
Sum(1/(n**3 - 1), (n, -oo, -2)).doit() raise UnboundLocalVariable6171
Limit of a piecewise function9276
./bin/diagnose_imports: does it work at all?!10201
Solution of "first order linear non-homogeneous ODE-System" is wrong9057
segfault on printing Integral of phi(t)11159
Substitution with E fails2839
init_session(auto_symbols=True) and init_session(auto_int_to_Integer=True) do not work11081
where possible, use python fractions for Rational10974
solvers.py contains BOM character10806
LaTeX printer: Integral not surrounded in brackets10801
Make limit work with binomial9549
series expansion: (x*2 + x + 1)/(x3 + x*2) about oo gives wrong result4231
add a test for complex integral from wikipedia8634
limit(x**n, x, -oo) is sometimes wrong8481
Wrong error raised trying to calculate limit of Poisson PMF9956
Union(Interval(-oo, oo), FiniteSet(1)) not evaluated9747
test_piecewise_lambdify fails locally7853
Deprecation of lambdify converting Matrix -> numpy.matrix9634
Repeated example in the docstring of hermite8500
Using and operator vs fuzzy_and while querying assumptions9192
O(y + 1) = O(1)7130
Definite integral returns an answer with indefinite integrals8514
Inverse Laplace transform of a simple function fails after updating from 0.7.5 to 0.7.69334
Numexpr must be string argument to lambdify8229
limit((x*Rational(1,4)-2)/(sqrt(x)-4)*Rational(2, 3), x, 16) NotImplementedError8061
limit(4*(acos(1/(1+x2))*2)/log(1+x, 4), x, 0) raises NotImplementedError7872
Substitution in Order fails3496
limits for complex variables2929
limit((x*exp(x))/(exp(x)-1), x, -oo) gives -oo8203
Why is oo real?7649
S.Zero.is_imaginary should be True?7256
use old assumptions in code6783
Get rid of confusing assumptions5662
AssocOp._eval_template_is_attr is wrong or misused5295
Document assumptions4856
coding style4555
use pyflakes to identify simple bugs in sympy and fix them5773
Remove the cmp_to_key() helper function5484
use sort_key instead of old comparison system8825
Can't use both weakref's & cache8635
limit(x*n-x*(n-k), x, oo) sometimes raises NotImplementedError8157
Non-informative error raised when computing limit of cos(n*pi)7599
Addition of expression and order term fails6179
wrong order in series5415
limit involving multi-arg function (polygamma) fails2865
gruntz doesn't work properly for big-O with point!=05907
integrate(1/(x*2 + a2)*2, x) is wrong if a is real11722
series() calculation up to O(t*k) returns invalid coefficients for tk log(t)8804
series expansion of 1/x ignores order parameter10728
Dummy(commutative=False).is_zero -> False