Saturday, April 26, 2008

SymPy 0.5.14 released

SymPy 0.5.14 has been released on April 26, 2008. It is available at

http://code.google.com/p/sympy/

About SymPy

SymPy is a Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely in Python and does not require any external libraries.



user-visible changes:
  • SymPy is now 25% faster on average compared to the previous release (see below)
  • Documentation was improved a lot (commit 1, 2, 3). See http://docs.sympy.org/
  • rsolve_poly & rsolve_hyper fixed (commit 1, 2)
  • subs and subs_dict unified to .subs() (commit 1, 2)
  • faster and more robust polynomials module (commit 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ..., look into the hg history)
  • improved Matrix.det(), implemented Berkowitz algorithm (commit 1, 2)
  • improved isympy (interactive shell for SymPy) (commit 1, 2, 3, 4, 5, 6)
  • pretty-printing improved (commit 1, 2, 3)
  • Rel, Eq, Ne, Lt, Le, Gt, Ge implemented (commit 1)
  • Limit class represents unevaluated limits now (commit 1)
  • Bailey-Borwein-Plouffe algorithm (finds the nth hexidecimal digit of pi without calculating the previous digits) implemented (commit 1)
  • solver for transcendental equations added (commit 1)
  • .nseries() methods implemented (more robust/faster than .oseries) (commit 1, 2)
  • multivariate Lambdas implemented (commit 1)


changes that affected speed:
  • __eq__/__ne__/__nonzero__ returns True/False directly so dict lookups are not expensive anymore (commit 1, 2, 3, 4, 5, 6)
  • sum(x**i/i,i=1..400) is now 4.8x faster (commit 1, 2, 3, 4, 5)
  • isinstance(term, C.Mul) was replaced by term.is_Mul and similarly for other basic classes (commit 1, 2)



Plus a lot of smaller bugfixes, you can browse our Mercurial history for details.


This release contains patches from 15 developers, which is so far the highest number of people/release (33 people have sent patches to SymPy so far, see the list of contributors):

  • Mateusz Paprocki
  • Fredrik Johansson
  • James Aspnes
  • Friedrich Hagedorn
  • Pan Peng
  • Abderrahim Kitouni
  • Nimish Telang
  • Jurjen N.E. Bos
  • Elrond der Elbenfuerst
  • Rizgar Mella
  • Felix Kaiser
  • Roberto Nobrega
  • David Roberts
  • Ondřej Čertík
  • Kirill Smelkov



If you'd like to contribute too, you can browse our open issues here:

http://code.google.com/p/sympy/issues/list

and then we suggest you to read the SymPy Patches Tutorial, that explains how to work with Mercurial effectively and how to create and send patches easily (not only) to SymPy. Any contribution is welcome, be it documentation, code, or just hanging out on our mailinglist or IRC (#sympy at freenode).