# SymPy 0.7.0¶

28 Jun 2011

## Major Changes¶

Polys

New internal representations of dense and sparse polynomials (see 6aecdb7, 31c9aa4)

Implemented algorithms for real and complex root isolation and counting (see 3acac67, 4b75dae, fa1206e, 103b928, 45c9b22, 8870c8b, b348b30)

Improved Gröbner bases algorithm (see ff65e9f, 891e4de, 310a585)

Implemented efficient orthogonal polynomials (see b8fbd59)

Added configuration framework for polys (see 33d8cdb, 7eb81c9)

Function for computing minimal polynomials (see 88bf187, f800f95)

Function for generating Viete’s formulas (see 1027408)

`roots()`

supports more classes of polynomials (e.g. cyclotomic) (see d8c8768, 75c8d2d)Added a function for recognizing cyclotomic polynomials (see b9c2a9a)

Added a function for computing Horner form of polynomials (see 8d235c7)

Added a function for computing symmetric reductions of polynomials (see 6d560f3)

Added generators of Swinnerton-Dyer, cyclotomic, symmetric, random and interpolating polynomials (see dad03dd, 6ccf20c, dc728d6, 2f17684, 3004db8)

Added a function computing isolation intervals of algebraic numbers (see 37a58f1)

Polynomial division (

`div()`

,`rem()`

,`quo()`

) now defaults to a field (see a72d188)Added wrappers for numerical root finding algorithms (see 0d98945, f638fcf)

Added symbolic capabilities to

`factor()`

,`sqf()`

and related functions (see d521c7f, 548120b, f6f74e6, b1c49cd, 3527b64)`together()`

was significantly improved (see dc327fe)Added support for iterable containers to

`gcd()`

and`lcm()`

(see e920870)Added a function for constructing domains from coefficient containers (see a8f20e6)

Implemented greatest factorial factorization (see d4dbbb5)

Added partial fraction decomposition algorithm based on undetermined coefficient approach (see 9769d49, 496f08f)

`RootOf`

and`RootSum`

were significantly improved (see f3e432, 4c88be6, 41502d7)Added support for gmpy (GNU Multiple Precision Arithmetic Library) (see 38e1683)

Allow to compile

`sympy.polys`

with Cython (see afb3886)Improved configuration of variables in

`Poly`

(see 22c4061)Added documentation based on Wester’s examples (see 1c23792)

Irreducibility testing over finite fields (see 17e8f1f)

Allow symmetric and non-symmetric representations over finite fields (see 60fbff4)

More consistent factorization forms from

`factor()`

and`sqf()`

(see 5df77f5)Added support for automatic recognition algebraic extensions (see 7de602c)

Implemented Collins’ modular algorithm for computing resultants (see 950969b)

Implemented Berlekamp’s algorithm for factorization over finite fields (see 70353e9)

Implemented Trager’s algorithm for factorization over algebraic number fields (see bd0be06)

Improved Wang’s algorithm for efficient factorization of multivariate polynomials (see 425e225)

Quantum

Symbolic, abstract dirac notation in

`sympy.physics.quantum`

. This includes operators, states (bras and kets), commutators, anticommutators, dagger, inner products, outer products, tensor products and Hilbert spacesSymbolic quantum computing framework that is based on the general capabilities in

`sympy.physics.quantum`

. This includes qubits (`sympy.physics.quantum.qubit`

), gates (`sympy.physics.quantum.gate`

), Grover’s algorithm (`sympy.physics.quantum.grover`

), the quantum Fourier transform (`sympy.physics.quantum.qft`

), Shor’s algorithm (`sympy.physics.quantum.shor`

) and circuit plotting (`sympy.physics.quantum.circuitplot`

)Second quantization framework that inclues creation/anihilation operators for both Fermions and Bosons and Wick’s theorem for Fermions (

`sympy.physics.secondquant`

).Symbolic quantum angular momentum (spin) algebra (

`sympy.physics.quantum.spin`

)Hydrogen wave functions (Schroedinger) and energies (both Schroedinger and Dirac)

Wave functions and energies for 1D harmonic oscillator

Wave functions and energies for 3D spherically symmetric harmonic oscillator

Wigner and Clebsch Gordan coefficients

Everything else

Implement symarray, providing numpy nd-arrays of symbols.

update mpmath to 0.16

Add a tensor module (see this report)

A lot of stuff was being imported with

`from sympy import *`

that shouldn’t have been (like`sys`

). This has been fixed.

Assumptions:

Concrete

Core:

Split

`Atom`

into`Atom`

and`AtomicExpr`

(see 965aa91)Various

`sympify()`

