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.

  • Support for Pow/log branch-cuts in limits, see #140.

  • Added basic optimization package, see minimize() and #108.

  • Cartesian product of iterables using Cantor pairing, see cantor_product() and #276.

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

  • 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) with E**x internally, see #79.

  • Used srepr() instead of sstr() 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:

    • 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 cot, see #113.

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

  • 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(), 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: