Thursday, March 6, 2008

SymPy 0.5.13 released

It took us a little longer to release, so we have a longer changelog this time:

user-visible changes:
  • SymPy is now 2x faster in average compared to the previous release (see below)
  • integrate() can handle most of the basic integrals now (commit)
  • interactive experience with isympy was improved through adding support for [], () and {} to pretty-printer, and switching to it as the default ipython printer (commit 1, 2, 3)
  • new trim() function to map all non-atomic expressions, ie. functions, derivatives and more complex objects, to symbols and remove common factors from numerator and denominator. also cancel() was improved (commit 1, 2)
  • .expand() for noncommutative symbols fixed (commit)
  • bug in (x+y+sin(x)).as_independent() fixed (commit)
  • .subs_dict() improved (commit)
  • support for plotting geometry objects added (commit)
  • bug in .tangent_line() of ellipse fixed (commit 1, 2)
  • new atan2 function and assotiated fixes for .arg() and expanding rational powers (commit 1, 2, 3)
  • new .coeff() method for returning coefficient of a poly (commit 1, 2, 3)
  • pretty-printer now uses unicode by default (commit)
  • recognition of geometric sums were generalized (commit)
  • .is_positive and .is_negative now fallback to evalf() when appropriate (commit)
  • as the result oo*(pi-1) now correctly simplifies to oo (commit)
  • support for objects which provide __int__ method was added (commit)
  • we finally started SymPy User's Guide (commit 1, 2)
changes that affected speed:
  • first patches with 25% speedup (commit 1, 2, 3, 4)
  • Basic.cos et. al. removed, use C.cos instead (commit 1, 2, 3, 4)
  • sympy.core now uses direct imports (commit 1, 2)
  • sympifyit decorator (commit 1, 2, 3, 4, 5, 6, 7)
  • speedup Integers creation and arithmetic (commit 1, 2)
  • speedup unary operations for singleton numbers (commit)
  • remove silly slowdowns from fast-path of mul and div (commit 1, 2)
  • significant speedup was achieved by reusing dummy variables (commit 1, 2, 3, 4)
  • is_dummy is not an assumption anymore (commit 1, 2)
  • Symbols & Wilds are cached (commit 1, 2, 3)
  • ((2+3*I)**1000).expand() is now at least 100x faster (commit)
  • .expand() was made faster for cases where an expression is already expanded (commit)
  • rational powers of integers are now computed more efficiently (commit)
  • unknown assumptions are now cached as well as known assumptions (commit)
general cleanup:
  • BasicMeths merged into Basic (commit 1, 2, 3, 4, 5, 6, 7, 8)
  • cache subsystem was cleaned up -- now it supports only immutable objects (commit 1, 2, 3, 4, 5)


The following people have contributed to this release:
  • Kirill Smelkov
  • Mateusz Paprocki
  • Saroj Adhikari
  • Fredrik Johansson
  • Jaroslaw Tworek
  • Robert Kern
  • Pauli Virtanen
  • Ondřej Čertík