improvementsAdded functionality for action verbs (many functions can be called both as global functions and as methods e.g.

`a.simplify() == simplify(a)`

)Improve handling of rational strings (see 053a045, sympy/sympy#4877)

Major changes to factoring of integers (see 273f450, sympy/sympy#5102)

Optimized

`.has()`

(see c83c9b0, sympy/sympy#5079, d86d08f)Improvements to power (see c8661ef, sympy/sympy#5062)

Added range and lexicographic syntax to

`symbols()`

and`var()`

(see f6452a8, 9aeb220, 957745a)Added

`modulus`

argument to`expand()`

(see 1ea5be8)Allow to convert

`Interval`

to relational form (see 4c269fe)SymPy won’t manipulate minus sign of expressions any more (see 6a26941, 9c6bf0f, e9f4a0a)

`Real`

and`.is_Real`

were renamed to`Float`

and`.is_Float`

.`Real`

and`.is_Real`

still remain as deprecated shortcuts to`Float`

and`is_Float`

for backwards compatibility. (see abe1c49)Methods coeff and as_coefficient are now non-commutative aware. (see a4ea170)

Geometry:

Various improvements to Ellipse

Updated documentation to numpy standard

Polygon and Line improvements

Allow all geometry objects to accept a tuple as

`Point`

args

Integrals:

Various improvements (see e.g. sympy/sympy#4871, sympy/sympy#5098, sympy/sympy#5091, sympy/sympy#5086)

isympy

Logic

implies object adheres to negative normal form

Create new boolean class,

`logic.boolalg.Boolean`

Added XOR operator (^) support

Added If-then-else (ITE) support

Added the dpll algorithm

Functions:

Added Piecewise, B-splines

Spherical Bessel function of the second kind implemented

Add series expansions of multivariate functions (see d4d351d)

Matrices:

Add elementwise product (Hadamard product)

Extended QR factorization for general full ranked mxn matrices

Remove deprecated functions

`zero()`

,`zeronm()`

,`one()`

(see 5da0884)Added cholesky and LDL factorizations, and respective solves.

Added functions for efficient triangular and diagonal solves.

`SMatrix`

was renamed to`SparseMatrix`

(see acd1685)

Printing:

Implemented pretty printing of binomials (see 58c1dad)

`sympy.printing`

now supports ordering of terms and factors (see 859bb33)Lexicographic order is now the default. Now finally things will print as

`x**2 + x + 1`

instead of`1 + x + x**2`

, however series still print using reversed ordering, e.g.`x - x**3/6 + O(x**5)`

. You can get the old order (and other orderings) by setting the`-o`

option to isympy (see 08b4932, a30c5a3)

Series:

Implement a function to calculate residues,

`residue()`

Implement nseries and lseries to handle

`x0 != 0`

, series should be more robust now (see 2c99999, sympy/sympy#5221 - sympy/sympy#5223)Improvements to Gruntz algorithm

Simplify:

Solvers:

Utilities:

Improve cartes, for generating the Cartesian product (see b1b10ed)

Added a function computing topological sort of graphs (see b2ce27b)

Allow to setup a customized printer in

`lambdify()`

(see c1ad905)`flatten()`

was significantly improved (see 31ed8d7)Major improvements to the Fortran code generator (see report, 3383aa3, 7ab2da2, etc)

## Compatibility breaks¶

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.

no longer support creating matrices without brackets (see sympy/sympy#4029)

Renamed

`sum()`

to`summation()`

(see 3e763a8, sympy/sympy#4475, sympy/sympy#4826). This was changed so that it no longer overrides the built-in`sum()`

. The unevaluated summation is still called`Sum()`

.Renamed

`abs()`

to`Abs()`

(see 64a12a4, sympy/sympy#4826). This was also changed so that it no longer overrides the built-in`abs()`

. Note that because of`__abs__`

magic, you can still do`abs(expr)`

with the built-in`abs()`

, and it will return`Abs(expr)`

.Renamed

`max_()`

and`min_()`

to now`Max()`

and`Min()`

(see 99a271e, sympy/sympy#5252)Changed behaviour of

`symbols()`

.`symbols('xyz')`

gives now a single symbol (`'xyz'`

), not three (`'x'`

,`'y'`

and`'z'`

) (see f6452a8). Use`symbols('x,y,z')`

or`symbols('x y z')`

to get three symbols. The`each_char`

option will still work but is being deprecated.Split class

`Basic`

into new classes`Expr`

,`Boolean`

(see a0ab479, 635d89c). Classes that are designed to be part of standard symbolic expressions (like`x**2*sin(x)`

) should subclass from`Expr`

. More generic objects that do not work in symbolic expressions but still want the basic SymPy structure like`.args`

and basic methods like`.subs()`

should only subclass from`Basic`

.`as_basic()`

method was renamed to`as_expr()`

to reflect changes in the core (see e61819d, 80dfe91)Methods

`as_coeff_terms`

and`as_coeff_factors`

were renamed to`as_coeff_mul`

and`as_coeff_add`

, respectively.Removed the

`trim()`

function. The function is redundant with the new polys. Use the`cancel()`

function instead.The

`assume_pos_real`

option to`logcombine()`

was renamed to`force`

to be consistant with similar`force`

options to other functions.

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 `git log sympy-0.6.7..sympy-0.7.0`

will show all commits made between this release and the last. You can also see the issues closed since the last release here.