<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2520472460430880330</id><updated>2011-12-21T05:39:35.542-08:00</updated><title type='text'>The Official SymPy Blog</title><subtitle type='html'>The Official SymPy Blog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-84564291301844126</id><published>2011-12-12T16:03:00.000-08:00</published><updated>2011-12-12T16:10:28.245-08:00</updated><title type='text'>Google Summer of Code 2011 Wrap-Up</title><content type='html'>&lt;span style="font-style:italic;"&gt;(Cross-posted on the &lt;a href="http://google-opensource.blogspot.com/2011/12/students-add-to-sympy.html"&gt;Google Open Source Blog&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sympy.org/"&gt;SymPy&lt;/a&gt; is a computer algebra system (CAS) written in pure Python. The core allows basic manipulation of expressions (like differentiation or expansion) and it contains many modules for common tasks (limits, integrals, differential equations, series, matrices, quantum physics, geometry, plotting, and code generation).&lt;br /&gt;&lt;br /&gt;SymPy has participated in the &lt;span style="font-style:italic;"&gt;&lt;a href="http://code.google.com/soc/"&gt;Google Summer of Code&lt;/a&gt;&lt;/span&gt; program in previous years under the umbrellas of &lt;a href="http://www.python.org/psf/"&gt;Python Software Foundation&lt;/a&gt;, Portland State University, and the &lt;a href="http://www.stsci.edu/portal/"&gt;Space Telescope Science Institute&lt;/a&gt;, where we were very successful. In fact, several of our core developers, including four of the mentors from this year, started working with SymPy as Google Summer of Code students. This was our first year participating as a standalone organization, and we would like to share our experience.&lt;br /&gt;&lt;br /&gt;As part of the application process we required each student to submit a patch (as a GitHub pull request) that had to be reviewed and accepted. This allowed us to see that each applicant knew how to use git as well as communicate effectively during the review process.This also encouraged only serious applicants to apply. We had over 10 mentors available and we ended up with 9 students, all of whom were successful at final evaluations.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nessgrh.wordpress.com/"&gt;Tom Bachmann&lt;/a&gt; - &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Report-Tom-Bachmann%3A-Definite-Integration"&gt;Definite Integration using Meijer G-functions&lt;/a&gt;, mentored by Aaron Meurer&lt;br /&gt; Tom implemented an algorithm for computing symbolic definite integrals that uses so-called &lt;a href="http://en.wikipedia.org/wiki/Meijer_g-function"&gt;Meijer G-functions&lt;/a&gt;. This is the state-of-the-art algorithm for computing definite integrals, and indeed the results of his project are very impressive. This project has pushed SymPy forward a long way to becoming the strongest open source computer algebra system with respect to symbolic definite integration.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vperic.blogspot.com/"&gt;Vladimir Peric&lt;/a&gt; - &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Application%3A-Vladimir-Peri%C4%87%3A-Porting-to-Python-3"&gt;Porting to Python 3&lt;/a&gt;, mentored by Ronan Lamy&lt;br /&gt; Vladimir ported SymPy to work on Python 3 and ported all testing infrastructure so that SymPy gets regularly tested in Python 2.x, 3.2 and PyPy. Thanks to Vladimir’s work, the next version of SymPy, 0.7.2, which will hopefully be released later this year, will work in both Python 2 and Python 3, and it may support PyPy as well.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gilbertgede.wordpress.com/"&gt;Gilbert Gede&lt;/a&gt; - &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Report-Gilbert-Gede%3A-PyDy"&gt;PyDy&lt;/a&gt;, mentored by Luke Peterson&lt;br /&gt; Gilbert implemented a physics module to assist in generating symbolic equations of motion for complex multibody systems using Kane's Method. He expanded on the code written by his mentor, Luke, in 2009, and the module can now generate equations of motion for a bicycle. Gilbert also wrote very thorough documentation both for the Kane’s Method and the module in SymPy.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lazovichsympy.wordpress.com/"&gt;Tomo Lazovich&lt;/a&gt; - &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Report-Tomo-Lazovich%3A-Position-and-Momentum-Bases-for-QM"&gt;Position and Momentum Bases for Quantum Mechanics&lt;/a&gt;, mentored by Brian Granger&lt;br /&gt; Tomo has greatly improved the quantum mechanics module by implementing position/momentum representations for operators and eigenstates in various coordinate systems (including cartesian, cylindrical, and spherical) that allows you to easily represent many of the "textbook" quantum mechanics systems, including particle in a box, simple harmonic oscillator, hydrogen atom, etc.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://saptman.wordpress.com/"&gt;Saptarshi Mandal&lt;/a&gt; - &lt;a href="https://github.com/sympy/sympy/wiki/Gsoc-2011-report-saptarshi-mandal%3A-combinatorics-package-for-sympy"&gt;Combinatorics package for Sympy&lt;/a&gt;, mentored by Christian Muise&lt;br /&gt; Saptarshi’s project was to mimic the various capabilities of Combinatorica, a Mathematica package for combinatorics. Most of the functionality involving elementary combinatorial objects such as Permutations, Partitions, Subsets, Gray codes and Prufer codes are complete.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sherjilozair.wordpress.com/"&gt;Sherjil Ozair&lt;/a&gt; - &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Report-Sherjil-Ozair%3A-Symbolic-Linear-Algebra"&gt;Symbolic Linear Algebra&lt;/a&gt;, mentored by Vinzent Steinberg&lt;br /&gt; Sherjil improved the speed of the linear algebra module by using efficient coefficient types for values of entries of matrices. Previously, SymPy used generic expressions in this place, which slowed down computations considerably and caused trouble with solving of the zero equivalence problem. He also implemented sparse matrix representation and unified the API with dense matrices. In addition, Sherjil also added a few linear algebra related algorithms (e.g. Cholesky decomposition).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sympystats.wordpress.com/"&gt;Matthew Rocklin&lt;/a&gt; - &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Report-Matthew-Rocklin%3A-Random-Variables"&gt;SymPy Stats: Random Variables&lt;/a&gt;, mentored by Andy Terrel&lt;br /&gt; Matthew improved the statistics module to use symbolics and introduced a Random Variable type, with support for finite, continuous, and multivariable normal random variables. With these you can symbolically compute things like probabilities of a given condition, conditional spaces, and expectation values. As a side consequence of this project, he also improved some of our Sets classes and implemented a MatrixExpr class, which allows you to compute with matrices symbolically, including computing with block matrices.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://seanvig.blogspot.com/"&gt;Sean Vig &lt;/a&gt;- &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Report-Sean-Vig-Symbolic-Clebsch-Gordon-coefficients%3AWigner-symbols-and-Implementing-Addition-of-Spin-Angular-Momenta"&gt;Symbolic Clebsch-Gordon coefficients/Wigner symbols and Implementing Addition of Spin Angular Momenta&lt;/a&gt;, mentored by Ondřej Čertík&lt;br /&gt; Sean was working on the quantum mechanics module and has implemented symbolic Clebsch-Gordan coefficients, Wigner D function, and related mathematical concepts that are used very often in quantum physics when dealing with angular momentum and then the necessary classes to support coupled spin algebra.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://f1728.wordpress.com/"&gt;Jeremias Yehdegho&lt;/a&gt; - &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Report-Jeremias-Yehdegho%3A-Implementing-F5"&gt;Implementing F5&lt;/a&gt;, mentored by Mateusz Paprocki&lt;br /&gt; Jeremias worked on implementing algorithms related to &lt;a href="http://en.wikipedia.org/wiki/Groebner_bases"&gt;Groebner bases&lt;/a&gt;. Groebner bases are a useful tool in many areas of computer algebra. He implemented the F5B algorithm, which is an improved version of the classical Buchberger’s algorithm that was previously implemented in SymPy, and an algorithm for converting Groebner bases between different orders of monomials and worked on applications of Groebner bases. This allowed for handling problems of much larger size in SymPy.&lt;br /&gt;&lt;br /&gt;The full report can be found &lt;a href="https://github.com/sympy/sympy/wiki/Gsoc-2011-report"&gt;here&lt;/a&gt;, where each student wrote a wiki page about their experience during the summer and you can also find their blogs and links to applications. Each student was required to blog about their progress each week and all blogs were synchronized at &lt;a href="http://planet.sympy.org/"&gt;planet.sympy.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In previous years, there was usually one student from each summer who became a regular contributor and also a mentor for the next year. It has been a rewarding experience for the whole SymPy community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-84564291301844126?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/84564291301844126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=84564291301844126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/84564291301844126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/84564291301844126'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2011/12/google-summer-of-code-2011-wrap-up.html' title='Google Summer of Code 2011 Wrap-Up'/><author><name>Aaron Meurer</name><uri>http://www.blogger.com/profile/07681610358074038422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_g2EdrAVbHN4/Se5Mf3mI8II/AAAAAAAAAFc/qUX0PdzXVR0/S220/Photo+11.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-6591106898156468358</id><published>2011-07-29T22:11:00.000-07:00</published><updated>2011-07-29T22:16:27.176-07:00</updated><title type='text'>SymPy 0.7.1 Released</title><content type='html'>SymPy 0.7.1 has been released on July 29, 2011. It is available at&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sympy.org&lt;br /&gt;"&gt;http://sympy.org&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The source distribution can be downloaded from:&lt;br /&gt;&lt;a href="http://code.google.com/p/sympy/downloads/detail?name=sympy-0.7.1.tar.gz"&gt;http://code.google.com/p/sympy/downloads/detail?name=sympy-0.7.1.tar.gz&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can get the Windows installer here:&lt;br /&gt;&lt;a href="http://code.google.com/p/sympy/downloads/detail?name=sympy-0.7.1.win32.exe&lt;br /&gt;"&gt;http://code.google.com/p/sympy/downloads/detail?name=sympy-0.7.1.win32.exe&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And the html documentation here:&lt;br /&gt;&lt;a href="http://code.google.com/p/sympy/downloads/detail?name=sympy-0.7.1-docs-html.zip&lt;br /&gt;"&gt;http://code.google.com/p/sympy/downloads/detail?name=sympy-0.7.1-docs-html.zip&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;About SymPy&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Release notes&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Major changes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- Python 2.4 is no longer supported.  SymPy will not work at all in&lt;br /&gt;  Python 2.4.  If you still need to use SymPy under Python 2.4 for some&lt;br /&gt;  reason, you will need to use SymPy 0.7.0 or earlier.&lt;br /&gt;&lt;br /&gt;- The Pyglet plotting library is now an (optional) external dependency. &lt;br /&gt;  Previously, we shipped a version of Pyglet with SymPy, but this was&lt;br /&gt;  old and buggy.  The plan is to eventually make the plotting in SymPy&lt;br /&gt;  much more modular, so that it supports many backends, but this has not&lt;br /&gt;  been done yet.  For now, still only Pyglet is directly supported. &lt;br /&gt;  Note that Pyglet is only an optional dependency and is only needed for&lt;br /&gt;  plotting. The rest of SymPy can still be used without any dependencies&lt;br /&gt;  (except for Python).&lt;br /&gt;&lt;br /&gt;- isympy now works with the new IPython 0.11.&lt;br /&gt;&lt;br /&gt;- mpmath has been updated to 0.17.  See the corresponding mpmath release&lt;br /&gt;  notes at http://mpmath.googlecode.com/svn/trunk/CHANGES.&lt;br /&gt;&lt;br /&gt;- Added a Subs object for representing unevaluated substitutions.  This&lt;br /&gt;  finally lets us represent derivatives evaluated at a point, i.e.,&lt;br /&gt;  `diff(f(x), x).subs(x, 0)` returns `Subs(Derivative(f(_x), _x), (_x,), (0,))`.&lt;br /&gt;  This also means that SymPy can now correctly compute the chain rule&lt;br /&gt;  when this functionality is required, such as with `f(g(x)).diff(x)`.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Hypergeometric functions/Meijer G-Functions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- Added classes hyper() and meijerg() to represent Hypergeometric and Meijer G-functions, respectively. They support numerical evaluation (using mpmath) and symbolic differentiation (not with respect to the parameters).&lt;br /&gt;&lt;br /&gt;- Added an algorithm for rewriting hypergeometric and meijer g-functions in terms of more familiar, named special functions. It is accessible via the function hyperexpand(), or also via expand_func(). This algorithm recognises many elementary functions, and also complete and incomplete gamma functions, bessel functions, and error functions. It can easily be extended to handle more classes of special functions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Sets&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- Added FiniteSet class to mimic python set behavior while also interacting with existing Intervals and Unions&lt;br /&gt;&lt;br /&gt;- FiniteSets and Intervals interact so that, for example `Interval(0, 10) - FiniteSet(0, 5)` produces `(0, 5) U (5, 10]`&lt;br /&gt;&lt;br /&gt;- FiniteSets also handle non-numerical objects so the following is possible `{1, 2, 'one', 'two', {a, b}}`&lt;br /&gt;&lt;br /&gt;- Added ProductSet to handle Cartesian products of sets&lt;br /&gt;&lt;br /&gt;- Create using the `*` operator, i.e. `twodice = FiniteSet(1, 2, 3, 4, 5, 6) * FiniteSet(1, 2, 3, 4, 5, 6) or square = Interval(0, 1) * Interval(0, 1)`&lt;br /&gt;&lt;br /&gt;- pow operator also works as expected: `R3 = Interval(-oo, oo)**3 ; (3, -5, 0) in R3 == True`&lt;br /&gt;&lt;br /&gt;- Subtraction, union, measurement all work taking complex intersections into account. &lt;br /&gt;&lt;br /&gt;- Added as_relational method to sets, producing boolean statements using And, Or, Eq, Lt, Gt, etc...&lt;br /&gt;&lt;br /&gt;- Changed reduce_poly_inequalities to return unions of sets rather than lists of sets&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Iterables&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- Added generating routines for integer partitions and binary partitions. The routine for integer partitions takes 3 arguments, the number itself, the maximum possible element allowed in the partitions generated and the maximum possible number of elements that will be in the partition. Binary partitions are characterized by containing only powers of two.&lt;br /&gt;&lt;br /&gt;- Added generating routine for multi-set partitions. Given a multiset, the algorithm implemented will generate all possible partitions of that multi-set.&lt;br /&gt;&lt;br /&gt;- Added generating routines for bell permutations, derangements, and involutions. A bell permutation is one in which the cycles that compose it consist of integers in a decreasing order. A derangement is a permutation such that the ith element is not at the ith position. An involution is a permutation that when multiplied by itself gives the identity permutation.&lt;br /&gt;&lt;br /&gt;- Added generating routine for unrestricted necklaces. An unrestricted necklace is an a-ary string of n characters, each of a possible types. These have been characterized by the parameters n and k in the routine.&lt;br /&gt;&lt;br /&gt;- Added generating routine for oriented forests. This is an implementation of algorithm S in TAOCP Vol 4A.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;xyz Spin bases&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- The represent, rewrite and InnerProduct logic has been improved to work between any two spin bases. This was done by utilizing the Wigner-D matrix, implemented in the WignerD class, in defining the changes between the various bases. Representing a state, i.e. `represent(JzKet(1,0), basis=Jx)`, can be used to give the vector representation of any get in any of the x/y/z bases for numerical values of j and m in the spin eigenstate. Similarly, rewriting states into different bases, i.e. `JzKet(1,0).rewrite('Jx')`, will write the states as a linear combination of elements of the given basis. Because this relies on the represent function, this only works for numerical j and m values. The inner product of two eigenstates in different bases can be evaluated, i.e. `InnerProduct(JzKet(1,0),JxKet(1,1))`. When two different bases are used, one state is rewritten into the other basis, so this requires numerical values of j and m, but innerproducts of states in the same basis can still be done symbolically.&lt;br /&gt;&lt;br /&gt;- The `Rotation.D` and `Rotation.d` methods, representing the Wigner-D function and the Wigner small-d function, return an instance of the WignerD class, which can be evaluated with the `doit()` method to give the corresponding matrix element of the Wigner-D matrix.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Other changes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- We now use MathJax in our docs. MathJax renders LaTeX math entierly in&lt;br /&gt;  the browser using Javascript.  This means that the math is much more&lt;br /&gt;  readable than the previous png math, which uses images.  MathJax is&lt;br /&gt;  only supported on modern browsers, so LaTeX math in the docs may not&lt;br /&gt;  work on older browsers.&lt;br /&gt;&lt;br /&gt;- nroots() now lets you set the precision of computations&lt;br /&gt;&lt;br /&gt;- Added support for gmpy and mpmath's types to sympify()&lt;br /&gt;&lt;br /&gt;- Fix some bugs with lambdify()&lt;br /&gt;&lt;br /&gt;- Fix a bug with as_independent and non-commutative symbols.&lt;br /&gt;&lt;br /&gt;- Fix a bug with collect (issue 2516)&lt;br /&gt;&lt;br /&gt;- Many fixes relating to porting SymPy to Python 3.  Thanks to our GSoC&lt;br /&gt;  student Vladimir Perić, this task is almost completed.&lt;br /&gt;&lt;br /&gt;- Some people were retroactively added to the AUTHORS file.&lt;br /&gt;&lt;br /&gt;- Added a solver for a special case of the Riccati equation in the ODE&lt;br /&gt;  module.&lt;br /&gt;&lt;br /&gt;- Iterated derivatives are pretty printed in a concise way.&lt;br /&gt;&lt;br /&gt;- Fix a bug with integrating functions with multiple DiracDeltas.&lt;br /&gt;&lt;br /&gt;- Add support for Matrix.norm() that works for Matrices (not just vectors).&lt;br /&gt;&lt;br /&gt;- Improvements to the Groebner bases algorithm.&lt;br /&gt;&lt;br /&gt;- Plot.saveimage now supports a StringIO outfile&lt;br /&gt;&lt;br /&gt;- Expr.as_ordered_terms now supports non lex orderings.&lt;br /&gt;&lt;br /&gt;- diff now canonicalizes the order of differentiation symbols.  This is&lt;br /&gt;  so it can simplify expressions like `f(x, y).diff(x, y) - f(x,&lt;br /&gt;  y).diff(y, x)`.  If you want to create a Derivative object without&lt;br /&gt;  sorting the args, you should create it explicitly with `Derivative`,&lt;br /&gt;  so that you will get `Derivative(f(x, y), x, y) != Derivative(f(x, y), y, x)`.&lt;br /&gt;  Note that internally, derivatives that can be computed are always&lt;br /&gt;  computed in the order that they are given in.&lt;br /&gt;&lt;br /&gt;- Added functions `is_sequence()` and `iterable()` for determining if&lt;br /&gt;  something is an ordered iterable or normal iterable, respectively.&lt;br /&gt;&lt;br /&gt;- Enabled an option in Sphinx that adds a `source` link next to each function, which links to a copy of the source code for that function.&lt;br /&gt;&lt;br /&gt;In addition to the more noticeable changes listed above, there have been numerous other smaller additions, improvements and bug fixes in the ~300 commits in this release. See the git log for a full list of all changes.  The command `git log sympy-0.7.0..sympy-0.7.1` will show all commits made between this release and the last. You can also see the issues closed since the last release [here](http://code.google.com/p/sympy/issues/list?can=1&amp;q=closed-after%3A2010%2F6%2F13+closed-before%3A2011%2F7%2F30&amp;sort=-closed&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary+Stars+Closed&amp;cells=tiles).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Authors&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The following people contributed at least one patch to this release (names are given in alphabetical order by last name).  A total of 26 people contributed to this release.  People with a * by their names contributed a patch for the first time for this release.  Five people contributed for the first time for this release.  &lt;br /&gt;&lt;br /&gt;Thanks to everyone who contributed to this release!&lt;br /&gt;&lt;br /&gt;* Tom Bachmann&lt;br /&gt;* Ondřej Čertík&lt;br /&gt;* Renato Coutinho&lt;br /&gt;* Bill Flynn&lt;br /&gt;* Bradley Froehle*&lt;br /&gt;* Gilbert Gede&lt;br /&gt;* Brian Granger&lt;br /&gt;* Emma Hogan*&lt;br /&gt;* Yuri Karadzhov&lt;br /&gt;* Stefan Krastanov*&lt;br /&gt;* Ronan Lamy&lt;br /&gt;* Tomo Lazovich&lt;br /&gt;* Sam Magura*&lt;br /&gt;* Saptarshi Mandal&lt;br /&gt;* Aaron Meurer&lt;br /&gt;* Sherjil Ozair&lt;br /&gt;* Mateusz Paprocki&lt;br /&gt;* Vladimir Perić&lt;br /&gt;* Mario Pernici&lt;br /&gt;* Nicolas Pourcelot&lt;br /&gt;* Min Ragan-Kelley*&lt;br /&gt;* Matthew Rocklin&lt;br /&gt;* Chris Smith&lt;br /&gt;* Vinzent Steinberg&lt;br /&gt;* Sean Vig&lt;br /&gt;* Thomas Wiecki&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-6591106898156468358?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/6591106898156468358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=6591106898156468358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/6591106898156468358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/6591106898156468358'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2011/07/sympy-071-released.html' title='SymPy 0.7.1 Released'/><author><name>Aaron Meurer</name><uri>http://www.blogger.com/profile/07681610358074038422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_g2EdrAVbHN4/Se5Mf3mI8II/AAAAAAAAAFc/qUX0PdzXVR0/S220/Photo+11.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-3466588521320113803</id><published>2011-06-29T00:46:00.000-07:00</published><updated>2011-06-29T14:52:43.650-07:00</updated><title type='text'>SymPy 0.7.0 released</title><content type='html'>SymPy 0.7.0 has been released on June 28, 2011.  &lt;span class="Apple-style-span"   style="  color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS', Verdana, Arial, sans-serif;font-size:13px;"&gt;It is available at&lt;br /&gt;&lt;a href="http://sympy.org/" checklongurl="true" style="color: rgb(34, 85, 136); "&gt;&lt;br /&gt;http://sympy.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The source distribution can be downloaded from:&lt;br /&gt;&lt;a href="http://code.google.com/p/sympy/downloads/detail?name=sympy-0.7.0.tar.gz" checklongurl="true" style="color: rgb(34, 85, 136); "&gt;http://code.google.com/p/sympy/downloads/detail?name=sympy-0.7.0.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can get the Windows installer here:&lt;br /&gt;&lt;a href="http://code.google.com/p/sympy/downloads/detail?name=sympy-0.7.0.win32.exe" checklongurl="true" style="color: rgb(34, 85, 136); "&gt;http://code.google.com/p/sympy/downloads/detail?name=sympy-0.7.0.win32.exe&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And the html documentation here:&lt;br /&gt;&lt;a href="http://code.google.com/p/sympy/downloads/detail?name=sympy-0.7.0-docs-html.zip" checklongurl="true" style="color: rgb(34, 85, 136); "&gt;http://code.google.com/p/sympy/downloads/detail?name=sympy-0.7.0-docs-html.zip&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS', Verdana, Arial, sans-serif;font-size:13px;"&gt;&lt;span style="font-weight: bold;  font-size:16px;"&gt;About SymPy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;span style=" ;font-size:16px;"&gt;&lt;span class="Apple-style-span"  style=" ;font-size:13px;"&gt;&lt;span style=" ;font-size:16px;"&gt;&lt;span style="font-weight: bold; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS', Verdana, Arial, sans-serif;font-size:13px;"&gt;&lt;span style=" ;font-size:16px;"&gt;&lt;span class="Apple-style-span"  style=" ;font-size:13px;"&gt;&lt;span style=" ;font-size:16px;"&gt;&lt;span style="font-weight: bold; "&gt;Changes since last stable release&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:helvetica, arial, freesans, clean, sans-serif;font-size:6;"&gt;&lt;span class="Apple-style-span"  style="font-size:22px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"   style=" font-weight: normal;  color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS', Verdana, Arial, sans-serif;font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:helvetica, arial, freesans, clean, sans-serif;font-size:6;"&gt;&lt;span class="Apple-style-span"  style="font-size:22px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"   style=" font-weight: normal;  color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS', Verdana, Arial, sans-serif;font-size:13px;"&gt;(from &lt;a href="https://github.com/sympy/sympy/wiki/Release-Notes-for-0.7.0"&gt;https://github.com/sympy/sympy/wiki/Release-Notes-for-0.7.0&lt;/a&gt;)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS', Verdana, Arial, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"   style="color: rgb(0, 0, 0);  font-weight: normal; line-height: 23px;  font-family:helvetica, arial, freesans, clean, sans-serif;font-size:14px;"&gt;&lt;h2 style="margin-top: 22px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 7px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: normal; border-top-width: 4px; border-top-style: solid; border-top-color: rgb(204, 204, 204); font-size: 22px; display: inline !important; "&gt;&lt;br /&gt;&lt;/h2&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS', Verdana, Arial, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"   style="color: rgb(0, 0, 0);  font-weight: normal; line-height: 23px;  font-family:helvetica, arial, freesans, clean, sans-serif;font-size:14px;"&gt;&lt;h2 style="margin-top: 22px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 7px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: normal; border-top-width: 4px; border-top-style: solid; border-top-color: rgb(204, 204, 204); font-size: 22px; display: inline !important; "&gt;Backwards compatibility breaks&lt;/h2&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:'Trebuchet MS', Verdana, Arial, sans-serif;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"   style="color: rgb(0, 0, 0);  font-weight: normal; line-height: 23px;  font-family:helvetica, arial, freesans, clean, sans-serif;font-size:14px;"&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;This will be the last release of SymPy to support Python 2.4. Dropping support for Python 2.4 will let us move forward with things like supporting Python 3, and will let us use things that were introduced in Python 2.5, like with-statement context managers.&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;no longer support creating matrices without brackets (see: issue 930)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Renamed &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sum()&lt;/code&gt; to &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;summation()&lt;/code&gt; (see: 3e763a8, issues 1376, 1727). This was changed so that it no longer overrides the built-in &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sum()&lt;/code&gt;. The unevaluated summation is still called &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Sum()&lt;/code&gt;.&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Renamed &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;abs()&lt;/code&gt; to &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Abs()&lt;/code&gt; (see: 64a12a4, issue 1727). This was also changed so that it no longer overrides the built-in &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;abs()&lt;/code&gt;. Note that because of &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;__abs__&lt;/code&gt; magic, you can still do &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;abs(expr)&lt;/code&gt; with the built-in &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;abs()&lt;/code&gt;, and it will return &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Abs(expr)&lt;/code&gt;.&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Renamed &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;max_()&lt;/code&gt; and &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;min_()&lt;/code&gt; to now &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Max()&lt;/code&gt; and &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Min()&lt;/code&gt; (see: 99a271e, issue 2153)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Changed behaviour of &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;symbols()&lt;/code&gt;. &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;symbols('xyz')&lt;/code&gt; gives now a single symbol (&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;'xyz'&lt;/code&gt;), not three (&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;'x'&lt;/code&gt;, &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;'y'&lt;/code&gt; and &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;'z'&lt;/code&gt;) (see: f6452a8). Use&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;symbols('x,y,z')&lt;/code&gt; or &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;symbols('x y z')&lt;/code&gt; to get three symbols. The 'each_char' option will still work but is being deprecated.&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Split class &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Basic&lt;/code&gt; into new classes &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Expr&lt;/code&gt;, &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Boolean&lt;/code&gt; (see: a0ab479, 635d89c). Classes that are designed to be part of standard symbolic expressions (like &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;x**2*sin(x)&lt;/code&gt;) should subclass from &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Expr&lt;/code&gt;. More generic objects that do not work in symbolic expressions but still want the basic SymPy structure like &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;.args&lt;/code&gt; and basic methods like &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;.subs()&lt;/code&gt; should only subclass from &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Basic&lt;/code&gt;.&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;as_basic()&lt;/code&gt; method was renamed to &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;as_expr()&lt;/code&gt; to reflect changes in the core (see: e61819d, 80dfe91)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Methods &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;as_coeff_terms&lt;/code&gt; and &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;as_coeff_factors&lt;/code&gt; were renamed to &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;as_coeff_mul&lt;/code&gt; and &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;as_coeff_add&lt;/code&gt;, respectively.&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Removed the &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;trim()&lt;/code&gt; function. The function is redundant with the new polys (see below). Use the &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;cancel()&lt;/code&gt; function instead.&lt;/li&gt;&lt;/ul&gt;&lt;h2 style="margin-top: 22px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 7px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: normal; border-top-width: 4px; border-top-style: solid; border-top-color: rgb(204, 204, 204); font-size: 22px; "&gt;Major Changes&lt;/h2&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Polys&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;New internal representations of dense and sparse polynomials (see: 6aecdb7, 31c9aa4)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Implemented algorithms for real and complex root isolation and counting (see: 3acac67, 4b75dae, fa1206e, 103b928, 45c9b22, 8870c8b, b348b30)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Improved Gröbner bases algorithm (see: ff65e9f, 891e4de, 310a585)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Field isomorphism algorithm (see: b097b01, 08482bf)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Implemented efficient orthogonal polynomials (see: b8fbd59)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added configuration framework for polys (see: 33d8cdb, 7eb81c9)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Function for computing minimal polynomials (see: 88bf187, f800f95)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Function for generating Viete's formulas (see: 1027408)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;roots()&lt;/code&gt; supports more classes of polynomials (e.g. cyclotomic) (see: d8c8768, 75c8d2d)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added a function for recognizing cyclotomic polynomials (see: b9c2a9a)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added a function for computing Horner form of polynomials (see: 8d235c7)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added a function for computing symmetric reductions of polynomials (see: 6d560f3)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added generators of Swinnerton-Dyer, cyclotomic, symmetric, random and interpolating polynomials (see: dad03dd, 6ccf20c, dc728d6, 2f17684, 3004db8)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added a function computing isolation intervals of algebraic numbers (see: 37a58f1)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Polynomial division (&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;div()&lt;/code&gt;, &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;rem()&lt;/code&gt;, &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;quo()&lt;/code&gt;) now defaults to a field (see: a72d188)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added wrappers for numerical root finding algorithms (see: 0d98945, f638fcf)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added symbolic capabilities to &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;factor()&lt;/code&gt;, &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sqf()&lt;/code&gt; and related functions (see: d521c7f, 548120b, f6f74e6, b1c49cd, 3527b64)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;together()&lt;/code&gt; was significantly improved (see: dc327fe)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added support for iterable containers to &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;gcd()&lt;/code&gt; and &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;lcm()&lt;/code&gt; (see: e920870)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added a function for constructing domains from coefficient containers (see: a8f20e6)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Implemented greatest factorial factorization (see: d4dbbb5)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added partial fraction decomposition algorithm based on undetermined coefficient approach (see: 9769d49, 496f08f)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;RootOf&lt;/code&gt; and &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;RootSum&lt;/code&gt; were significantly improved (see: f3e432, 4c88be6, 41502d7)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added support for gmpy (GNU Multiple Precision Arithmetic Library) (see: 38e1683)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Allow to compile &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sympy.polys&lt;/code&gt; with Cython (see: afb3886)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Improved configuration of variables in &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Poly&lt;/code&gt; (see: 22c4061)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added documentation based on Wester's examples (see: 1c23792)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Irreducibility testing over finite fields (see: 17e8f1f)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Allow symmetric and non-symmetric representations over finite fields (see: 60fbff4)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;More consistent factorization forms from &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;factor()&lt;/code&gt; and &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sqf()&lt;/code&gt; (see: 5df77f5)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added support for automatic recognition algebraic extensions (see: 7de602c)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Implemented Collins' modular algorithm for computing resultants (see: 950969b)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Implemented Berlekamp's algorithm for factorization over finite fields (see: 70353e9)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Implemented Trager's algorithm for factorization over algebraic number fields (see: bd0be06)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Improved Wang's algorithm for efficient factorization of multivariate polynomials (see: 425e225)&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Quantum&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Symbolic, abstract dirac notation in &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sympy.physics.quantum&lt;/code&gt;. This includes operators, states (bras and kets), commutators, anticommutators, dagger, inner products, outer products, tensor products and Hilbert spaces&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Symbolic quantum computing framework that is based on the general capabilities in &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sympy.physics.quantum&lt;/code&gt;. This includes qubits (&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sympy.physics.quantum.qubit&lt;/code&gt;), gates (&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sympy.physics.quantum.gate&lt;/code&gt;), Grover's algorithm (&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sympy.physics.quantum.grover&lt;/code&gt;), the quantum Fourier transform (&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sympy.physics.quantum.qft&lt;/code&gt;), Shor's algorithm (&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sympy.physics.quantum.shor&lt;/code&gt;) and circuit plotting (&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sympy.physics.quantum.circuitplot&lt;/code&gt;)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Second quantization framework that inclues creation/anihilation operators for both Fermions and Bosons and Wick's theorem for Fermions (&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sympy.physics.secondquant&lt;/code&gt;).&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Symbolic quantum angular momentum (spin) algebra (&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sympy.physics.quantum.spin&lt;/code&gt;)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Hydrogen wave functions (Schroedinger) and energies (both Schroedinger and Dirac)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Wave functions and energies for 1D harmonic oscillator&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Wave functions and energies for 3D spherically symmetric harmonic oscillator&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Wigner and Clebsch Gordan coefficients&lt;/li&gt;&lt;/ul&gt;&lt;h2 style="margin-top: 22px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 7px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: normal; border-top-width: 4px; border-top-style: solid; border-top-color: rgb(204, 204, 204); font-size: 22px; "&gt;Everything else&lt;/h2&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Implement symarray, providing numpy nd-arrays of symbols.&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;update mpmath to 0.16&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Add a tensor module (see: &lt;a href="http://code.google.com/p/sympy/wiki/CodeGenerationReport" checklongurl="true" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; color: rgb(65, 131, 196); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;http://code.google.com/p/sympy/wiki/CodeGenerationReport&lt;/a&gt;)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;A lot of stuff was being imported with &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;from sympy import *&lt;/code&gt; that shouldn't have been (like &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sys&lt;/code&gt;). This has been fixed.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Assumptions:&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Refine&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added predicates (see: 7c0b857, 53f0e1a, d1dd6a3..)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added query handlers for algebraic numbers (see: f3bee7a)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Implement a SAT solver (see: &lt;a href="http://code.google.com/p/sympy/wiki/SuperchargingAssumptionsReport" checklongurl="true" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; color: rgb(65, 131, 196); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;http://code.google.com/p/sympy/wiki/SuperchargingAssumptionsReport&lt;/a&gt;, 2d96329, acfbe75, etc.)&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Concrete&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Finalized implementation of Gosper's algorithm (see: 0f187e5, 5888024)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Removed redundant &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Sum2&lt;/code&gt; and related classes (see: ef1f6a7)&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Core:&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Split &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Atom&lt;/code&gt; into &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Atom&lt;/code&gt; and &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;AtomicExpr&lt;/code&gt; (see: 965aa91)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Various &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sympify()&lt;/code&gt; improvements&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added functionality for action verbs (many functions can be called both as global functions and as methods e.g. &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;a.simplify() == simplify(a)&lt;/code&gt;)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Improve handling of rational strings (see: 053a045, issue 1778)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Major changes to factoring of integers (see: 273f450, issue 2003)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Optimized &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;.has()&lt;/code&gt; (see: c83c9b0, issue 1980; d86d08f)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Improvements to power (see: c8661ef, issue 1963)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added range and lexicographic syntax to &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;symbols()&lt;/code&gt; and &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;var()&lt;/code&gt; (see: f6452a8, 9aeb220, 957745a)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;modulus&lt;/code&gt; argument to &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;expand()&lt;/code&gt; (see: 1ea5be8)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Allow to convert &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Interval&lt;/code&gt; to relational form (see: 4c269fe)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;SymPy won't manipulate minus sign of expressions any more (see: 6a26941, 9c6bf0f, e9f4a0a)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Real&lt;/code&gt; and &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;.is_Real&lt;/code&gt; were renamed to &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Float&lt;/code&gt; and &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;.is_Float&lt;/code&gt;. &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Real&lt;/code&gt; and &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;.is_Real&lt;/code&gt; still remain as deprecated shortcuts to &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Float&lt;/code&gt; and&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;is_Float&lt;/code&gt; for backwards compatibility. (see: abe1c49)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Methods coeff and as_coefficient are now non-commutative aware. (see a4ea170)&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Geometry:&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Various improvements to Ellipse&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Updated documentation to numpy standard&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Polygon and Line improvements&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Allow all geometry objects to accept a tuple as &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;Point&lt;/code&gt; args&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Integrals:&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Various improvements (see eg. issues 1772, 1999, 1992, 1987.. etc)&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;isympy&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Fixed the &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;-p&lt;/code&gt; switch (see: e8cb04a)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Caching can be disabled using &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;-C&lt;/code&gt; switch (see: 0d8d748)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Ground types can be set using &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;-t&lt;/code&gt; switch (see: 75734f8)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Printing ordering can be set using &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;-o&lt;/code&gt; switch (see: fcc6b13, 4ec9dc5)&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Logic&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;implies object adheres to negative normal form&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Create new boolean class, &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;logic.boolalg.Boolean&lt;/code&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added XOR operator (^) support&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added If-then-else (ITE) support&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added the dpll algorithm&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Functions:&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added Piecewise, B-splines&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Spherical Bessel function of the second kind implemented&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Add series expansions of multivariate functions (see: d4d351d)&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Matrices:&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Add elementwise product (Hadamard product)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Extended QR factorization for general full ranked mxn matrices&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Remove deprecated functions &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;zero()&lt;/code&gt;, &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;zeronm()&lt;/code&gt;, &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;one()&lt;/code&gt; (see: 5da0884)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added cholesky and LDL factorizations, and respective solves.&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added functions for efficient triangular and diagonal solves.&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;SMatrix&lt;/code&gt; was renamed to &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;SparseMatrix&lt;/code&gt; (see: acd1685)&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Physics&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;See the Quantum section&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Printing:&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Implemented pretty printing of binomials (see: 58c1dad)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Implemented pretty printing of Sum() (see: 84f2c22, 95b4321)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;sympy.printing&lt;/code&gt; now supports ordering of terms and factors (see: 859bb33)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Lexicographic order is now the default. Now finally things will print as &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;x**2 + x + 1&lt;/code&gt; instead of &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;1 + x + x**2&lt;/code&gt;, however series still print using reversed ordering, e.g. &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;x - x**3/6 + O(x**5)&lt;/code&gt;. You can get the old order (and other orderings) by setting the &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;-o&lt;/code&gt; option to isympy (see: 08b4932, a30c5a3)&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Series:&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Implement a function to calculate residues, &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;residue()&lt;/code&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Implement nseries and lseries to handle &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;x0 != 0&lt;/code&gt;, series should be more robust now (see: 2c99999, issues 2122-2124)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Improvements to Gruntz algorithm&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Simplify:&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;use()&lt;/code&gt; (see: 147c142)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;ratsimp()&lt;/code&gt; now uses &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;cancel()&lt;/code&gt; and &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;reduced()&lt;/code&gt; (see: 108fb41)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Implemented EPath (see: 696139d, bf90689)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;a new keyword &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;rational&lt;/code&gt; was added to nsimplify which will replace Floats with Rational approximations. (see: 053a045)&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Solvers:&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;ODE improvements (see: d12a2aa, 3542041; 73fb9ac)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added support for solving inequalities (see: 328eaba, 8455147, f8fcaa7)&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 26px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 26px; font-size: 16px; "&gt;Utilities:&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Improve cartes, for generating the Cartesian product (see: b1b10ed)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Added a function computing topological sort of graphs (see: b2ce27b)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Allow to setup a customized printer in &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;lambdify()&lt;/code&gt; (see: c1ad905)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;flatten()&lt;/code&gt; was significantly improved (see: 31ed8d7)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Major improvements to the Fortran code generator (see: &lt;a href="http://code.google.com/p/sympy/wiki/CodeGenerationReport" checklongurl="true" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; color: rgb(65, 131, 196); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;http://code.google.com/p/sympy/wiki/CodeGenerationReport&lt;/a&gt;, 3383aa3, 7ab2da2, etc.)&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-top: 16px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;In addition to the more noticeable changes listed above, there have been numerous other smaller additions, improvements and bug fixes in the ~2000 commits in this release. See the git log for a full list of all changes. The command &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); font-size: 13px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; "&gt;git log sympy-0.6.7..sympy-0.7.0&lt;/code&gt; will show all commits made between this release and the last. You can also see the issues closed since the last release &lt;a href="http://code.google.com/p/sympy/issues/list?can=1&amp;amp;q=closed-after%3A2010%2F3%2F17+closed-before%3A2011%2F6%2F13&amp;amp;sort=-closed&amp;amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary+Stars+Closed&amp;amp;cells=tiles" checklongurl="true" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; color: rgb(65, 131, 196); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;h2 style="margin-top: 22px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 7px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: normal; border-top-width: 4px; border-top-style: solid; border-top-color: rgb(204, 204, 204); font-size: 22px; "&gt;Authors&lt;/h2&gt;&lt;p style="margin-top: 16px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;The following people contributed at least one patch to this release (names are given in alphabetical order by last name). A total of 64 people contributed to this release. People with a * by their names contributed a patch for the first time for this release. Thirty-seven people contributed for the first time for this release. Over half of the people who contributed to this release contributed for the first time!&lt;/p&gt;&lt;p style="margin-top: 16px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Thanks to everyone who contributed to this release!&lt;/p&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 20px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Tom Bachmann*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Tomas Bambas*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Matthew Brett*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Ondřej Čertík&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Renato Coutinho&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Addison Cugini*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Matt Curry*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Raffaele De Feo*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Mark Dewing&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Thomas Dixon*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Harold Erbin&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Pavel Fedotov*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Gilbert Gede*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Oleksandr Gituliar*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Brian Granger&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Alexey U. Gudchenko*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Øyvind Jensen&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Fredrik Johansson&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Felix Kaiser&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Yuri Karadzhov*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Gary Kerr*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Kibeom Kim*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Nicholas J.S. Kinar*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Anatolii Koval*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Sebastian Krämer&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Ryan Krauss&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Gregory Ksionda*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Priit Laes&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Vladimir Lagunov&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Ronan Lamy&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Tomo Lazovich*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Saptarshi Mandal*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;David Marek&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Jack McCaffery*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Benjamin McDonald*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Aaron Meurer&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Christian Muise*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Óscar Nájera*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Jezreel Ng*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Sherjil Ozair*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Mateusz Paprocki&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;James Pearson&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Fernando Perez&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Vladimir Perić*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Mario Pernici*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Nicolas Pourcelot&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;rayman*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Matthew Rocklin*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Christian Schubert&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Andre de Fortier Smit*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Chris Smith&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Cristóvão Sousa*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Akshay Srinivasan&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Vinzent Steinberg&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Prafullkumar P. Tale*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Andy R. Terrel&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Kazuo Thow*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Toon Verstraelen&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Sean Vig*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Luca Weihs*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Thomas Wiecki&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Shai 'Deshe' Wyborski*&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "&gt;Jeremias Yehdegho*&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-3466588521320113803?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/3466588521320113803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=3466588521320113803' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/3466588521320113803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/3466588521320113803'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2011/06/sympy-070-released.html' title='SymPy 0.7.0 released'/><author><name>Aaron Meurer</name><uri>http://www.blogger.com/profile/07681610358074038422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_g2EdrAVbHN4/Se5Mf3mI8II/AAAAAAAAAFc/qUX0PdzXVR0/S220/Photo+11.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-775661391652616507</id><published>2011-04-27T12:41:00.000-07:00</published><updated>2011-04-27T12:46:21.170-07:00</updated><title type='text'>Accepted GSoC Students Announced</title><content type='html'>&lt;div&gt;So Google has announced the results of &lt;a href="http://www.google-melange.com/gsoc/homepage/google/gsoc2011"&gt;Google Summer of Code&lt;/a&gt;. I am proud to announce that we got nine slots from Google.  The following projects have been accepted: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;em&gt;(Project, Student, Mentor, Link to proposal on the wiki) &lt;/em&gt;&lt;/div&gt;&lt;em&gt;&lt;/em&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Definite Integration using Meijer G-functions, Tom Bachmann, Aaron Meurer, &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Application-Tom-Bachmann%3A-Definite-Integration"&gt;Proposal&lt;/a&gt;&lt;/li&gt;&lt;li&gt;PyDy, Gilbert Gede, Luke Peterson, &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Application-Gilbert-Gede%3A-PyDy"&gt;Proposal&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Position and Momentum Bases for Quantum Mechanics, Tomo Lazovich, Brian Granger, &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Application-Tomo-Lazovich%3A-Position-and-Momentum-Bases-for-QM"&gt;Proposal&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Combinatorics package for Sympy, Saptarshi Mandal, Christian Muise, &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Application-Saptarshi-Mandal"&gt;Proposal&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Symbolic Linear Algebra, Sherjil Ozair, Vinzent Steinberg, &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Application-Sherjil-Ozair:-Symbolic-Linear-Algebra"&gt;Proposal&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Porting to Python 3, Vladimir Perić, Ronan Lamy, &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Application%3A-Vladimir-Peri%C4%87%3A-Porting-to-Python-3"&gt;Proposal&lt;/a&gt;&lt;/li&gt;&lt;li&gt;SymPy Stats: Random Variables, Matthew Rocklin, Andy Terrel, &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Application-Matthew-Rocklin%3A-Random-Variables"&gt;Proposal&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Symbolic Clebsch-Gordon coefficients/Wigner symbols and Implementing Addition of Spin Angular Momenta, Sean Vig, Ondřej Čertík, &lt;a href="https://github.com/sympy/sympy/wiki/GSoC%202011%20Application%20Sean%20Vig"&gt;Proposal&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Implementing F5, Jeremias Yehdegho, Mateusz Paprocki, &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Application-Jeremias-Yehdegho%3A-Implementing-F5"&gt;Proposal&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Join me in congratulating these students on their acceptance.   &lt;/div&gt;&lt;div&gt;In case you don't know for some reason, Google Summer of Code is a program where Google pays students to write code for open source projects.  SymPy was accepted as a mentoring organization this year.  The goal of the summer is to help the students learn new skills, in particular in our case: &lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt; contributing to open source &lt;/li&gt;&lt;li&gt; working with the community &lt;/li&gt;&lt;li&gt; learn git, pull requests, reviews &lt;/li&gt;&lt;li&gt; teach them how to review other's people patches &lt;/li&gt;&lt;li&gt; do useful work for SymPy &lt;/li&gt;&lt;li&gt; have fun, and encourage the students to stay around &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also see the &lt;a href="http://sympy.blogspot.com/2011/03/sympy-is-google-summer-of-code-2011.html"&gt;previous blog post&lt;/a&gt; about it.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-775661391652616507?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/775661391652616507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=775661391652616507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/775661391652616507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/775661391652616507'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2011/04/accepted-gsoc-students-announced.html' title='Accepted GSoC Students Announced'/><author><name>Aaron Meurer</name><uri>http://www.blogger.com/profile/07681610358074038422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_g2EdrAVbHN4/Se5Mf3mI8II/AAAAAAAAAFc/qUX0PdzXVR0/S220/Photo+11.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-5266141065935110948</id><published>2011-03-18T20:12:00.001-07:00</published><updated>2011-03-18T20:12:59.345-07:00</updated><title type='text'>SymPy is a Google Summer of Code 2011 Mentoring Organization</title><content type='html'>&lt;div&gt;I am proud to announce that SymPy has been accepted as a mentoring organization for Google Summer of Code 2011.  This is great news for the project.  Although we have participated in the past under the umbrella of the Python Software Foundation and Portland State University mentoring organizations, this is the first time that we have been accepted as a mentoring organization.  Out of 417 organizations that applied to Google, 175 were accepted, 50 of which were new.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In case you don't know, Google Summer of Code is a program run by Google every year where they pay college students all around the world to write code for open source projects. Each student has a mentor assigned to him/her, who helps the student get started with interacting with open source (most students who are accepted have never participated in open source before).  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So now that were are accepted, students are open to applications.  The actual application period opens on March 28, and closes on April 8 (see &lt;a href="http://www.google-melange.com/document/show/gsoc_program/google/gsoc2011/timeline"&gt;the program timeline&lt;/a&gt;).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To students:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you are interested in applying, please write the to mailing list and introduce yourself.  The program is open to anyone worldwide who is 18 years of age or older who is enrolled in a higher education institution (this includes undergraduate and graduate).  If you are interested in applying, here is what you should do (if you have not already):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- As I said above, write to the list and introduce yourself.  You might also join our IRC channel, which is #sympy on freenode.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Start thinking about what you want to apply to do.  See our &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Ideas"&gt;ideas page&lt;/a&gt;.  However, we are open to ideas that are not on that page. Anything that fits in a computer algebra system would fit in SymPy.  If you have an idea not on that page, please discuss it on our mailing list, so we can see if it has not already be implemented, and if it is fitting for SymPy and for a project.  I recommend you apply to do something that you are interested in personally.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- We require for any student to be accepted that he/she submit at least one patch to SymPy, which gets reviewed and pushed in.  See &lt;a href="http://code.google.com/p/sympy/issues/list?can=2&amp;amp;q=label%3AEasyToFix"&gt;issues labeled EasyToFix in our issue tracker&lt;/a&gt; for some easy to fix issues that are a good place to start.  Don't worry if you do not know how to send in a patch or use git.  We will help you (that is the whole point of the program).  Just ask on the mailing list, on the issue page, or on IRC.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- You should start thinking about your application.  See our &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-Application-Template"&gt;application template&lt;/a&gt; (it will also be at our page on the Google site).  If you like, you can start a page on our wiki to write your proposal.  If you do this, we will help you edit it (though understand that we will not help you write it).  Remember that we want you to get accepted just as much as you do, so you can help improve SymPy!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To SymPy developers:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- We need people who are willing to mentor students.  If you are willing to mentor, please add your name to the bottom of the &lt;a href="https://github.com/sympy/sympy/wiki/GSoC-2011-ideas"&gt;ideas page&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Please edit the ideas page to improve formatting and add new ideas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Good luck to all students who plan on applying!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-5266141065935110948?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/5266141065935110948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=5266141065935110948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/5266141065935110948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/5266141065935110948'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2011/03/sympy-is-google-summer-of-code-2011.html' title='SymPy is a Google Summer of Code 2011 Mentoring Organization'/><author><name>Aaron Meurer</name><uri>http://www.blogger.com/profile/07681610358074038422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_g2EdrAVbHN4/Se5Mf3mI8II/AAAAAAAAAFc/qUX0PdzXVR0/S220/Photo+11.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-8443656863008317871</id><published>2009-12-28T13:23:00.000-08:00</published><updated>2009-12-28T13:57:46.546-08:00</updated><title type='text'>SymPy 0.6.6 released</title><content type='html'>SymPy 0.6.6 has been released on December 20, 2009. It is available at&lt;br /&gt;&lt;a href="http://sympy.org/"&gt;&lt;br /&gt;http://sympy.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The source distribution can be downloaded from:&lt;br /&gt;&lt;a href="http://sympy.googlecode.com/files/sympy-0.6.6.tar.gz"&gt;http://sympy.googlecode.com/files/sympy-0.6.6.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can get the Windows installer here:&lt;br /&gt;&lt;a href="http://sympy.googlecode.com/files/sympy-0.6.6.win32.exe"&gt;http://sympy.googlecode.com/files/sympy-0.6.6.win32.exe&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And the html documentation here:&lt;br /&gt;&lt;a href="http://sympy.googlecode.com/files/sympy-0.6.6-docs-html.zip"&gt;http://sympy.googlecode.com/files/sympy-0.6.6-docs-html.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;About SymPy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Changes since last stable release&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a name="0.6.6"&gt;many documentation improvements, including docstrings and doctests &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a name="0.6.6"&gt;new assumptions system (GSoC) (See &lt;/a&gt;&lt;a href="http://docs.sympy.org/modules/assumptions.html" rel="nofollow"&gt;assumptions documentation&lt;/a&gt; for more information or have a look at &lt;a href="http://fseoane.net/blog/?cat=16" rel="nofollow"&gt;Fabian's blog&lt;/a&gt;.) &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Note: This is going to replace the old assumption system. It is encouraged to use it for new code, however it is not completely finished and parts of sympy have yet to be rewritten to use it; this scheduled for the 0.7 release. &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;improvements to test runner &lt;/li&gt;&lt;li&gt;printing improvements (especially LaTeX, but also mathml and pretty printing) &lt;/li&gt;&lt;li&gt;discriminant of polys  &lt;/li&gt;&lt;li&gt;block diagonal methods for matrices &lt;/li&gt;&lt;li&gt;vast improvements to solving of ODEs (GSoC) (See &lt;a href="http://docs.sympy.org/modules/solvers/ode.html" rel="nofollow"&gt;ODE documentation&lt;/a&gt; for full details or &lt;a href="http://asmeurersympy.wordpress.com/" rel="nofollow"&gt;Aaron's blog&lt;/a&gt;).  &lt;/li&gt;&lt;li&gt;logcombine function &lt;/li&gt;&lt;li&gt;improvements to sets &lt;/li&gt;&lt;li&gt;better trigonometric simplification &lt;/li&gt;&lt;li&gt;improvements to piecewise functions &lt;/li&gt;&lt;li&gt;improvements to solve() and nsolve() &lt;/li&gt;&lt;li&gt;improvements to as_numer_denom() &lt;/li&gt;&lt;li&gt;much better quartic and cubic polynomial rootfinding &lt;/li&gt;&lt;li&gt;code refactoring and cleanup &lt;/li&gt;&lt;li&gt;physics: coupled clusters and wick expansion &lt;/li&gt;&lt;li&gt;matrices: symbolic QR solving &lt;/li&gt;&lt;li&gt;mpmath updated &lt;/li&gt;&lt;li&gt;pyglet updated &lt;/li&gt;&lt;li&gt;many, many bug fixes and small improvements &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The following 22 people have contributed patches to this release (sorted alphabetically): &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Aaron Meurer &lt;/li&gt;&lt;li&gt;Alan Bromborsky &lt;/li&gt;&lt;li&gt;Andy R. Terrel &lt;/li&gt;&lt;li&gt;Bill Flynn &lt;/li&gt;&lt;li&gt;Chris Smith &lt;/li&gt;&lt;li&gt;Eh Tan &lt;/li&gt;&lt;li&gt;Fabian Pedregosa &lt;/li&gt;&lt;li&gt;Fredrik Johansson &lt;/li&gt;&lt;li&gt;Jorn Baayen &lt;/li&gt;&lt;li&gt;Julio Idichekop Filho &lt;/li&gt;&lt;li&gt;Kevin Goodsell &lt;/li&gt;&lt;li&gt;Łukasz Pankowski &lt;/li&gt;&lt;li&gt;Luke Peterson &lt;/li&gt;&lt;li&gt;Øyvind Jensen &lt;/li&gt;&lt;li&gt;Ondrej Certik &lt;/li&gt;&lt;li&gt;Oscar Benjamin &lt;/li&gt;&lt;li&gt;Priit Laes &lt;/li&gt;&lt;li&gt;Renato Coutinho &lt;/li&gt;&lt;li&gt;Ronan Lamy &lt;/li&gt;&lt;li&gt;Ryan Krauss &lt;/li&gt;&lt;li&gt;Ted Horst &lt;/li&gt;&lt;li&gt;Toon Verstraelen &lt;/li&gt;&lt;li&gt;Vinzent Steinberg &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The following 10 people helped reviewing patches: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Aaron Meurer &lt;/li&gt;&lt;li&gt;Andy R. Terrel &lt;/li&gt;&lt;li&gt;Chris Smith &lt;/li&gt;&lt;li&gt;Fabian Pedregosa &lt;/li&gt;&lt;li&gt;Fredrik Johansson &lt;/li&gt;&lt;li&gt;Luke Peterson &lt;/li&gt;&lt;li&gt;Mateusz Paprocki &lt;/li&gt;&lt;li&gt;Ondrej Certik &lt;/li&gt;&lt;li&gt;Ronan Lamy &lt;/li&gt;&lt;li&gt;Vinzent Steinberg &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-8443656863008317871?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/8443656863008317871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=8443656863008317871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/8443656863008317871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/8443656863008317871'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2009/12/sympy-066-released.html' title='SymPy 0.6.6 released'/><author><name>Vinzent Steinberg</name><uri>http://www.blogger.com/profile/17005741759941625219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-1852489751373105071</id><published>2009-07-16T15:01:00.000-07:00</published><updated>2009-07-16T15:09:44.732-07:00</updated><title type='text'>SymPy 0.6.5 released</title><content type='html'>SymPy 0.6.5 has been released on July 17, 2009. It is available at&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sympy.org"&gt;http://sympy.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Source distribution can be downloaded from&lt;br /&gt;&lt;a href="http://sympy.googlecode.com/files/sympy-0.6.5.tar.gz"&gt;http://sympy.googlecode.com/files/sympy-0.6.5.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Windows binaries can be downloaded from&lt;br /&gt;&lt;a href="http://sympy.googlecode.com/files/sympy-0.6.5.win32.exe"&gt;http://sympy.googlecode.com/files/sympy-0.6.5.win32.exe&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;About SymPy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Changes since last stable release&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This release has been marked by improved documentation,&lt;br /&gt;C code generation, solve and dsolve improvements, mpath update, a new&lt;br /&gt;logic module and the start of Google's Summer of Code program.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Major changes include:&lt;br /&gt;&lt;br /&gt;       - Geometric Algebra Improvements&lt;br /&gt;          - Upgrade GA module with left and right contraction operations&lt;br /&gt;          -  Add intersection test for the vertical segment,&lt;br /&gt;      reimplementation of convex_hull (Florian Mickler)&lt;br /&gt;&lt;br /&gt;       - Implement series() as function (Barry Wardell)&lt;br /&gt;&lt;br /&gt;       - Core improvements&lt;br /&gt;     - Refactor Number._eval_power (Fabian Pedregosa)&lt;br /&gt;     - fix bugs in Number._eval_power (Chris Smith)&lt;br /&gt;&lt;br /&gt;       - Matrix improvements:&lt;br /&gt;           - Improve jacobian function, introduce vec and vech (Ben&lt;br /&gt;Goodrich)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       - Solver improvements:&lt;br /&gt;           - solutions past linear factor found in tsolve (Chris Smith)&lt;br /&gt;   - refactor sympy.solvers.guess_solve_strategy (Fabian Pedregosa)&lt;br /&gt;   - Small cleanups to the ODE solver and tests. (Priit Laes)&lt;br /&gt;   - Fix corner case for Bernoulli equation. (Priit Laes)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       - Improvements on partial differential equations solvers (Priit&lt;br /&gt;Laes)&lt;br /&gt;          - Added separation of variables for PDEs (Priit Laes)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       - Expand improvements (Aaron Meurer)&lt;br /&gt;           - Refactoring&lt;br /&gt;           - exp(x)*exp(y)  is no longer automatically combined into&lt;br /&gt;             exp(x+y), use powsimp for that&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       - Documentation improvements:&lt;br /&gt;           - Test also documentation under doc/ (Fabian Pedregosa)&lt;br /&gt;   - Added many docstrings&lt;br /&gt;   - Fix Sphinx complaints/warnings/errors (Priit Laes)&lt;br /&gt;   - Doctest coverage (Ondrej Certik)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       - New logic module (Fabian Pedregosa)&lt;br /&gt;   - Efficient DPLL algorithm (Fabian Pedregosa)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       - LaTeX printer improvements:&lt;br /&gt;         - Handle standard form in the LaTeX printer correctly (Freddie&lt;br /&gt;Witherde)&lt;br /&gt;   - Latex: _print_Mul fix (issue 1282) (Nicolas Pourcelot)&lt;br /&gt;   - Robust printing of latex sub and superscripts (Toon Verstraelen)&lt;br /&gt;   - sorting _print_Add output using a main variable (Ryan Krauss)&lt;br /&gt;   - Matrix printing improvements (Ryan Krauss)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       - MathML printing improvements:&lt;br /&gt;           - MathML's printer extended (Thomas Sidoti)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       - Testing framework improvements&lt;br /&gt;           - Make tests pass without the "py" module (Ondrej Certik)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       - Polynomial module improvements:&lt;br /&gt;         - Fixed subresultant PRS computation and ratint() (Mateusz&lt;br /&gt;Paprocki)&lt;br /&gt;         - Removed old module sympy.polynomials (Priit Laes)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       - limit fixes:&lt;br /&gt;           Compute the finite parts of the limit of a sum by direct&lt;br /&gt;substitution (Ronan Lamy)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       - Test coverage script (Ronan Lamy)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       - Code quality improvements (remove string exceptions, code quality&lt;br /&gt;test improvements) (Tomasz Buchert)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       - C code generation (Toon Verstraelen)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       - Update mpmath (Fredrik Johansson, Vinzent Steinberg)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The following people submitted code for this release (sorted by number&lt;br /&gt;of patches):&lt;br /&gt;&lt;br /&gt;       *    Fabian Pedregosa&lt;br /&gt;       *    Ondrej Certik&lt;br /&gt;       *    Priit Laes&lt;br /&gt;       *    Vinzent Steinberg&lt;br /&gt;       *    Toon Verstraelen&lt;br /&gt;       *    Tomasz Buchert&lt;br /&gt;       *    Nicolas Pourcelot&lt;br /&gt;       *    Aaron Meurer&lt;br /&gt;       *    Florian Mickler&lt;br /&gt;       *    Jochen Voss&lt;br /&gt;       *    Alan Bromborsky&lt;br /&gt;       *    Barry Wardell&lt;br /&gt;       *    Riccardo Gori&lt;br /&gt;       *    Chris Smith&lt;br /&gt;       *    Freddie Witherden&lt;br /&gt;       *    Ben Goodrich&lt;br /&gt;       *    Ronan Lamy&lt;br /&gt;       *    Akshay Srinivasan&lt;br /&gt;       *    Johann Cohen-Tanugi&lt;br /&gt;       *    Luke Peterson&lt;br /&gt;       *    Mateusz Paprocki&lt;br /&gt;       *    Ted Horst&lt;br /&gt;       *    Thomas Sidoti&lt;br /&gt;       *    Vinay Kumar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-1852489751373105071?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/1852489751373105071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=1852489751373105071' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/1852489751373105071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/1852489751373105071'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2009/07/sympy-065-released.html' title='SymPy 0.6.5 released'/><author><name>Fabian Pedregosa</name><uri>http://www.blogger.com/profile/15116991638670403230</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-2827963278986967174</id><published>2009-04-05T01:12:00.000-07:00</published><updated>2009-04-05T01:22:35.105-07:00</updated><title type='text'>SymPy 0.6.4 released</title><content type='html'>SymPy 0.6.4 has been released on April 4, 2009. It is available at&lt;br /&gt;&lt;br /&gt;http://code.google.com/p/sympy/&lt;br /&gt;&lt;br /&gt;About SymPy&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Major changes in this release:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;robust and fast (still pure Python) multivariate factorization&lt;/li&gt;&lt;li&gt;sympy works with pickle protocol 2 (thus works in ipython parallel)&lt;/li&gt;&lt;li&gt;./sympy test now uses our testing suite and it tests both regular tests and doctests&lt;/li&gt;&lt;li&gt;examples directory tidied up&lt;/li&gt;&lt;li&gt;more trigonometric simplifications&lt;/li&gt;&lt;li&gt;polynomial roots finding and factoring vastly improved&lt;/li&gt;&lt;li&gt;mpmath updated&lt;/li&gt;&lt;li&gt;many bugfixes (more than 200 patches since the last release) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The following 21 people have contributed patches to this release (sorted by the number of patches):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ondrej Certik&lt;/li&gt;&lt;li&gt;Mateusz Paprocki&lt;/li&gt;&lt;li&gt;Fabian Seoane&lt;/li&gt;&lt;li&gt;Andy R. Terrel&lt;/li&gt;&lt;li&gt;Freddie Witherden&lt;/li&gt;&lt;li&gt;Robert Kern&lt;/li&gt;&lt;li&gt;Priit Laes&lt;/li&gt;&lt;li&gt;Riccardo Gori&lt;/li&gt;&lt;li&gt;Fredrik Johansson&lt;/li&gt;&lt;li&gt;Aaron Meurer&lt;/li&gt;&lt;li&gt;Alan Bromborsky&lt;/li&gt;&lt;li&gt;Brian E. Granger&lt;/li&gt;&lt;li&gt;Felix Kaiser&lt;/li&gt;&lt;li&gt;Kirill Smelkov&lt;/li&gt;&lt;li&gt;Vinzent Steinberg&lt;/li&gt;&lt;li&gt;Akshay Srinivasan&lt;/li&gt;&lt;li&gt;Andrew Docherty&lt;/li&gt;&lt;li&gt;Andrew Straw&lt;/li&gt;&lt;li&gt;Henrik Johansson&lt;/li&gt;&lt;li&gt;Kaifeng Zhu&lt;/li&gt;&lt;li&gt;Ted Horst&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The following people helped review patches:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Riccardo Gori&lt;/li&gt;&lt;li&gt;Fabian Seoane&lt;/li&gt;&lt;li&gt;Vinzent Steinberg&lt;/li&gt;&lt;li&gt;Gael Varoquaux&lt;/li&gt;&lt;li&gt;Fredrik Johansson&lt;/li&gt;&lt;li&gt;Robert Kern&lt;/li&gt;&lt;li&gt;Alan Bromborsky&lt;/li&gt;&lt;li&gt;Ondrej Certik&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;There were 218 new patches since 0.6.3:&lt;br /&gt;&lt;br /&gt;$ git log --pretty=oneline sympy-0.6.3..sympy-0.6.4 | wc -l&lt;br /&gt;218&lt;br /&gt;&lt;br /&gt;Plans for the future:&lt;br /&gt;&lt;br /&gt;Our roadmap: &lt;a href="http://wiki.sympy.org/wiki/Plan_for_SymPy_1.0"&gt;http://wiki.sympy.org/wiki/Plan_for_SymPy_1.0&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-2827963278986967174?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/2827963278986967174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=2827963278986967174' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/2827963278986967174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/2827963278986967174'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2009/04/sympy-0.html' title='SymPy 0.6.4 released'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-1341927613165321346</id><published>2008-11-19T14:07:00.000-08:00</published><updated>2008-11-19T14:27:08.757-08:00</updated><title type='text'>SymPy 0.6.3 released</title><content type='html'>SymPy 0.6.3 has been released on November 19, 2008. It is available at&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/sympy/"&gt;http://code.google.com/p/sympy/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;About SymPy&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Major changes in this release:&lt;br /&gt;&lt;br /&gt;  &lt;ul&gt;&lt;li&gt;port to python2.6 (all tests pass)&lt;/li&gt;&lt;li&gt;port to jython (all tests pass except those depending on the "ast" module) &lt;/li&gt;&lt;li&gt;true division fixed (all tests pass with "-Qnew" Python option) &lt;/li&gt;&lt;li&gt;&lt;a href="http://buildbot.sympy.org/" rel="nofollow"&gt;buildbot.sympy.org&lt;/a&gt; created, sympy is now regularly tested on python2.4, 2.5, 2.6 on both i386 and amd64 architectures. &lt;/li&gt;&lt;li&gt;py.bench -- py.test based benchmarking added &lt;/li&gt;&lt;li&gt;bin/test -- simple py.test like testing framework, without external dependencies, nice colored output &lt;/li&gt;&lt;li&gt;most limits now work &lt;/li&gt;&lt;li&gt;factorization over &lt;tt&gt;Z[x]&lt;/tt&gt; greatly improved &lt;/li&gt;&lt;li&gt;Piecewise function added &lt;/li&gt;&lt;li&gt;nsimplify() implemented &lt;/li&gt;&lt;li&gt;symbols and var syntax unified &lt;/li&gt;&lt;li&gt;C code printing &lt;/li&gt;&lt;li&gt;many bugfixes &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;The following 17 people have contributed patches to this release: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Andy R. Terrel &lt;/li&gt;&lt;li&gt;Kirill Smelkov &lt;/li&gt;&lt;li&gt;Stepan Roucka &lt;/li&gt;&lt;li&gt;Riccardo Gori &lt;/li&gt;&lt;li&gt;Fabian Seoane &lt;/li&gt;&lt;li&gt;Fredrik Johansson &lt;/li&gt;&lt;li&gt;Mateusz Paprocki &lt;/li&gt;&lt;li&gt;Sebastian Kreft &lt;/li&gt;&lt;li&gt;Sebastian Krämer &lt;/li&gt;&lt;li&gt;Vinzent Steinberg &lt;/li&gt;&lt;li&gt;Boris Timokhin &lt;/li&gt;&lt;li&gt;Alan Bromborsky &lt;/li&gt;&lt;li&gt;Henrik Johansson &lt;/li&gt;&lt;li&gt;Hubert Tsang &lt;/li&gt;&lt;li&gt;Konrad Meyer &lt;/li&gt;&lt;li&gt;Robert (average.programmer) &lt;/li&gt;&lt;li&gt;Ondrej Certik &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The following people helped review patches: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Andy R. Terrel &lt;/li&gt;&lt;li&gt;Riccardo Gori &lt;/li&gt;&lt;li&gt;Fredrik Johansson &lt;/li&gt;&lt;li&gt;Vinzent Steinberg &lt;/li&gt;&lt;li&gt;Fabian Seoane &lt;/li&gt;&lt;li&gt;Kirill Smelkov &lt;/li&gt;&lt;li&gt;Sebastian Krämer &lt;/li&gt;&lt;li&gt;Mateusz Paprocki &lt;/li&gt;&lt;li&gt;Stepan Roucka &lt;/li&gt;&lt;li&gt;Friedrich Hagedorn &lt;/li&gt;&lt;li&gt;Brian Granger &lt;/li&gt;&lt;li&gt;Ondrej Certik &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;There were 256 new patches since 0.6.2:&lt;br /&gt;&lt;br /&gt;$ git log --pretty=oneline sympy-0.6.2..sympy-0.6.3 | wc -l&lt;br /&gt;258&lt;br /&gt;&lt;br /&gt;Plans for the future:&lt;br /&gt;&lt;br /&gt;Our roadmap: &lt;a href="http://wiki.sympy.org/wiki/Plan_for_SymPy_1.0"&gt;http://wiki.sympy.org/wiki/Plan_for_SymPy_1.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The last big missing piece of the puzzle are assumptions, that we are implementing in the issue &lt;a href="http://code.google.com/p/sympy/issues/detail?id=1047"&gt;1047&lt;/a&gt;. 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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-1341927613165321346?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/1341927613165321346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=1341927613165321346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/1341927613165321346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/1341927613165321346'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2008/11/sympy-063-released.html' title='SymPy 0.6.3 released'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-5857268769173451732</id><published>2008-08-17T13:58:00.000-07:00</published><updated>2008-08-17T14:09:50.342-07:00</updated><title type='text'>SymPy 0.6.2 released</title><content type='html'>SymPy 0.6.2 has been released on August 17, 2008. It is available at&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/sympy/"&gt;http://code.google.com/p/sympy/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;About SymPy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;user-visible changes:&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;SymPy is now 50% faster on average (cache:on) and 130% (cache:off) compared to previous release.&lt;/li&gt;&lt;li&gt;adaptive and faster evalf() (&lt;a href="http://hg.sympy.org/sympy/rev/f2603e998194" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/16104562dc53" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/77e7ddf1e3f4" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/ee9372681a64" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/e61438b324d3" rel="nofollow"&gt;5&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;evalf: numerical summation of hypergeometric series (&lt;a href="http://hg.sympy.org/sympy/rev/40b3cff7b9ff" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;evalf: fast and accurate numerical summation (&lt;a href="http://hg.sympy.org/sympy/rev/95eca1e72c47" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/f0f06daa11e7" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/ef0395c6b6c4" rel="nofollow"&gt;3&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;evalf: oscillatory quadrature (&lt;a href="http://hg.sympy.org/sympy/rev/353584ecf19d" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;integrals now support variable transformation (&lt;a href="http://hg.sympy.org/sympy/rev/32a178e2a8b9" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;we can now integrate(f(x)⋅diff(f(x),x), x) (&lt;a href="http://hg.sympy.org/sympy/rev/4810adeada5c" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/ce9a981c8c64" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/73be255e7992" rel="nofollow"&gt;3&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;we can now solve a⋅cos(x)=y (&lt;a href="http://hg.sympy.org/sympy/rev/953090f5209e" rel="nofollow"&gt;comit&lt;/a&gt;) and exp(x)+exp(-x)=y (&lt;a href="http://hg.sympy.org/sympy/rev/61478855c294" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/b43beaab3bb1" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;printing system refactored (&lt;a href="http://hg.sympy.org/sympy/rev/d56cca1785c5" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/d8c5c92db412" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/db09ebd06fb4" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/b13d7cb0fde2" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/c7fd2ed49ec3" rel="nofollow"&gt;5&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/58eade7e7944" rel="nofollow"&gt;6&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/786a5c7b7dfa" rel="nofollow"&gt;7&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/0e69a491ac1d" rel="nofollow"&gt;8&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/5cb4de19cc66" rel="nofollow"&gt;9&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/a735af6bfe76" rel="nofollow"&gt;10&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/d04abe71fd96" rel="nofollow"&gt;11&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/8512eff4ce57" rel="nofollow"&gt;12&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/b996f9beb406" rel="nofollow"&gt;13&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/c4188be75ff5" rel="nofollow"&gt;14&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/2f2fea6ab447" rel="nofollow"&gt;15&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/ca74a684946c" rel="nofollow"&gt;16&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/6809c89c8913" rel="nofollow"&gt;17&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/6f7e70376ba3" rel="nofollow"&gt;18&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/4b31dc02128c" rel="nofollow"&gt;19&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/45bb843aa79a" rel="nofollow"&gt;20&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/5a03af88b9a2" rel="nofollow"&gt;21&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;pprint: new symbol for multiply in unicode mode(x*y -&gt; x⋅y) (&lt;a href="http://hg.sympy.org/sympy/rev/96b3bd3dbb39" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;pprint: matrices now look much better (&lt;a href="http://hg.sympy.org/sympy/rev/0460ebc36574" rel="nofollow"&gt;commit&lt;/a&gt;) + example (&lt;a href="http://hg.sympy.org/sympy/rev/7c36e4e62552" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/77ba6e02c3b9" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;printing of dicts and sets are now more human-friendly (&lt;a href="http://hg.sympy.org/sympy/rev/d2142abff624" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/88c92a032421" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/210c0b2c41f3" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/52013020a48d" rel="nofollow"&gt;5&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;latex: now supports sub- and superscripts in symbol names (&lt;a href="http://hg.sympy.org/sympy/rev/2e99982a94f4" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;RootSum.doit, now works on all roots (&lt;a href="http://hg.sympy.org/sympy/rev/16ecba299530" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;Wild can now have additional predicates (&lt;a href="http://hg.sympy.org/sympy/rev/af81bfff9c5f" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;numpy-like zeros and ones functions (&lt;a href="http://hg.sympy.org/sympy/rev/3ff3349e6df1" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/a87f81d5b17f" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/4c866cf85b39" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/945423d11129" rel="nofollow"&gt;4&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;var('x,y,z') now works (&lt;a href="http://hg.sympy.org/sympy/rev/1030f3b48a9e" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;many bug fixes &lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;changes that affected speed:&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;&lt;tt&gt;((x+y+z)**50).expand()&lt;/tt&gt; is now 4.8x faster (&lt;a href="http://hg.sympy.org/sympy/rev/af4887673d3d" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/a8b30539405e" rel="nofollow"&gt;2&lt;/a&gt; + other commits which all summed up) &lt;/li&gt;&lt;li&gt;big assumptions cleanup and rewrite (&lt;a href="http://hg.sympy.org/sympy/rev/282cd00aaaa1" rel="nofollow"&gt;commit1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/a8301bbe56fc" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/d455e5d19826" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/27890fc7df0a" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/913d34d179c5" rel="nofollow"&gt;5&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/78f62e09c6b3" rel="nofollow"&gt;6&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/2686e5b35812" rel="nofollow"&gt;7&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/44046f890462" rel="nofollow"&gt;8&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/2f6b3d5cc571" rel="nofollow"&gt;9&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/a6ddc80bd679" rel="nofollow"&gt;10&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/86fb85c10898" rel="nofollow"&gt;11&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/27bf7b1fcf51" rel="nofollow"&gt;12&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/3da1ce1a590d" rel="nofollow"&gt;13&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/ac93092655ce" rel="nofollow"&gt;14&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/7fd4ccbf8177" rel="nofollow"&gt;15&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/07d1d690579c" rel="nofollow"&gt;16&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/8a93cd729d4b" rel="nofollow"&gt;17&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/ac803c9988d1" rel="nofollow"&gt;18&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/7077bdb157ad" rel="nofollow"&gt;19&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/960c13f64fbc" rel="nofollow"&gt;20&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/65694f0c4930" rel="nofollow"&gt;21&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/37e7c1592ee4" rel="nofollow"&gt;22&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/929e567d9d59" rel="nofollow"&gt;23&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/37f28f01a0a8" rel="nofollow"&gt;24&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/f082b056f0ef" rel="nofollow"&gt;25&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;access to all object attributes is now ~2.5 times faster (&lt;a href="http://hg.sympy.org/sympy/rev/f5aa87669950" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;we try not to let 'is_commutative' to go through (slow) assumptions path (&lt;a href="http://hg.sympy.org/sympy/rev/ee75a18ca7b2" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/de81757d7898" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;Add/Mul were optimized (for some cases significantly) (&lt;a href="http://hg.sympy.org/sympy/rev/66657a9d94f4" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/3950c0a9c67f" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/964fd3f4314d" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/3b39ffb44b3a" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/be61828f7a46" rel="nofollow"&gt;5&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/8a31d8eebe32" rel="nofollow"&gt;6&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;general cleanup:&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;isympy and sympy.interactive code were merged (&lt;a href="http://hg.sympy.org/sympy/rev/d0d91349a007" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;multiple inheritance removed (NoArithMeths, NoRelMeths, RelMeths, ArithMeths are gone) (&lt;a href="http://hg.sympy.org/sympy/rev/06cad30fdaef" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/aaf5c230783e" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/79d490a601ab" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/fa9012e14995" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/05e95f08f3c5" rel="nofollow"&gt;5&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/8744641b59a3" rel="nofollow"&gt;6&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;.nseries() is now used as default in .series() &lt;/li&gt;&lt;li&gt;doctesting was made more robust (&lt;a href="http://hg.sympy.org/sympy/rev/955d16bc63d3" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/bf338ee0722f" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/ceb485e51516" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/f09b630df594" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/490a46fa2482" rel="nofollow"&gt;5&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The following 11 people have contributed patches to this release: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Sebastian Krämer &lt;/li&gt;&lt;li&gt;Fredrik Johansson &lt;/li&gt;&lt;li&gt;Ondřej Čertík &lt;/li&gt;&lt;li&gt;Mateusz Paprocki &lt;/li&gt;&lt;li&gt;Stefano Maggiolo &lt;/li&gt;&lt;li&gt;Robert Cimrman &lt;/li&gt;&lt;li&gt;Sebastian Krause &lt;/li&gt;&lt;li&gt;Bastian Weber &lt;/li&gt;&lt;li&gt;Sebastian Kreft &lt;/li&gt;&lt;li&gt;Štěpán Roučka &lt;/li&gt;&lt;li&gt;Kirill Smelkov &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The following people helped review patches: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Riccardo Gori &lt;/li&gt;&lt;li&gt;Fredrik Johansson &lt;/li&gt;&lt;li&gt;Kirill Smelkov &lt;/li&gt;&lt;li&gt;Ondřej Čertík &lt;/li&gt;&lt;li&gt;Mateusz Paprocki &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Other news: we wrote a new core &lt;a href="http://groups.google.com/group/sympy/browse_thread/thread/aa3f4263bc3f7e23"&gt;sympyx&lt;/a&gt; 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.&lt;br /&gt;&lt;br /&gt;SymPy will remain pure Python by default, but it will be possible to use Cythonized core optionally to gain speed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-5857268769173451732?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/5857268769173451732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=5857268769173451732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/5857268769173451732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/5857268769173451732'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2008/08/sympy-062-released.html' title='SymPy 0.6.2 released'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-1368521384264863501</id><published>2008-07-22T13:48:00.000-07:00</published><updated>2008-07-22T14:15:26.941-07:00</updated><title type='text'>SymPy 0.6.1 released</title><content type='html'>SymPy 0.6.1 has been released on July 22, 2008. It is available at&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/sympy/"&gt;http://code.google.com/p/sympy/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;About SymPy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;user-visible changes:&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;almost all functions and constants can be converted to Sage (&lt;a href="http://hg.sympy.org/sympy/rev/414880e1c8be" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/245efb21d82f" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;univariate factorization algorithm was fixed (&lt;a href="http://hg.sympy.org/sympy/rev/1bf5f90b3a97" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;.evalf() method fixed, pi.evalf(10&lt;strong&gt;&lt;/strong&gt;6) calculates 1 000 000 digits of pi (&lt;a href="http://hg.sympy.org/sympy/rev/c46eed7e289f" rel="nofollow"&gt;commit 1&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;@threaded decorator (&lt;a href="http://hg.sympy.org/sympy/rev/c45b351e93cf" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/26ac349099d2" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/affb2ee1be2d" rel="nofollow"&gt;3&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;more robust solvers, polynomials and simplification (about 60 patches from Mateusz, see the hg history) &lt;/li&gt;&lt;li&gt;better simplify, that makes a solver more robust (&lt;a href="http://hg.sympy.org/sympy/rev/93a2ec3a7651" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;optional compiling of functions to machine code (&lt;a href="http://hg.sympy.org/sympy/rev/8af2d333319c" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;msolve: solving of nonlinear equation systems using Newton's method (&lt;a href="http://hg.sympy.org/sympy/rev/c70e9302f0d4" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;changes that affected speed:&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;&lt;tt&gt;((x+y+z)**50).expand()&lt;/tt&gt; is now 3 times faster (&lt;a href="http://hg.sympy.org/sympy/rev/16cfc09420ee" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;caching was removed from the Order class: 1.5x speedups in series tests (&lt;a href="http://hg.sympy.org/sympy/rev/c23f4a589832" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/aee6b586dbca" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/e192c4e04e2e" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/ff575d1e085b" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/d09500d91a83" rel="nofollow"&gt;5&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The following 8 people have contributed patches to this release: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Mateusz Paprocki &lt;/li&gt;&lt;li&gt;Vinzent Steinberg &lt;/li&gt;&lt;li&gt;Fredrik Johansson &lt;/li&gt;&lt;li&gt;Riccardo Gori &lt;/li&gt;&lt;li&gt;Kirill Smelkov &lt;/li&gt;&lt;li&gt;Štěpán Roučka&lt;/li&gt;&lt;li&gt;Ali Raza Syed &lt;/li&gt;&lt;li&gt;Ondřej Čertík &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The following people helped review patches: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Riccardo Gori &lt;/li&gt;&lt;li&gt;Fredrik Johansson &lt;/li&gt;&lt;li&gt;Kirill Smelkov &lt;/li&gt;&lt;li&gt;Ondřej Čertík &lt;/li&gt;&lt;li&gt;Mateusz Paprocki &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;See our &lt;a href="http://hg.sympy.org/sympy/shortlog"&gt;hg history&lt;/a&gt; for all patches. In the 0.6.x series we concentrate on much better integration with &lt;a href="http://www.sagemath.org/"&gt;Sage&lt;/a&gt; and &lt;a href="http://www.scipy.org/NumPy"&gt;NumPy&lt;/a&gt;. And also improving our docs. See our roadmap:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.sympy.org/wiki/Plan_for_SymPy_1.0"&gt;http://wiki.sympy.org/wiki/Plan_for_SymPy_1.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://code.google.com/p/gmpy/"&gt;gmpy&lt;/a&gt;, NumPy and compile functions to machine code using &lt;a href="http://bellard.org/tcc/"&gt;tcc&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-1368521384264863501?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/1368521384264863501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=1368521384264863501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/1368521384264863501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/1368521384264863501'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2008/07/sympy-061-released.html' title='SymPy 0.6.1 released'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-2380155195387873874</id><published>2008-07-08T10:23:00.000-07:00</published><updated>2008-07-08T10:47:31.560-07:00</updated><title type='text'>SymPy 0.6.0 released</title><content type='html'>SymPy 0.6.0 has been released on July 7, 2008. It is available at&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/sympy/"&gt;http://code.google.com/p/sympy/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;About SymPy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;user-visible changes:&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;all documentation wiki pages moved to &lt;a href="http://docs.sympy.org/" rel="nofollow"&gt;docs.sympy.org&lt;/a&gt; &lt;/li&gt;&lt;li&gt;mpmath was integrated in SymPy, numerics module removed &lt;/li&gt;&lt;li&gt;mpmath can use gmpy optionally, thus &lt;a href="http://wiki.sympy.org/wiki/Million_digits_of_pi" rel="nofollow"&gt;calculating&lt;/a&gt; 1000000 digits of pi in 7.5s &lt;/li&gt;&lt;li&gt;Common subexpression elimination implemented (&lt;a href="http://hg.sympy.org/sympy/rev/f26c5d4fd984" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/d799b0e232f2" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/a899701f1e4f" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/841260b1596e" rel="nofollow"&gt;4&lt;/a&gt;), see &lt;a href="http://docs.sympy.org/modules/rewriting.html#module-sympy.simplify.cse_main" rel="nofollow"&gt;docs&lt;/a&gt; &lt;/li&gt;&lt;li&gt;roots, RootsOf, RootSum implemented (&lt;a href="http://hg.sympy.org/sympy/rev/a620a8af6134" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;lambdify() now accepts Matrices (&lt;a href="http://hg.sympy.org/sympy/rev/f5000a5a06df" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;Matrices polished and spedup (&lt;a href="http://hg.sympy.org/sympy/rev/3d48d6181a30" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/62fd8a6aebca" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/5ce3cdd10ed0" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/22e3cedc3386" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/9c285548be1a" rel="nofollow"&gt;5&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/0842457787a9" rel="nofollow"&gt;6&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/c6e57bb8de9a" rel="nofollow"&gt;7&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/ccebd03423df" rel="nofollow"&gt;8&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/86b9ff6c04f5" rel="nofollow"&gt;9&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;source command implemented (&lt;a href="http://hg.sympy.org/sympy/rev/c81de1a03811" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/c0b091408696" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;Polys were made the default polynomials in SymPy (&lt;a href="http://hg.sympy.org/sympy/rev/a45312e68f12" rel="nofollow"&gt;commit 1&lt;/a&gt;, + many following commits) &lt;/li&gt;&lt;li&gt;Add, Mul, Pow now accept evaluate=False argument (&lt;a href="http://hg.sympy.org/sympy/rev/c51330c0f3da" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Plus a lot of smaller bugfixes, you can browse our Mercurial &lt;a href="http://hg.sympy.org/sympy/shortlog"&gt;history&lt;/a&gt; for details.&lt;br /&gt;&lt;br /&gt;We have consolidated and improved all our docs, you can find it in the package and also online here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.sympy.org/"&gt;http://docs.sympy.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and we also created a road map for the future releases of SymPy:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.sympy.org/wiki/Plan_for_SymPy_1.0"&gt;http://wiki.sympy.org/wiki/Plan_for_SymPy_1.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;The following 12 people have contributed patches to this release:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mateusz Paprocki&lt;/li&gt;&lt;li&gt;Fredrik Johansson&lt;/li&gt;&lt;li&gt;Robert Kern&lt;/li&gt;&lt;li&gt;Riccardo Gori&lt;/li&gt;&lt;li&gt;Sebastian Krämer&lt;/li&gt;&lt;li&gt;Case Van Horsen&lt;/li&gt;&lt;li&gt;Vinzent Steinberg&lt;/li&gt;&lt;li&gt;Roberto Nobrega&lt;/li&gt;&lt;li&gt;Friedrich Hagedorn&lt;/li&gt;&lt;li&gt;David Roberts&lt;/li&gt;&lt;li&gt;Kirill Smelkov&lt;/li&gt;&lt;li&gt;Ondrej Certik &lt;/li&gt;&lt;/ul&gt;Many thanks to all of you who helped review patches:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Kirill Smelkov&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Mateusz Paprocki&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Robert Kern&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Vinzent Steinberg&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fredrik Johansson&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sebastian Krämer&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;And all the others who helped on our mailinglists.&lt;br /&gt;&lt;br /&gt;We welcome any comments, questions, bug reports, patches. Any contribution you do is very useful.&lt;br /&gt;&lt;br /&gt;You can also read Fredrik's progress on his GSoC project here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://planet.sympy.org/"&gt;http://planet.sympy.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;there are a lot of interesting posts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-2380155195387873874?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/2380155195387873874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=2380155195387873874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/2380155195387873874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/2380155195387873874'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2008/07/sympy-060-released.html' title='SymPy 0.6.0 released'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-469942834248830179</id><published>2008-05-24T12:24:00.000-07:00</published><updated>2008-05-24T17:52:51.429-07:00</updated><title type='text'>SymPy 0.5.15 released</title><content type='html'>SymPy 0.5.15 has been released on May 24, 2008. It is available at&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/sympy/"&gt;http://code.google.com/p/sympy/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;About SymPy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;user-visible changes:&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;all SymPy functions support vector arguments, e.g. sin([1, 2, 3]) (&lt;a href="http://hg.sympy.org/sympy/rev/3cff481efa3b" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/0b48760c55f9" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;lambdify can now use numpy/math/mpmath (&lt;a href="http://hg.sympy.org/sympy/rev/e513289b6a6b" rel="nofollow"&gt;1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/99999069151e" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/7b1100a86d25" rel="nofollow"&gt;3&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;the order of lambdify arguments has changed (&lt;a href="http://hg.sympy.org/sympy/rev/7cc82cfb14fc" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;all SymPy objects are pickable (&lt;a href="http://hg.sympy.org/sympy/rev/f94ae6e9875e" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/e57b07581a31" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/fa515a8867af" rel="nofollow"&gt;3&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;simplify improved and made more robust (&lt;a href="http://hg.sympy.org/sympy/rev/e470371c5aae" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;broken limit_series was removed, we now have just one limit implementation (&lt;a href="http://hg.sympy.org/sympy/rev/8c54a835ad73" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/9f0c92ddfebd" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/9dae4855ec6f" rel="nofollow"&gt;3&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;limits now use .nseries (&lt;a href="http://hg.sympy.org/sympy/rev/993079823dfe" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;.nseries() improved a lot (&lt;a href="http://hg.sympy.org/sympy/rev/e627c389bf35" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/04a4fff3127f" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/2917e1061a1b" rel="nofollow"&gt;3&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;Polys improved (&lt;a href="http://hg.sympy.org/sympy/rev/518fc875fed3" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;Basic kronecker delta and Levi-Civita implementation (&lt;a href="http://hg.sympy.org/sympy/rev/1d61eb463510" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Plus a lot of smaller bugfixes, you can browse our Mercurial &lt;a href="http://hg.sympy.org/sympy/shortlog"&gt;history&lt;/a&gt; for details.&lt;br /&gt;&lt;br /&gt;Apart from the actual code, we have also launched an online SymPy shell:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://live.sympy.org/"&gt;http://live.sympy.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The following 8 people have contributed patches to this release: &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sebastian Krämer &lt;/li&gt;&lt;li&gt;Friedrich Hagedorn &lt;/li&gt;&lt;li&gt;Mateusz Paprocki &lt;/li&gt;&lt;li&gt;Saroj Adhikari &lt;/li&gt;&lt;li&gt;Vinzent Steinberg &lt;/li&gt;&lt;li&gt;David Roberts &lt;/li&gt;&lt;li&gt;Nimish Telang &lt;/li&gt;&lt;li&gt;Ondřej Čertík &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-469942834248830179?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/469942834248830179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=469942834248830179' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/469942834248830179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/469942834248830179'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2008/05/sympy-0515-released.html' title='SymPy 0.5.15 released'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-2289142824144363416</id><published>2008-04-26T14:50:00.000-07:00</published><updated>2008-04-26T15:13:10.332-07:00</updated><title type='text'>SymPy 0.5.14 released</title><content type='html'>SymPy 0.5.14 has been released on April 26, 2008. It is available at&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/sympy/"&gt;http://code.google.com/p/sympy/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;About SymPy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;user-visible changes:&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;SymPy is now 25% faster on average compared to the previous release (see below) &lt;/li&gt;&lt;li&gt;Documentation was improved a &lt;strong&gt;lot&lt;/strong&gt; (&lt;a href="http://hg.sympy.org/sympy/rev/26d75a5b7dbc" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/a0a01fc08c63" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/526612998a02" rel="nofollow"&gt;3&lt;/a&gt;). See &lt;a href="http://docs.sympy.org/" rel="nofollow"&gt;http://docs.sympy.org/&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;tt&gt;rsolve_poly&lt;/tt&gt; &amp;amp; &lt;tt&gt;rsolve_hyper&lt;/tt&gt; fixed (&lt;a href="http://hg.sympy.org/sympy/rev/191d906f553b" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/95722c586c3c" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;subs and subs_dict unified to .subs() (&lt;a href="http://hg.sympy.org/sympy/rev/c78c01651791" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/cf7db1715d61" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;faster and more robust polynomials module (&lt;a href="http://hg.sympy.org/sympy/rev/eae5a978e965" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/a2b46b6a9339" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/068fe612ab61" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/94ce7584098a" rel="nofollow"&gt;4&lt;/a&gt;,  &lt;a href="http://hg.sympy.org/sympy/rev/e4e392eebac5" rel="nofollow"&gt;5&lt;/a&gt;,  &lt;a href="http://hg.sympy.org/sympy/rev/d8110613024e" rel="nofollow"&gt;6&lt;/a&gt;,  &lt;a href="http://hg.sympy.org/sympy/rev/58d8d9eb2cfa" rel="nofollow"&gt;7&lt;/a&gt;,  &lt;a href="http://hg.sympy.org/sympy/rev/911965062220" rel="nofollow"&gt;8&lt;/a&gt;,  &lt;a href="http://hg.sympy.org/sympy/rev/d3fd80444cb6" rel="nofollow"&gt;9&lt;/a&gt;,  &lt;a href="http://hg.sympy.org/sympy/rev/ac727777a83a" rel="nofollow"&gt;10&lt;/a&gt;,  &lt;a href="http://hg.sympy.org/sympy/rev/176de6403477" rel="nofollow"&gt;11&lt;/a&gt;,  &lt;a href="http://hg.sympy.org/sympy/rev/a9fc641351aa" rel="nofollow"&gt;12&lt;/a&gt;,  &lt;a href="http://hg.sympy.org/sympy/rev/4a71cecc65f4" rel="nofollow"&gt;13&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/90caafd36b5a" rel="nofollow"&gt;14&lt;/a&gt;, ..., look into the hg history) &lt;/li&gt;&lt;li&gt;improved Matrix.det(), implemented Berkowitz algorithm (&lt;a href="http://hg.sympy.org/sympy/rev/c8cbb6c5e78d" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/6ab14eeeda3e" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;improved isympy (interactive shell for SymPy) (&lt;a href="http://hg.sympy.org/sympy/rev/075af554b091" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/01b152988acb" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/194752e14bd7" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/58cddca75b8f" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/397a1bf465b9" rel="nofollow"&gt;5&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/82d6521722e9" rel="nofollow"&gt;6&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;pretty-printing improved (&lt;a href="http://hg.sympy.org/sympy/rev/16f56992f467" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/31c518a87450" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/e12accf6a9d1" rel="nofollow"&gt;3&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;Rel, Eq, Ne, Lt, Le, Gt, Ge implemented (&lt;a href="http://hg.sympy.org/sympy/rev/4bb011af2d0c" rel="nofollow"&gt;commit 1&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;Limit class represents unevaluated limits now (&lt;a href="http://hg.sympy.org/sympy/rev/936e73c6bafd" rel="nofollow"&gt;commit 1&lt;/a&gt;)  &lt;/li&gt;&lt;li&gt;Bailey-Borwein-Plouffe algorithm (finds the nth hexidecimal digit of pi without calculating the previous digits) implemented (&lt;a href="http://hg.sympy.org/sympy/rev/6d73013adce3" rel="nofollow"&gt;commit 1&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;solver for transcendental equations added (&lt;a href="http://hg.sympy.org/sympy/rev/e2db18455951" rel="nofollow"&gt;commit 1&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;.nseries() methods implemented (more robust/faster than .oseries) (&lt;a href="http://hg.sympy.org/sympy/rev/81f8e2c98500" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/a2eed9dc6a91" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;multivariate Lambdas implemented (&lt;a href="http://hg.sympy.org/sympy/rev/0097b68ac3c5" rel="nofollow"&gt;commit 1&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;changes that affected speed:&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;&lt;tt&gt;__eq__&lt;/tt&gt;/&lt;tt&gt;__ne__&lt;/tt&gt;/&lt;tt&gt;__nonzero__&lt;/tt&gt; returns True/False directly so dict lookups are not expensive anymore (&lt;a href="http://hg.sympy.org/sympy/rev/1f52bd36839c" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/d9965888a005" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/9e7131a4533b" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/76542a035dd6" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/92af27a9e8bd" rel="nofollow"&gt;5&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/edcd763c6999" rel="nofollow"&gt;6&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;&lt;tt&gt;sum(x**i/i,i=1..400)&lt;/tt&gt; is now 4.8x faster (&lt;a href="http://hg.sympy.org/sympy/rev/9fa720169ed9" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/15fc2acb7231" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/a602e5369326" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/2e496abeb32b" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/4962f6641827" rel="nofollow"&gt;5&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;&lt;tt&gt;isinstance(term, C.Mul)&lt;/tt&gt;  was replaced by &lt;tt&gt;term.is_Mul&lt;/tt&gt; and similarly for other basic classes (&lt;a href="http://hg.sympy.org/sympy/rev/f83106bc39a5" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/a522f77cd5e9" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Plus a lot of smaller bugfixes, you can browse our Mercurial &lt;a href="http://hg.sympy.org/sympy/shortlog"&gt;history&lt;/a&gt; for details.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;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 &lt;a href="http://wiki.sympy.org/wiki/Contributors"&gt;contributors&lt;/a&gt;):&lt;br /&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Mateusz Paprocki &lt;/li&gt;&lt;li&gt;Fredrik Johansson &lt;/li&gt;&lt;li&gt;James Aspnes &lt;/li&gt;&lt;li&gt;Friedrich Hagedorn &lt;/li&gt;&lt;li&gt;Pan Peng &lt;/li&gt;&lt;li&gt;Abderrahim Kitouni &lt;/li&gt;&lt;li&gt;Nimish Telang &lt;/li&gt;&lt;li&gt;Jurjen N.E. Bos &lt;/li&gt;&lt;li&gt;Elrond der Elbenfuerst &lt;/li&gt;&lt;li&gt;Rizgar Mella &lt;/li&gt;&lt;li&gt;Felix Kaiser &lt;/li&gt;&lt;li&gt;Roberto Nobrega &lt;/li&gt;&lt;li&gt;David Roberts &lt;/li&gt;&lt;li&gt;Ondřej Čertík &lt;/li&gt;&lt;li&gt;Kirill Smelkov &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you'd like to contribute too, you can browse our open issues here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/sympy/issues/list"&gt;http://code.google.com/p/sympy/issues/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and then we suggest you to read the &lt;a href="http://docs.sympy.org/sympy-patches-tutorial.html"&gt;SymPy Patches Tutorial&lt;/a&gt;, 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 &lt;a href="http://groups.google.com/group/sympy"&gt;mailinglist&lt;/a&gt; or IRC (#sympy at freenode).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-2289142824144363416?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/2289142824144363416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=2289142824144363416' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/2289142824144363416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/2289142824144363416'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2008/04/sympy-0514-released.html' title='SymPy 0.5.14 released'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-956016003161745577</id><published>2008-03-06T14:57:00.000-08:00</published><updated>2008-03-06T15:07:05.981-08:00</updated><title type='text'>SymPy 0.5.13 released</title><content type='html'>It took us a little longer to release, so we have a longer changelog this time:&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;user-visible changes:&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;SymPy is now 2x faster in average compared to the previous release (see below) &lt;/li&gt;&lt;li&gt;&lt;tt&gt;integrate()&lt;/tt&gt; can handle most of the basic integrals now (&lt;a href="http://hg.sympy.org/sympy/rev/045f9b4d28e1" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;interactive experience with isympy was improved through adding support for [], () and {} to pretty-printer, and switching to it as the default ipython printer (&lt;a href="http://hg.sympy.org/sympy/rev/1952e5872712" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/8b8d52652bc8" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/9d872c1768b2" rel="nofollow"&gt;3&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;new &lt;tt&gt;trim()&lt;/tt&gt; 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 &lt;tt&gt;cancel()&lt;/tt&gt; was improved (&lt;a href="http://hg.sympy.org/sympy/rev/b36abe849cae" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/2c7a8f13af0c" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;&lt;tt&gt;.expand()&lt;/tt&gt; for noncommutative symbols fixed (&lt;a href="http://hg.sympy.org/sympy/rev/f3841bb49aba" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;bug in &lt;tt&gt;(x+y+sin(x)).as_independent()&lt;/tt&gt; fixed (&lt;a href="http://hg.sympy.org/sympy/rev/6e53d4e4f31b" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;&lt;tt&gt;.subs_dict()&lt;/tt&gt; improved (&lt;a href="http://hg.sympy.org/sympy/rev/6d82fc2f132a" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;support for plotting geometry objects added (&lt;a href="http://hg.sympy.org/sympy/rev/81b5ea2f798f" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;bug in &lt;tt&gt;.tangent_line()&lt;/tt&gt; of ellipse fixed (&lt;a href="http://hg.sympy.org/sympy/rev/7a4895d2a5c6" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/7e931942af76" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;new &lt;tt&gt;atan2&lt;/tt&gt; function and assotiated fixes for &lt;tt&gt;.arg()&lt;/tt&gt; and expanding rational powers (&lt;a href="http://hg.sympy.org/sympy/rev/6b122f035a59" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/59e098c67d2a" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/730666b691ab" rel="nofollow"&gt;3&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;new &lt;tt&gt;.coeff()&lt;/tt&gt; method for returning coefficient of a poly (&lt;a href="http://hg.sympy.org/sympy/rev/fe28b857f840" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/823a98e61f39" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/2462e919c263" rel="nofollow"&gt;3&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;pretty-printer now uses unicode by default (&lt;a href="http://hg.sympy.org/sympy/rev/3287de8a4632" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;recognition of geometric sums were generalized (&lt;a href="http://hg.sympy.org/sympy/rev/46592846838b" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;&lt;tt&gt;.is_positive&lt;/tt&gt; and &lt;tt&gt;.is_negative&lt;/tt&gt; now fallback to evalf() when appropriate (&lt;a href="http://hg.sympy.org/sympy/rev/22824466ecc3" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;as the result &lt;tt&gt;oo*(pi-1)&lt;/tt&gt; now correctly simplifies to &lt;tt&gt;oo&lt;/tt&gt; (&lt;a href="http://hg.sympy.org/sympy/rev/595807013bfc" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;support for objects which provide &lt;tt&gt;__int__&lt;/tt&gt; method was added (&lt;a href="http://hg.sympy.org/sympy/rev/499b40d2b273" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;we finally started SymPy User's Guide (&lt;a href="http://hg.sympy.org/sympy/rev/fdf6ca3287f9" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/18ad24318344" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;changes that affected speed:&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;first patches with 25% speedup (&lt;a href="http://hg.sympy.org/sympy/rev/5db289e227f9" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/b8a3f509123d" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/2146efe6d6ed" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/9ae600a3134f" rel="nofollow"&gt;4&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;Basic.cos et. al. removed, use C.cos instead (&lt;a href="http://hg.sympy.org/sympy/rev/fa487034bbb1" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/add2007e2df6" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/5393aaff17f0" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/7b94988ea0fc" rel="nofollow"&gt;4&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;sympy.core now uses direct imports (&lt;a href="http://hg.sympy.org/sympy/rev/ad1660d022eb" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/9fefd2f55cca" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;sympifyit decorator (&lt;a href="http://hg.sympy.org/sympy/rev/0ff293ced56e" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/09af91e6d0f5" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/e41996ef5e80" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/8bff90e3d9be" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/cf70b0b2ef8b" rel="nofollow"&gt;5&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/141d4a8de633" rel="nofollow"&gt;6&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/91ab79697a8c" rel="nofollow"&gt;7&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;speedup Integers creation and arithmetic (&lt;a href="http://hg.sympy.org/sympy/rev/710dd41fdbfc" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/97558045dae6" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;speedup unary operations for singleton numbers (&lt;a href="http://hg.sympy.org/sympy/rev/ea74c5f5c8c7" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;remove silly slowdowns from fast-path of mul and div (&lt;a href="http://hg.sympy.org/sympy/rev/89925b6ebf7b" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/5598327b36c3" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;significant speedup was achieved by reusing dummy variables (&lt;a href="http://hg.sympy.org/sympy/rev/5056059c2d74" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/5d242cf4a6cf" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/c9e5d083a61d" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/213ab1bc4cd7" rel="nofollow"&gt;4&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;&lt;tt&gt;is_dummy&lt;/tt&gt; is not an assumption anymore (&lt;a href="http://hg.sympy.org/sympy/rev/532e467b57a3" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/6a36b59d6558" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;Symbols &amp;amp; Wilds are cached (&lt;a href="http://hg.sympy.org/sympy/rev/8bdffd52db99" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/c374fbd5b444" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/6d57d8846471" rel="nofollow"&gt;3&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;&lt;tt&gt;((2+3*I)**1000).expand()&lt;/tt&gt; is now at least 100x faster (&lt;a href="http://hg.sympy.org/sympy/rev/83fd6783459b" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;&lt;tt&gt;.expand()&lt;/tt&gt; was made faster for cases where an expression is already expanded (&lt;a href="http://hg.sympy.org/sympy/rev/dcdb94326a38" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;rational powers of integers are now computed more efficiently (&lt;a href="http://hg.sympy.org/sympy/rev/7ad4283378aa" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;unknown assumptions are now cached as well as known assumptions (&lt;a href="http://hg.sympy.org/sympy/rev/c54cd4b2c5aa" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;general cleanup:&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;BasicMeths merged into Basic (&lt;a href="http://hg.sympy.org/sympy/rev/652651dc90e5" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/a95ff37e15a1" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/5b77303888e2" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/241e2f20a139" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/31044aa38e49" rel="nofollow"&gt;5&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/20a6ba547347" rel="nofollow"&gt;6&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/f4630ac97369" rel="nofollow"&gt;7&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/873665a234e3" rel="nofollow"&gt;8&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;cache subsystem was cleaned up -- now it supports only immutable objects (&lt;a href="http://hg.sympy.org/sympy/rev/0a53991871e4" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/3fbb7fe833ba" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/d42933e9bdeb" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/aea7205bb832" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/1e7b490b3a7b" rel="nofollow"&gt;5&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The following people have contributed to this release:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Kirill Smelkov&lt;/li&gt;&lt;li&gt;Mateusz Paprocki&lt;/li&gt;&lt;li&gt;Saroj Adhikari&lt;/li&gt;&lt;li&gt;Fredrik Johansson&lt;/li&gt;&lt;li&gt;Jaroslaw Tworek&lt;/li&gt;&lt;li&gt;Robert Kern&lt;/li&gt;&lt;li&gt;Pauli Virtanen&lt;/li&gt;&lt;li&gt;Ondřej Čertík&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-956016003161745577?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/956016003161745577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=956016003161745577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/956016003161745577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/956016003161745577'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2008/03/sympy-0513-released.html' title='SymPy 0.5.13 released'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-6142671923399629533</id><published>2008-01-27T15:36:00.000-08:00</published><updated>2008-02-24T16:21:51.045-08:00</updated><title type='text'>SymPy 0.5.12 released</title><content type='html'>Quite a lot has changed, &lt;a href="http://code.google.com/p/sympy/"&gt;SymPy&lt;/a&gt; now works with NumPy arrays, you can convert back and forth using numpy.array() and sympy.Matrix(). The integration algorithm has been improved significantly, it can handle a lot of common integrals already (some &lt;a href="http://wiki.sympy.org/wiki/Symbolic_integration"&gt;examples&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;More detailed changelog:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SymPy works with NumPy out of the box (&lt;a href="http://hg.sympy.org/sympy/rev/82e8ff0a8a3e" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/1f8444d3a4c8" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;RootOf implemented (&lt;a href="http://hg.sympy.org/sympy/rev/8463c5d8a2de" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;Lambda support works now (&lt;a href="http://hg.sympy.org/sympy/rev/bc07efdd1346" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;heuristic Risch method improved (&lt;a href="http://hg.sympy.org/sympy/rev/8463c5d8a2de" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/2b6f19782b23" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/e3fbd8889807" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/d26feb6f929b" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/543c897e454b" rel="nofollow"&gt;5&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;cancel function implemented (&lt;a href="http://hg.sympy.org/sympy/rev/82b0caf68372" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;sqrt(x) is now equivalent to &lt;tt&gt;x**(1/2)&lt;/tt&gt; (&lt;a href="http://hg.sympy.org/sympy/rev/8463c5d8a2de" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/5f2d030a8436" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;Derivative is now unevaluated (&lt;a href="http://hg.sympy.org/sympy/rev/0c3e9db6004f" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;&lt;tt&gt;list2numpy()&lt;/tt&gt; implemented (&lt;a href="http://hg.sympy.org/sympy/rev/b63450f364bc" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;series expansion of hyperbolic functions fixed (&lt;a href="http://hg.sympy.org/sympy/rev/10bcdd558957" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;sympify('lambda x: 2*x') works, plus other fixes (&lt;a href="http://hg.sympy.org/sympy/rev/3a6e51e4cb01" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/058cf905cdca" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/c993a8d68dfa" rel="nofollow"&gt;3&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;simple maxima parser implemented (&lt;a href="http://hg.sympy.org/sympy/rev/94e3b53cc0a2" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;&lt;tt&gt;sin(x)[0]&lt;/tt&gt; idiom changed to &lt;tt&gt;sin(x).args[0]&lt;/tt&gt; (&lt;a href="http://hg.sympy.org/sympy/rev/68f51f8e6532" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;&lt;tt&gt;sin(x).series(x, 5)&lt;/tt&gt; idiom changed to &lt;tt&gt;sin(x).series(x, 0, 5)&lt;/tt&gt; (&lt;a href="http://hg.sympy.org/sympy/rev/91de32b1b7f2" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;caching refactored (&lt;a href="http://hg.sympy.org/sympy/rev/8f04a0dbf0e9" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/53faf3605222" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/5d05d3d87712" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/3e298ca616a3" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/926cd30629fc" rel="nofollow"&gt;5&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/7ddd0e97eecf" rel="nofollow"&gt;6&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/fdca1475fb92" rel="nofollow"&gt;7&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/65ef69b91e73" rel="nofollow"&gt;8&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/91d3e101046f" rel="nofollow"&gt;9&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;2D plots now don't rotate in 3D, but translate instead (&lt;a href="http://hg.sympy.org/sympy/rev/03b3348eac8a" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;many bug fixes, see the &lt;a href="http://hg.sympy.org/sympy/shortlog/1735"&gt;Mercurial history&lt;/a&gt; for details &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The following people have contributed to this release:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Kirill Smelkov&lt;/li&gt;&lt;li&gt;Mateusz Paprocki&lt;/li&gt;&lt;li&gt;Fredrik Johansson&lt;/li&gt;&lt;li&gt;Jaroslaw Tworek&lt;/li&gt;&lt;li&gt;Saroj Adhikari&lt;/li&gt;&lt;li&gt;Andrej Tokarčík&lt;/li&gt;&lt;li&gt;David Marek&lt;/li&gt;&lt;li&gt;Or Dvory&lt;/li&gt;&lt;li&gt;Bernhard R. Link&lt;/li&gt;&lt;li&gt;Ondřej Čertík&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-6142671923399629533?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/6142671923399629533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=6142671923399629533' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/6142671923399629533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/6142671923399629533'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2008/01/sympy-0512-released.html' title='SymPy 0.5.12 released'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-1472017048894038238</id><published>2008-01-10T06:32:00.001-08:00</published><updated>2008-01-10T06:37:40.096-08:00</updated><title type='text'>public wiki</title><content type='html'>We created a public wiki:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.sympy.org/"&gt;http://wiki.sympy.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That everyone is encouraged to participate in. The google code wiki has a huge disadvantage, that only the members of the google code sympy project are allowed to edit it. wiki.sympy.org can be edited by anyone and we hope that it will encourage SymPy users to help improve SymPy documentation and take part in the project.&lt;br /&gt;&lt;br /&gt;We plan to move all tutorials and docs in there. Only things, that are relevant to developers, like how to do a release, etc., will stay in the google wiki.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-1472017048894038238?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/1472017048894038238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=1472017048894038238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/1472017048894038238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/1472017048894038238'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2008/01/public-wiki.html' title='public wiki'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-3633723743106591096</id><published>2008-01-07T07:02:00.000-08:00</published><updated>2008-01-07T07:04:10.297-08:00</updated><title type='text'>SymPy 0.5.11 released</title><content type='html'>This is just a bugfix release, that fixed a problem with pyglet in the 0.5.10.&lt;br /&gt;&lt;br /&gt;Changes:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;tt&gt;./setup.py install&lt;/tt&gt; installs pyglet correctly now (&lt;a href="http://hg.sympy.org/sympy/rev/e01db9e8b6e6" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;&lt;tt&gt;var("k")&lt;/tt&gt; fixed (&lt;a href="http://hg.sympy.org/sympy/rev/6d226ac58d84" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;script for automatic testing of plotting in pure environment added (&lt;a href="http://hg.sympy.org/sympy/rev/79ff83053040" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/535bde464363" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-3633723743106591096?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/3633723743106591096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=3633723743106591096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/3633723743106591096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/3633723743106591096'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2008/01/sympy-0511-released.html' title='SymPy 0.5.11 released'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-3655234810682628122</id><published>2008-01-04T07:02:00.000-08:00</published><updated>2008-01-04T07:06:09.324-08:00</updated><title type='text'>SymPy 0.5.10 released</title><content type='html'>Changes:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;tt&gt;view&lt;/tt&gt; renamed to &lt;tt&gt;preview&lt;/tt&gt;, &lt;tt&gt;pngview&lt;/tt&gt;, &lt;tt&gt;pdfview&lt;/tt&gt;, &lt;tt&gt;dviview&lt;/tt&gt; added (&lt;a href="http://hg.sympy.org/sympy/rev/49161c434035" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;latex printer was rewritten, &lt;tt&gt;preview&lt;/tt&gt; uses builtin pyglet instead of pygame (&lt;a href="http://hg.sympy.org/sympy/rev/5cf8987d6744" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/2cbb895ae8b3" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;square root denesting implemented (&lt;a href="http://hg.sympy.org/sympy/rev/f794a01195b7" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;parser of simple Mathematica expressions added (&lt;a href="http://hg.sympy.org/sympy/rev/54c7ceb12a75" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;TeXmacs interface written (&lt;a href="http://hg.sympy.org/sympy/rev/9c1293a56e3d" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;some integration fixes (&lt;a href="http://hg.sympy.org/sympy/rev/9a7ba9499c43" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/0a57a070f8ee" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/c660cc8d6201" rel="nofollow"&gt;3&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;line width in 2D plotting can be specified (&lt;a href="http://hg.sympy.org/sympy/rev/06fbc18a5837" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;README was updated (&lt;a href="http://hg.sympy.org/sympy/rev/07f59495f136" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/a9e246fbd464" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;&lt;tt&gt;pyglet&lt;/tt&gt; and &lt;tt&gt;mpmath&lt;/tt&gt; were updated and moved to sympy/thirdparty (&lt;a href="http://hg.sympy.org/sympy/rev/35ea4723788e" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/7e62d0d6a179" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/931e4bbbec07" rel="nofollow"&gt;3&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/f17e3ff93118" rel="nofollow"&gt;4&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/df56f8070da9" rel="nofollow"&gt;5&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;all &lt;tt&gt;sys.path&lt;/tt&gt; hacks were moved to just 2 places - pyglet and examples (&lt;a href="http://hg.sympy.org/sympy/rev/ccd8afb93124" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/b62b512edd2f" rel="nofollow"&gt;2&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/2c5c759d4eed" rel="nofollow"&gt;3&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;SymPy objects should work in &lt;tt&gt;numpy&lt;/tt&gt; arrays now (&lt;a href="http://hg.sympy.org/sympy/rev/23473c1194e4" rel="nofollow"&gt;commit 1&lt;/a&gt;, &lt;a href="http://hg.sympy.org/sympy/rev/ab960e55ee42" rel="nofollow"&gt;2&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;hand written sympify() parser was rewritten and simplified using Python AST (&lt;a href="http://hg.sympy.org/sympy/rev/ad3704adbd53" rel="nofollow"&gt;commit&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;See also &lt;a href="http://code.google.com/p/sympy/wiki/Changes"&gt;Changes&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-3655234810682628122?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/3655234810682628122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=3655234810682628122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/3655234810682628122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/3655234810682628122'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2008/01/sympy-0510-released.html' title='SymPy 0.5.10 released'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-8279434789934252505</id><published>2007-12-22T04:57:00.000-08:00</published><updated>2007-12-22T04:59:23.630-08:00</updated><title type='text'>Google Highly Open Participation Contest 2007-8</title><content type='html'>SymPy &lt;a href="http://code.google.com/p/sympy/wiki/GHOP2007"&gt;participates&lt;/a&gt; in the Google Highly Open Participation Contest 2007-8, if you are a high school student, go for it. Last chance to claim a task is January 22!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-8279434789934252505?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/8279434789934252505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=8279434789934252505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/8279434789934252505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/8279434789934252505'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/12/google-highly-open-participation.html' title='Google Highly Open Participation Contest 2007-8'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-4166176908921030377</id><published>2007-12-21T16:19:00.000-08:00</published><updated>2007-12-21T16:22:20.059-08:00</updated><title type='text'>SymPy 0.5.9 released</title><content type='html'>Changes:&lt;br /&gt;&lt;br /&gt;  * Differential solvers were polished&lt;br /&gt;  * isympy now predefines f as a function&lt;br /&gt;  * Matrix printing improved&lt;br /&gt;  * Printing internals were documented&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://code.google.com/p/sympy/wiki/Changes"&gt;Changes&lt;/a&gt; for more info.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-4166176908921030377?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/4166176908921030377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=4166176908921030377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/4166176908921030377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/4166176908921030377'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/12/sympy-059-released.html' title='SymPy 0.5.9 released'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-4608499973814560541</id><published>2007-12-17T00:40:00.000-08:00</published><updated>2007-12-17T01:40:46.667-08:00</updated><title type='text'>Blogs</title><content type='html'>We'll use this blog for official announcements only from now on. Personal opinions will be on people's blogs, all of which are synchronised at planet.sympy.org.&lt;br /&gt;&lt;br /&gt;We have implemented some new cool features in the Mercurial repository, so a new release will soon come out.&lt;br /&gt;&lt;br /&gt;If you are curious, you can always find what code has been committed here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hg.sympy.org/sympy"&gt;http://hg.sympy.org/sympy&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-4608499973814560541?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/4608499973814560541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=4608499973814560541' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/4608499973814560541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/4608499973814560541'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/12/blogs.html' title='Blogs'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-8143648562773512916</id><published>2007-11-16T08:26:00.000-08:00</published><updated>2007-11-16T08:33:15.237-08:00</updated><title type='text'>SAGE Days 6 wrap-up</title><content type='html'>SD6 is over, here are my final notes about the conference:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ondrejcertik.blogspot.com/2007/11/sage-days-6.html"&gt;http://ondrejcertik.blogspot.com/2007/11/sage-days-6.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sagemath.org/"&gt;SAGE&lt;/a&gt; is an exciting project. On SD6 I managed with the help of other SAGE developers to make SymPy play more nicely (after my patches are accepted, you will be able to freely mix SymPy and SAGE expressions and it will work).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-8143648562773512916?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/8143648562773512916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=8143648562773512916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/8143648562773512916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/8143648562773512916'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/11/sage-days-6-wrap-up.html' title='SAGE Days 6 wrap-up'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-7232852841968778239</id><published>2007-11-10T15:48:00.000-08:00</published><updated>2007-11-10T15:51:32.300-08:00</updated><title type='text'>SAGE Days 6</title><content type='html'>I am at SAGE Days 6, you can watch the progress on my &lt;a href="http://ondrejcertik.blogspot.com/search/label/sage"&gt;blog&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-7232852841968778239?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/7232852841968778239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=7232852841968778239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/7232852841968778239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/7232852841968778239'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/11/sage-days-6.html' title='SAGE Days 6'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-5095116204652013108</id><published>2007-11-05T06:50:00.000-08:00</published><updated>2007-11-05T07:11:38.825-08:00</updated><title type='text'>Unicode printing</title><content type='html'>One very cool feature of &lt;a href="http://code.google.com/p/sympy/"&gt;SymPy&lt;/a&gt;, that Kirill recently committed, is a unicode printing. Start isympy and see for yourself:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ bin/isympy &lt;br /&gt;Python 2.4.4 console for SymPy 0.5.6-hg. These commands were executed:&lt;br /&gt;&gt;&gt;&gt; from __future__ import division&lt;br /&gt;&gt;&gt;&gt; from sympy import *&lt;br /&gt;&gt;&gt;&gt; x, y, z = symbols('xyz')&lt;br /&gt;&gt;&gt;&gt; k, m, n = symbols('kmn', integer=True)&lt;br /&gt;&gt;&gt;&gt; Basic.set_repr_level(2)     # 2D output&lt;br /&gt;&gt;&gt;&gt; pprint_try_use_unicode()    # try to setup unicode pprint&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In [1]: sqrt((sqrt(x+1))+1)&lt;br /&gt;Out[1]: &lt;br /&gt;   ⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽&lt;br /&gt;  ╱       ⎽⎽⎽⎽⎽⎽⎽ &lt;br /&gt;╲╱  1 + ╲╱ 1 + x  &lt;br /&gt;&lt;br /&gt;In [2]: th, ph = Symbol("theta"), Symbol("phi")&lt;br /&gt;&lt;br /&gt;In [3]: Integral(sin(th)/cos(ph), (th,0,pi), (ph, 0, 2*pi))&lt;br /&gt;Out[3]: &lt;br /&gt;2*π π             &lt;br /&gt; ⌠  ⌠             &lt;br /&gt; ⎮  ⎮ sin(θ)      &lt;br /&gt; ⎮  ⎮ ────── dθ dφ&lt;br /&gt; ⎮  ⎮ cos(φ)      &lt;br /&gt; ⌡  ⌡             &lt;br /&gt; 0  0             &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;More examples can be found on the wiki page &lt;a href="http://code.google.com/p/sympy/wiki/PrettyPrinting"&gt;PrettyPrinting&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Fredrik also played with the idea of ascii plotting. I am a huge fan of a terminal, because this is very versatile - I can use it over ssh, I can copy &amp; paste, save the results to a file etc. I can easily script it. And the most important - I just prefer to write my programs in vim and execute them as a simple script. Any GUI, even the best one (or in the browser), is not giving me such a power. So I like the idea of making the terminal experience as pleasant as possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-5095116204652013108?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/5095116204652013108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=5095116204652013108' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/5095116204652013108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/5095116204652013108'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/11/unicode-printing.html' title='Unicode printing'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-8693625620250443204</id><published>2007-10-18T15:27:00.001-07:00</published><updated>2007-10-20T15:16:15.144-07:00</updated><title type='text'>Google stopped showing sympy's webpage</title><content type='html'>This was written on October 18:&lt;br /&gt;&lt;br /&gt;I was used to finding the sympy webpage by googling "sympy". When I did that today, the  http://code.google.com/p/sympy/ isn't shown in the results (instead the sympy's freshmeat page, or sympy's Debian page is shown). I tried &lt;a href="http://search.yahoo.com/"&gt;yahoo&lt;/a&gt; and &lt;a href="http://www.live.com/"&gt;msn&lt;/a&gt;, and sympy webpage always shows as the first or second link in there (as it used to in google).&lt;br /&gt;&lt;br /&gt;It's interesting and it reminds me how important it is to have several search engines and do not depend on only one, so that one can switch to a different one if the first one is apparently not working correctly.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update&lt;/span&gt; (October 21): Google fixed the problem and sympy's webpage is the first link again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-8693625620250443204?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/8693625620250443204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=8693625620250443204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/8693625620250443204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/8693625620250443204'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/10/google-stopped-showing-sympys-webpage.html' title='Google stopped showing sympy&apos;s webpage'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-974846157631011191</id><published>2007-10-06T03:05:00.000-07:00</published><updated>2007-10-06T03:49:13.143-07:00</updated><title type='text'>New SymPy release and beyond</title><content type='html'>Things have been a little quiet on planet.sympy.org, but the less we talk, the more we work. :) With 468 svn commits in September and 89 in October (till October 5) [1], we are working hard. We made a new release yesterday, where we simplified the internals of SymPy a lot and I also fixed the limits finally. &lt;br /&gt;&lt;br /&gt;What remains is to fix some problematic series expansion (that also makes some limits fail, but the limit algorithm itself seems to be bugfree so far) and then I'll concentrate on making SymPy more SAGE friendly. SymPy will remain as a small Python library, doing one job and doing it well. But when used inside SAGE, it will know how to convert expressions to and from SAGE, so that people can use SymPy from SAGE ideally the same way as they can now use Maxima. &lt;br /&gt;&lt;br /&gt;I think there are already things that SymPy is better than Maxima in terms of pure functionality, like pattern matching, limits (after I'll fix the series code, hopefully in the next release). There are however things, where Maxima is better, it still has a lot more features (more integrals, more differential equations, tensors) and it's faster. Except for the speed, all the other things are really easy to implement in SymPy. The main advantage of SymPy over Maxima is that it is written in Python and it is really easy to implement new features in it.&lt;br /&gt;&lt;br /&gt;A huge deficiency of Maxima is that it uses lisp and it's own language for doing the calculations. SAGE fixes this problem (but it doesn't support all features of Maxima yet, for example substitutions of subexpressions, that is needed in the Gruntz limit algorithm), so SAGE is in fact like a platform, a common ground for all these mathematical libraries, allowing them to be used using the same interface and thus one can compare the real features (and speed), instead of some possibly good libraries being disqualified just because they use an unfortunate language/interface (for whatever historical reasons), which is great and I want SymPy to compete in the same ground as well, because only this will tell, if it is good or not and which things to improve. Competition is very healthy, it's always good to have a choice.&lt;br /&gt;&lt;br /&gt;[1] http://groups.google.com/group/sympy-commits/about&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-974846157631011191?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/974846157631011191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=974846157631011191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/974846157631011191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/974846157631011191'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/10/new-sympy-release-and-beyond.html' title='New SymPy release and beyond'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-370111157066442205</id><published>2007-08-23T10:47:00.000-07:00</published><updated>2007-08-23T11:36:23.925-07:00</updated><title type='text'>Summer of Code summary</title><content type='html'>Summer of Code deadline has passed, now is the evaluation period, however I think I can already say, that it was a success, since all projects were finished.&lt;br /&gt;&lt;br /&gt;Here is some statistics&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ondra@fuji:~/sympy$ svn log |grep ondrej | wc -l&lt;br /&gt;64&lt;br /&gt;ondra@fuji:~/sympy$ svn log |grep inferno | wc -l&lt;br /&gt;48&lt;br /&gt;ondra@fuji:~/sympy$ svn log |grep fredrik | wc -l&lt;br /&gt;39&lt;br /&gt;ondra@fuji:~/sympy$ svn log |grep mattpap | wc -l&lt;br /&gt;39&lt;br /&gt;ondra@fuji:~/sympy$ svn log |grep lethargo | wc -l&lt;br /&gt;29&lt;br /&gt;ondra@fuji:~/sympy$ svn log |grep brian | wc -l&lt;br /&gt;44&lt;br /&gt;ondra@fuji:~/sympy$ svn log |grep pearu | wc -l&lt;br /&gt;14&lt;br /&gt;ondra@fuji:~/sympy$ svn log |grep Chris.Wu | wc -l&lt;br /&gt;3&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;But one shouldn't draw too many conclusions from that, because people like me prefer to commit very often and people like Mateusz prefer to work offline and then commit when they have a bigger debugged chunk of code ready. Also the logs start with the sympy-merge branch, that was created on July 19. So everything before that (Pearu's contribution and everything that happened before the merging) is not present in the statistics. Another statistics are the Issues changes mailinglist, I did a search for all the names:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Ondrej 974&lt;br /&gt;Fabian 335&lt;br /&gt;Jason 227&lt;br /&gt;Fredrik 151&lt;br /&gt;Robert 104&lt;br /&gt;Mateusz 88&lt;br /&gt;Pearu 76&lt;br /&gt;Brian 65&lt;br /&gt;Chris 28&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The above table are all issues from the beginning of the project. Fabian was the most active and then Jason is catching up recently. :)&lt;br /&gt;&lt;br /&gt;One should have in mind the old joke though: There are three kinds of lies: lies, damned lies, and statistics. &lt;br /&gt;&lt;br /&gt;I'd like to thank all of you for bringing SymPy this far. Basically all major things are working, now comes the phase of polishing things and reducing the number of open Issues and improving doctests, so that SymPy is very easy to use for newcomers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-370111157066442205?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/370111157066442205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=370111157066442205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/370111157066442205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/370111157066442205'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/08/summer-of-code-summary.html' title='Summer of Code summary'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-4990456147223329149</id><published>2007-08-01T08:42:00.001-07:00</published><updated>2007-08-01T11:12:09.830-07:00</updated><title type='text'>Progress</title><content type='html'>The midterm evaluation is over and noone has failed, which is great. We started to work more closely on the #sympy at freenode IRC channel and SymPy has made a tremendous progress in past couple of weeks.&lt;br /&gt;&lt;br /&gt;Our team was joined by Fredrik and Pearu, so now there are 8 regular contributors.&lt;br /&gt;&lt;br /&gt;Fredrik wrote fast floating point arithmetic (in pure Python), faster than the python Decimal module. For example 10 000 decimal digits of Pi can be computed in 0.3s (and one million in less than 20 minutes) with SymPy - just run the pidigits.py in the examples directory. He among other things wrote a fast algorithm for calculating the gamma function, that in some cases is faster than in Mathematica. &lt;br /&gt;&lt;br /&gt;We moved to the new core written by Pearu, that has made everything 10x faster or more. Basically, Pearu very cleverly designed everything so that no operation is made in vain. For example my little hobby relativity.py for calculating the Schwarzschild solution now calculates it in 1s (compared to more than 10s before)!&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ondra@pc232:~/sympy/examples$ time python relativity.py&lt;br /&gt;----------------------------------------&lt;br /&gt;Christoffel symbols:&lt;br /&gt;(1/2)*(FD(1,)(nu))(r)&lt;br /&gt;(1/2)*(FD(1,)(nu))(r)&lt;br /&gt;&lt;br /&gt;(1/2)*exp(-lam(r) + nu(r))*(FD(1,)(nu))(r)&lt;br /&gt;(1/2)*(FD(1,)(lam))(r)&lt;br /&gt;-r/exp(lam(r))&lt;br /&gt;-r*sin(\theta)**2/exp(lam(r))&lt;br /&gt;&lt;br /&gt;1/r&lt;br /&gt;1/r&lt;br /&gt;-sin(\theta)*cos(\theta)&lt;br /&gt;&lt;br /&gt;1/sin(\theta)*cos(\theta)&lt;br /&gt;1/sin(\theta)*cos(\theta)&lt;br /&gt;1/r&lt;br /&gt;1/r&lt;br /&gt;----------------------------------------&lt;br /&gt;Ricci tensor:&lt;br /&gt;(1/2)*exp(-lam(r) + nu(r))*(FD(1, 1)(nu))(r) - 1/4*exp(-lam(r) + nu(r))*(FD(1,)(nu))(r)**2 + 1/r*exp(-lam(r) + nu(r))*(FD(1,)(nu))(r) + (1/2)*exp(-lam(r) + nu(r))*(-(FD(1,)(lam))(r) + (FD(1,)(nu))(r))*(FD(1,)(nu))(r) + (1/4)*exp(-lam(r) + nu(r))*(FD(1,)(lam))(r)*(FD(1,)(nu))(r)&lt;br /&gt;-1/2*(FD(1, 1)(nu))(r) - 1/4*(FD(1,)(nu))(r)**2 + 1/r*(FD(1,)(lam))(r) + (1/4)*(FD(1,)(nu))(r)*(FD(1,)(lam))(r)&lt;br /&gt;1 - 1/exp(lam(r)) + (1/2)*r/exp(lam(r))*(FD(1,)(lam))(r) - 1/2*r/exp(lam(r))*(FD(1,)(nu))(r)&lt;br /&gt;sin(\theta)**2 - sin(\theta)**2/exp(lam(r)) + (1/2)*r*sin(\theta)**2/exp(lam(r))*(FD(1,)(lam))(r) - 1/2*r*sin(\theta)**2/exp(lam(r))*(FD(1,)(nu))(r)&lt;br /&gt;----------------------------------------&lt;br /&gt;solve the Einstein's equations:&lt;br /&gt;lam(r)  =  -log(C1 + C2/r)&lt;br /&gt;metric:&lt;br /&gt;-C1 - C2/r 0 0 0&lt;br /&gt;0 1/(C1 + C2/r) 0 0&lt;br /&gt;0 0 r**2 0&lt;br /&gt;0 0 0 r**2*sin(\theta)**2&lt;br /&gt;&lt;br /&gt;real    0m1.092s&lt;br /&gt;user    0m1.024s&lt;br /&gt;sys     0m0.068s&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now we are in the phase of polishing things so that everything that used to work before works in the new core the same way (or better). Things that remain are printing and some limits are failing, everything else was already fixed.&lt;br /&gt;&lt;br /&gt;One conclusion that can be made is, that Python on today computers is already fast enough to do something useful. Concerning the Pi, it's amusing to read some articles about people trying to calculate many digits, for example in &lt;a href="http://www.boo.net/%7Ejasonp/pipage.html"&gt;one&lt;/a&gt; article, it took them a day to calculate one million digits on Pentium 90 (SymPy can do that in 20 minutes).&lt;br /&gt;&lt;br /&gt;Also I found some page, that I cannot rediscover at the moment, that stated it took like 15 minutes to calculate the Schwarzschild with Maple on some older computer, so I am glad SymPy can do that in 1s (and actually the code is very slow, I am doing some calculations again and again, but I didn't find time yet to optimize it).&lt;br /&gt;&lt;br /&gt;Anyway, the overall progress on SymPy looks very promising, I have no doubts that it will become a useful symbolic python library.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-4990456147223329149?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/4990456147223329149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=4990456147223329149' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/4990456147223329149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/4990456147223329149'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/08/midterm-evaluation-is-over-and-noone.html' title='Progress'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-4030821401789049446</id><published>2007-07-06T08:54:00.000-07:00</published><updated>2007-07-06T09:01:09.911-07:00</updated><title type='text'>USA plans</title><content type='html'>Last 8 days I spent in Porto at a &lt;a href="http://www.fep.up.pt/epsa2007/"&gt;workshop&lt;/a&gt; and my plans for August are:&lt;br /&gt;from August 13 to August 19 I am at Caltech at the &lt;a href="http://www.scipy.org/SciPy2007"&gt;SciPy2007&lt;/a&gt; conference and from August 20 till August 25 at Berkeley at a &lt;a href="http://acts.nersc.gov/events/Workshop2007/"&gt;workshop&lt;/a&gt;. Let me know if anyone is going to be around, we can meet and do some coding together.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next direction in SymPy is to try to merge the sympy-research with the trunk, this should make SymPy a lot faster.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-4030821401789049446?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/4030821401789049446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=4030821401789049446' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/4030821401789049446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/4030821401789049446'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/07/usa-plans.html' title='USA plans'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-1397132047581817498</id><published>2007-06-17T15:57:00.000-07:00</published><updated>2007-06-17T16:12:17.886-07:00</updated><title type='text'>RISC and coding</title><content type='html'>I just returned from the workshop at &lt;a href="http://www.risc.uni-linz.ac.at/"&gt;RISC&lt;/a&gt; where I was with Mateusz. We met a lot of interesting people there and did some coding together, so I really enjoyed that. And we decided we should try to come together again and do some coding. I checked with Robert and he also likes the idea.&lt;br /&gt;&lt;br /&gt;So the preliminary proposition is to meet in Prague at the end of August or the beginning of September, currently me, Mateusz and Robert should be able to make it. It's a lot more enjoyable to work together, because you can discuss things more quickly and more work is done. We will join it with sightseeing and pubs of course. Let us know, if anyone else would like to attend. We will discuss the details later. Most of you are in the US, but those in Europe could take it as a trip to Prague. :)&lt;br /&gt;&lt;br /&gt;The topic will be anyting that interests us, from fixing bugs, to discussing features, implementing new things, creating some nice examples or nontrivial new usages of SymPy.&lt;br /&gt;&lt;br /&gt;As to less distant future - most of the most urgent bugs are fixed, so I will release 0.4.0 tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-1397132047581817498?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/1397132047581817498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=1397132047581817498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/1397132047581817498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/1397132047581817498'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/06/risc-and-coding.html' title='RISC and coding'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-1706468166851856553</id><published>2007-04-29T03:50:00.000-07:00</published><updated>2007-04-29T04:03:55.359-07:00</updated><title type='text'>relativity.py is working</title><content type='html'>I finally got it working. :)&lt;br /&gt;&lt;br /&gt;If you want to try it, go to the examples directory and:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ondra@syslik:~/sympy/examples$ python relativity.py&lt;br /&gt;----------------------------------------&lt;br /&gt;Christoffel symbols:&lt;br /&gt;1/2*\nu'(r)&lt;br /&gt;1/2*\nu'(r)&lt;br /&gt;&lt;br /&gt;1/2*exp(\lambda(r))**(-1)*exp(\nu(r))*\nu'(r)&lt;br /&gt;1/2*\lambda'(r)&lt;br /&gt;-exp(\lambda(r))**(-1)*r&lt;br /&gt;-exp(\lambda(r))**(-1)*sin(\theta)**2*r&lt;br /&gt;&lt;br /&gt;r**(-1)&lt;br /&gt;r**(-1)&lt;br /&gt;-cos(\theta)*sin(\theta)&lt;br /&gt;&lt;br /&gt;sin(\theta)**(-1)*cos(\theta)&lt;br /&gt;sin(\theta)**(-1)*cos(\theta)&lt;br /&gt;r**(-1)&lt;br /&gt;r**(-1)&lt;br /&gt;----------------------------------------&lt;br /&gt;Ricci tensor:&lt;br /&gt;-1/4*exp(\lambda(r))**(-1)*exp(\nu(r))*\lambda'(r)*\nu'(r)+1/2*exp(\lambda(r))**(-1)*exp(\nu(r))*(\nu'(r))'+exp(\lambda(r))**(-1)*exp(\nu(r))*r**(-1)*\nu'(r)+1/4*exp(\lambda(r))**(-1)*exp(\nu(r))*\nu'(r)**2&lt;br /&gt;-1/4*\nu'(r)**2-1/2*(\nu'(r))'+r**(-1)*\lambda'(r)+1/4*\nu'(r)*\lambda'(r)&lt;br /&gt;-exp(\lambda(r))**(-1)-1/2*exp(\lambda(r))**(-1)*r*\nu'(r)-(-1-sin(\theta)**(-2)*cos(\theta)**2)-sin(\theta)**(-2)*cos(\theta)**2+1/2*exp(\lambda(r))**(-1)*r*\lambda'(r)&lt;br /&gt;1/2*exp(\lambda(r))**(-1)*sin(\theta)**2*r*\lambda'(r)-exp(\lambda(r))**(-1)*sin(\theta)**2+sin(\theta)**2-1/2*exp(\lambda(r))**(-1)*sin(\theta)**2*r*\nu'(r)&lt;br /&gt;----------------------------------------&lt;br /&gt;solve the Einstein's equations:&lt;br /&gt;\lambda(r)  =  -log(C1+C2*r**(-1))&lt;br /&gt;metric:&lt;br /&gt;-(C1+C2*r**(-1)) 0 0 0&lt;br /&gt;0 (C1+C2*r**(-1))**(-1) 0 0&lt;br /&gt;0 0 r**2 0&lt;br /&gt;0 0 0 r**2*sin(\theta)**2&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It will start with a general, spherically symmetric metric:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;gdd=Matrix((&lt;br /&gt;  (-exp(nu(r)),0,0,0),&lt;br /&gt;  (0, exp(lam(r)), 0, 0),&lt;br /&gt;  (0, 0, r**2, 0),&lt;br /&gt;  (0, 0, 0, r**2*sin(theta)**2)&lt;br /&gt;  ))&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;notice the two unknown functions nu(r) and lam(r) and it calculates the Christoffel symbols, Riemann and Ricci tensors, then solves the differential (Einstein) equations for nu and lam and substitute it back to the metric to get the Schwarzschild metric (last matrix in the output from relativity.py).&lt;br /&gt;&lt;br /&gt;If you look into the relativity.py, you will see, that when solving the equations, I am a little cheating in that I am assuming&lt;br /&gt;&lt;br /&gt;nu(r) == -lam(r)&lt;br /&gt;&lt;br /&gt;that can be shown by playing with the equations. That is so that I get just one differential equation for just one unknown function and then I plug it into the dsolve() and I am done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-1706468166851856553?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/1706468166851856553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=1706468166851856553' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/1706468166851856553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/1706468166851856553'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/04/relativitypy-is-working.html' title='relativity.py is working'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-3624187493711521704</id><published>2007-04-24T08:40:00.000-07:00</published><updated>2007-05-02T04:45:10.568-07:00</updated><title type='text'>Some more ideas what I want SymPy to do</title><content type='html'>Today I found several Mathematica packages for doing things in general relativity and quantum field theory, I updated the links &lt;a href="http://code.google.com/p/sympy/wiki/Motivation"&gt;here&lt;/a&gt;. I found &lt;a href="http://metric.iem.csic.es/Martin-Garcia/xAct/"&gt;xTensor&lt;/a&gt;, &lt;a href="http://fma.if.usp.br/%7Ealysson/SusyMath/"&gt;SusyMath&lt;/a&gt; and &lt;a href="http://www.aei.mpg.de/%7Epeekas/cadabra/"&gt;cadabra&lt;/a&gt; (this one is written in C++). Many more can be found in the &lt;a href="http://www.sciencedirect.com/science/journal/00104655"&gt;Computer Physics Communications&lt;/a&gt; journal (CPC).                Those packages are opensource, but depend on a proprietary product. And I cannot help myself, but when I look at the sources, I just find the Mathematica language completely messy.&lt;br /&gt;&lt;br /&gt;So now I am concentrating to get the relativity.py working and then calculate something that they did. And if it turns out that it is reasonably fast (i.e. I will get the correct result in minutes, or hours) and if the source code is going to be short and nice (I hope so), I'll try to write an article about it to CPC. As a side effect, it will be a real world test for SymPy. Also I would like then to do the same calculation in SAGE, to see how it compares to SymPy. What I don't like in SAGE is that I prefer to import the library as a normal python module and I don't want to be trapped in another environment (SAGE is actually preproccessing the input a little, like converting ^ to ** etc, which I don't like at all). I think the symbolic package should be a regular standard python library. And who knows python, should easily understand how to work with that.&lt;br /&gt;&lt;br /&gt;Right now I am struggling with the mattern matching (issue &lt;a href="http://code.google.com/p/sympy/issues/detail?id=82"&gt;82&lt;/a&gt;) in order for the dsolve() to be able to solve the differential equations that arise in relativity.py.&lt;br /&gt;I would like to make it into 0.4. I think we can release a little after sympy gets into debian unstable (hopefuly in a week or two), so that we can check how it behaves etc. and fix everything for 0.4.&lt;br /&gt;&lt;br /&gt;I know that there are still some issues, that are quite embarrassing they still don't work in SymPy, but I think more important is to "release early, release often".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-3624187493711521704?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/3624187493711521704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=3624187493711521704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/3624187493711521704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/3624187493711521704'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/04/some-more-ideas-what-i-want-sympy-to-do.html' title='Some more ideas what I want SymPy to do'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-5898331693529810430</id><published>2007-04-19T03:57:00.000-07:00</published><updated>2007-04-19T04:28:52.413-07:00</updated><title type='text'>some future plans</title><content type='html'>If everything goes well, SymPy should be quite well tested when the summer is over and GSoC projects will improve it in the areas: geometry, graphing, concrete mathematics, linear algebra and polynomial equations (and stuff).&lt;br /&gt;&lt;br /&gt;For me SymPy starts to be usable enough so that I can actually calculate something interesting. I started with the &lt;a href="http://en.wikipedia.org/wiki/Deriving_the_Schwarzschild_solution"&gt;Schwarzschild solution&lt;/a&gt; to the Einstein's equations of the general relativity. So I start with a diagonal metric tensor, and calculate the Ricci tensor using SymPy and this works remarkably well and I get the correct differential equations. Now I am trying to make the SymPy's dsolve() to solve them. And then I would like to make pictures like this &lt;a href="http://en.wikipedia.org/wiki/Schwarzschild_metric#Embedding_Schwarzschild_space_in_Euclidean_space"&gt;one&lt;/a&gt; using the graphing module. The code is in examples/relativity.py&lt;br /&gt;&lt;br /&gt;My other application is the Quantum Field Theory, where I am trying to calculate some simple cross sections, however, SymPy is pretty slow on that, but when we &lt;a href="http://grupododo.com/seo/?p=95"&gt;optimize&lt;/a&gt; the polynomials stuff, it should work just fine. The code is in examples/qft.py&lt;br /&gt;&lt;br /&gt;Being able to use symbolic manipulation in the Python language allows me to be really productive. And also it's fun, because it's a pleasure, like any other programming in Python. Programming in Maple is not a pleasure for me at all.&lt;br /&gt;&lt;br /&gt;So over the summer, I'll try to make SymPy calculate the above things because that will show, if SymPy is usable, or not. Besides that, I want to polish the web page, and documentation and installation especially. And get it to Debian and Ubuntu.&lt;br /&gt;&lt;br /&gt;Is any of you using something else than Debian/Ubuntu/Windows? If so, would you be willing to create a package for your distribution? :)&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-5898331693529810430?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/5898331693529810430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=5898331693529810430' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/5898331693529810430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/5898331693529810430'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/04/some-future-plans.html' title='some future plans'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2520472460430880330.post-2078654412730944576</id><published>2007-04-15T04:12:00.000-07:00</published><updated>2007-04-15T04:59:37.341-07:00</updated><title type='text'>SymPy</title><content type='html'>This blog will be used to coordinate the Google Summer of Code for the &lt;a href="http://code.google.com/p/sympy/"&gt;SymPy&lt;/a&gt; project.&lt;br /&gt;&lt;div style="text-align: left;"&gt;I'm Ondrej Certik, the author of SymPy, and together with &lt;a href="http://grupododo.com/seo/"&gt;Fabian Seoane&lt;/a&gt; (who joined SymPy in February 2007), Jim Jewett and Mike Haertel we'll be mentoring 5 students: Robert, Mateusz, Brian, Chris and Jason.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Here is a picture of me in Prague:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Cb7_IVMD3C4/RiIRMksib3I/AAAAAAAACC0/g0MaCTOJ5bo/s1600-h/ondrej.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_Cb7_IVMD3C4/RiIRMksib3I/AAAAAAAACC0/g0MaCTOJ5bo/s320/ondrej.jpg" alt="" id="BLOGGER_PHOTO_ID_5053620639569702770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;and in Washington:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Cb7_IVMD3C4/RiIRmksib4I/AAAAAAAACC8/-7TDTc4cRTg/s1600-h/picture+084.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_Cb7_IVMD3C4/RiIRmksib4I/AAAAAAAACC8/-7TDTc4cRTg/s320/picture+084.jpg" alt="" id="BLOGGER_PHOTO_ID_5053621086246301570" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2520472460430880330-2078654412730944576?l=sympy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sympy.blogspot.com/feeds/2078654412730944576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2520472460430880330&amp;postID=2078654412730944576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/2078654412730944576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2520472460430880330/posts/default/2078654412730944576'/><link rel='alternate' type='text/html' href='http://sympy.blogspot.com/2007/04/sympy.html' title='SymPy'/><author><name>Ondřej Čertík</name><uri>http://www.blogger.com/profile/02845032202161204018</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Cb7_IVMD3C4/RiIRMksib3I/AAAAAAAACC0/g0MaCTOJ5bo/s72-c/ondrej.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
