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()
andlcm()
(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
andRootSum
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()
andsqf()
(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 (likesys
). This has been fixed.
Assumptions:
Concrete
Core:
Split
Atom
intoAtom
andAtomicExpr
(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()
andvar()
(see f6452a8, 9aeb220, 957745a)Added
modulus
argument toexpand()
(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 toFloat
and.is_Float
.Real
and.is_Real
still remain as deprecated shortcuts toFloat
andis_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 toSparseMatrix
(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 of1 + 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()
tosummation()
(see 3e763a8, sympy/sympy#4475, sympy/sympy#4826). This was changed so that it no longer overrides the built-insum()
. The unevaluated summation is still calledSum()
.Renamed
abs()
toAbs()
(see 64a12a4, sympy/sympy#4826). This was also changed so that it no longer overrides the built-inabs()
. Note that because of__abs__
magic, you can still doabs(expr)
with the built-inabs()
, and it will returnAbs(expr)
.Renamed
max_()
andmin_()
to nowMax()
andMin()
(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). Usesymbols('x,y,z')
orsymbols('x y z')
to get three symbols. Theeach_char
option will still work but is being deprecated.Split class
Basic
into new classesExpr
,Boolean
(see a0ab479, 635d89c). Classes that are designed to be part of standard symbolic expressions (likex**2*sin(x)
) should subclass fromExpr
. 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 fromBasic
.as_basic()
method was renamed toas_expr()
to reflect changes in the core (see e61819d, 80dfe91)Methods
as_coeff_terms
andas_coeff_factors
were renamed toas_coeff_mul
andas_coeff_add
, respectively.Removed the
trim()
function. The function is redundant with the new polys. Use thecancel()
function instead.The
assume_pos_real
option tologcombine()
was renamed toforce
to be consistant with similarforce
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.