
SymPy - Python library for symbolic mathematics - grn
http://sympy.org/
======
dave_sullivan
This would be useful for teaching math or prototyping. From their FAQ it
sounds like performance is way too slow for problems where speed is an issue.

If you're looking for a fast symbolic math library for python, check out
Theano. On CPU, it can take advantage of whatever BLAS you use, and on GPU, it
will convert your code to optimized C++ and compile via nvidia's cuda sdk.

SymPy does seem a lot more feature rich than theano, which relies on numpy

~~~
wisty
Looking at Theano, they seem pretty different.

Theano seems to be a beefed-up numpy (with compilation, symbolic
differentiation, stability, and GPU use), while Sympy is a CAS framework.

That said, Theano looks really really really cool.

I wish I'd seen Theano before trying to force Sympy to do pretty much what
Theano does (through Sympy's codegen).

~~~
mjn
Theano has an interesting description of the lay of the land as they see it,
where they position themselves as a hybrid of numpy/MATLAB type numerical-
computational tools and sympy/Mathematica-style CAS tools:
[http://deeplearning.net/software/theano/introduction.html#wh...](http://deeplearning.net/software/theano/introduction.html#what-
does-it-do-that-they-don-t)

~~~
dave_sullivan
From the link, they mention this:

 _The closest Python package to Theano is sympy. Theano focuses more on tensor
expressions than Sympy, and has more machinery for compilation. Sympy has more
sophisticated algebra rules and can handle a wider variety of mathematical
operations (such as series, limits, and integrals)._

------
muuh-gnu
Also check out Maxima [1], the GPL'ed version of the venerable computer
algebra system DOE Macsyyma, which made the jump to PCs rather late and was
therefore overtaken by Maple and Mathematica. Maxima is still under active
development, has an community around it, and is available on Linux, Windows
and Macs.

[1] <http://maxima.sourceforge.net/>

~~~
lutusp
If you're going to mention Maxima, you should be aware that an actively
developed open-source program collection called Sage
(<http://www.sagemath.org/>) uses Maxima as well as many other open-source
packages to create a rich mathematical environment that's becoming
increasingly popular.

Sage uses Maxima internally to generate symbolic results, but Sage also has
many other integrated math tools, and has a Web 2.0 interface -- a server-
enabled front end.

My Sage tutorial: <http://arachnoid.com/sage>

------
skierscott
This is cool. However, NumPy, SciPy, SymPy, Maxima and a whole lot of other
tools are included in Sage, which is a competitor to Mathematica, Matlab, and
Maple. It's free and open-source. You can try it here: <http://www.sagenb.org>

------
i-blis
Mathics (<http://www.mathics.org/>) is a pretty useful online algebra system
(with MathJax display) for symbolic computing à la Mathematica, backed by
SymPy for most tasks and Sage for advanced stuff. You can check gallery and
docs at <http://www.mathics.net/>

~~~
i-blis
and the guy who does that seems interesting and relying:
<http://www.poeschko.com/>

------
sajithdilshan
sympy online interpreter : <http://pythonsympy.appspot.com/>

------
jrpickhardt
SymPy is great. I've used it and read through the code (available open
source). Also, my online calculator Encalc.com uses SymPy on the backend. For
example: <http://www.encalc.com/#expr=integrate(sin(x)>)

~~~
jrpickhardt
Looks like the link cut off the closing parentheses.

------
Bootvis
This seems to be a ery cool and useful project. Code generation is a killer
feature for me.

Also check out the Sympy Live Shell:
<http://docs.sympy.org/dev/modules/utilities/codegen.html>

------
fiatmoney
See also, OpenOpt and the FuncDesigner package.

<http://openopt.org/Welcome>

~~~
freyrs3
Looks like powerful numeric software but the site is so astoundingly bad. It
looks like a throwback to Geocities.

~~~
Dmitrey
Site will be moved to new engine as soon as we will got possibilities to make
it done.

------
grdvnl
This also is worth a try: <http://live.sympy.org/>

------
metamorfos
It would be amazing to have one for ruby, tho I'm definatly going to use this
for calculus at uni.

~~~
jdleesmiller
I know of two very early stage systems in ruby:
<https://github.com/jdleesmiller/rucas> (which I wrote) and
<http://brainopia.github.com/symbolic/>

I don't think either is really very useful at this stage (certainly mine
isn't), but ruby does provide some very nice metaprogramming support for
encoding and manipulating symbolic expressions.

