Skip to content


Choose a tag to compare
@jgillis jgillis released this 06 Mar 20:33
· 4462 commits to main since this release


Grab a binary from the table (for MATLAB, use the newest compatible version below):

Windows 64 bit Linux (14.04+) Mac
Matlab R2014b or later R2014b or later R2015a or later
R2014a R2014a R2014b
R2013a or R2013b R2014a
Octave 4.2.1 32bit or 64bit 4.2.1 4.2.1
Python Py27 (py 32bit or py 64bit ) Py27 Py27
Py35 (py 32bit or py 64bit ) Py35 Py35
Py36 (py 32bit or py 64bit ) Py36 Py36

or see download page for more options/versions ...

Unzip in your home directory and adapt the path:

import casadi.*
x = MX.sym('x')
from sys import path
from casadi import *
x = MX.sym("x")

New: install with pip install casadi (you must have pip --version >= 8.1!)


Get started with the example pack.

Getting error "CasADi is not running from its package context." in Python? Check that you have casadi-py27-np1.9.1-v3.2.3/casadi/ If you have casadi-py27-np1.9.1-v3.2.3/ instead, that's not good; add an extra casadi folder.

Release notes

New features

  • Introduced differentiable exponential matrix node expm (requires slicot)
  • Introduced differentiable N-dimensional lookup tables: interpolant with 'bspline' solver.

Bugs in the SUNDIALS interface fixed

CasADi 3.1 included a refactored support for ODE/DAE sensitivity analysis. While more efficient, this also exposed some bugs that have now been fixed in the CasADi 3.2 release, including:

  • A bug affecting second order sensitivity analysis using CVODES was fixed. Cf. #1924.
  • Segfault in IDAS Cf. #1911.

API changes

  • The if_else and conditional operations are now non-short-circuiting by default for both SX and MX. This means that if_else(c,x,y) is now equivalent to if_else(c,x,y,False) and not if_else(c,x,y,True) as before. Also note that if_else(c,x,y,True) is only supported for MX. Cf. #1968.
  • The functions Function::jacobian, Function::derivative and Function::hessian, which have had an internal character since CasADi 3.0, have been deprecated and will be removed in their current forms in the next release. The user is encouraged to work with expressions (e.g. J = jacobian(f,x) or Jv = jtimes(f,x,v) or [H,g] = hessian(f,x)) or use Function::factory (*). To allow a smooth transition, Function::jacobian and Function::hessian will be available as Function::jacobian_old and Function::hessian_old in this and next release. Cf. #1777.

(*) example in Matlab:

x = MX.sym('x')
y = x^2;
f = Function('f',{x},{y})
%J = f.jacobian(0,0) replacement:
J = Function('J',{x},{jacobian(y,x), y}) % alternative 1
J = f.factory('J',{'i0'},{'jac:o0:i0','o0'}) % alternative 2
%H = f.hessian(0,0) replacement:
[H,g] = hessian(y,x);
H = Function('H',{x},{H,g}) % alternative 1
H = f.factory('H',{'i0'},{'hess:o0:i0:i0','grad:o0:i0'}) % alternative 2

Improvements to C code generation

  • The generated code now follows stricter coding standards. It should now be possible to compile the code with the GCC flags -Wall -Werror. Cf. #1741.

Changes to the build system

  • The build system has been refactored and CasADi/C++ can be conveniently compiled with Visual Studio C++ on Windows. The installation now also includes CMake configure files, which makes it convenient to locate and use a CasADi installation in C++ code. Cf. #1982.
  • The logic for source builds have changed. Before, the build system would try to locate third-party packages on the system and compile and install the third-party interfaces if this was successful. Now, the logic is that third-party packages are not installed unless the user specifically indicates this e.g. -DWITH_IPOPT=ON`. Cf.
    #1989, #1988.
  • The default installation directories for the SWIG interfaces (for Python, Octave and MATLAB) has changed. It is now installed as subdirectories of the CMAKE_INSTALL_PREFIX location by default, but this can be changed by explicitly setting the CMake variables BIN_PREFIX, CMAKE_PREFIX, INCLUDE_PREFIX, LIB_PREFIX, MATLAB_PREFIX and PYTHON_PREFIX. A flat installation directory (without subdirectories) can be obtained by setting the WITH_SELFCONTAINED option. This is the default behavior on Windows. Cf. #1991, #1990

Changes to precompiled binaries

Python 2.6 (#1976), Python 3.6 (#1987) and Octave 4.2 (#2002, #2000) are now supported.