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.

Backwards-incompatible changes

  • 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 also full list of closed issues and full list of merged pull requests in the Diofant repository.