Thursday, July 16, 2009

SymPy 0.6.5 released

SymPy 0.6.5 has been released on July 17, 2009. It is available at

http://sympy.org

Source distribution can be downloaded from
http://sympy.googlecode.com/files/sympy-0.6.5.tar.gz

Windows binaries can be downloaded from
http://sympy.googlecode.com/files/sympy-0.6.5.win32.exe


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.


Changes since last stable release

This release has been marked by improved documentation,
C code generation, solve and dsolve improvements, mpath update, a new
logic module and the start of Google's Summer of Code program.


Major changes include:

- Geometric Algebra Improvements
- Upgrade GA module with left and right contraction operations
- Add intersection test for the vertical segment,
reimplementation of convex_hull (Florian Mickler)

- Implement series() as function (Barry Wardell)

- Core improvements
- Refactor Number._eval_power (Fabian Pedregosa)
- fix bugs in Number._eval_power (Chris Smith)

- Matrix improvements:
- Improve jacobian function, introduce vec and vech (Ben
Goodrich)


- Solver improvements:
- solutions past linear factor found in tsolve (Chris Smith)
- refactor sympy.solvers.guess_solve_strategy (Fabian Pedregosa)
- Small cleanups to the ODE solver and tests. (Priit Laes)
- Fix corner case for Bernoulli equation. (Priit Laes)


- Improvements on partial differential equations solvers (Priit
Laes)
- Added separation of variables for PDEs (Priit Laes)


- Expand improvements (Aaron Meurer)
- Refactoring
- exp(x)*exp(y) is no longer automatically combined into
exp(x+y), use powsimp for that


- Documentation improvements:
- Test also documentation under doc/ (Fabian Pedregosa)
- Added many docstrings
- Fix Sphinx complaints/warnings/errors (Priit Laes)
- Doctest coverage (Ondrej Certik)


- New logic module (Fabian Pedregosa)
- Efficient DPLL algorithm (Fabian Pedregosa)


- LaTeX printer improvements:
- Handle standard form in the LaTeX printer correctly (Freddie
Witherde)
- Latex: _print_Mul fix (issue 1282) (Nicolas Pourcelot)
- Robust printing of latex sub and superscripts (Toon Verstraelen)
- sorting _print_Add output using a main variable (Ryan Krauss)
- Matrix printing improvements (Ryan Krauss)


- MathML printing improvements:
- MathML's printer extended (Thomas Sidoti)


- Testing framework improvements
- Make tests pass without the "py" module (Ondrej Certik)


- Polynomial module improvements:
- Fixed subresultant PRS computation and ratint() (Mateusz
Paprocki)
- Removed old module sympy.polynomials (Priit Laes)


- limit fixes:
Compute the finite parts of the limit of a sum by direct
substitution (Ronan Lamy)


- Test coverage script (Ronan Lamy)


- Code quality improvements (remove string exceptions, code quality
test improvements) (Tomasz Buchert)


- C code generation (Toon Verstraelen)


- Update mpmath (Fredrik Johansson, Vinzent Steinberg)


The following people submitted code for this release (sorted by number
of patches):

* Fabian Pedregosa
* Ondrej Certik
* Priit Laes
* Vinzent Steinberg
* Toon Verstraelen
* Tomasz Buchert
* Nicolas Pourcelot
* Aaron Meurer
* Florian Mickler
* Jochen Voss
* Alan Bromborsky
* Barry Wardell
* Riccardo Gori
* Chris Smith
* Freddie Witherden
* Ben Goodrich
* Ronan Lamy
* Akshay Srinivasan
* Johann Cohen-Tanugi
* Luke Peterson
* Mateusz Paprocki
* Ted Horst
* Thomas Sidoti
* Vinay Kumar

Sunday, April 5, 2009

SymPy 0.6.4 released

SymPy 0.6.4 has been released on April 4, 2009. 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.

