Skip to content

Latest commit

 

History

History
264 lines (248 loc) · 15.8 KB

notes-0.8.rst

File metadata and controls

264 lines (248 loc) · 15.8 KB

Diofant 0.8

7 Nov 2016

New features

  • MrvAsympt algorithm to find asymptotic expansion, see ~diofant.core.expr.Expr.aseries method and 6. Thanks to Avichal Dayal.
  • ~diofant.concrete.summations.Sum.findrecur method to find recurrence relations (with Sister Celine's algorithm), see 15.
  • Support for ~diofant.core.power.Pow/~diofant.functions.elementary.exponential.log branch-cuts in limits, see 140.
  • Added basic optimization package, see ~diofant.calculus.optimization.minimize and 108.
  • Cartesian product of iterables using Cantor pairing, see ~diofant.utilities.iterables.cantor_product and 276.
  • ~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, see 307. Thanks to Aaron Meurer.

Major changes

  • Depend on setuptools, see 44.
  • The Gruntz Algorithm <diofant.series.gruntz> reimplemented correctly, see 68.
  • Replaced exp(x) with E**x internally, see 79.
  • Used ~diofant.printing.repr.srepr instead of ~diofant.printing.str.sstr for ~object.__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:

    • 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.

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 core.py, see 60 and 164.
  • 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.
  • Reimplement ~diofant.functions.elementary.trigonometric.cot, see 113.
  • A better implementation of ~diofant.calculus.singularities.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 ~diofant.solvers.recurr.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.
  • Support CPython 3.6, see 337 and 356.

Developer changes

  • Unbundle numpydoc, see 26.
  • Deprecate AUTHORS file, all credits go to the aboutus.rst, see 87.
  • Use python's ~tokenize.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.
  • Add interface tests, see 219 and 307.
  • 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:

  • 9351 order-1 series wrong with non-zero expansion point
  • 9034 Unicode printing problem with mixture of logs and powers
  • 7927 pretty print incorrect result with powers of sin
  • 9283 KroneckerDelta(p, 0) raises IndexError
  • 9274 Wrong Jordan form: complex eigenvalues w/ geo. mult. > alg. mult.
  • 9398 Simplify of small imaginary number yields 0
  • 7259 LambertW has no series expansion at x=0 (nan)
  • 9832 x**2 < oo returns True but x < oo un-evaluated for real x
  • 9053 MatMul(2, Matrix(...)).doit() doesn't do it
  • 9052 trace(2*A) != 2*Trace(A) because LHS still has an MatMul
  • 9533 Logical operators in octave_code
  • 9545 Mod(zoo, 0) causes RunTime Error
  • 9652 Fail in plot_implicit test on OSX 10.8.5
  • 8432 Tests fail, seems like Cython is not configured to compile with numpy correctly
  • 9542 codegen octave global vars should print "global foo" at top of function
  • 9326 Bug with Dummy
  • 9413 Circularity in assumptions of products
  • 8840 sympy fails to construct (1 + x)*x with disabled cache
  • 4898 Replace exp(x) with E**x internally
  • 10195 Simplification bug on alternating series.
  • 10196 reduce_inequalities error
  • 10198 solving abs with negative powers
  • 7917 Implement cot as a ReciprocalTrigonometricFunction
  • 8649 If t is transcendental, t**n is determined (wrongly) to be non-integer
  • 5641 Compatibility with py.test
  • 10258 Relational involving Piecewise evaluates incorrectly as True
  • 10268 solving inequality involving exp fails for large values
  • 10237 improper inequality reduction
  • 10255 solving a Relational involving Piecewise fails
  • 10290 Computing series where the free variable is not just a symbol is broken
  • 10304 Equality involving expression with known real part and 0 should evaluate
  • 9471 Wrong limit with log and constant in exponent
  • 9449 limit fails with "maximum recursion depth exceeded" / Python crash
  • 8462 Trivial bounds on binomial coefficients
  • 9917 O(n*sin(n) + 1, (n, oo)) returns O(n*sin(n), (n, oo))
  • 7383 Integration error
  • 7098 Incorrect expression resulting from integral evaluation
  • 10323 bad ceiling(sqrt(big integer))
  • 10326 Interval(-oo, oo) contains oo
  • 10095 simplify((1/(2*E))**oo) returns nan
  • 4187 integrate(log(x)*exp(x), (x, 0, oo)) should return -EulerGamma
  • 10383 det of empty matrix is 1
  • 10382 limit(fibonacci(n + 1)/fibonacci(n), n, oo) does not give GoldenRatio
  • 10388 factorial2 runs into RunTimeError for non-integer
  • 10391 solve((2*x + 8)exp(-6x), x) can't find any solution
  • 8241 Wrong assumption/result in a parametric limit
  • 3539 Symbol.__call__ should not create a Function
  • 7216 Limits involving branch cuts of elementary functions not handled
  • 10503 Series return an incorrect result
  • 10567 Integral(v,t).doit() differs from integrate(v,t)
  • 9075 sympy.limit yields incorrect result
  • 10610 limit(3*n3*(-n - 1)(n + 1)2/n2, n, oo) is wrong
  • 4173 implement maximize([x**(1/x), x>0], x)
  • 10803 Bad pretty printing of power of Limit
  • 10836 Latex generation error for .series expansion for rightarrow term
  • 9558 Bug with limit
  • 4949 solve_linear_system contains duplicate rref algorithm
  • 5952 Standard sets (ZZ, QQ, RR, etc.) for the sets module
  • 9608 Partition can't be ordered
  • 10961 fractional order Laguerre gives wrong result
  • 10976 incorrect answer for limit involving erf
  • 10995 acot(-x) evaluation
  • 11011 Scientific notation should be delimited for LaTeX
  • 11062 Error while simplifying equations containing csc and sec using trigsimp_groebner
  • 10804 1/limit(airybi(x)root(x, 4)exp(-2*x*(S(3)/2)/3), x, oo)*2 is wrong
  • 11063 Some wrong answers from rsolve
  • 9480 Matrix.rank() incorrect results
  • 10497 next(iter(S.Integers*S.Integers)) hangs (expected (0, 0), ...)
  • 5383 Calculate limit error
  • 11270 Limit erroneously reported as infinity
  • 5172 limit() throws TypeError: an integer is required
  • 7055 Failures in rsolve_hyper from test_rsolve_bulk()
  • 11261 Recursion solver fails
  • 11313 Series of Derivative
  • 11290 1st_exact_Integral wrong result
  • 10761 (1/(x*-2 + x*-3)).series(x, 0) gives wrong result
  • 10024 Eq( Mod(x, 2*pi), 0 ) evaluates to False
  • 7985 Indexed should work with subs on a container
  • 9637 S.Reals - FiniteSet(n) returns EmptySet - FiniteSet(n)
  • 10003 P(X < -1) of ExponentialDistribution
  • 10052 P(X < oo ) for any Continuous Distribution raises AttributeError
  • 10063 Integer raised to Float power does not evaluate
  • 10075 X.pdf(x) for Symbol x returns 0
  • 9823 Matrix power of identity matrix fails
  • 10156 do not use has() to test against self.variables when factoring Sum
  • 10113 imageset(lambda x: x*2/(x*2 - 4), S.Reals) returns (1, oo)
  • 10020 oo**I raises RunTimeError
  • 10240 Not(And(x>2, x<3)) does not evaluate
  • 8510 Differentiation of general functions
  • 10220 Matrix.jordan_cells() fails
  • 10092 subs into inequality involving RootOf raises GeneratorsNeeded
  • 10161 factor gives an invalid expression
  • 10243 Run the examples during automated testing or at release
  • 10274 The helpers kwarg in autowrap method is probably broken.
  • 10210 LaTex printing of Cycle
  • 9539 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 result
  • 11413 Wrong result from Matrix norm
  • 11434 Matrix rank() produces wrong result
  • 11526 Different result of limit after simplify
  • 11553 Polynomial solve with GoldenRatio causes Traceback
  • 8045 make all NaN is* properties that are now None -> False (including is_complex)
  • 11602 Replace dots with ldots or cdots
  • 4720 Initial conditions in dsolve()
  • 11623 Wrong groebner basis
  • 10292 poly cannot generically be rebuilt from its args
  • 6572 Remove "#doctest: +SKIP" comments on valid docstrings
  • 10134 Remove "raise StopIteration"
  • 11672 limit(Rational(-1,2)**k, k, oo) fails
  • 11678 Invalid limit of floating point matrix power
  • 11746 undesired (wrong) substition behavior in sympy?
  • 3904 missing docstrings in core
  • 3112 Asymptotic expansion
  • 9173 Series/limit fails unless expression is simplified first.
  • 9808 Complements with symbols should remain unevaluated
  • 9341 Cancelling very long polynomial expression
  • 9908 Sum(1/(n**3 - 1), (n, -oo, -2)).doit() raise UnboundLocalVariable
  • 6171 Limit of a piecewise function
  • 9276 ./bin/diagnose_imports: does it work at all?!
  • 10201 Solution of "first order linear non-homogeneous ODE-System" is wrong
  • 9057 segfault on printing Integral of phi(t)
  • 11159 Substitution with E fails
  • 2839 init_session(auto_symbols=True) and init_session(auto_int_to_Integer=True) do not work
  • 11081 where possible, use python fractions for Rational
  • 10974 solvers.py contains BOM character
  • 10806 LaTeX printer: Integral not surrounded in brackets
  • 10801 Make limit work with binomial
  • 9549 series expansion: (x*2 + x + 1)/(x3 + x*2) about oo gives wrong result
  • 4231 add a test for complex integral from wikipedia
  • 8634 limit(x**n, x, -oo) is sometimes wrong
  • 8481 Wrong error raised trying to calculate limit of Poisson PMF
  • 9956 Union(Interval(-oo, oo), FiniteSet(1)) not evaluated
  • 9747 test_piecewise_lambdify fails locally
  • 7853 Deprecation of lambdify converting Matrix -> numpy.matrix
  • 9634 Repeated example in the docstring of hermite
  • 8500 Using and operator vs fuzzy_and while querying assumptions
  • 9192 O(y + 1) = O(1)
  • 7130 Definite integral returns an answer with indefinite integrals
  • 8514 Inverse Laplace transform of a simple function fails after updating from 0.7.5 to 0.7.6
  • 9334 Numexpr must be string argument to lambdify
  • 8229 limit((x*Rational(1,4)-2)/(sqrt(x)-4)*Rational(2, 3), x, 16) NotImplementedError
  • 8061 limit(4*(acos(1/(1+x2))*2)/log(1+x, 4), x, 0) raises NotImplementedError
  • 7872 Substitution in Order fails
  • 3496 limits for complex variables
  • 2929 limit((x*exp(x))/(exp(x)-1), x, -oo) gives -oo
  • 8203 Why is oo real?
  • 7649 S.Zero.is_imaginary should be True?
  • 7256 use old assumptions in code
  • 6783 Get rid of confusing assumptions
  • 5662 AssocOp._eval_template_is_attr is wrong or misused
  • 5295 Document assumptions
  • 4856 coding style
  • 4555 use pyflakes to identify simple bugs in sympy and fix them
  • 5773 Remove the cmp_to_key() helper function
  • 5484 use sort_key instead of old comparison system
  • 8825 Can't use both weakref's & cache
  • 8635 limit(x*n-x*(n-k), x, oo) sometimes raises NotImplementedError
  • 8157 Non-informative error raised when computing limit of cos(n*pi)
  • 7599 Addition of expression and order term fails
  • 6179 wrong order in series
  • 5415 limit involving multi-arg function (polygamma) fails
  • 2865 gruntz doesn't work properly for big-O with point!=0
  • 5907 integrate(1/(x*2 + a2)*2, x) is wrong if a is real
  • 11722 series() calculation up to O(t*k) returns invalid coefficients for tk log(t)
  • 8804 series expansion of 1/x ignores order parameter
  • 10728 Dummy(commutative=False).is_zero -> False