octsympy 3.2.2 (2025-09-11)
===========================

  * New symbolic commands:

         cart2sph
         pol2cart
         sph2cart

  * Misc minor changes and updates.

  * Dropped support for Octave 5.


octsympy 3.2.1 (2023-05-15)
===========================

  * New symbolic commands:

          collect
          fplot

  * Move repo to https://github.com/gnu-octave/symbolic
  * `sym(<array>, ratflag)` now respects `ratflag` (issue #1273).
  * Changed metainfo.xml ID and corrected long-standing "Addon"
    link to GNU Octave.
  * Misc changes for SymPy development changes.
  * v3.2.0 was incorrectly released.



octsympy 3.1.1 (2023-03-19)
===========================

  * New symbolic commands:

          cart2pol
          piecewise

  * `kron` works for three or more inputs (issue #1245).

  * Indexing bounds checking to support Octave 8.

  * Fix assumptions on SymPy 1.12.

  * Other misc fixes and changes for SymPy 1.12.



octsympy 3.0.1 (2022-08-09)
===========================

  * New `@double` numerical functions; these are wrappers around SymPy,
    so they are slower than native floating-point implementations.

          adjoint

  * Misc bug fixes and improvements in error handling.

  * `.oct-config` files indicate source is UTF-8 encoded and should improve
    any locale or encoding problems on Octave 7 and above.

  * Fixes some errors when Python is running in Cygwin-like environment.
    But there could still be errors in other places (issue #1182).



octsympy 3.0.0 (2022-07-05)
===========================

  * New symbolic commands:

          cumprod
          cumsum
          ztrans

  * `dsolve` output prefers expressions (right-hand sides) rather than
    equations.  Also uses structs for systems.  This brings it closer
    to `solve` and more compatible with other symbolic toolboxes.

  * `dsolve` supports arrays of initial conditions.

  * Fixes for SymPy 1.6 and later.

  * Fixes for Octave 6.x and Octave 7.1.

  * Drop Python 2 support.

  * The `symbolic-win-py-bundle-x.y.z.zip` is no longer provided as we
    have not been able to port it to Python 3.

  * Update minimum versions of SymPy to 1.4 and Octave to 5.1.

  * Remove deprecated `evalpy` and `python_cmd` utilities.



octsympy 2.9.0 (2020-03-04)
===========================

  * Default python interpreter is now `python3`.

  * Fixes for SymPy 1.5.
      - `@sym/round` changed to round-to-even.
      - fix broken EmptySet `finiteset()`.

  * Documentation updates for upcoming Octave 6.

  * If the Pythonic package is loaded, automatically use it for Python
    communication (see `help sympref` for details).

  * Deprecation notice: `python_cmd` will be removed in a future release.



octsympy 2.8.0 (2019-04-30)
===========================

  * New symbolic commands:

          eval
          ezmesh
          find
          sinc

  * Update minimum versions of SymPy to 1.2 and Octave to 4.2.

  * Fixes for SymPy 1.4.

  * Newer SymPy versions improve QR and LU on non-square matrices.

  * Support for expressions with min and max such as `min(x, y)`.

  * `subs(f)` now works: it finds values from the workspace.

  * `gammainc` now regularized correctly.

  * `lambertw` has more consistent printing.

  * Other bug fixes and documentation updates.



octsympy 2.7.1 (2018-10-02)
===========================

  * Fixes for SymPy 1.3.

  * Various bug fixes and documentation updates.



octsympy 2.7.0 (2018-07-12)
===========================

  * New symbolic commands:

          arg
          euler
          ezcontour

  * New `@double` numerical functions; these are wrappers around SymPy,
    so they are slower than native floating-point implementations.

          bernoulli       euler
          chebyshevT      pochhammer
          chebyshevU

  * The initial startup is much quieter!

  * `vpa` now warns of low-precision on non-numbers strings with decimals
    such as `vpa('cos(0.1)')`.  See "help vpa" for details.

  * `subs` allows multiple scalar variables to be replaced with symbolic
    matrix expressions.

  * symfun can be evaluated at symbolic matrices: `f(sym([1 2; 3 4]))`
    now works where `f(x)` is a symfun.

  * Fixes for symfuns such as `syms N(t)` where the function name
    conflicts with a SymPy command.

  * Fixes for how assumptions interact with symfuns.

  * New command `sympref diagnose` to help debug Python/SymPy issues.

  * Improve `function_handle` support by supporting more functions.

  * Fixes for several bugs mentioning "immutable matrices".

  * `bernoulli` now works with array inputs.

  * Added a `private/defaultpython.m` to make it easier for distributors
    to control which python interpreter is used by default.

  * Fixes for GNU Octave 4.4.

  * Fixes for SymPy 1.2.

  * Various bug fixes and documentation updates.



octsympy 2.6.0 (2017-07-27)
===========================

  * New symbolic commands:

          ellipke         ellipticE       harmonic
          ellipticCE      ellipticF       kroneckerDelta
          ellipticCK      ellipticK       pochhammer
          ellipticCPi     ellipticPi

  * New `@double` numerical functions; these are wrappers around SymPy,
    so they are slower than native floating-point implementations.

          harmonic

  * Support for the new SymPy 1.1.1.

  * `solve` now supports vectors of equations and vectors of variables.

  * Better warning for `sym(0.1)`, updated docs about floating point.

  * Double values can now be converted to their exact rational value
    using `sym(0.1, 'f')`.  Passing `'r'` gives the current heuristic
    behaviour.  Neither raises a warning.

  * The default floating-point heuristics now check for square roots of
    integers, so `sym(sqrt(2))` should work.

  * `sym('i')` and `sym('I')` no longer create the imaginary unit: use
    `sym(i)` or `sym(1i)`.

  * `sym(e)` now gives the same as `exp(sym(1))`.  However, `sym('e')`
    and `syms e` continue to create a variable named `e`.

  * `sym` now accepts function handles such as anonymous functions as
    inputs.

  * `subs` is not appropriate for numerical evaluation; add an example in
    `help subs` which shows how to do this with `function_handle`.

  * Calling `sym(cell)` now creates a sym array instead of a cell array.
    Old behaviour of creating a cell array was deprecated in 2.5.0.

  * Bug fix: isequal(n) for symfun's correctly tests the argnames.



octsympy 2.5.0 (2017-02-01)
===========================

  * New symbolic commands:

          acosd            chol                ones
          adjoint          cosd                prevprime
          angle            dawson              sind
          asind            divisors            sympy
          atand            equationsToMatrix   tand
          beta             eye                 zeros
          cell2sym         hilb
          charpoly         invhilb

  * Add more `@double` numerical functions.  For now these are simply
    wrappers around SymPy, so they are slower than native floating
    point implementations.

          coshint         logint
          cosint          polylog
          dilog           sinhint
          fresnelc        sinint
          fresnels        zeta

  * The full set of assumptions implemented by Sympy can now be used.
    For example, `syms p prime` assumes `p` is prime.

  * `assume(x, 'clear')` can be used to clear assumptions on variables.
    Previously undocumented commands such as `sym(x, 'clear')` and
    `syms x clear` are now deprecated.

  * `assume` supports vector inputs.  Also supported are alternative
    "command forms" such as `assume x y real` and `assume x y clear`.

  * `solve` now works with inequalities.

  * `sym('1.3')` now creates the rational number 13/10.

  * A new keyword option `coeffs(f, x, 'all')` returns both zero and
    non-zero coefficients.

  * Change (and document!) default matrix norm to the 2-norm (it was
    Frobenius).

  * `heaviside` accepts a second argument for its value at zero.

  * `isfinite` behaves correctly for variables (and is documented).

  * New experimental Python communication using the native Python/C
    interface, due to Abhinav Tripathi during Google Summer of Code 2016.

  * Bug fix: assign `[]` to row/column removes that that row/column.

  * `char(x)` now gives a more human-readable output, useful for example
    in labelling a figure.

  * ezplot supports implicit plotting of f(x, y) == 0.

  * Deprecation notice: `sym(cell)` will soon create a sym array
    (currently it creates a cell array of sym objects, and issues a
    warning).

  * Deprecation notice: `evalpy` will be removed in a future release.

  * Remove deprecated method for changing the Python executable using
    `sympref`: instead use the environment variable `PYTHON`.

  * Update minimum versions of SymPy to 1.0 and Octave to 4.0.0, so
    we can remove some crufty workarounds.



octsympy 2.4.0 (2016-05-24)
===========================

  * New symbolic commands:

          acsc          csch          gammaln       polylog
          asec          dilog         hypergeom     psi
          asech         ei            hypot         resize
          besseljn      expint        igamma        sech
          besselyn      ezsurf        jordan        signIm
          cat           fresnelc      laguerreL     sinint
          cosint        fresnels      lgamma        sinhint
          coshint       gammainc      logint        ssinint

  * Move some functions from the "specfun" package.  So now the Symbolic
    package includes some numerical (@double/@single) implementations:

          dirac
          heaviside
          laguerreL
          lambertw

  * Re-implement @double/laguerreL for numerical stability.

  * Add spherical Bessel functions: these are called `besseljn` and
    `besselyn` (for now, subject to change).  Thanks to Utkarsh Gautam.

  * Fix: `@sym/dot` consistent with `@double/dot` thanks to Alex Vong.

  * The environment variable `PYTHON` controls which Python executable is
    used.  The command
         `sympref python C:\bin\python`
    has been deprecated; instead please use:
         `setenv PYTHON C:\bin\python`

  * Improve support for Windows.  Thanks to Abhinav Tripathi, Tatsuro
    Matsuoka, finalsnd, and Mike Miller.

  * Installation scripts merely warn if Python and SymPy aren't found.



octsympy 2.3.0 (2016-04-08)
===========================

  * New commands:

          airy          chebyshevU      finiteset     rewrite
          besselj       chebyshevT      has           round
          bessely       fix             kron          sort
          besseli       frac            linspace      union
          besselk       intersect       logspace      unique
          besselh       interval        max
          cbrt          ismember        min

  * Bug fix for working with certain unevaluated integrals.

  * Bug fixes for function_handle, fortran and ccode.

  * Bug fixes or improvements to repmat, reshape, python_cmd, factor,
    dot star, children.

  * Support for SymPy 1.0.

  * Errors raised in Python code are now caught and passed back to Octave
    in most cases.  This simplifies implementation.
      - Note some error messages have changed slightly.
      - Windows users now see previously hidden error messages.
    Thanks to @latot.

  * Windows "bundle" package should work even if the system has another
    Python installed.  Thanks to Abhinav Tripathi.

  * Installation bug fixes.  Thanks to Abhinav Tripathi and Mike Miller.

  * New functions for converting sym to integers.  Thanks to @latot.

  * Making a sym of a large integer like `sym(10^16)` gives a warning.
    Please use `sym(10)^16` or `sym('1000000000000123456789').

  * New functions for dealing with sets and intervals and operations
    on them, thanks to @latot.

  * 2D Taylor expansions are implemented, thanks to Utkarsh Gautam.

  * Sort is implemented, thanks to Utkarsh Gautam.

  * Fourier and Laplace transforms (and their inverses) use a
    different implementation which improves handling of delta
    functions.  Ideally, a later version will consolidate this with
    SymPy's original implementations.

  * Python `None` can be returned and manipulated.

  * Saving/Loading sym objects is now fully-supported (thanks to Abhinav
    Tripathi).

  * Documentation improvements.



octsympy 2.2.4 (2015-12-14)
===========================

  * Fix display on Octave 3.8.

  * Support for SymPy 0.7.6.1.



octsympy 2.2.3 (2015-11-25)
===========================

  * New commands:

          cross
          dot

  * sym('var') is more robust in case var happens to be a special
    value in SymPy.  Now sym('E') is just a symbol rather than
    exp(sym(1)).  Also sym('E1') and sym('Eq') no longer give errors.

  * Fix bug in assigning to column vectors, thanks to Grzegorz Dudziuk.

  * During install, test for PATH problems on Windows (issue #236).

  * Fix for Octave 4.1+ development versions, thanks to Mike Miller.



octsympy 2.2.2 (2015-07-03)
===========================

  * Fix for configure script using Python 3 (thanks Vadim Gribanov).

  * Fourier transform fixes (thanks Alexander Misel, Andrés Prieto).
    They now follow the non-unitary angular frequency convention.

  * Support for SymPy 0.7.7.dev version.

  * Add some warnings to the documentation about unreliable results
    for "dsolve" on systems and from Fourier transforms.

  * Start using "print_usage" for invalid inputs as is common
    practice in Octave.

  * Bug fixes and update doctests.



octsympy 2.2.1 (2015-04-22)
===========================

  * Fix an ascii pretty printing regression (issue #234).

  * Other minor fixes for doctests, sympref and symreplace.



octsympy 2.2.0 (2015-04-20)
===========================

  * New commands:

          catalan
          eulergamma
          lambertw

  * Installing symbolic package now check for Python and minimum
    version of SymPy (thanks Carnë Draug for autoconf).

  * Installations from Octave-Forge ("pkg install -forge symbolic")
    should now work on Windows (thanks vassbu).  You will need the
    Python and SymPy dependencies.  Or you can use the [bundled
    package](https://github.com/cbm755/octsympy/releases)

  * Added support for Python 3 (still works with Python 2 as well).

  * Documentation improvements especially to assumptions.  Examples
    within documentation can now be tested with doctests, see the
    `octsympy_doctests.m` function.

  * Fix a warning on Octave 4.0.0-rc1 and make tests work properly.

  * Other bug fixes: assumptions; symvar and symbolic matrix powers;
    various display issues.



octsympy 2.1.0 (2015-03-06)
===========================

  * New commands:

          columns
          degree
          formula
          ismatrix
          numden
          rows

  * Additional ways of calling symsum, symprod, and subs for better
    compatibility with other symbolic toolboxes.

  * Bug fixes in poly2sym, sym2poly, symfun (thanks @rocketsound),
    prod, horner, coeffs.

  * Documentation improvements.

  * Improvements to "argnames" and "formula" for the dependent
    variables and dependent expression of a symfun.  These are now
    implemented for basic sym objects as well.

  * Improvements to assumptions.  E.g., `x = assume(x, 'positive')` no
    longer mucks around in the workspace for other instances of x (it
    still does this with no output argument, for compatibility with
    other symbolic toolboxes).  You can use multiple assumptions with
    sym and syms, e.g., `syms n m positive even`.

  * Improve symbolic sized matrices such as `A = sym('a', [n m])`.
    These are still experimental; they correspond to MatixSymbols in
    SymPy and may need a recent SymPy development version.  For now,
    the `size(A)` returns "1x1" although internally `NaN` is used for
    symbolic-sized dimensions.  Enabling `size(A)` to return "NaNx3"
    may occur later.

  * Drop python_cmd_string, which has been deprecated since v0.1.1.



octsympy 2.0.0 (2015-02-04)
===========================

 *  Octsympy is now the "symbolic" package for Octave Forge.  There
    was a previous "symbolic" package (based on GiNaC) which reached
    version 1.1.0.  To prevent confusion, we are now at version 2.0.0.
    Additionally, the history of the two projects has been merged
    (thanks Carnë Draug).

 *  New commands:

          coeffs
          ipermute
          isallconstant
          isconstant
          nchoosek
          permute

 *  Fixes for development version of SymPy.

 *  Fixes for vpa and vpasolve: high precision should be more reliable.

 *  Improve handling `sym(pi/3)` and other small fractions of pi.  It
    works but you'll still get a warning and 2*sym(pi)/3 is really the
    preferred approach!  `sym(-pi)` now works.

 *  On Windows, default to ascii rendering for now (until unicode
    is fixed in Octave on that platform).

 *  No longer needs to autogenerate a bunch of functions at install
    time: hopefully making it easier than ever to get involved!



octsympy 0.1.3 (2015-01-06)
===========================

 *  New commands:

          argnames           partfrac
          digits             orth
          ilaplace           rank
          laplace            rref
          ldivide            sum
          mldivide           vpa
          null               vpasolve

 *  Symbolic backslash support.

 *  variable-precision arithmetic support: see vpa, digits, vpasolve.

 *  Much-improved dsolve thanks to Andrés Prieto.

 *  Laplace and inverse Laplace transforms (Andrés Prieto).

 *  Partial fractions (Andrés Prieto).

 *  Improvements to solve (Andrés Prieto).

 *  Preliminary support for matrix expressions, e.g., matrix to a symbolic
    power.

 *  Should work properly with Stand-alone Python (thanks to David Manthey).



octsympy 0.1.2 (2014-12-01)
===========================

 *  New commands:

          children           rhs
          expm               setdiff
          lhs                setxor
          pinv               trace
          potential

 *  Support new SymPy 0.7.6.  This adds Octave code generation which means
    that OctSymPy's `matlabFunction` is supported.

 *  For now, SymPy 0.7.5 should still work, but upgrading to SymPy 0.7.6 is
    recommended.



octsympy 0.1.1 (2014-10-20)  Rose Garden
========================================

Major Changes
-------------

 *  Fix sym(double) approx by rationals (issue #121, thanks HuiZhong LU).

 *  Improvements to sym() command: you can now pass the underlying "srepr"
    SymPy presentation to create an object.

 *  Bug fixes: improvements to indexing, findsymbols and assumptions,
    isscalar/isvector failures on recent Octave, output formatting fixes,

 *  New commands:

          and             isscalar
          char            isvector
          diag            nnz
          eig             or
          iscolumn        uplus
          isrow           xor


Minor Changes
-------------

 *  Improvements to logical and isAlways commands.

 *  IPC system() should work on windows.

 *  Better test system, easier to see "real" failures rather than expected
    (known) failures.

 *  Improved handling of symfuns.

 *  Improvements to internal string handling/escaping especially newlines.

     -  Enter a multiline command using a cell array of lines e.g.,
        `python_cmd({'a = 10' 'return (a, 2*a)'})
        or
        `python_cmd({'a = 10'; 'return (a, 2*a)'})
     -  The same applies to `evalpy`.  If you need the old deprecated
        behaviour, it is still available as `python_cmd_string`.



octsympy 0.1.0 (2014-08-27)  Pacific Coffee
===========================================

Major Changes
-------------

 *  `sympref` replaces `octsympy_config`.  You can change the Python
    interpreter with `sympref python /path/to/python`.

 *  Unicode pretty-printed output by default.

     -  If you see `?` or other broken characters, try `sympref display
        ascii`.  Then help me get this working on your system!

     -  Or `sympref display flat` to disable pretty-printing.  (You can
        still use the `pretty` command selectively).

 *  Experimental Windows package with Python and SymPy included (look
    Ma, no deps!)  Uses [David Manthey's single file py.exe Python] [1].

    [1]: http://www.orbitals.com/programs/pyexe.html

 *  Lots of new commands:

          atan2           fliplr         isfinite          norm
          ccode           flipud         isna              not
          cond            fortran        jacobian          qr
          conj            ge             laplacian         real
          curl            gradient       le                repmat
          det             gt             lt                svd
          divergence      hessian        lu                toeplitz
          ezplot3         imag           matlabFunction    tril
          ezplot          inv            ne                triu

 *  Preliminary code generation (`ccode`, `fortran` and
    `matlabFunction` functions).  However, `matlabFunction` mostly
    depends on patches not yet in upstream SymPy.

 *  Inequality support.

 *  Assumptions now behave more like the Matlab Symbolic Math Toolbox.


Minor or internal changes
-------------------------

 *  Arithmetic operations on symfuns return symfuns instead of syms.

 *  More robust XML-like IPC transport.

 *  Move to proper Octave-style `%!` tests.

 *  Debugging IPC modes: `systmpfile` (same as `system` but outputs a
    temp file for inspection) and `sysoneline` (work-in-progress).



octsympy 0.0.4 (2014-05-26)  Lovever Coffee
===========================================

 *  Basic assumptions support.

 *  Matlab packages, only slow system() ipc for now.

 *  Improvements on passing variables between Octave and Python.



octsympy 0.0.3 (2014-04-29)  Wu Ke Song
=======================================

 *  Many new commands.

 *  `system()` communication no longer makes temporary files.  To
    change the communication mechanism, use "octsympy_config ipc
    system". See also "help octsympy_config".

 *  Added new tool "evalpy", this is fun and good for debugging...

 *  Bugs fixed, docs updated

 *  Start documenting differences with the Matlab Symbolic Math
    Toolbox.



octsympy 0.0.2 (2014-04-20)
===========================

 *  A preview release, test it out report issues.  Documentation is a
    mess, various things are work-in-progress.  But it works and I
    think has potential.
