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

  • codegen

  • 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) for Float(0.0) (#24772 by @meganly)

  • functions

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

    • Fixed a bug with Polygon.angles. Formerly, incorrectly gave conjugates of interior angles for edge cases. (#24960 by @smichr and @TiloRC)
  • integrals

    • A keyword fdict is added to laplace_transform and inverse_laplace_transform that makes it possible to simplify unevaluated transforms. (#24799 by @hanspi42)
  • matrices

  • 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)
  • physics.mechanics

    • Implemented Force and Torque 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 to physics.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 to physics.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 and RigidBody compatible with the joints framework. (#24830 by @TJStienstra)

  • physics.units

    • Corrected the bug in multiplication between prefix and quantity, e.g. milli * W = 1 which should be W/1000. (#24909 by @HieuLCM)
  • physics.vector

    • Added access to unit dyads and unit dyadic directly from ReferenceFrame objects. (#24974 by @kostas-rigan)
  • polys

    • Fixed a bug where CRootOf raised KeyError 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

  • tensor

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

Authors