# SymPy 0.7.3¶

13 Jul 2013

## Major changes¶

- Integration
- This release includes Risch integration algorithm from
Aaron Meurer’s 2010 Google Summer of Code project.
This makes
`integrate`

much more powerful and much faster for the supported functions. The algorithm is called automatically from`integrate()`

. For now, only transcendental elementary functions containing`exp`

or`log`

are supported. To access the algorithm directly, use`integrate(expr, x, risch=True)`

. The algorithm has the ability to prove that integrals are nonelementary. To determine if a function is nonelementary, integrate using`risch=True`

. If the resulting`Integral`

class is an instance of`NonElementaryIntegral`

, then it is not elementary (otherwise, that part of the algorithm has just not been implemented yet).

- This release includes Risch integration algorithm from
Aaron Meurer’s 2010 Google Summer of Code project.
This makes
- ODE
- Built basic infrastructure of the PDE module (sympy/sympy#1970)

- Theano Interaction
- SymPy expressions can now be translated into Theano expressions for numeric evaluation. This includes most standard scalar operations (e.g.
`sin`

,`exp`

,`gamma`

, but not`beta`

or`MeijerG`

) and matrices. This system generally outperforms`lambdify`

and`autowrap`

but does require Theano to be installed.

- SymPy expressions can now be translated into Theano expressions for numeric evaluation. This includes most standard scalar operations (e.g.
- Matrix Expressions
- Matrix expressions now support inference using the new assumptions system. New predicates include
`invertible`

,`symmetric`

,`positive_definite`

,`orthogonal`

, …. - New operators include
`Adjoint`

,`HadamardProduct`

,`Determinant`

,`MatrixSlice`

,`DFT`

. Also, preliminary support exists for factorizations like`SVD`

and`LU`

.

- Matrix expressions now support inference using the new assumptions system. New predicates include
- Context manager for New Assumptions
- Added the
`with assuming(*facts)`

context manager for new assumptions. See blogpost.

- Added the

## Compatibility breaks¶

- This is the last version of SymPy to support Python 2.5.
- The IPython extension, i.e.,
`%load_ext sympy.interactive.ipythonprinting`

is deprecated. Use`from sympy import init_printing; init_printing()`

instead. See sympy/sympy#7013. - The
`viewer='file'`

option to`preview`

without a file name is deprecated. Use`filename='name'`

in addition to`viewer='file'`

. See sympy/sympy#7018. - The deprecated syntax
`Symbol('x', dummy=True)`

, which had been deprecated since 0.7.0, has been removed. Use`Dummy('x')`

or`symbols('x', cls=Dummy)`

instead. See sympy/sympy#6477. - The deprecated
`Expr`

methods`as_coeff_terms`

and`as_coeff_factors`

, which have been deprecated in favor of`as_coeff_mul`

and`as_coeff_add`

, respectively (see also`as_coeff_Mul`

and`as_coeff_Add`

), were removed. The methods had been deprecated since SymPy 0.7.0. See sympy/sympy#6476. - The spherical harmonics have been completely rewritten. See sympy/sympy#1510.

## Minor changes¶

- Solvers
- Added enhancements and improved the methods of solving exact differential equation. See sympy/sympy#1955 and sympy/sympy#1823.
- Support for differential equations with linear coefficients and those that can be reduced to separable and linear form. See sympy/sympy#1940, sympy/sympy#1864 and sympy/sympy#1883.
- Support for first order linear general PDE’s with constant coefficients (sympy/sympy#2109).
- Return all found independent solutions for underdetermined systems.
- Handle recursive problems for which
`y(0) = 0`

. - Handle matrix equations.

- Integration
`integrate`

will split out integrals into Piecewise expressions when conditions must hold for the answer to be true. For example,`integrate(x**n, x)`

now gives`Piecewise((log(x), Eq(n, -1), (x**(n + 1)/(n + 1), True))`

(previously it just gave`x**(n + 1)/(n + 1)`

).- Calculate Gauss-Legendre and Gauss-Laguerre points and weights (sympy/sympy#1497).
- Various new error and inverse error functions (sympy/sympy#1703).
- Use in heurisch for more symmetric and nicer results.
- Gruntz for expintegrals and all new erf*.
- Li, li logarithmic integrals (sympy/sympy#1708).
- Integration of li/Li by heurisch (sympy/sympy#1712).
- elliptic integrals, complete and incomplete.
- Integration of complete elliptic integrals by meijerg.
- Integration of Piecewise with symbolic conditions.
- Fixed many wrong results of DiracDelta integrals.

- Logic
- Addition of SOPform and POSform functions to sympy.logic to generate boolean expressions from truth tables.
- Addition of simplify_logic function and enabling
`simplify()`

to reduce logic expressions to their simplest forms. - Addition of bool_equals function to check equality of boolean expressions and return a mapping of variables from one expr to other that leads to the equality.
- Addition of disjunctive normal form methods - to_dnf, is_dnf

- Others
- gmpy version 2 is now supported
- Added
`is_algebraic_expr()`

method (sympy/sympy#2176). - Many improvements to the handling of noncommutative symbols:
- Better support in simplification functions, e.g.
`factor`

,`trigsimp`

- Better integration with
`Order()`

- Better pattern matching

- Better support in simplification functions, e.g.
- Improved pattern matching including matching the identity.
- normalizes Jacobi polynomials
- Quadrature rules for orthogonal polynomials in arbitrary precision (hermite, laguerre, legendre, gen_legendre, jacobi)
- summation of harmonic numbers
- Many improvements of the polygamma functions
- evaluation at special arguments
- Connections to harmonic numbers
- structured full partial fraction decomposition (mainly interesting for developers)
- besselsimp improvements
- Karr summation convention
- New spherical harmonics
- improved minimal_polynomial using composition of algebraic numbers (sympy/sympy#2038).
- faster integer polynomial factorization (sympy/sympy#2148).
- Euler-Descartes method for quartic equations (sympy/sympy#1947)
- algebraic operations on tensors (sympy/sympy#1700).
- tensor canonicalization (sympy/sympy#1644).
- Handle the simplification of summations and products over a KroneckerDelta.
- Implemented LaTeX printing of DiracDelta, Heaviside, KroneckerDelta and LeviCivita, also many Matrix expressions.
- Improved LaTeX printing of fractions, Mul in general.
- IPython integration and printing issues have been ironed out.
- Stats now supports discrete distributions (e.g.
`Poisson`

) by relying on`Summation`

objects - Added DOT printing for visualization of expression trees
- Added information about solvability and nilpotency of named groups.