Log message:
pysympy: Update to 1.7
Changelog:
SymPy 1.7 was released on 29th November 2020.
This version of SymPy has been tested on Python 3.6, 3.7, 3.8, 3.9 and PyPy.
See our Python version support policy for more information on when we plan to
drop support for older Python versions.
Note in particular that SymPy 1.5.1 was the last release to support Python 2.7.
SymPy 1.7 will not work on Python 2.7. Python 2.7 users should install SymPy
1.5.1 and will not be able to install any further SymPy updates without
updating to Python 3.
Install SymPy with
pip install U sympy
or if you use Anaconda
conda install sympy
Highlights
There are many changes in 1.7 (see below).
Backwards compatibility breaks and deprecations
* core
+ Modules and names that were accidentally importable from sympy are no
longer importable. In sympy 1.6 importing and using these names would
give a deprecation warning. In sympy 1.7 these names are removed. As an
example from sympy import add would need to be from sympy.core import
add or import sympy.core.add as add. (#19554 by @oscarbenjamin)
+ DEPRECATION: Using nonExpr args in Add, Mul or Pow is now deprecated (
#19445 by @oscarbenjamin)
* diffgeom
+ Manifold.patches attribute is deprecated. (#19368 by @JSS95 and
@mcplsympy)
+ Patch.coord_systems attribute is deprecated. (#19368 by @JSS95 and
@mcplsympy)
+ Class signature names of CoordSystem is deprecated. CoordinateSymbol
class and CoordSystem.symbols attribute are introduced instead. (#19368
by @JSS95 and @mcplsympy)
+ CoordSystem.transforms, CoordSystem.connect_to, and
CoordSystem.coord_tuple_transform_to are deprecated. Class signature
relations, CoordSystem.transformation and CoordSystem.transform are
introduced instead. (#19368 by @JSS95 and @mcplsympy)
* printing
+ sympy.printing.pretty.pretty_symbology.xstr has been deprecated (#20081
by @ericwieser)
+ The unicode argument to sympy.printing.stringpict.prettyForm has been
deprecated (#20081 by @ericwieser)
+ The deprecation of calling preview with viewer="StringIO" is now
expired instead of forgotten (a regression in 1.6.0) (#19905 by
@ericwieser)
+ The modules sympy.printing.ccode, sympy.printing.fcode, and
sympy.printing.cxxcode have been renamed to sympy.printing.c,
sympy.printing.fortran, and sympy.printing.cxx, respectively. This was
done to avoid conflicts that occur when a module name is the same as a
function name. The modules are still importable under their old names
but doing so is deprecated and a warning will be given (#19908 by
@asmeurer)
+ from sympy.printing.codeprinter import Assignment no longer works. You
should use from sympy.codegen import Assignment, which is where
Assignment has lived since SymPy 1.1. (#19908 by @asmeurer)
+ Calling preview with viewer="file" no longer looks for a file
executable (a regression in 1.6.0) (#19905 by @ericwieser)
* solvers
+ solve_linear_system is now a thin wrapper for linsolve. It is
recommended to use linsolve in new code. solve_linear_system maybe
deprecated or removed in future. (#18814 by @oscarbenjamin)
* utilities
+ find_executable is deprecated in favor of the builtin shutil.which. (#
19634 by @ericwieser)
Changes
* algebras
+ Added DocString for integrate function of quaternion class. (#19410 by
@mohitshah3111999)
* codegen
+ Added support for generating calls to scipy.special.cosm1. (#20011 by
@bjodah)
+ sympy.codegen and sympy.combinatorics are no longer imported as part of
from sympy import *. The codegen and combinatorics modules do not have
any names that are included in the toplevel namespace, so their being
imported with the toplevel SymPy was a mistake. This improves the
import time of from sympy import *. (#19908 by @asmeurer)
+ Added support for generating calls to numpy.logaddexp &
numpy.logaddexp2. (#19880 by @bjodah)
+ Fix bugs to the parser of matrix expressions in order to build
CodegenArray objects correctly. (#19197 by @Upabjojr)
* combinatorics
+ Fixed a bug in PermutationGroup.minimal_blocks caused by modifying a
list while iterating over its indices. (#19954 by @ilyapchelintsev)
* concrete
+ Implemented Raabe's Test (#18656 by @sachin4099)
* core
+ Fixed a few broken cases of expr.is_integer (#20450 by @coproc and
@tbennun)
+ Modules and names that were accidentally importable from sympy are no
longer importable. In sympy 1.6 importing and using these names would
give a deprecation warning. In sympy 1.7 these names are removed. As an
example from sympy import add would need to be from sympy.core import
add or import sympy.core.add as add. (#19554 by @oscarbenjamin)
+ Zero raised to power Negative Infinity gives ComplexInfinity(zoo)
instead of zero (#20212 by @sidhu1012)
+ Extensible add, mul and power functions are introduced to allow sympy
objects to define what classes should be used for them in place of Add,
Mul and Pow (e.g. matrices use MatAdd). This is an experimental
approach aimed at enabling the behaviour of core routines (expand,
collect, etc) to be customised by userdefined types (e.g. MatAdd
rather than Add). This mechanism is still experimental, is not fully
implemented across the core and might be changed or removed in a future
release of sympy. (#19463 by @JSS95 and @mcplsympy)
+ divmod on sympy.Float with 0 numerator now results in (0, 0). (#20109
by @eriknw)
+ Dict operations no longer automatically converts strings into SymPy
types. (#19911 by @asmeurer)
+ Dict operations no longer raise SympifyError. (#19911 by @asmeurer)
+ Fixes _eval_nseries() function of power.py (#19508 by @sachin4099)
+ Remove optional dependency on fastcache (#19492 by @pbrady)
+ DEPRECATION: Using nonExpr args in Add, Mul or Pow is now deprecated (
#19445 by @oscarbenjamin)
+ When creating an Add or Mul with evaluate=False identities (0 or 1) are
no longer removed. (#19450 by @oscarbenjamin)
+ Fixes _eval_nseries() function of mul.py (#19369 by @sachin4099)
+ Sum is now included in count_ops results (#19261 by @smichr)
+ match has been optimized to improve termmatching in Add (#19261 by
@smichr)
+ match will automatically ignore bound symbols when matching (#19261 by
@smichr)
+ match results will no longer contain extraneous symbols (only those
requested) (#19261 by @smichr)
+ as_dummy should give a canonical result for expressions having bound
symbols (#19261 by @smichr)
+ Lambdas written in terms of different symbols will no longer compare
equal; this was an abuse of the Python == operator (#19261 by @smichr)
+ expr: A new method is_meromorphic is added. (#19306 by @jksuom)
* diffgeom
+ Manifold.patches attribute is deprecated. (#19368 by @JSS95 and
@mcplsympy)
+ Patch.coord_systems attribute is deprecated. (#19368 by @JSS95 and
@mcplsympy)
+ Class signature names of CoordSystem is deprecated. CoordinateSymbol
class and CoordSystem.symbols attribute are introduced instead. (#19368
by @JSS95 and @mcplsympy)
+ CoordSystem.transforms, CoordSystem.connect_to, and
CoordSystem.coord_tuple_transform_to are deprecated. Class signature
relations, CoordSystem.transformation and CoordSystem.transform are
introduced instead. (#19368 by @JSS95 and @mcplsympy)
+ CoordSystem.jacobian_determinant method is introduced. (#19368 by
@JSS95 and @mcplsympy)
* functions
+ lambdify added a warning when args is a set. (#19792 by @foice,
@RobertoFranceschini, and @sylee957)
+ Fixes _eval_nseries method of log (#20002 by @sachin4099)
+ Adds _eval_is_meromorphic method and _eval_aseries to class lowergamma
(#19990 by @sachin4099)
+ Adds _eval_is_meromorphic method and _eval_rewrite_as_tractable method
to class uppergamma (#19990 by @sachin4099)
+ Rectifies eval method of class besselk (#19990 by @sachin4099)
+ Adds _eval_is_meromorphic to bessel function. (#19963 by @sachin4099)
+ Adds _eval_nseries function to sin and cos. (#19916 by @sachin4099)
+ reduced symbolic multiples of pi in trigonometric functions (#19741 by
@sachin4099)
+ fixed errors in assumptions when rewriting RisingFactorial /
FallingFactorial as gamma or factorial (#18696 by @sachin4099)
+ Adds _singularities to LambertW function (#19716 by @sachin4099)
+ Rectifies _eval_rewrite_as_tractable method of class erf (#19697 by
@sachin4099)
+ Improved condition checking in piecewise_simplify() (#19596 by
@dhruvmendiratta6 and @smichr)
+ Implemented _eval_rewrite_as_Abs() for sign (#19487 by
@dhruvmendiratta6)
+ Adds cdir parameter to handle series expansions on branch cuts (#19555
by @sachin4099)
+ Adds _eval_rewrite_as_factorial() and _eval_rewrite_as_gamma()
functionalities for subfactorial (#19515 by @sachin4099)
+ Fixed cot.as_real_imag (sign error in imaginary part) (#19468 by
@DaveWitteMorris and @gschintgen)
+ Corrects the _eval_as_leading_term() method of tan and sec functions (#
19461 by @sachin4099)
+ bsplines are more robust in terms of handling symbolic knots (#19272 by
@smichr)
* geometry
+ Ellipses with eccentricity >=1 and for eccentricity < 0 will be handled
as trivial cases (#20045 by @agrawalshubham01)
* integrals
+ upgrades to manualintegrate to support inverse trig functions! (#19993
by @iammosespaulr)
* interactive
+ The _repr_latex_, _repr_svg_, and _repr_png_ methods of subclasses of
sympy objects are no longer discarded when init_printing() is called. (
#19944 by @ericwieser)
* logic
+ Binary boolean operators on Boolean objects no longer coerce strings (#
20093 by @ericwieser)
* matrices
+ Adding an array and a matrix now consistently gives TypeError. (#20159
by @sidhu1012)
+ changed subs function to check if input is zip (#19159 by @czgdp1807
and @gfolbe318)
+ added tests in test_commonmatrix.py (#19159 by @czgdp1807 and
@gfolbe318)
+ The ordering of parameters in a parametrised solution from
gauss_jordan_solve was fixed. Previously incorrect results were
returned for some underdetermined systems. (#19885 by @1124816)
+ Prevents infinite recursion with rmul (#19860 by @mloubout)
+ Added class MatrixSet to represent the set of matrices (#19826 by
@Smitcreate)
+ Disabled default matrix intermediate product simplification and changed
it to enable via context manager. (#19588 by @oscarbenjamin and
@PristineCat)
+ Use more efficient Cholesky factorization method to check if matrices
are positive semidefinite. (#19573 by @galbwe)
+ row_del and col_del will raise IndexError rather than ValueError when
the index is out of bounds. (#19571 by @sylee957)
+ Fixed a bug in the implementation of Sylvester's criterion for
determining if a matrix is positive semidefinite. (#19556 by @galbwe)
+ Explicit nonmatrix are treated as scalar (#19533 by @mloubout)
+ QRdecomposition will return matrices with zero rows and columns for
zero rank matrices. e.g. Matrix([[0, 0, 0], [0, 0, 0], [0, 0, 0]]) will
be decomposed with Matrix(3, 0, []) and Matrix(0, 3, []) (#19319 by
@sylee957)
+ Added Matrix.companion for creating dense companion matrix. (#19339 by
@sylee957)
+ Added CompanionMatrix for creating a symbolic companion matrix. (#19339
by @sylee957)
+ Matrix([]).eigenvals(multiple=True) will give an empty list instead of
an empty dict. (#19355 by @sylee957)
+ Determinant is now considered commutative. (#19354 by @ericwieser)
* ntheory
+ Integrated Lenstra's Elliptic Curve factorization into factorint (#
19937 by @abh2k)
+ Added quadratic sieve (#19657 by @abh2k)
+ Implemented Lenstra's Elliptic curve factorization and Elliptic curve
primality test (#19436 by @abhinav28071999)
* parsing
+ Added support for while loop in C Parser (#20188 by @smitgajjar)
+ Upgraded Relational Operator support (#19982 by @iammosespaulr)
+ BraKet Notation support (#19982 by @iammosespaulr)
+ Improved Grammar (#19982 by @iammosespaulr)
+ added Latex support for "not equal" and expanded support for \
less than,
greater than symbols (#19970 by @bhpayne)
+ parse_latex supports \left and \right parenthesis notation. (#19466 by
@sylee957)
+ parse_latex can parse expressions with amsmath spacing (#19475 by
@sylee957)
+ Added parsing of \exp in parse_latex. (#19395 by @sylee957)
+ Add more parsing rules and test examples. (#19177 by @wuyudi)
+ Added support for more data types in C parser: signed char, unsigned
char, short, short int, signed short, signed short int, unsigned short,
unsigned short int, unsigned int, long, long int, signed long, signed
long int, unsigned long, unsigned long int, double, long double. Also,
modified the data type for int and float to intc and float32
respectively, replacing integer and real (#19230 by @smitgajjar)
+ Added support for shorthand operators in C parser: +=, =, *=, /= and %
= (#19230 by @smitgajjar)
+ Removed the assumption of value of a variable, if it is not initialized
while variable declaration(e.g.; in case of int a;, the value of a was
assumed to be Integer(0), in case of float b;, the value of b was
assumed to be Float(0.0) and in case of bool c;, the value of c was
assumed to be S.false). Also, removed the assumption of default value
of formal parameters while parameter declaration in function definition
or function prototype (e.g.; in case of function definition void func
(int a, float b) { //some code }, default value of formal parametersa
and b were assumed to be Integer(0) and Float(0.0) respectively) (#
19230 by @smitgajjar)
* physics.control
+ Added dc_gain, poles, zeros, and is_stable in TransferFunction class. (
#19896 by @namannimmo10)
+ Adding a new control systems toolbox as physics.control. (#18436 by
@benepla and @namannimmo10)
+ Add TransferFunction, Series, Parallel, and Feedback class for
physics.control submodule (#19390 by @benepla and @namannimmo10)
* physics.quantum
+ Simplification of Dagger() * IdentityOperator() (#19783 by
@dhruvmendiratta6)
+ When printing, Commutator, Anticommutator, InnerProduct, TensorProduct,
and OuterProduct now respect keywordarguments to sstr. (#19424 by
@ericwieser)
* physics.units
+ Fixed some dimensional analysis bugs with the addition and
multiplication operators. (#19705 by @mgreminger)
* physics.vector
+ Added user warnings for all possible paths are found in particle.py. (#
20131 by @sidhu1012)
+ Added user warning for cyclic paths in particle.py. (#20131 by
@sidhu1012)
+ Point.vel() now attempts to calculate the velocity using the relative
position from other points if it has not been already set by the user.
This behavior mimics the existing behavior in ReferenceFrame.ang_vel_in
(). (#20049 by @moorepants and @sidhu1012)
+ VectorLatexPrinter now respects the symbol_names setting when printing
dynamicsymbols (#19684 by @ericwieser)
+ VectorLatexPrinter now know about the same trig functions as the
regular printer (#19684 by @ericwieser)
+ When printing, Vector and Dyadic now respect keywordarguments to sstr
and latex. As a result, these no longer use vector printing
customizations unless init_vprinting has been called. (#19640 by
@ericwieser)
* plotting
+ capability to subclass Basebackend and specify it to the plotting
functions, thus creating plots with other plotting libraries (#20463 by
@oscarbenjamin)
+ Fixed plot3d_parametric_line plotting curves out of the box. (#19252 by
@sylee957)
* polys
+ Polys with complex floating point coefficients will now use the CC
domain rather than EX. (#20194 by @oscarbenjamin)
+ Fixed a bug in minimal_polynomial when using Groebner bases (compose=
False) (#19799 by @coproc)
+ Fixed GeneratorsError for creating some elements of FractionField when
its ground domain is FractionField or PolynomialRing. (#19713 by
@sylee957)
+ Fixed Poly initialized with PolyElement mutating the generator of the
coefficient in the form of polynomial. (e.g. Poly(ZZ[x](x+1), y, domain
=ZZ[x]) becomes Poly(y+1, y, domain=ZZ[x])) (#19659 by @sylee957)
+ Fixed Poly initialized with FracElement raising SympifyError. (e.g. dom
= ZZ.frac_field(x); Poly(dom(x+2), y, domain=dom)) (#19659 by @sylee957
)
+ Add division to finite extensions. (#19593 by @gschintgen and @jksuom)
+ Fixed GCD to always return a nonnegative constant. (#19569 by
@KaustubhDamania)
+ added new domains for Gaussian integers and rationals (#15396 by
@jksuom and @smichr)
+ Add the Gaussian domains ZZ_I and QQ_I to Poly. Make Poly use the
Gaussian domains automatically when I is present in the input. Add
factorisation over the Gaussian integers (ZZ_I). The polys keyword
argument gaussian=True now results in the domain QQ_I rather than the
extension field QQ<I>. (#15396 by @oscarbenjamin)
+ improvement of dup_zz_mignotte_bound(f, K) by KnuthCohen bound (#19254
by @lagamura)
* printing
+ Support frac with pycode printers (for lambdify) (#20115 by @ehren)
+ Roundtrip printing of floats (doubleprecision) to content MathML. (#
19958 by @lcontento)
+ latex now once again requires settings to be passed as keyword and not
positional arguments, and respects printer settings changed with
set_global_settings; restoring the behavior from sympy 1.2 and earlier.
(#20067 by @ericwieser)
+ sympy.printing.pretty.pretty_symbology.xstr has been deprecated (#20081
by @ericwieser)
+ The unicode argument to sympy.printing.stringpict.prettyForm has been
deprecated (#20081 by @ericwieser)
+ The unicode attribute of sympy.printing.stringpict.prettyForm has been
deprecated (#20081 by @ericwieser)
+ The mpmath code printer now correctly prints the loggamma function. (#
19913 by @abhaydhiman)
+ Use literal suffix for 1.0 in C89CodePrinter's printing of pow when the
exponent is 1 (#19956 by @bjodah and @mmohrhard)
+ The modules sympy.printing.ccode, sympy.printing.fcode, and
sympy.printing.cxxcode have been renamed to sympy.printing.c,
sympy.printing.fortran, and sympy.printing.cxx, respectively. This was
done to avoid conflicts that occur when a module name is the same as a
function name. The modules are still importable under their old names
but doing so is deprecated and a warning will be given (#19908 by
@asmeurer)
+ from sympy.printing.codeprinter import Assignment no longer works. You
should use from sympy.codegen import Assignment, which is where
Assignment has lived since SymPy 1.1. (#19908 by @asmeurer)
+ Calling preview with viewer="file" no longer looks for a file
executable (a regression in 1.6.0) (#19905 by @ericwieser)
+ The deprecation of calling preview with viewer="StringIO" is now
expired instead of forgotten (a regression in 1.6.0) (#19905 by
@ericwieser)
+ When printing, NDimArray now respects keywordarguments to sstr (#19903
by @ericwieser)
+ preview no longer fails with ValueError if the preamble contains a %
character. (#19858 by @ericwieser)
+ Types which are not recognized by the LaTeX printer no longer have
their __str__ interpreted as LaTeX, and have their str(...) printed as
preformatted text as if they were printed normally. This includes the
builtin str type: latex("hello") now results in the latex \
\mathtt{\text
{hello}}.
If a custom type intends to be interpreted as latex, it should define
the _latex hook as described in the docs:
def _latex(self, printer):
return str(self) # indicate that the result of __str__ is \
LaTeXcompatible
To print a string containing LaTeX math using MathJax, use
import IPython
IPython.display.Math(string)
(#19611 by @ericwieser)
+ The latex printer now shows builtin floats using ...x10^... notation
instead of ...e... notation. (#19611 by @ericwieser)
+ preview now throws OSError instead of SystemError if viewers cannot be
found. (#19818 by @ericwieser)
+ Fixed the SciPy printer for sparse matrices (#19633 by @benjaminwolba
and @sylee957)
+ preview(..., output='pdf') now uses dvipdfmx instead of dvipdf if
available. As a result, it now works with a MiKTeX installation on
windows. (#19635 by @ericwieser)
+ LatexPrinter._print is no longer called on strings which have already
been converted to Latex. (#19614 by @ericwieser)
+ A new sympy.printing.defaults.Printable base class was added, which is
a mixin providing _repr_latex_ in terms of LatexPrinter().doprint().
Any user type which subclasses this will opt into init_printing. (#
19425 by @ericwieser)
+ Printing unevaluated Muls with multiple Number factors will show all
factors strictly in order. Identities will also be shown explicitly. (#
19450 by @oscarbenjamin)
+ user types that implement _latex are now printed as LaTeX when embedded
within builtin collections like list or dict. (#19389 by @ericwieser)
+ fixed a bug where srepr function would not print dictionary and set
properly (#19346 by @rationalkunal)
+ tuples of one element now include the usual trailing comma (#19348 by
@ericwieser)
+ mat_symbol_style='bold' no longer applies to subscripts of matrix
symbols (#19301 by @ericwieser)
* series
+ Adds e.is_Pow heuristic to limits.py to improve the limit evaluations
of Pow objects (#19680 by @sachin4099)
+ Changes in mrv() function of gruntz.py and cancel() function of
polytools.py resolves RecursionError and Timeout in limit evaluations (
#19646 by @sachin4099)
+ modified order.py to better work with Add objects. (#19546 by
@maurogaravello)
+ Adds a functionality to the doit() method of limits.py which uses
is_meromorphic() for limit evaluations (#19432 by @sachin4099)
+ Fixed wrong computations of fourier_series for even or odd functions
with limits that are specified noncentral. (#19382 by @sylee957)
+ Replaces xreplace() with subs() in rewrite() function of gruntz.py
resolving incorrect limit evaluations (#19297 by @sachin4099)
+ Adds a condition to limitinf() function of gruntz.py resolving
incorrect limit evaluations (#19292 by @sachin4099)
* sets
+ Earlier expr and sets were treated equal which gave incorrect output
for some set functions(mainly :  in, is_subset), made sets and expr
not to be equal (#20208 by @sidhu1012)
+ nested multisymbol first arg for ConditionSet now handled with subs/
as_dummy (#19512 by @smichr)
+ the bound symbols cannot be replaced with subs (#19512 by @smichr)
+ the error checking for mismatched signatures for sym and the base set
has been improved (#19512 by @smichr)
+ ConditionSet still tries to unify symbols and denest a base set that is
given as a ConditionSet but will no longer introduce new symbols (and
will leave the base set a a ConditionSet) when this cannot be done (#
19512 by @smichr)
+ Fixed ConditionSet.dummy_eq() and ConditionSet.as_dummy(). (#19502 by
@gschintgen)
+ Fixed ConditionSet.subs() in the case where the substitution targets a
free symbol. (#19495 by @gschintgen)
+ Fixed _infimum_key sorting key. (#19437 by @gschintgen)
+ ImageSets with Lambdas having different symbols will no longer compare
equal and should be compared like a.dummy_eq(b) (#19261 by @smichr)
* simplify
+ Fixed sqrtdenest giving wrong results for some forms of sqrt(a + b*sqrt
(r)) (#19932 by @sylee957)
+ Fixes a bug in collect when collection keys are not independent. (#
19720 by @mloubout)
+ Improved simplification for sign() (#19596 by @dhruvmendiratta6 and
@smichr)
+ Improved trigsimp for hyperbolic functions nested in nontrig
functions. (#19548 by @gschintgen)
+ Fixes a bug in collect when collected symbols appear in the facorized
expression. (#19431 by @mloubout)
* solvers
+ Added simplification strategies for simplifying the solutions of
systems of ODEs (#19998 by @mijo2 and @oscarbenjamin)
+ Fix bug in nonlinsolve leading to keyerror (#19189 by @nsfinkelstein
and @oscarbenjamin)
+ improved functionality for solveset in case of inequalities (#19978 by
@maurogaravello)
+ Handling of inequalities involving Piecewise is improved in solveset. (
#19986 by @maurogaravello)
+ Solving higherorder system of ODEs by reducing/transforming it into
the firstorder system of ODEs by numerous methods. (#19838 by @mijo2)
+ Added component division technique to divide the system of ODEs into
logical subsystems and solving each of these separately. (#19762 by
@mijo2)
+ Extending checkodesol and constants_renumber to handle system of ODEs (
#19733 by @mijo2)
+ Added dsolve_system that can solve a system of ODEs (#19695 by @mijo2)
+ API for the _linear_neq_order1_type14 was changed to make it easier
for anyone to access the solver (#19653 by @mijo2)
+ Solving linear systems particularly involving polynomial coefficients
is much faster (#18844 by @oscarbenjamin)
+ Added the new n equations linear firstorder nonconstant coefficient
nonhomogeneous solver where the coefficient matrix of the system of
ODEs is commutative with its antiderivative. (#19594 by @mijo2)
+ solveset will always use a symbol that has only either the real or
complex attribute and no other attribute; when a ConditionSet is
returned, the original symbol for which the solution is being sought
will be used if it does not cause evaluation of the result. (#19512 by
@smichr)
+ In dsolve there is no a general solver that can solve systems of
constant coefficient nonhomogeneous first order ODEs of any size in
terms of integrals. (#19341 by @mijo2)
+ Fixed exception handling in solveset's secondary trigonometric solver.
(#19566 by @gschintgen)
+ equations with an additive generator are now solved more quickly (#
19524 by @smichr)
+ Improved solveset capabilities for solving trigonometric equations,
notably rational and symbolic coefficients are now supported. (#19507
by @gschintgen)
+ solve_linear_system is now a thin wrapper for linsolve. It is
recommended to use linsolve in new code. solve_linear_system maybe
deprecated or removed in future. (#18814 by @oscarbenjamin)
+ Addition of a solver that handles a subclass of linear first order
nonconstant coefficient homogeneous systems of ODEs with any number of
equations. (#19185 by @mijo2)
* stats
+ The state space of ContinuousMarkovChain is now by default a Range
object instead of S.Reals. (#20150 by @czgdp1807 and @naveensaigit)
+ The generator matrix of ContinuousMarkovChain is now by default a
MatrixSymbol object instead of None. (#20150 by @czgdp1807 and
@naveensaigit)
+ RandomMatrixSymbol.doit will be invariant upon call. (#20136 by
@sylee957)
+ The state space of DiscreteMarkovChain is now by default a Range object
instead of S.Reals. (#20042 by @Maelstrom6)
+ The transition probability matrix of DiscreteMarkovChain is now by
default a MatrixSymbol object instead of None. (#20042 by @Maelstrom6)
+ Fixed xreplace infinitely expanding random matrix ensemble classes. (#
20018 by @sylee957)
+ All the ensemble classes (RandomMatrixEnsemble, GaussianEnsemble,
GaussianOrthogonalEnsemble, ...) now becomes stub function
constructors. If you want to use them as classes, you should import
them as RandomMatrixEnsembleModel, GaussianEnsembleModel, ... (#20018
by @sylee957)
+ Added sampling of Joint RVs from external libraries (#19848 by
@Smitcreate)
+ Added sampling for Matrix Distributions (#19857 by @Smitcreate)
+ Allowing CompoundDistribution to handle more than one random variables
(#19808 by @Smitcreate)
+ Added Wishart and MatrixNormal Distributions (#19795 by @Smitcreate)
+ Change in return type of P and E with evaluate=False. With evaluate=
False, P and E are made to return Probability and Expectation object
respectively. (#19819 by @Smitcreate)
+ Added MatrixGamma Distribution (#19734 by @Smitcreate)
+ Added symbolic classes of Moment and CentralMoment (#19724 by
@Smitcreate)
+ Added support for Compound Distributions (#19648 by @Smitcreate)
+ Added doit in class Probability (#19696 by @Smitcreate)
+ Added MutlivariateNormal and MutlivariateLaplace function (#19631 by
@Smitcreate)
+ Added Poisson, Wiener and Gamma Processes (#19387 by @Smitcreate)
+ Added Expectation Matrix, Variance Matrix and CrossCovariance Matrix (#
19529 by @Smitcreate)
+ Added sample_stochastic for sampling from stochastic processes. (#19500
by @Smitcreate)
+ FIxes free_symbols method of RandomIndexedSymbol (#19459 by
@Smitcreate)
+ Added Sampling from external libraries for all the random variables of
sympy (#19342 by @Smitcreate)
+ Added doit method in Expectation and made E to call Expectation (#19290
by @Smitcreate)
+ Added is_random in sympy.stats.rv to check if expression contains
random variables (#19304 by @Smitcreate)
+ expand added in sympy.stats.symbolic_rv API. (#19295 by @Smitcreate)
+ Added Lomax and Bounded pareto distribution (#19273 by @Smitcreate)
+ Added sampling methods for continuous variables (#18754 by @Smitcreate
)
+ Added library option in sample (#18754 by @Smitcreate)
+ sample returns an iterator object since version 1.7 (#18754 by
@Smitcreate)
* tensor
+ Adding ArrayDerivative class as subclass of Derivative. This new
handles derivatives involving nonscalar expressions. (#20072 by
@Upabjojr)
* utilities
+ sympy.utilities.iterables.partitions() no longer reuses the same
dictionary for each yielded output. (#20154 by @asmeurer)
+ Add support for Integral with lambdify (using scipy or mpmath) (#20134
by @ehren)
+ Lambdifying an expression with loggamma using mpmath no longer raises
ImportError. (#19913 by @abhaydhiman)
+ find_executable is deprecated in favor of the builtin shutil.which. (#
19634 by @ericwieser)
* vector
+ integral of parametric region depends on the order of limits at the
time of initialization. (#20044 by @friyaz)
+ vector_integrate can integrate over ImplicitRegion objects. (#19883 by
@friyaz)
+ Added a function to find a rational point on conic (#19807 by @friyaz
and @Upabjojr)
+ Added support to create implictly defined regions. (#19681 by @friyaz)
+ Added support to integrate scalar/vector fields over objects of
geometry module. (#19650 by @friyaz)
+ added class to represent integral of scalar/vector field over a
parametric surface. (#19539 by @friyaz)
+ Modified API of ParametricIntegral class (#19580 by @friyaz)
+ Added class to represent a parametric region in space. (#19472 by
@friyaz)
* other
+ The LaTeX docs now need to built with xelatex rather than pdflatex. (#
20309 by @oscarbenjamin)
+ Support for Python 3.5 has been dropped. SymPy now requires Python 3.6
or newer. (#20145 by @oscarbenjamin)
+ more function raise TypeError when passed invalid keywordarguments,
rather than ignoring them silently (#20086 by @ericwieser)
+ assert sympy.testing.pytest.raises(Exception, func) no longer always
asserts when pytest is not present (#20012 by @ericwieser)
+ Make SymPy do less at import time so that import sympy is faster. (#
19910 by @asmeurer)
+ Improve code quality by cleaning the doctests up (#19406 by
@InCogNiTo124 and @oscarbenjamin)
+ intersphinx links to :mod:`sympy` no longer point to the documentation
for Immutable Matrices (#19430 by @ericwieser)

Log message:
pysympy: Update to 1.6.2
Changelog:
1.6.2
Changes
matrices
Fixed a bug that made matrix operations fail in a multithreaded \
application. (#19812 by @pd0wm)
polys
Using factor with the extension argument no longer hangs in some cases. \
(#19847 by @jksuom and @rainwoodman)
printing
Calling preview with viewer="file" no longer looks for a file \
executable (a regression in 1.6.0) (#19904 by @ericwieser)
The deprecation of calling preview with viewer="StringIO" is \
now expired instead of forgotten (a regression in 1.6.0) (#19904 by \
@ericwieser)
other
intersphinx links to :mod:`sympy` no longer point to the documentation \
for Immutable Matrices (#19881 by @ericwieser and @oscarbenjamin)
1.6.1
Changes
functions
Fixes AttributeError in limit evaluation (#19604 by @sachin4099)
matrices
Disabled default matrix intermediate product simplification and changed \
it to enable via context manager. (#19612 by @oscarbenjamin and @PristineCat)
simplify
Fixes a bug in collect when collected symbols appear in the factorized \
expression. (#19601 by @mloubout and @oscarbenjamin)
solvers
Fixed exception handling in solveset's secondary trigonometric solver. \
(#19602 by @gschintgen and @oscarbenjamin)
other
SymPy is importable again in Python 3.5.1 (imports of typing.Type are \
removed) (#19620 by @oscarbenjamin)
Fix the sphinx docs build for sphinx 3.1.1 (#19598 by @oscarbenjamin)
1.6
Backwards compatibility breaks and deprecations
Please manually add any backwards compatibility breaks or deprecations here, in \
addition to the automatic listing below.
assumptions
Removed deprecated Q.bounded (use Q.finite instead). Deprecated since \
version 1.0 (issue: #9425) (#18390 by @Smitcreate)
Removed deprecated Q.infinitesimal (use Q.zero instead). Deprecated \
since version 1.0 (issue: #9675) (#18390 by @Smitcreate)
Removed deprecated Q.infinity (use Q.infinte instead). Deprecated since \
version 1.0 (issue: #9426) (#18390 by @Smitcreate)
calculus
Deprecated evaluate argument in differentiate_finite for making \
nonconservative finite differences. (#17881 by @vezeli)
combinatorics
Using Permutation.print_cyclic will raise deprecation warnings (#18033 \
by @oscarbenjamin, @souravgl0, and @sylee957)
core
Deprecated sympify automatically converting custom objects with __str__ \
or __repr__ implemented. (#19006 by @sylee957)
BREAKING CHANGE: Basic.has no longer accepts strings as input. For \
example in SymPy 1.5 you could do Symbol('x').has('x') and the string 'x' passed \
to has would be sympified to a symbol so that the result would be True. In SymPy \
1.6 this will raise an error because the string 'x' can not be sympified using \
strict sympification. (#19251 by @oscarbenjamin)
Remove deprecated bounded, unbounded and infinitesimal. Deprecated since \
version 0.7.6 (issue #8071) (#18503 by @Smitcreate)
Relational is no longer a subclass of Expr and does not produce \
nonsensical results in arithmetic operations. This affects all Relational \
subclasses (Eq, Ne, Gt, Ge, Lt, Le). It is no longer possible to call \
meaningless Expr methods like as_coeff_Mul on Relational instances. (#18053 by \
@oscarbenjamin)
Expr now uses cooperative dispatch for binary operations so it is \
possible for nonExpr Basic subclasses to override the behaviour of e.g. a + b \
where one of a or b is an instance of Expr. This also means that any nonExpr \
Basic subclasses can not depend on Expr.__add__ to create Add(a, b): if a class \
is not a subclass of Expr and wants to define binary operations with Expr it \
must do so explicitly in its own __add__ method. For classes depending on this \
this is not a backward compatible change. (#18116 by @oscarbenjamin)
matrices
The Matrix.is_zero property has been renamed to Matrix.is_zero_matrix.
Matrix.is_zero is now always False. This is because in general is_zero \
means the number zero so a matrix can never be zero.
To get the old behavior of M.is_zero in both old and new versions of sympy \
use from sympy.core.logic import fuzzy_and; fuzzy_and(m.is_zero for m in M). \
(#18464 by @sylee957)
polys
BREAKING CHANGE: Poly and PurePoly now subclass Basic rather than Expr. \
This means that they no longer have various Expr methods such as expand that do \
not make sense for Poly. Use as_expr to convert the Poly to an Expr before using \
Expr methods. (#18613 by @oscarbenjamin)
BREAKING CHANGE: Poly instances with different domains now always \
compare unequal with p1 == p2 and p1.eq(p2). Previously Poly instances that had \
the same expression and generators would compare equal even if the domains were \
different. In some cases it might be necessary to specify the domain when \
comparing e.g. if p == Poly(x, x, domain='QQ'). (#18613 by @oscarbenjamin)
DEPRECATION: Mixing Poly with nonpolynomial Expr in binary operations \
is now deprecated. For example Poly(x, x) * exp(x) will give a deprecation \
warning but still return the Expr x*exp(x) as before. If the Expr can be \
converted to Poly (e.g. Poly(x, x) * x) then a Poly will be returned. To get an \
Expr always use the as_expr method first to convert the Poly to an Expr. To get \
a Poly always use as_poly to convert the Expr to a Poly. (#18613 by \
@oscarbenjamin)
DEPRECATION: Passing Poly as the integrand to the integrate function or \
Integral class is now deprecated. Use the integrate method instead e.g. Poly(x, \
x).integrate(x) (#18613 by @oscarbenjamin)
printing
Removed deprecated Ccodeprinter (Use C89Printer or C99Printer instead). \
Deprecated since version 1.1 (Issue : #12220). (#18392 by @risubaba)
Removed deprecated file viewer option in preview. Deprecated since \
version 0.7.3(Issue: #7018) (#18392 by @risubaba)
Removed deprecated StringIO viewer option in preview. Deprecated since \
version 0.7.2(Issue: #7083) (#18392 by @risubaba)
sets
Set now uses cooperative dispatch for binary operations so it is \
possible for nonSet Basic subclasses to override the behaviour of e.g. a + b \
where one of a or b is an instance of Set. This also means that any nonSet \
Basic subclasses can not depend on e.g. Set.__add__ to create Union(a, b): if a \
class is not a subclass of Set and wants to define binary operations with Set it \
must do so explicitly in its own __add__ method. For classes depending on this \
this is not a backward compatible change. (#18116 by @oscarbenjamin)
other
Submodule names are no longer imported with from sympy import *. They \
can still be imported directly like from sympy import core or accessed like \
sympy.core, or like sys.modules['sympy.simplify'] for modules that share names \
with SymPy functions. (#18245 by @oscarbenjamve the T/F assumptions of a symbol \
or expression (#19155 by @smichr)
common_assumptions returns the T/F assumptions in common amongst the \
given expressions (#19155 by @smichr)
Added a refine_matrixelement function (#18681 by @Saanidhyavaeprecated \
Q.bounded (use Q.finite instead). Deprecated since version 1.0 (issue: #9425) \
(#18390 by @Smitcreate)
Removed deprecated Q.infinitesimal (use Q.zero instead). Deprecated \
since version 1.0 (issue: #9675) (#18390 by @Smitcreate)
ask(Q.antihermitian()) which earlier generated incorrect results. (#18303 \
by @czgdp1807)
Improved code in ask function using constructs from cnf module. (#18204 \
by @JSS95 and @mcplsympy)
Fixed bug in ask function: In case of userdefineus_domain now finds \
singularities in nested fractions (#19047 by @smichr and @ThomasHickman)
singularities has been upgraded to handle more than rational functions \
(#19047 by @smichr and @ThomasHickman)
fixes operations of AccumBounds (#18803 by @Ryand1234)
periodicity of exponential functions with a nonzero phase component is \
now calculated. (#18746 by @mohitacecode)
Correct the solution of differentiate_finite for expressions that \
contain embedded derivatives. (#17881 by @vezeli)
Deprecated evaluate argument in differentiate_finite for making \
nonconservative finite differences. (#17881 by @vezeli)
Updated docstrings of maximum, minimum, stationary_points and \
AccumBounds.intersection (#18581 by @mijo2)
Fixes Recursion Error in AccumulationBounds.__pow__ by adding a check on \
denominator (#18450 by @Smitcreate)
combinatorics
Permutation * PermutationGroup and PermutationGroup * Permutation return \
Coset. (#19139 by @mohitacecode)
Added Coset Class. (#19077 by @mohitacecode and @sylee957)
Added SymmetricPermutationGroup Class. (#19077 by @mohitacecode and \
@sylee957)
Added schur number utilities in combinatorics (#18667 by @mijo2 and \
@slacker404)
Raise exception with wrong size in Permutation. (#18587 by @Smitcreate)
Added Permutation.conjugacy_class and Permutation.conjugacy_classes for \
computing conjugacy classes in permutation groups. (#18354 by @lucjon and \
@sachin4099)
Fixed Permutation applying for negative integers. (#18032 by @mrocklin \
and @sylee957)
Added Permutation.apply to use permutation as a symbolic function. \
(#18032 by @mrocklin and @sylee957)
Using Permutation.print_cyclic will raise deprecation warnings (#18033 \
by @oscarbenjamin, @souravgl0, and @sylee957)
Cycle class is no longer mutable and can be regarded as a sparse \
representation of a permutation (#17973 by @sachin4099)
core
BREAKING CHANGE: Basic.has no longer accepts strings as input. For \
example in SymPy 1.5 you could do Symbol('x').has('x') and the string 'x' passed \
to has would be sympified to a symbol so that the result would be True. In SymPy \
1.6 this will raise an error because the string 'x' can not be sympified using \
strict sympification. (#19251 by @oscarbenjamin)
Mul.is_integer no longer rebuilds arguments into Mul (#19182 by \
@iammosespaulr)
Mul with odd numerator and even denominator is recognized as rational \
but not integer (#19155 by @smichr)
Deprecated sympify automatically converting custom objects with __str__ \
or __repr__ implemented. (#19006 by @sylee957)
when strict=True, as_int will not convert True to 1 (#19054 by @smichr)
Support mpmath.matrix in sympify. (#18911 by @smichr and @sylee957)
Adds simplification to Pow._eval_nseries resolving incorrect limit \
evaluation (#18962 by @sachin4099)
doit(deep=False) now evaluates Add and Mul. (#18829 by @JSS95 and \
@mcplsympy)
Reduces sensitivity of computation of order terms in Pow._eval_nseries \
(#18785 by @sachin4099)
Pow.is_zero is fixed for some cases involving infinite (or possibly \
infinite) expressions. (#18728 by @oscarbenjamin)
Now finite and infinite are logical opposites in the old assumptions \
system so e.g. a Symbol declared with finite=False will have infinite=True. \
(#18726 by @oscarbenjamin)
sympify no longer converts numpy arrays with size to scalars (#18651 by \
@mijo2 and @NeilGirdhar)
__getnewargs__() added to Zero, One, NegativeOne, Half. (#18675 by \
@mohitacecode)
simplification of powers with numerical products in the base is improved \
(#18650 by @sachin4099)
sqrt(x).is_negative is False when x is real (#18597 by @Smitcreate)
Add,_eval_as_leading_term() has been fixed (#18340 by @sachin4099)
Updated the definition of atoms method of class Basic (#18532 by @mijo2)
basic  sorting in subs is improved so unsorted arguments will prefer \
replacing more complicated patterns first (e.g. the second derivative before the \
first derivative). (#18043 by @PsychoPirate)
Remove deprecated bounded, unbounded and infinitesimal. Deprecated since \
version 0.7.6 (issue #8071) (#18503 by @Smitcreate)
Added check for AccumBounds. (#18478 by @smichr and @Smitcreate)
Adding gmpy in integer_nthroot ( It works only for n < 2**63) (#18380 \
by @Smitcreate)
Added new test case for relational (#18416 by @mijo2)
Pow._eval_nseries fixed to accept all real exponents. (#18406 by \
@Smitcreate)
integer_ntroot and igcd now use gmpy when it is installed (#18276 by \
@Smitcreate)
Changed some partial derivatives like diff(f(g(x), h(x)), x) not to have \
dummy symbols. (#18326 by @sachin4099)
subs now works correctly with partial derivatives. (#18326 by @sachin4099)
Subclass of Function can inherit its nargs attribute to its subclasses. \
(#18258 by @JSS95 and @mcplsympy)
Added tryexcept block in sympy/core/relational.py to handle \
NotImplementedError and return ConditionSet (#18211 by @Smitcreate)
Renamed core/evaluate to core/parameters (#18198 by @JSS95, @mcplsympy, \
and @oscarbenjamin)
Added global_parameters, which is a threadlocal storage for global \
parameters such as evaluate, distribute, etc. (#18198 by @JSS95, @mcplsympy, \
and @oscarbenjamin)
Relational is no longer a subclass of Expr and does not produce \
nonsensical results in arithmetic operations. This affects all Relational \
subclasses (Eq, Ne, Gt, Ge, Lt, Le). It is no longer possible to call \
meaningless Expr methods like as_coeff_Mul on Relational instances. (#18053 by \
@oscarbenjamin)
Expr now uses cooperative dispatch for binary operations so it is \
possible for nonExpr Basic subclasses to override the behaviour of e.g. a + b \
where one of a or b is an instance of Expr. This also means that any nonExpr \
Basic subclasses can not depend on Expr.__add__ to create Add(a, b): if a class \
is not a subclass of Expr and wants to define binary operations with Expr it \
must do so explicitly in its own __add__ method. For classes depending on this \
this is not a backward compatible change. (#18116 by @oscarbenjamin)
Added global_evaluate[0] condition in add, sub, mul, div functions in \
Infinity class. (#18109 by @namannimmo10)
Moved .as_poly() from Basic to Expr. (#18094 by @dhruvmendiratta6)
Fixed a bug in Factors().as_expr() that led to simplifications that are \
not generally valid for complex numbers. (Exponents were always multiplied in \
powerofapower situations.) (#18087 by @gschintgen)
Fix a regression in 1.5 that allowed expressions to compare equal to \
strings, and caused == to call str() on the other object. (#18057 by @asmeurer)
functions
Adjoint of exp and transpose of exp now work as expected. (#19151 by \
@akirakyle)
Adds substitution to _eval_nseries() function of Abs() class resolving \
incorrect limit evaluations (#19037 by @sachin4099)
expand log term into its prime factors if the factor flag is True. \
(#18927 by @sbt4104)
Evaluate nested floor/ceiling. (#18903 by @sbt4104)
Update expand function for binomials. (#18802 by @sbt4104)
periodicity of trigonometric functions with a nonzero phase component \
is now calculated. (#18746 by @mohitacecode)
__getnewargs__() and args() added to IdentityFunction. (#18675 by \
@mohitacecode)
Added _eval_nseries() functionality to hyper (#18630 by @dhruvmendiratta6)
Fix number of terms in exp._eval_nseries. (#18598 by @mohitacecode)
Fixes TypeError while using simplify (#18640 by @Smitcreate)
Added proportional tolerance for falling factorial test (#18456 by @mijo2)
polygamma(n, 1/2) with n a positive integer is automatically evaluated \
(#18451 by @ethankward)
floor and ceiling with float arguments now return Integers (#18424 by \
@mohitacecode)
Sympified output numbers for factorial and binomial used with Mod. \
(#18339 by @namannimmo10)
Maximum recursion depth is no longer exceeded when subfactorial is \
called on large numbers (#17983 by @sachin4099)
Copy edited the Special submodule to reflect the style guide for Google \
Season of Docs. (#17844 by @lglattly)
geometry
Line.bisectors will return the two perpendicular lines, bisecting the \
angles at the intersection of two linear entities and laying in the same plane \
as them (#19094 by @Jaime02 and @smichr)
Added explicit optional parameters to Polygon and convex_hull (#15757 by \
@oscargus)
Added bisectors method for Polygon class. (#18335 by @namannimmo10)
Add __call__ method in Class Curve. (#18250 by @namannimmo10)
Point.coordinates was added as a meaningful alias for Point.args (#18213 \
by @Jaime02)
holonomic
A cache mismatch error was fixed. (#19248 by @iammosespaulr and @smichr)
integrals
Handling Float Integrals (#18434 by @Smitcreate)
Added integration over summation (#18491 by @mijo2)
Added extra step to evaluate integral if heurisch() returns None in \
heurisch_wrapper() (#18153 by @risubaba)
Catch ValueError from meijerg() in _inverse_mellin_transform(). (#18141 \
by @Smitcreate)
logic
boolalg (#18912 by @smichr)
to_cnf/to_dnf (when simplify=True) require force=True` if there are more \
than 8 variables (#18912 by @smichr)
simplify_logic recognizes trivial simplified cases (#18912 by @smichr)
is_literal can treat Not as literal or not by using the literal_Not flag \
(#18912 by @smichr)
Opposing Relationals are now detected correctly in nested Ands allowing \
evaluation to False in more cases. (#18811 by @oscarbenjamin)
Added a new normal form  ANFform. Function ANFform converts a list of \
truth values to an expression in Algebraic Normal Form (ANF). (#13686 by \
@KonstantinTogoi)
Added a new method BooleanFunction.to_anf that converts an expression to \
ANF by equivalent transformations. (#13686 by @KonstantinTogoi)
Added a new function is_anf that checks if an expression is ANF. (#13686 \
by @KonstantinTogoi)
Added a new function to_anf that converts an expression to ANF if it is \
not ANF. (#13686 by @KonstantinTogoi)
Added a new function distribute_xor_over_and. Given a sentence s \
consisting of conjunction and exclusive disjunctions of literals, it returns an \
equivalent exclusive disjunction. (#13686 by @KonstantinTogoi)
Added a new function bool_minterm that returns the kth minterm of a \
fixed ordered set of binary variables. (#13686 by @KonstantinTogoi)
Added a new function bool_maxterm that returns the kth maxterm of a \
fixed ordered set of binary variables. (#13686 by @KonstantinTogoi)
Added a new function bool_monomial that returns the kth monomial of a \
fixed ordered set of binary variables. (#13686 by @KonstantinTogoi)
matrices
Fixed matrix creation from the list containg numpy ndarray. (e.g. \
Matrix([np.array([1, 2]), np.array([1, 2])])) (#19229 by @sylee957)
Added is_strongly_diagonally_dominant and is_weakly_diagonally_dominant \
properties for Matrix. (#19205 by @sylee957)
Powers of nonsquare matrices now always raise an error, even when \
constructed using MatPow(...). (#19104 by @jlherren)
ZeroMatrix will not be logically False. (#19110 by @sbt4104)
Added connected_components and connected_components_decomposition for \
matrix which decomposes a matrix into a block diagonal form. (#19045 by \
@sylee957)
Added todok function to find dictionary of keys format from any dense or \
sparse matrices. (#19045 by @sylee957)
Added BlockDiagMatrix.get_diag_blocks to provide an user API to get \
diagonal blocks from the matrix. (#19045 by @sylee957)
Fixed bug of mpmath.matrix transforming into wrong shape if used to \
create Matrix. (#18911 by @smichr and @sylee957)
Improved eigenvals and eigenvects for floating point matrices using \
mpmath. (#18911 by @smichr and @sylee957)
Some expressions involving OneMatrix are now simplified. (#19009 by \
@jlherren)
Indexing BlockMatrix now more often produces correct results and remains \
unevaluated if a correct simplification is not possible. (#19007 by @jlherren)
Added a function that rotates matrices by 90 degrees (#18953 by \
@iammosespaulr and @sylee957)
sparsetools  _doktocsr now returns a MutableSparseMatrix (#18940 by @smichr)
Added Golub Kahan Bidiagonalization with Householder Reflections (#18797 \
by @sudoWin)
Added test_solvers.py file which contains all the solversrelated tests. \
(#18793 by @guptabhaskar)
Added evaluate option to MatAdd and MatMul (#18765 by @JSS95 and @mcplsympy)
nonsquare matrices now raise NonSquareMatrixError if inversion is \
attempted (#18647 by @abhinav28071999)
Added test_subspaces.py file which contain all the reductionsrelated \
tests. (#18713 by @mohitacecode)
Added test_reductions.py file which contain all the reductionsrelated \
tests. (#18705 by @mohitacecode)
Added test_eigen.py file which contain all the eigenrelated tests. \
(#18690 by @mohitacecode)
Added test_decomposition.py file which contain all the \
decompositionrelated tests. (#18685 by @mohitacecode)
Added test_determinant.py file which contain all the determinantrelated \
tests. (#18668 by @mohitacecode)
Faster Matrix Inverse using Block Matrix (#18608 by @abhinav28071999)
Faster Matrix exponentiation using Cayley Hamilton Theorem (#18595 by \
@abhinav28071999)
Fixed BlockDiagMatrix(A).blocks giving a nonblock matrix. (#18621 by \
@abhinav28071999)
Added dotprodsimp keyword to MatrixArithmetic.pow (#18600 by @PristineCat)
Implemented General Matrix Analytic functions (#18565 by @abhinav28071999)
Enabled intermediate matrix product simplification to control expression \
blowup during certain matrix operations. (#18572 by @PristineCat) (#18147 by \
@PristineCat) (#18049 by @PristineCat)
Added environment variable check SYMPY_DOTPRODSIMP=0 to turn off the new \
dotprodsimp simplification in case the structure of the new results breaks user \
code. Should be removed after next live release. (#18572 by @PristineCat)
Pulled out and cleaned up many matrix function implementations from \
matrices.py into individual matrix source files determinant.py, reductions.py, \
subspaces.py, eigen.py, decompositions.py, solvers.py and inverse.py. (#18564 by \
@PristineCat) (#18519 by @PristineCat) (#18425 by @PristineCat) (#18420 by \
@PristineCat) (#18342 by @PristineCat)
Immutable matrices return themselves on call to as_immutable(). (#18441 \
by @PristineCat)
Fixed wrapper for NumPy matrices so SymPy iteration and indexing works \
correctly. (#18160 by @PristineCat)
Not backwards compatible: The Matrix.is_zero property has been renamed \
to Matrix.is_zero_matrix. Matrix.is_zero is now always False. This is because in \
general is_zero means the number zero so a matrix can never be zero. To get the \
old behavior of M.is_zero in both old and new versions of sympy use from \
sympy.core.logic import fuzzy_and; fuzzy_and(m.is_zero for m in M). (#18464 by \
@sylee957)
Added PermutationMatrix and MatrixPermute for matrix permutations. \
(#18032 by @mrocklin and @sylee957)
Fixed FunctionMatrix.replace raising TypeError: 'property' object is not \
iterable when the function is not a Lambda instance. (#17998 by @sylee957)
FunctionMatrix and ElementwiseApplyFunction will always wrap the \
function inside Lambda. (#17998 by @sylee957)
Cleaned up unnecessary slowdown for MatMul.doit when it contains \
explicit matrices. (#17872 by @sylee957)
Fixed MatPow(Inverse(A), 3) and Inverse(MatPow(A, 3)) canonicalized into \
different objects. (#17872 by @sylee957)
Improved inversion of block matrices by selecting an appropriate \
formula. (#19215 by @jlherren)
ntheory
the number of digits (like bit length) can now be specified for digits \
(#18961 by @Arpan612 and @smichr)
Corrects the condition for "Extra strong" Lucas pseudoprime \
(#18946 by @Arpan612 and @sylee957)
count_digits works only with numbers (not strings) (#18807 by @smichr)
digits is now located in digits instead of factor_ (#18807 by @smichr)
implemented elliptic curve (#18682 by @abhinav28071999 and @shikil)
added new ntheory module digits.py containing methods related to \
arithmetic properties of integers (currently, frequency counters for digits of \
integers, palindromic numbers) (#18659 by @srmurthy)
Made divisor_sigma() symbolically recognize the case: \
divisor_sigma(a**j*b**k) (#18688 by @sachin4099)
Added multiplicty_in_factorial(p, n) to find the multiplicity of p in n! \
without calculating the factorial. (#18671 by @sachin4099)
implemented gaussian prime test (#18673 by @abhinav28071999)
is_nthpow_residue no longer raises ValueError when a < 0 (#18398 by \
@abhinav28071999)
polynomial_congruence recognizes x**n + a = 0 mod m as a special case \
(#18398 by @abhinav28071999)
Added polynomial_congruence(expr, m) to find values congruent (mod m) to \
a polynomial (#18294 by @abhinav28071999)
is_nthpow_residue handles numbers that are not powers of a primitive \
root. (#18337 by @abhinav28071999)
Fixes nthroot_mod for prime powers (#18274 by @abhinav28071999)
nthroot_mod now supports composite moduli (#18199 by @abhinav28071999)
Added dra and drm to calculate digital root via addition and \
multiplication (#16496 by @abhinav28071999 and @smichrinav28071999)
Make nthroot_mod , primitive_root and _primitive_root_prime_iter \
incompatible with composite modulo. (#18194 by @risubaba)
In def _sqrt_mod_prime_power(a, p, k): it is assumed that p is a prime \
number. And this function caled check for zero in is_nthpow_residue. (#18129 by \
@erdOne)
Added proper_divisor and proper_divisor_count functions (#18085 by \
@adhocking and @czgdp1807)
Proper exception when accessing index 0 of sieve. (#18013 by @JulienPalard)
parsing
added support for unary operators: unary plus(+), unary minus(), \
pre/post increment(++), pre/post decrement() and logical NOT(!) in C parser \
(#19140 by @smitgajjar)
added support for parenthesized expression in C parser (#19140 b as_expr \
method first to convert the Poly to an Expr. To get a Poly always use as_poly to \
convert the Expr to a Poly. (#18613 by @oscarbenjamin)
DEPRECATION: Passing Poly as the integrand to the integrate function or \
Integral class is now deprecated. Use the integrate method instead e.g. Poly(x, \
x).integrate(x) (#18613 by @oscarbenjamin)
add condition for f == 0 to Piecewise solution for symbolic quartic \
polynomials (#18571 by @harsh9200)
Fixed polynomial gcd bug (#18566 by @Smitcreate)
Added check for expressions containing GoldenRatio and \
TribonacciConstant (#18535 by @Smitcreate)
Added expand in simplify method of ExpressionDomain (#18472 by @Smitcreate)
Fixed the issue of cancel not expanding the product of irrational \
conjugates and added Tests (#18448 by @iamabhishek0)
Prevent creation of CC from changing the context of RealElement. (#18312 \
by @V1krant)
Changes in Poly.__new__() to make it handle simplified Matrix (#18159 by \
@Smitcreate)
interpolate will no longer return nan when x is a supplied coordinate \
(#18030 by @smichr)
interpolating_poly will raise an error if x is not symbolic (#18030 by \
@smichr)
interpolating_poly will raise an error if X or Y depend on x (#18030 by \
@smichr)
interpolatingpoly will now use only the first n points in X and Y \
(#18030 by @smichr)
Added KSY_precondition() to test for the KapurSaxenaYang precondition \
(#17974 by @ctsiagkalis)
Added get_KSY_Dixon_resultant() and auxiliary methods for computing the \
KSY approach to Dixon's Resultant (#17974 by @ctsiagkalis)
printing
the inverse hyperbolic functions now respect the inv_trig_style printer \
setting (#19235 by @ericwieser)
Fixed numpy printer raising error for unevaluated numeric power. (#19170 \
by @sylee957)
Fixed IdentityFunction printing for LaTeX. (#19032 by @sylee957)
Added parenthesize_super option to LatexPrinter. (#18256 by @JSS95 and \
@mcplsympy)
Removing python2 support from PythonCodePrinter (#18381 by @Smitcreate)
Added support for airy functions in the SciPyPrinter class. (#18908 by \
@OmarWagih1)
allowed ReprPrinter to maintain original expr order via turning ordering \
off (#18777 by @leerobert)
Fix lambdify with Min for arrays of more than one dimension (#18774 by \
@sbt4104)
Fixed MatMul with complex coefficients raising error when printed. \
(#18744 by @sylee957)
fixes incorrect parenthesizes in latex print of integral (#18772 by \
@Ryand1234)
fixes nested differentiation problem in latex format (#18740 by @Ryand1234)
added Python printer for KroneckerDelta (#18185 by @m93a)
Added min and max options for printers thod of undetermined \
coefficients. (#18410 by @Mohitbalwani26)
Fixed checkodesol for some cases when the solution returned by variation \
of parameters was correct but chekodesol couldn't simplify it. (#18376 by \
@Mohitbalwani26)
Fixed dsolve for some cases of linear nonhomogeneous ODEs when using \
the method of undetermined coefficients. (#18309 by @Mohitbalwani26)
Changed return type from None to [], as in #18199 the return type of \
nth_root was changed when all_root = True and no root exists (#18285 by \
@abhinav28071999)
ode.py  solve function is used to express the equation in factorised \
form (#18214 by @Mohitbalwani26 and @smichr)
Fixed a bug in diophantine where negative coefficients could lead to \
incomplete sction with permute=True. (#18200 by @gschintgen)
The diophantine solver no longer raises for unsympified inputs. (#18201 \
by @oscarbenjamin)
fixed a bug in diophantine when using permute=True which caused \
incomplete permutations to be returned (#18189 by @abhinav28071999)
diophantine.py  fixed bug where AttributeError was raised in some \
cases. (#18167 by @Mohitbalwani26)
Solving of hyperbolic equations improved in solveset. (#14053 by \
@gschintgen, @ishanaj, @oscarbenjamin, and @oscargus)
Copy edited solvers.py to reflect the style guide for Google Season of \
Docs. (#17921 by @lglattly)
stats
Allowing the user to define custom distributions (#19123 by @Smitcreate)
Added coskewness (#18935 by @Smitcreate)
Added sampling methods for discrete random variables (#18289 by @Smitcreate)
Added median function. (#18300 by @Smitcreate)
Updated some documentation in NormalGamma and JointRV functions (#18589 \
by @akash9712 8336 by @Smitcreate)
Fixed domain bug in probability method of ContinuousPspace in \
sympy/stats/crv.py (#18311 by @Smitcreate)
Added Bernoulli Process in sympy/stats/stochastic_process_types.py \
(#18173 by @Smitcreate)
Added Heger bound (#18605 by @Smitcreate)
Implemented derivatives with respect to symbols in tensor expressions \
(#18093 by @joha2 and @Upabjojr)
Implemented derivatives with respect to tensors in tensor expressions \
(#18093 by @joha2 and @Upabjojr)
Added _eval_simplify method for class ImmutableDenseNDimArray (#18369 by \
@iamabhishek0)
Fixing bug in replacing indices in PartialDerivative tensor objects. \
(#18242 by @Upabjojr)
Tensor module: refactory to allow mixing PartialDerivative and TensAdd. \
(#18224 by @Upabjojr)
Fix PartialDerivative operator to correctly handle the valence \
(covariant/contravariant) of the deriving variable. (#18166 by @Upabjojr)
.dummy_fmt changed to .dummy_name (#17518 by @drybalka)
metric parameter for TensorIndexType is now split into 2 optional \
parameters metric_name and metric_symmetry (#17518 by @drybalka)
TensorIndexType.dim is now a symbol and not None (#17518 by @drybalka)
utilities
Overflow condition and negative argument for 'ibin' added (#18973 by \
@Arpan612)
iterables  uniq will now raise a RuntimeError if a size change of the \
sequence is detected (#18835 by @smichr)
iterables now includes is_palindromic to check if a sequence (or slice \
thereof) is palindromic (#18807 by @smichr)
iterables: generate_derangements now handles unsorted input correctly \
(#18810 by @smichr)
Code for the test runner is moved to a new sympy.testing package. \
(#18095 by @oscarbenjamin)
lambdify: avoid using scipy versions of numpy functions, which are \
deprecated, in lambdify. (#18080 by @sylee957)
other
Replace inspect.getargspec with getfullargspec (#18784 by @sethtroisi)
Updated README to include details about how to install SymPy using PyPI \
(#18518 by @mijo2)
Corrected an inconsistency in the "Advanced Expression \
Manipulation" section of the tutorial. (#18287 by @Smitcreate)
Submodule names are no longer imported with from sympy import *. They \
can still be imported directly like from sympy import core or accessed like \
sympy.core, or like sys.modules['sympy.simplify'] for modules that share names \
with SymPy functions. (#18245 by @oscarbenjamin)
README.rst  Added the codecov Badge in readme.rst (#18266 by \
@Mohitbalwani26)
updated the README.rst and doc/README.rst with links to the SymPy \
Documentation Style Guide. (#17922 by @lglattly)