Major changes in this release:

  • robust and fast (still pure Python) multivariate factorization
  • sympy works with pickle protocol 2 (thus works in ipython parallel)
  • ./sympy test now uses our testing suite and it tests both regular tests and doctests
  • examples directory tidied up
  • more trigonometric simplifications
  • polynomial roots finding and factoring vastly improved
  • mpmath updated
  • many bugfixes (more than 200 patches since the last release)

The following 21 people have contributed patches to this release (sorted by the number of patches):

  • Ondrej Certik
  • Mateusz Paprocki
  • Fabian Seoane
  • Andy R. Terrel
  • Freddie Witherden
  • Robert Kern
  • Priit Laes
  • Riccardo Gori
  • Fredrik Johansson
  • Aaron Meurer
  • Alan Bromborsky
  • Brian E. Granger
  • Felix Kaiser
  • Kirill Smelkov
  • Vinzent Steinberg
  • Akshay Srinivasan
  • Andrew Docherty
  • Andrew Straw
  • Henrik Johansson
  • Kaifeng Zhu
  • Ted Horst

The following people helped review patches:

  • Riccardo Gori
  • Fabian Seoane
  • Vinzent Steinberg
  • Gael Varoquaux
  • Fredrik Johansson
  • Robert Kern
  • Alan Bromborsky
  • Ondrej Certik


There were 218 new patches since 0.6.3:

$ git log --pretty=oneline sympy-0.6.3..sympy-0.6.4 | wc -l
218

Plans for the future:

Our roadmap: http://wiki.sympy.org/wiki/Plan_for_SymPy_1.0

Wednesday, November 19, 2008

SymPy 0.6.3 released

SymPy 0.6.3 has been released on November 19, 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.

Major changes in this release:

  • port to python2.6 (all tests pass)
  • port to jython (all tests pass except those depending on the "ast" module)
  • true division fixed (all tests pass with "-Qnew" Python option)
  • buildbot.sympy.org created, sympy is now regularly tested on python2.4, 2.5, 2.6 on both i386 and amd64 architectures.
  • py.bench -- py.test based benchmarking added
  • bin/test -- simple py.test like testing framework, without external dependencies, nice colored output
  • most limits now work
  • factorization over Z[x] greatly improved
  • Piecewise function added
  • nsimplify() implemented
  • symbols and var syntax unified
  • C code printing
  • many bugfixes

The following 17 people have contributed patches to this release:

  • Andy R. Terrel
  • Kirill Smelkov
  • Stepan Roucka
  • Riccardo Gori
  • Fabian Seoane
  • Fredrik Johansson
  • Mateusz Paprocki
  • Sebastian Kreft
  • Sebastian Krämer
  • Vinzent Steinberg
  • Boris Timokhin
  • Alan Bromborsky
  • Henrik Johansson
  • Hubert Tsang
  • Konrad Meyer
  • Robert (average.programmer)
  • Ondrej Certik

The following people helped review patches:

  • Andy R. Terrel
  • Riccardo Gori
  • Fredrik Johansson
  • Vinzent Steinberg
  • Fabian Seoane
  • Kirill Smelkov
  • Sebastian Krämer
  • Mateusz Paprocki
  • Stepan Roucka
  • Friedrich Hagedorn
  • Brian Granger
  • Ondrej Certik

There were 256 new patches since 0.6.2:

$ git log --pretty=oneline sympy-0.6.2..sympy-0.6.3 | wc -l
258

Plans for the future:

Our roadmap: http://wiki.sympy.org/wiki/Plan_for_SymPy_1.0

The last big missing piece of the puzzle are assumptions, that we are implementing in the issue 1047. Besides that we should port sympy to Python 3.0, add more tests to our buildbot and start using the pure Python mode in Cython to speed SymPy up using ideas from sympyx (sympy core written in Cython). And improve our documentation continuously.

Sunday, August 17, 2008

SymPy 0.6.2 released

