SymPy 0.7.5

22 Feb 2014

Major changes

  • The version of mpmath included in SymPy has been updated to 0.18.
  • New routines for efficiently compute the dispersion of a polynomial or a pair thereof.
  • Fancy indexing of matrices is now provided, e.g. A[:, [1, 2, 5]] selects all rows and only 3 columns.
  • Enumeration of multiset partitions is now based on an implementation of Algorithm 7.1.2.5M from Knuth’s The Art of Computer Programming. The new version is much faster, and includes fast methods for enumerating only those partitions with a restricted range of sizes, and counting multiset partitions. (See the new file sympy.utilities.enumerative.py.)
  • distance methods were added to Line and Ray to compute the shortest distance to them from a point.
  • The normal_lines method was added to Ellipse to compute the lines from a point that strike the Ellipse at a normal angle.
  • inv_quick and det_quick were added as functions in solvers.py to facilitate fast solution of small symbolic matrices; their use in solve has reduced greatly the time needed to solve such systems.
  • solve_univariate_inequality has been added to sympy.solvers.inequalities.py.
  • as_set attribute for Relationals and Booleans has been added.
  • Several classes and functions strictly associated with vector calculus were moved from sympy.physics.mechanics to a new package sympy.physics.vector. (See sympy/sympy#2732, sympy/sympy#2862 and sympy/sympy#2894).
  • New implementation of the Airy functions Ai and Bi and their derivatives Ai' and Bi' (called airyai, airybi, airyaiprime and airybiprime, respectively). Most of the usual features of SymPy special function are present. Notable exceptions are Gruntz limit computation helpers and meijerg special functions integration code.
  • Euler-Lagrange equations (function euler_equations) in a new package sympy.calculus (sympy/sympy#2431).

Compatibility breaks

  • the submatrix method of matrices was removed; access the functionality by providing slices or list of rows/columns to matrix directly, e.g. A[:, [1, 2]].
  • Matrix([]) and Matrix([[]]) now both return a 0x0 matrix
  • terms_gcd no longer removes a -1.0 from expressions
  • extract_multiplicatively will not remove a negative Number from a positive one, so (4*x*y).extract_multiplicatively(-2*x) will return None.
  • the shape of the result from M.cross(B) now has the same shape as matrix M.
  • The factorial of negative numbers is now zoo instead of 0. This is consistent with the definition factorial(n) = gamma(n + 1).
  • 1/0 returns zoo, not oo (sympy/sympy#2813).
  • zoo.is_number is True (sympy/sympy#2823).
  • oo < I raises TypeError, just as for finite numbers (sympy/sympy#2734).
  • 1**oo == nan instead of 1, better documentation for Pow class (sympy/sympy#2606).

Minor changes

  • Some improvements to the gamma function.
  • generate_bell now generates correct permutations for any number of elements.
  • It is no longer necessary to provide nargs to objects subclassed from Function unless an eval class method is not defined. (If eval is defined, the number of arguments will be inferred from its signature.)
  • geometric Point creation will be faster since simplification is done only on Floats
  • Some improvements to the intersection method of the Ellipse.
  • solutions from solve of equations involving multiple log terms are more robust
  • idiff can now return higher order derivatives
  • Added to_matrix() method to sympy.physics.vector.Vector and sympy.physics.dyadic.Dyadic. (sympy/sympy#2686).
  • Printing improvements for sympy.physics.vector objects and mechanics printing. (See sympy/sympy#2687, sympy/sympy#2728, sympy/sympy#2772, sympy/sympy#2862 and sympy/sympy#2894).
  • Functions with LaTeX symbols now print correct LaTeX. (sympy/sympy#2772).
  • init_printing has several new options, including a flag print_builtin to prevent SymPy printing of basic Python types (sympy/sympy#2683), and flags to let you supply custom printers (sympy/sympy#2894).
  • improvements in evaluation of imageset for Intervals (sympy/sympy#2723).
  • Set properties to determine boundary and interior (sympy/sympy#2744).
  • input to a function created by lambdify no longer needs to be flattened.