Release Notes for 1.13  sympy/sympy GitHub Wiki
These are the release notes for SymPy 1.13. You can also find release notes for previous versions.
SymPy 1.13 has not been released yet.
This version of SymPy has been tested on Python 3.8, 3.9, 3.10, 3.11, and PyPy. See our Python version support policy for more information on when we plan to drop support for older Python versions.
Install SymPy with
pip install U sympy
or if you use Anaconda
conda install sympy
Highlights
There are many changes in 1.13 (see below).
Backwards compatibility breaks and deprecations
Changes

algebras
 Fixed definition of Quaternion angle method. (#24926 by @evbernardes)

codegen
 Implemented diff support for
MatrixSolve
. (#24865 by @TJStienstra)
 Implemented diff support for

core

A bug preventing the use of the old assumptions under
evaluate(False)
was fixed. (#23693 by @oscarbenjamin) 
A rare bug from using Symbol in multithreaded code was fixed. Previously an exception might be raised when comparing two symbols while querying an assumption in a parallel thread. (#24882 by @oscarbenjamin)

Symbols with assumptions are now encoded more efficiently in pickles reducing the number of bytes needed for each symbol. (#24882 by @oscarbenjamin)

Multiplication of large expressions was made faster by reducing unnecessary assumptions queries. (#24884 by @oscarbenjamin)

Fix
as_coeff_Mul
to return(0.0, 1)
forFloat(0.0)
(#24772 by @meganly)


functions
 Use Lucas' Theorem Generalization to calculate binomial coefficients modulo
n
. (#24891 by @LaurenceWarne)
 Use Lucas' Theorem Generalization to calculate binomial coefficients modulo

geometry

integrals

matrices

Fixed bug where LUsolve() ignored the iszerofunc kwarg. (#24950 by @moorepants)

Implemented diff support for
BlockMatrix
. (#24866 by @TJStienstra) 
Implemented
hat
andvee
operations for matrices. (#24825 by @evbernardes)


ntheory
 Created functions
binomial_mod
and_binomial_mod_prime_power
which can be used to calculate large binomial coefficients modulo arbitrary numbers (#24891 by @LaurenceWarne)
 Created functions

physics.mechanics

Implemented
Force
andTorque
objects to store the location and vector of the load. (#24924 by @smichr and @TJStienstra) 
BREAKING: moved the gravity function from
physics.mechanics.functions.py
tophysics.mechanics.loads.py
(#24924 by @smichr and @TJStienstra) 
Implemented
Inertia
, an object to store the quantity and reference of an inertia. (#24889 by @TJStienstra) 
BREAKING: moved the inertia functions from
physics.mechanics.functions.py
tophysics.mechanics.inertia.py
(#24889 by @TJStienstra) 
Added the option to specify the linear solvers used in
KanesMethod
(#24905 by @TJStienstra) 
Fixed a bug with
KanesMethod.forcing
, which could formerly contain derivatives of the generalized coordinates. (#24890 by @TJStienstra) 
Make
Particle
andRigidBody
compatible with the joints framework. (#24830 by @TJStienstra)


physics.units

physics.vector
 Added access to unit dyads and unit dyadic directly from ReferenceFrame objects. (#24974 by @kostasrigan)

polys

Fixed a bug where
CRootOf
raisedKeyError
on irreducibles with negative lead coeff. (#24979 by @skieffer) 
A bug in factor_list was fixed. Previously factor_list might fail with an exception when factoring over EX e.g. an expression involving radicals like
sqrt(2)
. This was causing some integral computations to fail with the same exception. (#24958 by @oscarbenjamin)


sets
Intersection.__new__
now accepts only an explicit keywordonly argumentevaluate
rather than**kwargs
. (#24794 by @JayPatankar and @oscarbenjamin)

tensor
 fix bug in array_derivatives dispatch logic that prevented simplification of array exprs. (#24854 by @Skylion007)

other
 Move the development workflow page from the wiki to the contributing section of the documentation. (#23879 by @asmeurer and @oscarbenjamin)