SymPy 0.6.2 has been released on August 17, 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 50% faster on average (cache:on) and 130% (cache:off) compared to previous release.
  • adaptive and faster evalf() (commit 1, 2, 3, 4, 5)
  • evalf: numerical summation of hypergeometric series (commit)
  • evalf: fast and accurate numerical summation (commit 1, 2, 3)
  • evalf: oscillatory quadrature (commit)
  • integrals now support variable transformation (commit)
  • we can now integrate(f(x)⋅diff(f(x),x), x) (commit 1, 2, 3)
  • we can now solve a⋅cos(x)=y (comit) and exp(x)+exp(-x)=y (commit 1, 2)
  • printing system refactored (commit 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
  • pprint: new symbol for multiply in unicode mode(x*y -> x⋅y) (commit)
  • pprint: matrices now look much better (commit) + example (commit 1, 2)
  • printing of dicts and sets are now more human-friendly (commit 1, 2, 3, 5)
  • latex: now supports sub- and superscripts in symbol names (commit)
  • RootSum.doit, now works on all roots (commit)
  • Wild can now have additional predicates (commit)
  • numpy-like zeros and ones functions (commit 1, 2, 3, 4)
  • var('x,y,z') now works (commit)
  • many bug fixes
changes that affected speed:
  • ((x+y+z)**50).expand() is now 4.8x faster (commit 1, 2 + other commits which all summed up)
  • big assumptions cleanup and rewrite (commit1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
  • access to all object attributes is now ~2.5 times faster (commit)
  • we try not to let 'is_commutative' to go through (slow) assumptions path (commit 1, 2)
  • Add/Mul were optimized (for some cases significantly) (commit 1, 2, 3, 4, 5, 6)
general cleanup:
  • isympy and sympy.interactive code were merged (commit)
  • multiple inheritance removed (NoArithMeths, NoRelMeths, RelMeths, ArithMeths are gone) (commit 1, 2, 3, 4, 5, 6)
  • .nseries() is now used as default in .series()
  • doctesting was made more robust (commit 1, 2, 3, 4, 5)

The following 11 people have contributed patches to this release:

  • Sebastian Krämer
  • Fredrik Johansson
  • Ondřej Čertík
  • Mateusz Paprocki
  • Stefano Maggiolo
  • Robert Cimrman
  • Sebastian Krause
  • Bastian Weber
  • Sebastian Kreft
  • Štěpán Roučka
  • Kirill Smelkov

The following people helped review patches:

  • Riccardo Gori
  • Fredrik Johansson
  • Kirill Smelkov
  • Ondřej Čertík
  • Mateusz Paprocki

Other news: we wrote a new core sympyx in Cython that is an order of magnitude faster than the current SymPy, yet it uses the same architecture, so it's our priority now to merge it back and then gradualy speedup things, so that SymPy is as fast as any other symbolic package.

SymPy will remain pure Python by default, but it will be possible to use Cythonized core optionally to gain speed.

Tuesday, July 22, 2008

SymPy 0.6.1 released

SymPy 0.6.1 has been released on July 22, 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:
  • almost all functions and constants can be converted to Sage (commit 1, 2)
  • univariate factorization algorithm was fixed (commit)
  • .evalf() method fixed, pi.evalf(106) calculates 1 000 000 digits of pi (commit 1)
  • @threaded decorator (commit 1, 2, 3)
  • more robust solvers, polynomials and simplification (about 60 patches from Mateusz, see the hg history)
  • better simplify, that makes a solver more robust (commit)
  • optional compiling of functions to machine code (commit)
  • msolve: solving of nonlinear equation systems using Newton's method (commit)


changes that affected speed:
  • ((x+y+z)**50).expand() is now 3 times faster (commit)
  • caching was removed from the Order class: 1.5x speedups in series tests (commit 1, 2, 3, 4, 5)


The following 8 people have contributed patches to this release:

  • Mateusz Paprocki
  • Vinzent Steinberg
  • Fredrik Johansson
  • Riccardo Gori
  • Kirill Smelkov
  • Štěpán Roučka
  • Ali Raza Syed
  • Ondřej Čertík


The following people helped review patches:

  • Riccardo Gori
  • Fredrik Johansson
  • Kirill Smelkov
  • Ondřej Čertík
  • Mateusz Paprocki

See our hg history for all patches. In the 0.6.x series we concentrate on much better integration with Sage and NumPy. And also improving our docs. See our roadmap:

http://wiki.sympy.org/wiki/Plan_for_SymPy_1.0

SymPy will remain pure Python by default, but for people that do install additional packages, SymPy should be able to use them. Currently SymPy can already use gmpy, NumPy and compile functions to machine code using tcc.

Tuesday, July 8, 2008

SymPy 0.6.0 released

SymPy 0.6.0 has been released on July 7, 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:
  • all documentation wiki pages moved to docs.sympy.org
  • mpmath was integrated in SymPy, numerics module removed
  • mpmath can use gmpy optionally, thus calculating 1000000 digits of pi in 7.5s
  • Common subexpression elimination implemented (commit 1, 2, 3, 4), see docs
  • roots, RootsOf, RootSum implemented (commit)
  • lambdify() now accepts Matrices (commit)
  • Matrices polished and spedup (commit 1, 2, 3, 4, 5, 6, 7, 8, 9)
  • source command implemented (commit 1, 2)
  • Polys were made the default polynomials in SymPy (commit 1, + many following commits)
  • Add, Mul, Pow now accept evaluate=False argument (commit)



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

We have consolidated and improved all our docs, you can find it in the package and also online here:

http://docs.sympy.org/

and we also created a road map for the future releases of SymPy:

http://wiki.sympy.org/wiki/Plan_for_SymPy_1.0

As you can see, we have finally moved from the 0.5.0 era by consolidating the docs and you can read there what is planned for the 0.6.0 series and further.

The following 12 people have contributed patches to this release:
  • Mateusz Paprocki
  • Fredrik Johansson
  • Robert Kern
  • Riccardo Gori
  • Sebastian Krämer
  • Case Van Horsen
  • Vinzent Steinberg
  • Roberto Nobrega
  • Friedrich Hagedorn
  • David Roberts
  • Kirill Smelkov
  • Ondrej Certik
Many thanks to all of you who helped review patches:
  • Kirill Smelkov
  • Mateusz Paprocki
  • Robert Kern
  • Vinzent Steinberg
  • Fredrik Johansson
  • Sebastian Krämer
And all the others who helped on our mailinglists.

We welcome any comments, questions, bug reports, patches. Any contribution you do is very useful.

You can also read Fredrik's progress on his GSoC project here:

http://planet.sympy.org/

there are a lot of interesting posts.

Saturday, May 24, 2008

SymPy 0.5.15 released

SymPy 0.5.15 has been released on May 24, 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:
  • all SymPy functions support vector arguments, e.g. sin([1, 2, 3]) (commit 1, 2)
  • lambdify can now use numpy/math/mpmath (1, 2, 3)
  • the order of lambdify arguments has changed (commit)
  • all SymPy objects are pickable (commit 1, 2, 3)
  • simplify improved and made more robust (commit)
  • broken limit_series was removed, we now have just one limit implementation (commit 1, 2, 3)
  • limits now use .nseries (commit)
  • .nseries() improved a lot (commit 1, 2, 3)
  • Polys improved (commit)
  • Basic kronecker delta and Levi-Civita implementation (commit)


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

Apart from the actual code, we have also launched an online SymPy shell:

http://live.sympy.org/

The following 8 people have contributed patches to this release:

  • Sebastian Krämer
  • Friedrich Hagedorn
  • Mateusz Paprocki
  • Saroj Adhikari
  • Vinzent Steinberg
  • David Roberts
  • Nimish Telang
  • Ondřej Čertík