packages feed

casadi-bindings-1.8.2.1: Casadi/Wrappers/Data.hs

{-# OPTIONS_GHC -Wall #-}
{-# Language FlexibleInstances #-}
{-# Language MultiParamTypeClasses #-}

module Casadi.Wrappers.Data where

import Prelude hiding ( Functor )

import Foreign.Ptr ( Ptr, FunPtr )
import Foreign.ForeignPtr ( ForeignPtr, castForeignPtr, newForeignPtr, touchForeignPtr )
import Foreign.ForeignPtr.Unsafe ( unsafeForeignPtrToPtr )

import Casadi.Marshal (  Marshal(..) )
import Casadi.WrapReturn ( WrapReturn(..) )

-- raw decl
data SXFunction'
-- data decl
{-|
-}
newtype SXFunction = SXFunction (ForeignPtr SXFunction')
-- typeclass decl
class SXFunctionClass a where
  castSXFunction :: a -> SXFunction
instance SXFunctionClass SXFunction where
  castSXFunction = id

-- baseclass instances
instance SharedObjectClass SXFunction where
  castSharedObject (SXFunction x) = SharedObject (castForeignPtr x)

instance PrintableObjectClass SXFunction where
  castPrintableObject (SXFunction x) = PrintableObject (castForeignPtr x)

instance IOInterfaceFXClass SXFunction where
  castIOInterfaceFX (SXFunction x) = IOInterfaceFX (castForeignPtr x)

instance OptionsFunctionalityClass SXFunction where
  castOptionsFunctionality (SXFunction x) = OptionsFunctionality (castForeignPtr x)

instance FXClass SXFunction where
  castFX (SXFunction x) = FX (castForeignPtr x)


-- helper instances
instance Marshal SXFunction (Ptr SXFunction') where
  marshal (SXFunction x) = return (unsafeForeignPtrToPtr x)
  marshalFree (SXFunction x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__SXFunction" 
  c_delete_CasADi__SXFunction :: FunPtr (Ptr SXFunction' -> IO ())
instance WrapReturn (Ptr SXFunction') SXFunction where
  wrapReturn = (fmap SXFunction) . (newForeignPtr c_delete_CasADi__SXFunction)


-- raw decl
data MXFunction'
-- data decl
{-|
>General function mapping from/to MX.
>
>Joel Andersson
>
>>List of available options
>+--------------+--------------+--------------+--------------+--------------+
>|      Id      |     Type     |   Default    | Description  |   Used in    |
>+==============+==============+==============+==============+==============+
>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::FXIn |
>|              |              |              | calculate    | ternal       |
>|              |              |              | the          |              |
>|              |              |              | Jacobians.   |              |
>|              |              |              | (forward:    |              |
>|              |              |              | only forward |              |
>|              |              |              | mode|reverse |              |
>|              |              |              | : only       |              |
>|              |              |              | adjoint mode |              |
>|              |              |              | |automatic:  |              |
>|              |              |              | a heuristic  |              |
>|              |              |              | decides      |              |
>|              |              |              | which is     |              |
>|              |              |              | more         |              |
>|              |              |              | appropriate) |              |
>+--------------+--------------+--------------+--------------+--------------+
>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::FXIn |
>|              |              |              | indicate     | ternal       |
>|              |              |              | wether       |              |
>|              |              |              | statistics   |              |
>|              |              |              | must be      |              |
>|              |              |              | gathered     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
>|              |              |              | exceptions   | ternal       |
>|              |              |              | when the     |              |
>|              |              |              | numerical    |              |
>|              |              |              | values of    |              |
>|              |              |              | the inputs   |              |
>|              |              |              | don't make   |              |
>|              |              |              | sense        |              |
>+--------------+--------------+--------------+--------------+--------------+
>| jacobian_gen | OT_JACOBIANG | GenericType( | Function     | CasADi::FXIn |
>| erator       | ENERATOR     | )            | that returns | ternal       |
>|              |              |              | a Jacobian   |              |
>|              |              |              | function     |              |
>|              |              |              | given a set  |              |
>|              |              |              | of desired   |              |
>|              |              |              | Jacobian     |              |
>|              |              |              | blocks,      |              |
>|              |              |              | overrides    |              |
>|              |              |              | internal     |              |
>|              |              |              | routines.    |              |
>|              |              |              | Check docume |              |
>|              |              |              | ntation of J |              |
>|              |              |              | acobianGener |              |
>|              |              |              | ator .       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
>| f_adj_dir    |              | m_dir        | r_of_adj_dir | ternal       |
>|              |              |              | " to grow    |              |
>|              |              |              | until it     |              |
>|              |              |              | reaches this |              |
>|              |              |              | number       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
>| f_fwd_dir    |              | m_dir        | r_of_fwd_dir | ternal       |
>|              |              |              | " to grow    |              |
>|              |              |              | until it     |              |
>|              |              |              | reaches this |              |
>|              |              |              | number       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::FXIn |
>|              | TOR          | )            | be activated | ternal       |
>|              |              |              | (inputs|outp |              |
>|              |              |              | uts)         |              |
>+--------------+--------------+--------------+--------------+--------------+
>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
>|              |              | red_object"  | object       | onsFunctiona |
>|              |              |              |              | lityNode     |
>+--------------+--------------+--------------+--------------+--------------+
>| number_of_ad | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
>| j_dir        |              |              | adjoint      | ternal       |
>|              |              |              | derivatives  |              |
>|              |              |              | to be        |              |
>|              |              |              | calculated s |              |
>|              |              |              | imultanously |              |
>+--------------+--------------+--------------+--------------+--------------+
>| number_of_fw | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
>| d_dir        |              |              | forward      | ternal       |
>|              |              |              | derivatives  |              |
>|              |              |              | to be        |              |
>|              |              |              | calculated s |              |
>|              |              |              | imultanously |              |
>+--------------+--------------+--------------+--------------+--------------+
>| numeric_hess | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
>| ian          |              |              | Hessians     | ternal       |
>|              |              |              | numerically  |              |
>|              |              |              | (using       |              |
>|              |              |              | directional  |              |
>|              |              |              | derivatives) |              |
>|              |              |              | rather than  |              |
>|              |              |              | with the     |              |
>|              |              |              | built-in     |              |
>|              |              |              | method       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| numeric_jaco | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
>| bian         |              |              | Jacobians    | ternal       |
>|              |              |              | numerically  |              |
>|              |              |              | (using       |              |
>|              |              |              | directional  |              |
>|              |              |              | derivatives) |              |
>|              |              |              | rather than  |              |
>|              |              |              | with the     |              |
>|              |              |              | built-in     |              |
>|              |              |              | method       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
>| heck         |              |              | exceptions   | ternal       |
>|              |              |              | when NaN or  |              |
>|              |              |              | Inf appears  |              |
>|              |              |              | during       |              |
>|              |              |              | evaluation   |              |
>+--------------+--------------+--------------+--------------+--------------+
>| sparse       | OT_BOOLEAN   | true         | function is  | CasADi::FXIn |
>|              |              |              | sparse       | ternal       |
>+--------------+--------------+--------------+--------------+--------------+
>| sparsity_gen | OT_SPARSITYG | GenericType( | Function     | CasADi::FXIn |
>| erator       | ENERATOR     | )            | that         | ternal       |
>|              |              |              | provides     |              |
>|              |              |              | sparsity for |              |
>|              |              |              | a given      |              |
>|              |              |              | input output |              |
>|              |              |              | block,       |              |
>|              |              |              | overrides    |              |
>|              |              |              | internal     |              |
>|              |              |              | routines.    |              |
>|              |              |              | Check docume |              |
>|              |              |              | ntation of S |              |
>|              |              |              | parsityGener |              |
>|              |              |              | ator .       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| store_jacobi | OT_BOOLEAN   | false        | keep         | CasADi::FXIn |
>| ans          |              |              | references   | ternal       |
>|              |              |              | to generated |              |
>|              |              |              | Jacobians in |              |
>|              |              |              | order to     |              |
>|              |              |              | avoid        |              |
>|              |              |              | generating   |              |
>|              |              |              | identical    |              |
>|              |              |              | Jacobians    |              |
>|              |              |              | multiple     |              |
>|              |              |              | times        |              |
>+--------------+--------------+--------------+--------------+--------------+
>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::FXIn |
>|              |              | )            | defined      | ternal       |
>|              |              |              | field that   |              |
>|              |              |              | can be used  |              |
>|              |              |              | to identify  |              |
>|              |              |              | the function |              |
>|              |              |              | or pass      |              |
>|              |              |              | additional   |              |
>|              |              |              | information  |              |
>+--------------+--------------+--------------+--------------+--------------+
>| verbose      | OT_BOOLEAN   | false        | verbose      | CasADi::FXIn |
>|              |              |              | evaluation   | ternal       |
>|              |              |              | for          |              |
>|              |              |              | debugging    |              |
>+--------------+--------------+--------------+--------------+--------------+
>
>Diagrams
>
>C++ includes: mx_function.hpp 
-}
newtype MXFunction = MXFunction (ForeignPtr MXFunction')
-- typeclass decl
class MXFunctionClass a where
  castMXFunction :: a -> MXFunction
instance MXFunctionClass MXFunction where
  castMXFunction = id

-- baseclass instances
instance SharedObjectClass MXFunction where
  castSharedObject (MXFunction x) = SharedObject (castForeignPtr x)

instance PrintableObjectClass MXFunction where
  castPrintableObject (MXFunction x) = PrintableObject (castForeignPtr x)

instance IOInterfaceFXClass MXFunction where
  castIOInterfaceFX (MXFunction x) = IOInterfaceFX (castForeignPtr x)

instance OptionsFunctionalityClass MXFunction where
  castOptionsFunctionality (MXFunction x) = OptionsFunctionality (castForeignPtr x)

instance FXClass MXFunction where
  castFX (MXFunction x) = FX (castForeignPtr x)


-- helper instances
instance Marshal MXFunction (Ptr MXFunction') where
  marshal (MXFunction x) = return (unsafeForeignPtrToPtr x)
  marshalFree (MXFunction x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__MXFunction" 
  c_delete_CasADi__MXFunction :: FunPtr (Ptr MXFunction' -> IO ())
instance WrapReturn (Ptr MXFunction') MXFunction where
  wrapReturn = (fmap MXFunction) . (newForeignPtr c_delete_CasADi__MXFunction)


-- raw decl
data FX'
-- data decl
{-|
>General function.
>
>A general function $f$ in casadi can be multi-input, multi-output.  Number
>of inputs: nin getNumInputs()  Number of outputs: nout getNumOutputs()
>
>We can view this function as a being composed of a (nin, nout) grid of
>single-input, single-output primitive functions.  Each such primitive
>function $f_{i,j} \\forall i \\in [0,nin-1], j \\in [0,nout-1]$ can
>map as $\\mathbf{R}^{n,m}\\to\\mathbf{R}^{p,q}$, in which n,m,p,q can
>take different values for every (i,j) pair.
>
>When passing input, you specify which partition i is active. You pass the
>numbers flattened, as a vector of size $(n*m)$.  When requesting output, you
>specify which partition j is active. You get the numbers flattened, as a
>vector of size $(p*q)$.
>
>To calculate jacobians, you need to have $(m=1,q=1)$.
>
>Write the jacobian as $J_{i,j} = \\nabla f_{i,j} = \\frac{\\partial
>f_{i,j}(\\vec{x})}{\\partial \\vec{x}}$.
>
>Using $\\vec{v} \\in \\mathbf{R}^n$ as a forward seed: setFwdSeed(v,i)
>Retrieving $\\vec{s}_f \\in \\mathbf{R}^p$ from: getFwdSens(sf,j)
>
>Using $\\vec{w} \\in \\mathbf{R}^p$ as a forward seed: setAdjSeed(w,j)
>Retrieving $\\vec{s}_a \\in \\mathbf{R}^n $ from: getAdjSens(sa,i)
>
>We have the following relationships for function mapping from a column
>vector to a column vector:
>
>$ \\vec{s}_f = \\nabla f_{i,j} . \\vec{v}$ $ \\vec{s}_a = (\\nabla
>f_{i,j})^T . \\vec{w}$
>
>Some quantities is these formulas must be transposed:  input row: transpose
>$ \\vec{v} $ and $\\vec{s}_a$  output row: transpose $ \\vec{w} $ and
>$\\vec{s}_f$
>
>NOTE: FX's are allowed to modify their input arguments when evaluating:
>implicitFunction, IDAS solver Futher releases may disallow this. for
>developers Each function consists of 4 files: public class header file:
>imported in python
>
>public class implementation
>
>internal class header file: should only be used by derived classes
>
>internal class implementation
>
>python and c++ should be 1-to-1  There should be no extra features in 1.
>All the functionality should exist in 1.  If it means that c++ will be more
>"pythonic", so be it.
>
>Joel Andersson
>
>>List of available options
>+--------------+--------------+--------------+--------------+--------------+
>|      Id      |     Type     |   Default    | Description  |   Used in    |
>+==============+==============+==============+==============+==============+
>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::FXIn |
>|              |              |              | calculate    | ternal       |
>|              |              |              | the          |              |
>|              |              |              | Jacobians.   |              |
>|              |              |              | (forward:    |              |
>|              |              |              | only forward |              |
>|              |              |              | mode|reverse |              |
>|              |              |              | : only       |              |
>|              |              |              | adjoint mode |              |
>|              |              |              | |automatic:  |              |
>|              |              |              | a heuristic  |              |
>|              |              |              | decides      |              |
>|              |              |              | which is     |              |
>|              |              |              | more         |              |
>|              |              |              | appropriate) |              |
>+--------------+--------------+--------------+--------------+--------------+
>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::FXIn |
>|              |              |              | indicate     | ternal       |
>|              |              |              | wether       |              |
>|              |              |              | statistics   |              |
>|              |              |              | must be      |              |
>|              |              |              | gathered     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
>|              |              |              | exceptions   | ternal       |
>|              |              |              | when the     |              |
>|              |              |              | numerical    |              |
>|              |              |              | values of    |              |
>|              |              |              | the inputs   |              |
>|              |              |              | don't make   |              |
>|              |              |              | sense        |              |
>+--------------+--------------+--------------+--------------+--------------+
>| jacobian_gen | OT_JACOBIANG | GenericType( | Function     | CasADi::FXIn |
>| erator       | ENERATOR     | )            | that returns | ternal       |
>|              |              |              | a Jacobian   |              |
>|              |              |              | function     |              |
>|              |              |              | given a set  |              |
>|              |              |              | of desired   |              |
>|              |              |              | Jacobian     |              |
>|              |              |              | blocks,      |              |
>|              |              |              | overrides    |              |
>|              |              |              | internal     |              |
>|              |              |              | routines.    |              |
>|              |              |              | Check docume |              |
>|              |              |              | ntation of J |              |
>|              |              |              | acobianGener |              |
>|              |              |              | ator .       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
>| f_adj_dir    |              | m_dir        | r_of_adj_dir | ternal       |
>|              |              |              | " to grow    |              |
>|              |              |              | until it     |              |
>|              |              |              | reaches this |              |
>|              |              |              | number       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
>| f_fwd_dir    |              | m_dir        | r_of_fwd_dir | ternal       |
>|              |              |              | " to grow    |              |
>|              |              |              | until it     |              |
>|              |              |              | reaches this |              |
>|              |              |              | number       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::FXIn |
>|              | TOR          | )            | be activated | ternal       |
>|              |              |              | (inputs|outp |              |
>|              |              |              | uts)         |              |
>+--------------+--------------+--------------+--------------+--------------+
>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
>|              |              | red_object"  | object       | onsFunctiona |
>|              |              |              |              | lityNode     |
>+--------------+--------------+--------------+--------------+--------------+
>| number_of_ad | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
>| j_dir        |              |              | adjoint      | ternal       |
>|              |              |              | derivatives  |              |
>|              |              |              | to be        |              |
>|              |              |              | calculated s |              |
>|              |              |              | imultanously |              |
>+--------------+--------------+--------------+--------------+--------------+
>| number_of_fw | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
>| d_dir        |              |              | forward      | ternal       |
>|              |              |              | derivatives  |              |
>|              |              |              | to be        |              |
>|              |              |              | calculated s |              |
>|              |              |              | imultanously |              |
>+--------------+--------------+--------------+--------------+--------------+
>| numeric_hess | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
>| ian          |              |              | Hessians     | ternal       |
>|              |              |              | numerically  |              |
>|              |              |              | (using       |              |
>|              |              |              | directional  |              |
>|              |              |              | derivatives) |              |
>|              |              |              | rather than  |              |
>|              |              |              | with the     |              |
>|              |              |              | built-in     |              |
>|              |              |              | method       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| numeric_jaco | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
>| bian         |              |              | Jacobians    | ternal       |
>|              |              |              | numerically  |              |
>|              |              |              | (using       |              |
>|              |              |              | directional  |              |
>|              |              |              | derivatives) |              |
>|              |              |              | rather than  |              |
>|              |              |              | with the     |              |
>|              |              |              | built-in     |              |
>|              |              |              | method       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
>| heck         |              |              | exceptions   | ternal       |
>|              |              |              | when NaN or  |              |
>|              |              |              | Inf appears  |              |
>|              |              |              | during       |              |
>|              |              |              | evaluation   |              |
>+--------------+--------------+--------------+--------------+--------------+
>| sparse       | OT_BOOLEAN   | true         | function is  | CasADi::FXIn |
>|              |              |              | sparse       | ternal       |
>+--------------+--------------+--------------+--------------+--------------+
>| sparsity_gen | OT_SPARSITYG | GenericType( | Function     | CasADi::FXIn |
>| erator       | ENERATOR     | )            | that         | ternal       |
>|              |              |              | provides     |              |
>|              |              |              | sparsity for |              |
>|              |              |              | a given      |              |
>|              |              |              | input output |              |
>|              |              |              | block,       |              |
>|              |              |              | overrides    |              |
>|              |              |              | internal     |              |
>|              |              |              | routines.    |              |
>|              |              |              | Check docume |              |
>|              |              |              | ntation of S |              |
>|              |              |              | parsityGener |              |
>|              |              |              | ator .       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| store_jacobi | OT_BOOLEAN   | false        | keep         | CasADi::FXIn |
>| ans          |              |              | references   | ternal       |
>|              |              |              | to generated |              |
>|              |              |              | Jacobians in |              |
>|              |              |              | order to     |              |
>|              |              |              | avoid        |              |
>|              |              |              | generating   |              |
>|              |              |              | identical    |              |
>|              |              |              | Jacobians    |              |
>|              |              |              | multiple     |              |
>|              |              |              | times        |              |
>+--------------+--------------+--------------+--------------+--------------+
>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::FXIn |
>|              |              | )            | defined      | ternal       |
>|              |              |              | field that   |              |
>|              |              |              | can be used  |              |
>|              |              |              | to identify  |              |
>|              |              |              | the function |              |
>|              |              |              | or pass      |              |
>|              |              |              | additional   |              |
>|              |              |              | information  |              |
>+--------------+--------------+--------------+--------------+--------------+
>| verbose      | OT_BOOLEAN   | false        | verbose      | CasADi::FXIn |
>|              |              |              | evaluation   | ternal       |
>|              |              |              | for          |              |
>|              |              |              | debugging    |              |
>+--------------+--------------+--------------+--------------+--------------+
>
>>List of available monitors
>+---------+--------------------+
>|   Id    |      Used in       |
>+=========+====================+
>| inputs  | CasADi::FXInternal |
>+---------+--------------------+
>| outputs | CasADi::FXInternal |
>+---------+--------------------+
>
>Diagrams
>
>C++ includes: fx.hpp 
-}
newtype FX = FX (ForeignPtr FX')
-- typeclass decl
class FXClass a where
  castFX :: a -> FX
instance FXClass FX where
  castFX = id

-- baseclass instances
instance SharedObjectClass FX where
  castSharedObject (FX x) = SharedObject (castForeignPtr x)

instance PrintableObjectClass FX where
  castPrintableObject (FX x) = PrintableObject (castForeignPtr x)

instance IOInterfaceFXClass FX where
  castIOInterfaceFX (FX x) = IOInterfaceFX (castForeignPtr x)

instance OptionsFunctionalityClass FX where
  castOptionsFunctionality (FX x) = OptionsFunctionality (castForeignPtr x)


-- helper instances
instance Marshal FX (Ptr FX') where
  marshal (FX x) = return (unsafeForeignPtrToPtr x)
  marshalFree (FX x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__FX" 
  c_delete_CasADi__FX :: FunPtr (Ptr FX' -> IO ())
instance WrapReturn (Ptr FX') FX where
  wrapReturn = (fmap FX) . (newForeignPtr c_delete_CasADi__FX)


-- raw decl
data SharedObject'
-- data decl
{-|
>SharedObject implements a reference counting framework simular for effient
>and easily-maintained memory management.
>
>To use the class, both the SharedObject class (the public class), and the
>SharedObjectNode class (the internal class) must be inherited from. It can
>be done in two different files and together with memory management, this
>approach provides a clear destinction of which methods of the class are to
>be considered "public", i.e. methods for public use that can be considered
>to remain over time with small changes, and the internal memory.
>
>When interfacing a software, which typically includes including some header
>file, this is best done only in the file where the internal class is
>defined, to avoid polluting the global namespace and other side effects.
>
>The default constructor always means creating a null pointer to an internal
>class only. To allocate an internal class (this works only when the internal
>class isn't abstract), use the constructor with arguments.
>
>The copy constructor and the assignment operator perform shallow copies
>only, to make a deep copy you must use the clone method explictly. This will
>give a shared pointer instance.
>
>In an inheritance hierarchy, you can cast down automatically, e.g. (
>SXFunction is a child class of FX): SXFunction derived(...); FX base =
>derived;
>
>To cast up, use the shared_cast template function, which works analogously
>to dynamic_cast, static_cast, const_cast etc, e.g.: SXFunction derived(...);
>FX base = derived; SXFunction derived_from_base =
>shared_cast<SXFunction>(base);
>
>A failed shared_cast will result in a null pointer (cf. dynamic_cast)
>
>Joel Andersson
>
>C++ includes: shared_object.hpp 
-}
newtype SharedObject = SharedObject (ForeignPtr SharedObject')
-- typeclass decl
class SharedObjectClass a where
  castSharedObject :: a -> SharedObject
instance SharedObjectClass SharedObject where
  castSharedObject = id

-- baseclass instances
instance PrintableObjectClass SharedObject where
  castPrintableObject (SharedObject x) = PrintableObject (castForeignPtr x)


-- helper instances
instance Marshal SharedObject (Ptr SharedObject') where
  marshal (SharedObject x) = return (unsafeForeignPtrToPtr x)
  marshalFree (SharedObject x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__SharedObject" 
  c_delete_CasADi__SharedObject :: FunPtr (Ptr SharedObject' -> IO ())
instance WrapReturn (Ptr SharedObject') SharedObject where
  wrapReturn = (fmap SharedObject) . (newForeignPtr c_delete_CasADi__SharedObject)


-- raw decl
data PrintableObject'
-- data decl
{-|
>Base class for objects that have a natural string representation.
>
>Joel Andersson
>
>C++ includes: printable_object.hpp 
-}
newtype PrintableObject = PrintableObject (ForeignPtr PrintableObject')
-- typeclass decl
class PrintableObjectClass a where
  castPrintableObject :: a -> PrintableObject
instance PrintableObjectClass PrintableObject where
  castPrintableObject = id

-- baseclass instances

-- helper instances
instance Marshal PrintableObject (Ptr PrintableObject') where
  marshal (PrintableObject x) = return (unsafeForeignPtrToPtr x)
  marshalFree (PrintableObject x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__PrintableObject" 
  c_delete_CasADi__PrintableObject :: FunPtr (Ptr PrintableObject' -> IO ())
instance WrapReturn (Ptr PrintableObject') PrintableObject where
  wrapReturn = (fmap PrintableObject) . (newForeignPtr c_delete_CasADi__PrintableObject)


-- raw decl
data CRSSparsity'
-- data decl
{-|
>General sparsity class.
>
>The storage format is a compressed row storage (CRS) format.
>
>In this format, the structural non-zero elements are stored in row- major
>order, starting from the upper left corner of the matrix and ending in the
>lower right corner.
>
>In addition to the dimension ( size1(), size2()), (i.e. the number of rows
>and the number of columns respectively), there are also two vectors of
>integers:
>
>"rowind" [length size1()+1], which contains the index to the first non-
>zero element on or after the corresponding row. All the non-zero elements of
>a particular i are thus the elements with index el that fulfils: rowind[i]
><= el < rowind[i+1].
>
>"col" [same length as the number of non-zero elements, size()] The columns
>for each of the structural non-zeros.
>
>Note that with this format, it is cheap to loop over all the non-zero
>elements of a particular row, constant time per elment, but expensive to
>jump to access a location (i,j).
>
>If the matrix is dense, i.e. length(col) == size1()*size2(), the format
>reduces to standard dense row major format, which allows access to an
>arbitrary element in constant time.
>
>Since the object is reference counted (it inherits from SharedObject),
>several matrices are allowed to share the same sparsity pattern.
>
>The implementations of some methods of this class has been taken from the
>CSparse package and modified to use STL and CasADi data structures.
>
>See:   Matrix
>
>Joel Andersson
>
>C++ includes: crs_sparsity.hpp 
-}
newtype CRSSparsity = CRSSparsity (ForeignPtr CRSSparsity')
-- typeclass decl
class CRSSparsityClass a where
  castCRSSparsity :: a -> CRSSparsity
instance CRSSparsityClass CRSSparsity where
  castCRSSparsity = id

-- baseclass instances
instance SharedObjectClass CRSSparsity where
  castSharedObject (CRSSparsity x) = SharedObject (castForeignPtr x)

instance PrintableObjectClass CRSSparsity where
  castPrintableObject (CRSSparsity x) = PrintableObject (castForeignPtr x)


-- helper instances
instance Marshal CRSSparsity (Ptr CRSSparsity') where
  marshal (CRSSparsity x) = return (unsafeForeignPtrToPtr x)
  marshalFree (CRSSparsity x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__CRSSparsity" 
  c_delete_CasADi__CRSSparsity :: FunPtr (Ptr CRSSparsity' -> IO ())
instance WrapReturn (Ptr CRSSparsity') CRSSparsity where
  wrapReturn = (fmap CRSSparsity) . (newForeignPtr c_delete_CasADi__CRSSparsity)


-- raw decl
data GenericType'
-- data decl
{-|
>Generic data type.
>
>Joel Andersson
>
>C++ includes: generic_type.hpp 
-}
newtype GenericType = GenericType (ForeignPtr GenericType')
-- typeclass decl
class GenericTypeClass a where
  castGenericType :: a -> GenericType
instance GenericTypeClass GenericType where
  castGenericType = id

-- baseclass instances
instance SharedObjectClass GenericType where
  castSharedObject (GenericType x) = SharedObject (castForeignPtr x)

instance PrintableObjectClass GenericType where
  castPrintableObject (GenericType x) = PrintableObject (castForeignPtr x)


-- helper instances
instance Marshal GenericType (Ptr GenericType') where
  marshal (GenericType x) = return (unsafeForeignPtrToPtr x)
  marshalFree (GenericType x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__GenericType" 
  c_delete_CasADi__GenericType :: FunPtr (Ptr GenericType' -> IO ())
instance WrapReturn (Ptr GenericType') GenericType where
  wrapReturn = (fmap GenericType) . (newForeignPtr c_delete_CasADi__GenericType)


-- raw decl
data IOInterfaceFX'
-- data decl
{-|
>Interface for accessing input and output data structures.
>
>Joel Andersson
>
>C++ includes: io_interface.hpp 
-}
newtype IOInterfaceFX = IOInterfaceFX (ForeignPtr IOInterfaceFX')
-- typeclass decl
class IOInterfaceFXClass a where
  castIOInterfaceFX :: a -> IOInterfaceFX
instance IOInterfaceFXClass IOInterfaceFX where
  castIOInterfaceFX = id

-- baseclass instances

-- helper instances
instance Marshal IOInterfaceFX (Ptr IOInterfaceFX') where
  marshal (IOInterfaceFX x) = return (unsafeForeignPtrToPtr x)
  marshalFree (IOInterfaceFX x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__IOInterface_CasADi__FX_" 
  c_delete_CasADi__IOInterface_CasADi__FX_ :: FunPtr (Ptr IOInterfaceFX' -> IO ())
instance WrapReturn (Ptr IOInterfaceFX') IOInterfaceFX where
  wrapReturn = (fmap IOInterfaceFX) . (newForeignPtr c_delete_CasADi__IOInterface_CasADi__FX_)


-- raw decl
data OptionsFunctionality'
-- data decl
{-|
>Provides options setting/getting functionality Gives a derived class the
>ability to set and retrieve options in a convenient way. It also contains
>error checking, making sure that the option exists and that the value type
>is correct.
>
>A derived class should add option names, types and default values to the
>corresponding vectors.
>
>Joel Andersson
>
>>List of available options
>+--------------+--------------+--------------+--------------+--------------+
>|      Id      |     Type     |   Default    | Description  |   Used in    |
>+==============+==============+==============+==============+==============+
>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
>|              |              | red_object"  | object       | onsFunctiona |
>|              |              |              |              | lityNode     |
>+--------------+--------------+--------------+--------------+--------------+
>
>Diagrams
>
>C++ includes: options_functionality.hpp 
-}
newtype OptionsFunctionality = OptionsFunctionality (ForeignPtr OptionsFunctionality')
-- typeclass decl
class OptionsFunctionalityClass a where
  castOptionsFunctionality :: a -> OptionsFunctionality
instance OptionsFunctionalityClass OptionsFunctionality where
  castOptionsFunctionality = id

-- baseclass instances
instance SharedObjectClass OptionsFunctionality where
  castSharedObject (OptionsFunctionality x) = SharedObject (castForeignPtr x)

instance PrintableObjectClass OptionsFunctionality where
  castPrintableObject (OptionsFunctionality x) = PrintableObject (castForeignPtr x)


-- helper instances
instance Marshal OptionsFunctionality (Ptr OptionsFunctionality') where
  marshal (OptionsFunctionality x) = return (unsafeForeignPtrToPtr x)
  marshalFree (OptionsFunctionality x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__OptionsFunctionality" 
  c_delete_CasADi__OptionsFunctionality :: FunPtr (Ptr OptionsFunctionality' -> IO ())
instance WrapReturn (Ptr OptionsFunctionality') OptionsFunctionality where
  wrapReturn = (fmap OptionsFunctionality) . (newForeignPtr c_delete_CasADi__OptionsFunctionality)


-- raw decl
data IpoptSolver'
-- data decl
{-|
>interface to IPOPT NLP solver
>
>Solves the following parametric nonlinear program (NLP):min          F(x,p)
>x  subject to             LBX <=   x    <= UBX LBG <= G(x,p) <= UBG
>p  == P nx: number of decision variables     ng: number of constraints
>np: number of parameters
>
>When in warmstart mode, output NLP_SOLVER_LAM_X may be used as input
>
>NOTE: Even when max_iter == 0, it is not guaranteed that
>input(NLP_SOLVER_X0) == output(NLP_SOLVER_X). Indeed if bounds on X or
>constraints are unmet, they will differ.
>
>For a good tutorial on IPOPT,
>seehttp://drops.dagstuhl.de/volltexte/2009/2089/pdf/09061.WaechterAndreas.Paper.2089.pdf
>
>A good resource about the algorithms in IPOPT is: Wachter and L. T. Biegler,
>On the Implementation of an Interior-Point Filter Line-Search Algorithm for
>Large-Scale Nonlinear Programming, Mathematical Programming 106(1), pp.
>25-57, 2006 (As Research Report RC 23149, IBM T. J. Watson Research Center,
>Yorktown, USA
>
>Caveats: with default options, multipliers for the decision variables are
>wrong for equality constraints. Change the 'fixed_variable_treatment' to
>'make_constraint' or 'relax_bounds' to obtain correct results.
>
>>Input scheme: CasADi::NLPSolverInput (NLP_SOLVER_NUM_IN = 9) [nlpSolverIn]
>+------------------------+------------------------+------------------------+
>|       Full name        |         Short          |      Description       |
>+========================+========================+========================+
>| NLP_SOLVER_X0          | x0                     | Decision variables,    |
>|                        |                        | initial guess (nx x 1) |
>|                        |                        | .                      |
>+------------------------+------------------------+------------------------+
>| NLP_SOLVER_P           | p                      | Value of fixed         |
>|                        |                        | parameters (np x 1) .  |
>+------------------------+------------------------+------------------------+
>| NLP_SOLVER_LBX         | lbx                    | Decision variables     |
>|                        |                        | lower bound (nx x 1),  |
>|                        |                        | default -inf .         |
>+------------------------+------------------------+------------------------+
>| NLP_SOLVER_UBX         | ubx                    | Decision variables     |
>|                        |                        | upper bound (nx x 1),  |
>|                        |                        | default +inf .         |
>+------------------------+------------------------+------------------------+
>| NLP_SOLVER_LBG         | lbg                    | Constraints lower      |
>|                        |                        | bound (ng x 1),        |
>|                        |                        | default -inf .         |
>+------------------------+------------------------+------------------------+
>| NLP_SOLVER_UBG         | ubg                    | Constraints upper      |
>|                        |                        | bound (ng x 1),        |
>|                        |                        | default +inf .         |
>+------------------------+------------------------+------------------------+
>| NLP_SOLVER_LAM_X0      | lam_x0                 | Lagrange multipliers   |
>|                        |                        | for bounds on X,       |
>|                        |                        | initial guess (nx x 1) |
>|                        |                        | .                      |
>+------------------------+------------------------+------------------------+
>| NLP_SOLVER_LAM_G0      | lam_g0                 | Lagrange multipliers   |
>|                        |                        | for bounds on G,       |
>|                        |                        | initial guess (ng x 1) |
>|                        |                        | .                      |
>+------------------------+------------------------+------------------------+
>
>>Output scheme: CasADi::NLPSolverOutput (NLP_SOLVER_NUM_OUT = 7) [nlpSolverOut]
>+------------------------+------------------------+------------------------+
>|       Full name        |         Short          |      Description       |
>+========================+========================+========================+
>| NLP_SOLVER_X           | x                      | Decision variables at  |
>|                        |                        | the optimal solution   |
>|                        |                        | (nx x 1) .             |
>+------------------------+------------------------+------------------------+
>| NLP_SOLVER_F           | f                      | Cost function value at |
>|                        |                        | the optimal solution   |
>|                        |                        | (1 x 1) .              |
>+------------------------+------------------------+------------------------+
>| NLP_SOLVER_G           | g                      | Constraints function   |
>|                        |                        | at the optimal         |
>|                        |                        | solution (ng x 1) .    |
>+------------------------+------------------------+------------------------+
>| NLP_SOLVER_LAM_X       | lam_x                  | Lagrange multipliers   |
>|                        |                        | for bounds on X at the |
>|                        |                        | solution (nx x 1) .    |
>+------------------------+------------------------+------------------------+
>| NLP_SOLVER_LAM_G       | lam_g                  | Lagrange multipliers   |
>|                        |                        | for bounds on G at the |
>|                        |                        | solution (ng x 1) .    |
>+------------------------+------------------------+------------------------+
>| NLP_SOLVER_LAM_P       | lam_p                  | Lagrange multipliers   |
>|                        |                        | for bounds on P at the |
>|                        |                        | solution (np x 1) .    |
>+------------------------+------------------------+------------------------+
>
>>List of available options
>+--------------+--------------+--------------+--------------+--------------+
>|      Id      |     Type     |   Default    | Description  |   Used in    |
>+==============+==============+==============+==============+==============+
>| accept_after | OT_INTEGER   | -1           | Accept a     | CasADi::Ipop |
>| _max_steps   |              |              | trial point  | tInternal    |
>|              |              |              | after        |              |
>|              |              |              | maximal this |              |
>|              |              |              | number of    |              |
>|              |              |              | steps. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| accept_every | OT_STRING    | no           | Always       | CasADi::Ipop |
>| _trial_step  |              |              | accept the   | tInternal    |
>|              |              |              | first trial  |              |
>|              |              |              | step. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| acceptable_c | OT_REAL      | 0.010        | "Acceptance" | CasADi::Ipop |
>| ompl_inf_tol |              |              | threshold    | tInternal    |
>|              |              |              | for the comp |              |
>|              |              |              | lementarity  |              |
>|              |              |              | conditions.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| acceptable_c | OT_REAL      | 0.010        | "Acceptance" | CasADi::Ipop |
>| onstr_viol_t |              |              | threshold    | tInternal    |
>| ol           |              |              | for the      |              |
>|              |              |              | constraint   |              |
>|              |              |              | violation.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| acceptable_d | OT_REAL      | 1.000e+10    | "Acceptance" | CasADi::Ipop |
>| ual_inf_tol  |              |              | threshold    | tInternal    |
>|              |              |              | for the dual |              |
>|              |              |              | infeasibilit |              |
>|              |              |              | y. (see      |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| acceptable_i | OT_INTEGER   | 15           | Number of    | CasADi::Ipop |
>| ter          |              |              | "acceptable" | tInternal    |
>|              |              |              | iterates     |              |
>|              |              |              | before       |              |
>|              |              |              | triggering   |              |
>|              |              |              | termination. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| acceptable_o | OT_REAL      | 1.000e+20    | "Acceptance" | CasADi::Ipop |
>| bj_change_to |              |              | stopping     | tInternal    |
>| l            |              |              | criterion    |              |
>|              |              |              | based on     |              |
>|              |              |              | objective    |              |
>|              |              |              | function     |              |
>|              |              |              | change. (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| acceptable_t | OT_REAL      | 0.000        | "Acceptable" | CasADi::Ipop |
>| ol           |              |              | convergence  | tInternal    |
>|              |              |              | tolerance    |              |
>|              |              |              | (relative).  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::FXIn |
>|              |              |              | calculate    | ternal       |
>|              |              |              | the          |              |
>|              |              |              | Jacobians.   |              |
>|              |              |              | (forward:    |              |
>|              |              |              | only forward |              |
>|              |              |              | mode|reverse |              |
>|              |              |              | : only       |              |
>|              |              |              | adjoint mode |              |
>|              |              |              | |automatic:  |              |
>|              |              |              | a heuristic  |              |
>|              |              |              | decides      |              |
>|              |              |              | which is     |              |
>|              |              |              | more         |              |
>|              |              |              | appropriate) |              |
>+--------------+--------------+--------------+--------------+--------------+
>| adaptive_mu_ | OT_STRING    | obj-constr-  | Globalizatio | CasADi::Ipop |
>| globalizatio |              | filter       | n strategy   | tInternal    |
>| n            |              |              | for the      |              |
>|              |              |              | adaptive mu  |              |
>|              |              |              | selection    |              |
>|              |              |              | mode. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| adaptive_mu_ | OT_STRING    | 2-norm-      | Norm used    | CasADi::Ipop |
>| kkt_norm_typ |              | squared      | for the KKT  | tInternal    |
>| e            |              |              | error in the |              |
>|              |              |              | adaptive mu  |              |
>|              |              |              | globalizatio |              |
>|              |              |              | n            |              |
>|              |              |              | strategies.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| adaptive_mu_ | OT_REAL      | 1.000        | Sufficient   | CasADi::Ipop |
>| kkterror_red |              |              | decrease     | tInternal    |
>| _fact        |              |              | factor for   |              |
>|              |              |              | "kkt-error"  |              |
>|              |              |              | globalizatio |              |
>|              |              |              | n strategy.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| adaptive_mu_ | OT_INTEGER   | 4            | Maximum      | CasADi::Ipop |
>| kkterror_red |              |              | number of    | tInternal    |
>| _iters       |              |              | iterations   |              |
>|              |              |              | requiring    |              |
>|              |              |              | sufficient   |              |
>|              |              |              | progress.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| adaptive_mu_ | OT_REAL      | 0.800        | Determines   | CasADi::Ipop |
>| monotone_ini |              |              | the initial  | tInternal    |
>| t_factor     |              |              | value of the |              |
>|              |              |              | barrier      |              |
>|              |              |              | parameter    |              |
>|              |              |              | when         |              |
>|              |              |              | switching to |              |
>|              |              |              | the monotone |              |
>|              |              |              | mode. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| adaptive_mu_ | OT_STRING    | no           | Indicates if | CasADi::Ipop |
>| restore_prev |              |              | the previous | tInternal    |
>| ious_iterate |              |              | iterate      |              |
>|              |              |              | should be    |              |
>|              |              |              | restored if  |              |
>|              |              |              | the monotone |              |
>|              |              |              | mode is      |              |
>|              |              |              | entered.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| adaptive_mu_ | OT_REAL      | 0            | (see IPOPT d | CasADi::Ipop |
>| safeguard_fa |              |              | ocumentation | tInternal    |
>| ctor         |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| alpha_for_y  | OT_STRING    | primal       | Method to    | CasADi::Ipop |
>|              |              |              | determine    | tInternal    |
>|              |              |              | the step     |              |
>|              |              |              | size for     |              |
>|              |              |              | constraint   |              |
>|              |              |              | multipliers. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| alpha_for_y_ | OT_REAL      | 10           | Tolerance    | CasADi::Ipop |
>| tol          |              |              | for          | tInternal    |
>|              |              |              | switching to |              |
>|              |              |              | full         |              |
>|              |              |              | equality     |              |
>|              |              |              | multiplier   |              |
>|              |              |              | steps. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| alpha_min_fr | OT_REAL      | 0.050        | Safety       | CasADi::Ipop |
>| ac           |              |              | factor for   | tInternal    |
>|              |              |              | the minimal  |              |
>|              |              |              | step size    |              |
>|              |              |              | (before      |              |
>|              |              |              | switching to |              |
>|              |              |              | restoration  |              |
>|              |              |              | phase). (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| alpha_red_fa | OT_REAL      | 0.500        | Fractional   | CasADi::Ipop |
>| ctor         |              |              | reduction of | tInternal    |
>|              |              |              | the trial    |              |
>|              |              |              | step size in |              |
>|              |              |              | the          |              |
>|              |              |              | backtracking |              |
>|              |              |              | line search. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| barrier_tol_ | OT_REAL      | 10           | Factor for   | CasADi::Ipop |
>| factor       |              |              | mu in        | tInternal    |
>|              |              |              | barrier stop |              |
>|              |              |              | test. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| bound_frac   | OT_REAL      | 0.010        | Desired      | CasADi::Ipop |
>|              |              |              | minimum      | tInternal    |
>|              |              |              | relative     |              |
>|              |              |              | distance     |              |
>|              |              |              | from the     |              |
>|              |              |              | initial      |              |
>|              |              |              | point to     |              |
>|              |              |              | bound. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| bound_mult_i | OT_STRING    | constant     | Initializati | CasADi::Ipop |
>| nit_method   |              |              | on method    | tInternal    |
>|              |              |              | for bound    |              |
>|              |              |              | multipliers  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| bound_mult_i | OT_REAL      | 1            | Initial      | CasADi::Ipop |
>| nit_val      |              |              | value for    | tInternal    |
>|              |              |              | the bound    |              |
>|              |              |              | multipliers. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| bound_mult_r | OT_REAL      | 1000         | Threshold    | CasADi::Ipop |
>| eset_thresho |              |              | for          | tInternal    |
>| ld           |              |              | resetting    |              |
>|              |              |              | bound        |              |
>|              |              |              | multipliers  |              |
>|              |              |              | after the    |              |
>|              |              |              | restoration  |              |
>|              |              |              | phase. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| bound_push   | OT_REAL      | 0.010        | Desired      | CasADi::Ipop |
>|              |              |              | minimum      | tInternal    |
>|              |              |              | absolute     |              |
>|              |              |              | distance     |              |
>|              |              |              | from the     |              |
>|              |              |              | initial      |              |
>|              |              |              | point to     |              |
>|              |              |              | bound. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| bound_relax_ | OT_REAL      | 0.000        | Factor for   | CasADi::Ipop |
>| factor       |              |              | initial      | tInternal    |
>|              |              |              | relaxation   |              |
>|              |              |              | of the       |              |
>|              |              |              | bounds. (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| check_deriva | OT_STRING    | no           | Indicates    | CasADi::Ipop |
>| tives_for_na |              |              | whether it   | tInternal    |
>| ninf         |              |              | is desired   |              |
>|              |              |              | to check for |              |
>|              |              |              | Nan/Inf in   |              |
>|              |              |              | derivative   |              |
>|              |              |              | matrices     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| chi_cup      | OT_REAL      | 1.500        | LIFENG       | CasADi::Ipop |
>|              |              |              | WRITES THIS. | tInternal    |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| chi_hat      | OT_REAL      | 2            | LIFENG       | CasADi::Ipop |
>|              |              |              | WRITES THIS. | tInternal    |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| chi_tilde    | OT_REAL      | 5            | LIFENG       | CasADi::Ipop |
>|              |              |              | WRITES THIS. | tInternal    |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| compl_inf_to | OT_REAL      | 0.000        | Desired      | CasADi::Ipop |
>| l            |              |              | threshold    | tInternal    |
>|              |              |              | for the comp |              |
>|              |              |              | lementarity  |              |
>|              |              |              | conditions.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| con_integer_ | OT_DICTIONAR | None         | Integer      | CasADi::Ipop |
>| md           | Y            |              | metadata (a  | tInternal    |
>|              |              |              | dictionary   |              |
>|              |              |              | with lists   |              |
>|              |              |              | of integers) |              |
>|              |              |              | about        |              |
>|              |              |              | constraints  |              |
>|              |              |              | to be passed |              |
>|              |              |              | to IPOPT     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| con_numeric_ | OT_DICTIONAR | None         | Numeric      | CasADi::Ipop |
>| md           | Y            |              | metadata (a  | tInternal    |
>|              |              |              | dictionary   |              |
>|              |              |              | with lists   |              |
>|              |              |              | of reals)    |              |
>|              |              |              | about        |              |
>|              |              |              | constraints  |              |
>|              |              |              | to be passed |              |
>|              |              |              | to IPOPT     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| con_string_m | OT_DICTIONAR | None         | String       | CasADi::Ipop |
>| d            | Y            |              | metadata (a  | tInternal    |
>|              |              |              | dictionary   |              |
>|              |              |              | with lists   |              |
>|              |              |              | of strings)  |              |
>|              |              |              | about        |              |
>|              |              |              | constraints  |              |
>|              |              |              | to be passed |              |
>|              |              |              | to IPOPT     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| constr_mult_ | OT_REAL      | 1000         | Maximum      | CasADi::Ipop |
>| init_max     |              |              | allowed      | tInternal    |
>|              |              |              | least-square |              |
>|              |              |              | guess of     |              |
>|              |              |              | constraint   |              |
>|              |              |              | multipliers. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| constr_mult_ | OT_REAL      | 0            | Threshold    | CasADi::Ipop |
>| reset_thresh |              |              | for          | tInternal    |
>| old          |              |              | resetting    |              |
>|              |              |              | equality and |              |
>|              |              |              | inequality   |              |
>|              |              |              | multipliers  |              |
>|              |              |              | after        |              |
>|              |              |              | restoration  |              |
>|              |              |              | phase. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| constr_viol_ | OT_REAL      | 0.000        | Desired      | CasADi::Ipop |
>| tol          |              |              | threshold    | tInternal    |
>|              |              |              | for the      |              |
>|              |              |              | constraint   |              |
>|              |              |              | violation.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| constraint_v | OT_STRING    | 1-norm       | Norm to be   | CasADi::Ipop |
>| iolation_nor |              |              | used for the | tInternal    |
>| m_type       |              |              | constraint   |              |
>|              |              |              | violation in |              |
>|              |              |              | the line     |              |
>|              |              |              | search. (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| corrector_co | OT_REAL      | 1            | Complementar | CasADi::Ipop |
>| mpl_avrg_red |              |              | ity          | tInternal    |
>| _fact        |              |              | tolerance    |              |
>|              |              |              | factor for   |              |
>|              |              |              | accepting    |              |
>|              |              |              | corrector    |              |
>|              |              |              | step (unsupp |              |
>|              |              |              | orted!).     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| corrector_ty | OT_STRING    | none         | The type of  | CasADi::Ipop |
>| pe           |              |              | corrector    | tInternal    |
>|              |              |              | steps that   |              |
>|              |              |              | should be    |              |
>|              |              |              | taken (unsup |              |
>|              |              |              | ported!).    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| delta        | OT_REAL      | 1            | Multiplier   | CasADi::Ipop |
>|              |              |              | for          | tInternal    |
>|              |              |              | constraint   |              |
>|              |              |              | violation in |              |
>|              |              |              | the          |              |
>|              |              |              | switching    |              |
>|              |              |              | rule. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| delta_y_max  | OT_REAL      | 1.000e+12    | a parameter  | CasADi::Ipop |
>|              |              |              | used to      | tInternal    |
>|              |              |              | check if the |              |
>|              |              |              | fast         |              |
>|              |              |              | direction    |              |
>|              |              |              | can be used  |              |
>|              |              |              | asthe line   |              |
>|              |              |              | search       |              |
>|              |              |              | direction    |              |
>|              |              |              | (for Chen-   |              |
>|              |              |              | Goldfarb     |              |
>|              |              |              | line         |              |
>|              |              |              | search).     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| dependency_d | OT_STRING    | no           | Indicates if | CasADi::Ipop |
>| etection_wit |              |              | the right    | tInternal    |
>| h_rhs        |              |              | hand sides   |              |
>|              |              |              | of the       |              |
>|              |              |              | constraints  |              |
>|              |              |              | should be    |              |
>|              |              |              | considered   |              |
>|              |              |              | during       |              |
>|              |              |              | dependency   |              |
>|              |              |              | detection    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| dependency_d | OT_STRING    | none         | Indicates    | CasADi::Ipop |
>| etector      |              |              | which linear | tInternal    |
>|              |              |              | solver       |              |
>|              |              |              | should be    |              |
>|              |              |              | used to      |              |
>|              |              |              | detect       |              |
>|              |              |              | linearly     |              |
>|              |              |              | dependent    |              |
>|              |              |              | equality     |              |
>|              |              |              | constraints. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| derivative_t | OT_STRING    | none         | Enable       | CasADi::Ipop |
>| est          |              |              | derivative   | tInternal    |
>|              |              |              | checker (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| derivative_t | OT_INTEGER   | -2           | Index of     | CasADi::Ipop |
>| est_first_in |              |              | first        | tInternal    |
>| dex          |              |              | quantity to  |              |
>|              |              |              | be checked   |              |
>|              |              |              | by           |              |
>|              |              |              | derivative   |              |
>|              |              |              | checker (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| derivative_t | OT_REAL      | 0.000        | Size of the  | CasADi::Ipop |
>| est_perturba |              |              | finite       | tInternal    |
>| tion         |              |              | difference   |              |
>|              |              |              | perturbation |              |
>|              |              |              | in           |              |
>|              |              |              | derivative   |              |
>|              |              |              | test. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| derivative_t | OT_STRING    | no           | Indicates    | CasADi::Ipop |
>| est_print_al |              |              | whether      | tInternal    |
>| l            |              |              | information  |              |
>|              |              |              | for all      |              |
>|              |              |              | estimated    |              |
>|              |              |              | derivatives  |              |
>|              |              |              | should be    |              |
>|              |              |              | printed.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| derivative_t | OT_REAL      | 0.000        | Threshold    | CasADi::Ipop |
>| est_tol      |              |              | for          | tInternal    |
>|              |              |              | indicating   |              |
>|              |              |              | wrong        |              |
>|              |              |              | derivative.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| diverging_it | OT_REAL      | 1.000e+20    | Threshold    | CasADi::Ipop |
>| erates_tol   |              |              | for maximal  | tInternal    |
>|              |              |              | value of     |              |
>|              |              |              | primal       |              |
>|              |              |              | iterates.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| dual_inf_tol | OT_REAL      | 1            | Desired      | CasADi::Ipop |
>|              |              |              | threshold    | tInternal    |
>|              |              |              | for the dual |              |
>|              |              |              | infeasibilit |              |
>|              |              |              | y. (see      |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| epsilon_c    | OT_REAL      | 0.010        | LIFENG       | CasADi::Ipop |
>|              |              |              | WRITES THIS. | tInternal    |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| eta_min      | OT_REAL      | 10           | LIFENG       | CasADi::Ipop |
>|              |              |              | WRITES THIS. | tInternal    |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| eta_penalty  | OT_REAL      | 0.000        | Relaxation   | CasADi::Ipop |
>|              |              |              | factor in    | tInternal    |
>|              |              |              | the Armijo   |              |
>|              |              |              | condition    |              |
>|              |              |              | for the      |              |
>|              |              |              | penalty      |              |
>|              |              |              | function.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| eta_phi      | OT_REAL      | 0.000        | Relaxation   | CasADi::Ipop |
>|              |              |              | factor in    | tInternal    |
>|              |              |              | the Armijo   |              |
>|              |              |              | condition.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| evaluate_ori | OT_STRING    | yes          | Determines   | CasADi::Ipop |
>| g_obj_at_res |              |              | if the       | tInternal    |
>| to_trial     |              |              | original     |              |
>|              |              |              | objective    |              |
>|              |              |              | function     |              |
>|              |              |              | should be    |              |
>|              |              |              | evaluated at |              |
>|              |              |              | restoration  |              |
>|              |              |              | phase trial  |              |
>|              |              |              | points. (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| expand       | OT_BOOLEAN   | false        | Expand the   | CasADi::NLPS |
>|              |              |              | NLP function | olverInterna |
>|              |              |              | in terms of  | l            |
>|              |              |              | scalar       |              |
>|              |              |              | operations,  |              |
>|              |              |              | i.e. MX-> SX |              |
>+--------------+--------------+--------------+--------------+--------------+
>| expand_f     | OT_BOOLEAN   | GenericType( | Expand the   | CasADi::NLPS |
>|              |              | )            | objective    | olverInterna |
>|              |              |              | function in  | l            |
>|              |              |              | terms of     |              |
>|              |              |              | scalar       |              |
>|              |              |              | operations,  |              |
>|              |              |              | i.e. MX-> SX |              |
>|              |              |              | .            |              |
>|              |              |              | Deprecated,  |              |
>|              |              |              | use "expand" |              |
>|              |              |              | instead.     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| expand_g     | OT_BOOLEAN   | GenericType( | Expand the   | CasADi::NLPS |
>|              |              | )            | constraint   | olverInterna |
>|              |              |              | function in  | l            |
>|              |              |              | terms of     |              |
>|              |              |              | scalar       |              |
>|              |              |              | operations,  |              |
>|              |              |              | i.e. MX-> SX |              |
>|              |              |              | .            |              |
>|              |              |              | Deprecated,  |              |
>|              |              |              | use "expand" |              |
>|              |              |              | instead.     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| expect_infea | OT_STRING    | no           | Enable       | CasADi::Ipop |
>| sible_proble |              |              | heuristics   | tInternal    |
>| m            |              |              | to quickly   |              |
>|              |              |              | detect an    |              |
>|              |              |              | infeasible   |              |
>|              |              |              | problem.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| expect_infea | OT_REAL      | 0.001        | Threshold    | CasADi::Ipop |
>| sible_proble |              |              | for          | tInternal    |
>| m_ctol       |              |              | disabling "e |              |
>|              |              |              | xpect_infeas |              |
>|              |              |              | ible_problem |              |
>|              |              |              | " option.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| expect_infea | OT_REAL      | 100000000    | Multiplier   | CasADi::Ipop |
>| sible_proble |              |              | threshold    | tInternal    |
>| m_ytol       |              |              | for          |              |
>|              |              |              | activating " |              |
>|              |              |              | expect_infea |              |
>|              |              |              | sible_proble |              |
>|              |              |              | m" option.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| fast_des_fac | OT_REAL      | 0.100        | a parameter  | CasADi::Ipop |
>| t            |              |              | used to      | tInternal    |
>|              |              |              | check if the |              |
>|              |              |              | fast         |              |
>|              |              |              | direction    |              |
>|              |              |              | can be used  |              |
>|              |              |              | asthe line   |              |
>|              |              |              | search       |              |
>|              |              |              | direction    |              |
>|              |              |              | (for Chen-   |              |
>|              |              |              | Goldfarb     |              |
>|              |              |              | line         |              |
>|              |              |              | search).     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| fast_step_co | OT_STRING    | no           | Indicates if | CasADi::Ipop |
>| mputation    |              |              | the linear   | tInternal    |
>|              |              |              | system       |              |
>|              |              |              | should be    |              |
>|              |              |              | solved       |              |
>|              |              |              | quickly.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| file_print_l | OT_INTEGER   | 5            | Verbosity    | CasADi::Ipop |
>| evel         |              |              | level for    | tInternal    |
>|              |              |              | output file. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| filter_margi | OT_REAL      | 0.000        | Factor       | CasADi::Ipop |
>| n_fact       |              |              | determining  | tInternal    |
>|              |              |              | width of     |              |
>|              |              |              | margin for   |              |
>|              |              |              | obj-constr-  |              |
>|              |              |              | filter       |              |
>|              |              |              | adaptive glo |              |
>|              |              |              | balization   |              |
>|              |              |              | strategy.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| filter_max_m | OT_REAL      | 1            | Maximum      | CasADi::Ipop |
>| argin        |              |              | width of     | tInternal    |
>|              |              |              | margin in    |              |
>|              |              |              | obj-constr-  |              |
>|              |              |              | filter       |              |
>|              |              |              | adaptive glo |              |
>|              |              |              | balization   |              |
>|              |              |              | strategy.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| filter_reset | OT_INTEGER   | 5            | Number of    | CasADi::Ipop |
>| _trigger     |              |              | iterations   | tInternal    |
>|              |              |              | that trigger |              |
>|              |              |              | the filter   |              |
>|              |              |              | reset. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| findiff_pert | OT_REAL      | 0.000        | Size of the  | CasADi::Ipop |
>| urbation     |              |              | finite       | tInternal    |
>|              |              |              | difference   |              |
>|              |              |              | perturbation |              |
>|              |              |              | for          |              |
>|              |              |              | derivative a |              |
>|              |              |              | pproximation |              |
>|              |              |              | . (see IPOPT |              |
>|              |              |              | documentatio |              |
>|              |              |              | n)           |              |
>+--------------+--------------+--------------+--------------+--------------+
>| first_hessia | OT_REAL      | 0.000        | Size of      | CasADi::Ipop |
>| n_perturbati |              |              | first x-s    | tInternal    |
>| on           |              |              | perturbation |              |
>|              |              |              | tried. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| fixed_mu_ora | OT_STRING    | average_comp | Oracle for   | CasADi::Ipop |
>| cle          |              | l            | the barrier  | tInternal    |
>|              |              |              | parameter    |              |
>|              |              |              | when         |              |
>|              |              |              | switching to |              |
>|              |              |              | fixed mode.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| fixed_variab | OT_STRING    | make_paramet | Determines   | CasADi::Ipop |
>| le_treatment |              | er           | how fixed    | tInternal    |
>|              |              |              | variables    |              |
>|              |              |              | should be    |              |
>|              |              |              | handled.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| gamma_hat    | OT_REAL      | 0.040        | LIFENG       | CasADi::Ipop |
>|              |              |              | WRITES THIS. | tInternal    |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| gamma_phi    | OT_REAL      | 0.000        | Relaxation   | CasADi::Ipop |
>|              |              |              | factor in    | tInternal    |
>|              |              |              | the filter   |              |
>|              |              |              | margin for   |              |
>|              |              |              | the barrier  |              |
>|              |              |              | function.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| gamma_theta  | OT_REAL      | 0.000        | Relaxation   | CasADi::Ipop |
>|              |              |              | factor in    | tInternal    |
>|              |              |              | the filter   |              |
>|              |              |              | margin for   |              |
>|              |              |              | the          |              |
>|              |              |              | constraint   |              |
>|              |              |              | violation.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| gamma_tilde  | OT_REAL      | 4            | LIFENG       | CasADi::Ipop |
>|              |              |              | WRITES THIS. | tInternal    |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::FXIn |
>|              |              |              | indicate     | ternal       |
>|              |              |              | wether       |              |
>|              |              |              | statistics   |              |
>|              |              |              | must be      |              |
>|              |              |              | gathered     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| gauss_newton | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
>|              |              | )            | option. Use  | olverInterna |
>|              |              |              | Gauss Newton | l            |
>|              |              |              | Hessian appr |              |
>|              |              |              | oximation    |              |
>+--------------+--------------+--------------+--------------+--------------+
>| generate_gra | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
>| dient        |              | )            | option.      | olverInterna |
>|              |              |              | Generate a   | l            |
>|              |              |              | function for |              |
>|              |              |              | calculating  |              |
>|              |              |              | the gradient |              |
>|              |              |              | of the       |              |
>|              |              |              | objective.   |              |
>+--------------+--------------+--------------+--------------+--------------+
>| generate_hes | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
>| sian         |              | )            | option.      | olverInterna |
>|              |              |              | Generate an  | l            |
>|              |              |              | exact        |              |
>|              |              |              | Hessian of   |              |
>|              |              |              | the          |              |
>|              |              |              | Lagrangian   |              |
>|              |              |              | if not       |              |
>|              |              |              | supplied.    |              |
>+--------------+--------------+--------------+--------------+--------------+
>| generate_jac | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
>| obian        |              | )            | option.      | olverInterna |
>|              |              |              | Generate an  | l            |
>|              |              |              | exact        |              |
>|              |              |              | Jacobian of  |              |
>|              |              |              | the          |              |
>|              |              |              | constraints  |              |
>|              |              |              | if not       |              |
>|              |              |              | supplied.    |              |
>+--------------+--------------+--------------+--------------+--------------+
>| grad_f       | OT_FX        | GenericType( | Function for | CasADi::NLPS |
>|              |              | )            | calculating  | olverInterna |
>|              |              |              | the gradient | l            |
>|              |              |              | of the       |              |
>|              |              |              | objective (a |              |
>|              |              |              | utogenerated |              |
>|              |              |              | by default)  |              |
>+--------------+--------------+--------------+--------------+--------------+
>| grad_lag     | OT_FX        | GenericType( | Function for | CasADi::NLPS |
>|              |              | )            | calculating  | olverInterna |
>|              |              |              | the gradient | l            |
>|              |              |              | of the       |              |
>|              |              |              | Lagrangian ( |              |
>|              |              |              | autogenerate |              |
>|              |              |              | d by         |              |
>|              |              |              | default)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| hess_lag     | OT_FX        | GenericType( | Function for | CasADi::NLPS |
>|              |              | )            | calculating  | olverInterna |
>|              |              |              | the Hessian  | l            |
>|              |              |              | of the       |              |
>|              |              |              | Lagrangian ( |              |
>|              |              |              | autogenerate |              |
>|              |              |              | d by         |              |
>|              |              |              | default)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| hessian_appr | OT_STRING    | exact        | Indicates    | CasADi::Ipop |
>| oximation    |              |              | what Hessian | tInternal    |
>|              |              |              | information  |              |
>|              |              |              | is to be     |              |
>|              |              |              | used. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| hessian_appr | OT_STRING    | nonlinear-   | Indicates in | CasADi::Ipop |
>| oximation_sp |              | variables    | which        | tInternal    |
>| ace          |              |              | subspace the |              |
>|              |              |              | Hessian      |              |
>|              |              |              | information  |              |
>|              |              |              | is to be app |              |
>|              |              |              | roximated.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| hessian_cons | OT_STRING    | no           | Indicates    | CasADi::Ipop |
>| tant         |              |              | whether the  | tInternal    |
>|              |              |              | problem is a |              |
>|              |              |              | quadratic    |              |
>|              |              |              | problem (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| honor_origin | OT_STRING    | yes          | Indicates    | CasADi::Ipop |
>| al_bounds    |              |              | whether      | tInternal    |
>|              |              |              | final points |              |
>|              |              |              | should be    |              |
>|              |              |              | projected    |              |
>|              |              |              | into         |              |
>|              |              |              | original     |              |
>|              |              |              | bounds. (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ignore_check | OT_BOOLEAN   | false        | If set to    | CasADi::NLPS |
>| _vec         |              |              | true, the    | olverInterna |
>|              |              |              | input shape  | l            |
>|              |              |              | of F will    |              |
>|              |              |              | not be       |              |
>|              |              |              | checked.     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| inf_pr_outpu | OT_STRING    | original     | Determines   | CasADi::Ipop |
>| t            |              |              | what value   | tInternal    |
>|              |              |              | is printed   |              |
>|              |              |              | in the       |              |
>|              |              |              | "inf_pr"     |              |
>|              |              |              | output       |              |
>|              |              |              | column. (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
>|              |              |              | exceptions   | ternal       |
>|              |              |              | when the     |              |
>|              |              |              | numerical    |              |
>|              |              |              | values of    |              |
>|              |              |              | the inputs   |              |
>|              |              |              | don't make   |              |
>|              |              |              | sense        |              |
>+--------------+--------------+--------------+--------------+--------------+
>| iteration_ca | OT_CALLBACK  | GenericType( | A function   | CasADi::NLPS |
>| llback       |              | )            | that will be | olverInterna |
>|              |              |              | called at    | l            |
>|              |              |              | each         |              |
>|              |              |              | iteration    |              |
>|              |              |              | with the     |              |
>|              |              |              | solver as    |              |
>|              |              |              | input. Check |              |
>|              |              |              | documentatio |              |
>|              |              |              | n of         |              |
>|              |              |              | Callback .   |              |
>+--------------+--------------+--------------+--------------+--------------+
>| iteration_ca | OT_BOOLEAN   | false        | If set to    | CasADi::NLPS |
>| llback_ignor |              |              | true, errors | olverInterna |
>| e_errors     |              |              | thrown by it | l            |
>|              |              |              | eration_call |              |
>|              |              |              | back will be |              |
>|              |              |              | ignored.     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| iteration_ca | OT_INTEGER   | 1            | Only call    | CasADi::NLPS |
>| llback_step  |              |              | the callback | olverInterna |
>|              |              |              | function     | l            |
>|              |              |              | every few    |              |
>|              |              |              | iterations.  |              |
>+--------------+--------------+--------------+--------------+--------------+
>| jac_c_consta | OT_STRING    | no           | Indicates    | CasADi::Ipop |
>| nt           |              |              | whether all  | tInternal    |
>|              |              |              | equality     |              |
>|              |              |              | constraints  |              |
>|              |              |              | are linear   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| jac_d_consta | OT_STRING    | no           | Indicates    | CasADi::Ipop |
>| nt           |              |              | whether all  | tInternal    |
>|              |              |              | inequality   |              |
>|              |              |              | constraints  |              |
>|              |              |              | are linear   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| jac_g        | OT_FX        | GenericType( | Function for | CasADi::NLPS |
>|              |              | )            | calculating  | olverInterna |
>|              |              |              | the Jacobian | l            |
>|              |              |              | of the       |              |
>|              |              |              | constraints  |              |
>|              |              |              | (autogenerat |              |
>|              |              |              | ed by        |              |
>|              |              |              | default)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| jacobian_app | OT_STRING    | exact        | Specifies    | CasADi::Ipop |
>| roximation   |              |              | technique to | tInternal    |
>|              |              |              | compute      |              |
>|              |              |              | constraint   |              |
>|              |              |              | Jacobian     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| jacobian_gen | OT_JACOBIANG | GenericType( | Function     | CasADi::FXIn |
>| erator       | ENERATOR     | )            | that returns | ternal       |
>|              |              |              | a Jacobian   |              |
>|              |              |              | function     |              |
>|              |              |              | given a set  |              |
>|              |              |              | of desired   |              |
>|              |              |              | Jacobian     |              |
>|              |              |              | blocks,      |              |
>|              |              |              | overrides    |              |
>|              |              |              | internal     |              |
>|              |              |              | routines.    |              |
>|              |              |              | Check docume |              |
>|              |              |              | ntation of J |              |
>|              |              |              | acobianGener |              |
>|              |              |              | ator .       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| jacobian_reg | OT_REAL      | 0.250        | Exponent for | CasADi::Ipop |
>| ularization_ |              |              | mu in the re | tInternal    |
>| exponent     |              |              | gularization |              |
>|              |              |              | for rank-    |              |
>|              |              |              | deficient    |              |
>|              |              |              | constraint   |              |
>|              |              |              | Jacobians.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| jacobian_reg | OT_REAL      | 0.000        | Size of the  | CasADi::Ipop |
>| ularization_ |              |              | regularizati | tInternal    |
>| value        |              |              | on for rank- |              |
>|              |              |              | deficient    |              |
>|              |              |              | constraint   |              |
>|              |              |              | Jacobians.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| kappa_d      | OT_REAL      | 0.000        | Weight for   | CasADi::Ipop |
>|              |              |              | linear       | tInternal    |
>|              |              |              | damping term |              |
>|              |              |              | (to handle   |              |
>|              |              |              | one-sided    |              |
>|              |              |              | bounds).     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| kappa_sigma  | OT_REAL      | 1.000e+10    | Factor       | CasADi::Ipop |
>|              |              |              | limiting the | tInternal    |
>|              |              |              | deviation of |              |
>|              |              |              | dual         |              |
>|              |              |              | variables    |              |
>|              |              |              | from primal  |              |
>|              |              |              | estimates.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| kappa_soc    | OT_REAL      | 0.990        | Factor in    | CasADi::Ipop |
>|              |              |              | the          | tInternal    |
>|              |              |              | sufficient   |              |
>|              |              |              | reduction    |              |
>|              |              |              | rule for     |              |
>|              |              |              | second order |              |
>|              |              |              | correction.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| kappa_x_dis  | OT_REAL      | 100          | a parameter  | CasADi::Ipop |
>|              |              |              | used to      | tInternal    |
>|              |              |              | check if the |              |
>|              |              |              | fast         |              |
>|              |              |              | direction    |              |
>|              |              |              | can be used  |              |
>|              |              |              | asthe line   |              |
>|              |              |              | search       |              |
>|              |              |              | direction    |              |
>|              |              |              | (for Chen-   |              |
>|              |              |              | Goldfarb     |              |
>|              |              |              | line         |              |
>|              |              |              | search).     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| kappa_y_dis  | OT_REAL      | 10000        | a parameter  | CasADi::Ipop |
>|              |              |              | used to      | tInternal    |
>|              |              |              | check if the |              |
>|              |              |              | fast         |              |
>|              |              |              | direction    |              |
>|              |              |              | can be used  |              |
>|              |              |              | asthe line   |              |
>|              |              |              | search       |              |
>|              |              |              | direction    |              |
>|              |              |              | (for Chen-   |              |
>|              |              |              | Goldfarb     |              |
>|              |              |              | line         |              |
>|              |              |              | search).     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| least_square | OT_STRING    | no           | Least square | CasADi::Ipop |
>| _init_duals  |              |              | initializati | tInternal    |
>|              |              |              | on of all    |              |
>|              |              |              | dual         |              |
>|              |              |              | variables    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| least_square | OT_STRING    | no           | Least square | CasADi::Ipop |
>| _init_primal |              |              | initializati | tInternal    |
>|              |              |              | on of the    |              |
>|              |              |              | primal       |              |
>|              |              |              | variables    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| limited_memo | OT_STRING    | sherman-     | Strategy for | CasADi::Ipop |
>| ry_aug_solve |              | morrison     | solving the  | tInternal    |
>| r            |              |              | augmented    |              |
>|              |              |              | system for   |              |
>|              |              |              | low-rank     |              |
>|              |              |              | Hessian.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| limited_memo | OT_REAL      | 1            | Value for B0 | CasADi::Ipop |
>| ry_init_val  |              |              | in low-rank  | tInternal    |
>|              |              |              | update. (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| limited_memo | OT_REAL      | 100000000    | Upper bound  | CasADi::Ipop |
>| ry_init_val_ |              |              | on value for | tInternal    |
>| max          |              |              | B0 in low-   |              |
>|              |              |              | rank update. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| limited_memo | OT_REAL      | 0.000        | Lower bound  | CasADi::Ipop |
>| ry_init_val_ |              |              | on value for | tInternal    |
>| min          |              |              | B0 in low-   |              |
>|              |              |              | rank update. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| limited_memo | OT_STRING    | scalar1      | Initializati | CasADi::Ipop |
>| ry_initializ |              |              | on strategy  | tInternal    |
>| ation        |              |              | for the      |              |
>|              |              |              | limited      |              |
>|              |              |              | memory       |              |
>|              |              |              | quasi-Newton |              |
>|              |              |              | approximatio |              |
>|              |              |              | n. (see      |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| limited_memo | OT_INTEGER   | 6            | Maximum size | CasADi::Ipop |
>| ry_max_histo |              |              | of the       | tInternal    |
>| ry           |              |              | history for  |              |
>|              |              |              | the limited  |              |
>|              |              |              | quasi-Newton |              |
>|              |              |              | Hessian appr |              |
>|              |              |              | oximation.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| limited_memo | OT_INTEGER   | 2            | Threshold    | CasADi::Ipop |
>| ry_max_skipp |              |              | for          | tInternal    |
>| ing          |              |              | successive   |              |
>|              |              |              | iterations   |              |
>|              |              |              | where update |              |
>|              |              |              | is skipped.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| limited_memo | OT_STRING    | no           | Determines   | CasADi::Ipop |
>| ry_special_f |              |              | if the       | tInternal    |
>| or_resto     |              |              | quasi-Newton |              |
>|              |              |              | updates      |              |
>|              |              |              | should be    |              |
>|              |              |              | special      |              |
>|              |              |              | during the   |              |
>|              |              |              | restoration  |              |
>|              |              |              | phase. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| limited_memo | OT_STRING    | bfgs         | Quasi-Newton | CasADi::Ipop |
>| ry_update_ty |              |              | update       | tInternal    |
>| pe           |              |              | formula for  |              |
>|              |              |              | the limited  |              |
>|              |              |              | memory appro |              |
>|              |              |              | ximation.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| line_search_ | OT_STRING    | filter       | Globalizatio | CasADi::Ipop |
>| method       |              |              | n method     | tInternal    |
>|              |              |              | used in      |              |
>|              |              |              | backtracking |              |
>|              |              |              | line search  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| linear_scali | OT_STRING    | yes          | Flag         | CasADi::Ipop |
>| ng_on_demand |              |              | indicating   | tInternal    |
>|              |              |              | that linear  |              |
>|              |              |              | scaling is   |              |
>|              |              |              | only done if |              |
>|              |              |              | it seems     |              |
>|              |              |              | required.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| linear_solve | OT_STRING    | ma27         | Linear       | CasADi::Ipop |
>| r            |              |              | solver used  | tInternal    |
>|              |              |              | for step com |              |
>|              |              |              | putations.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| linear_syste | OT_STRING    | mc19         | Method for   | CasADi::Ipop |
>| m_scaling    |              |              | scaling the  | tInternal    |
>|              |              |              | linear       |              |
>|              |              |              | system. (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma27_ignore_ | OT_STRING    | no           | Enables      | CasADi::Ipop |
>| singularity  |              |              | MA27's       | tInternal    |
>|              |              |              | ability to   |              |
>|              |              |              | solve a      |              |
>|              |              |              | linear       |              |
>|              |              |              | system even  |              |
>|              |              |              | if the       |              |
>|              |              |              | matrix is    |              |
>|              |              |              | singular.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma27_la_init | OT_REAL      | 5            | Real         | CasADi::Ipop |
>| _factor      |              |              | workspace    | tInternal    |
>|              |              |              | memory for   |              |
>|              |              |              | MA27. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma27_liw_ini | OT_REAL      | 5            | Integer      | CasADi::Ipop |
>| t_factor     |              |              | workspace    | tInternal    |
>|              |              |              | memory for   |              |
>|              |              |              | MA27. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma27_meminc_ | OT_REAL      | 10           | Increment    | CasADi::Ipop |
>| factor       |              |              | factor for   | tInternal    |
>|              |              |              | workspace    |              |
>|              |              |              | size for     |              |
>|              |              |              | MA27. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma27_pivtol  | OT_REAL      | 0.000        | Pivot        | CasADi::Ipop |
>|              |              |              | tolerance    | tInternal    |
>|              |              |              | for the      |              |
>|              |              |              | linear       |              |
>|              |              |              | solver MA27. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma27_pivtolm | OT_REAL      | 0.000        | Maximum      | CasADi::Ipop |
>| ax           |              |              | pivot        | tInternal    |
>|              |              |              | tolerance    |              |
>|              |              |              | for the      |              |
>|              |              |              | linear       |              |
>|              |              |              | solver MA27. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma27_skip_in | OT_STRING    | no           | Always       | CasADi::Ipop |
>| ertia_check  |              |              | pretend      | tInternal    |
>|              |              |              | inertia is   |              |
>|              |              |              | correct.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma28_pivtol  | OT_REAL      | 0.010        | Pivot        | CasADi::Ipop |
>|              |              |              | tolerance    | tInternal    |
>|              |              |              | for linear   |              |
>|              |              |              | solver MA28. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma57_automat | OT_STRING    | yes          | Controls     | CasADi::Ipop |
>| ic_scaling   |              |              | MA57         | tInternal    |
>|              |              |              | automatic    |              |
>|              |              |              | scaling (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma57_block_s | OT_INTEGER   | 16           | Controls     | CasADi::Ipop |
>| ize          |              |              | block size   | tInternal    |
>|              |              |              | used by      |              |
>|              |              |              | Level 3 BLAS |              |
>|              |              |              | in MA57BD    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma57_node_am | OT_INTEGER   | 16           | Node         | CasADi::Ipop |
>| algamation   |              |              | amalgamation | tInternal    |
>|              |              |              | parameter    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma57_pivot_o | OT_INTEGER   | 5            | Controls     | CasADi::Ipop |
>| rder         |              |              | pivot order  | tInternal    |
>|              |              |              | in MA57 (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma57_pivtol  | OT_REAL      | 0.000        | Pivot        | CasADi::Ipop |
>|              |              |              | tolerance    | tInternal    |
>|              |              |              | for the      |              |
>|              |              |              | linear       |              |
>|              |              |              | solver MA57. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma57_pivtolm | OT_REAL      | 0.000        | Maximum      | CasADi::Ipop |
>| ax           |              |              | pivot        | tInternal    |
>|              |              |              | tolerance    |              |
>|              |              |              | for the      |              |
>|              |              |              | linear       |              |
>|              |              |              | solver MA57. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma57_pre_all | OT_REAL      | 1.050        | Safety       | CasADi::Ipop |
>| oc           |              |              | factor for   | tInternal    |
>|              |              |              | work space   |              |
>|              |              |              | memory       |              |
>|              |              |              | allocation   |              |
>|              |              |              | for the      |              |
>|              |              |              | linear       |              |
>|              |              |              | solver MA57. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma57_small_p | OT_INTEGER   | 0            | If set to 1, | CasADi::Ipop |
>| ivot_flag    |              |              | then when    | tInternal    |
>|              |              |              | small        |              |
>|              |              |              | entries      |              |
>|              |              |              | defined by   |              |
>|              |              |              | CNTL(2) are  |              |
>|              |              |              | detected     |              |
>|              |              |              | they are     |              |
>|              |              |              | removed and  |              |
>|              |              |              | the correspo |              |
>|              |              |              | nding pivots |              |
>|              |              |              | placed at    |              |
>|              |              |              | the end of   |              |
>|              |              |              | the factoriz |              |
>|              |              |              | ation. This  |              |
>|              |              |              | can be       |              |
>|              |              |              | particularly |              |
>|              |              |              | efficient if |              |
>|              |              |              | the matrix   |              |
>|              |              |              | is highly    |              |
>|              |              |              | rank         |              |
>|              |              |              | deficient.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma86_nemin   | OT_INTEGER   | 32           | Node         | CasADi::Ipop |
>|              |              |              | Amalgamation | tInternal    |
>|              |              |              | parameter    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma86_print_l | OT_INTEGER   | 0            | Debug        | CasADi::Ipop |
>| evel         |              |              | printing     | tInternal    |
>|              |              |              | level for    |              |
>|              |              |              | the linear   |              |
>|              |              |              | solver MA86  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma86_small   | OT_REAL      | 0.000        | Zero Pivot   | CasADi::Ipop |
>|              |              |              | Threshold    | tInternal    |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma86_static  | OT_REAL      | 0            | Static       | CasADi::Ipop |
>|              |              |              | Pivoting     | tInternal    |
>|              |              |              | Threshold    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma86_u       | OT_REAL      | 0.000        | Pivoting     | CasADi::Ipop |
>|              |              |              | Threshold    | tInternal    |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| ma86_umax    | OT_REAL      | 0.000        | Maximum      | CasADi::Ipop |
>|              |              |              | Pivoting     | tInternal    |
>|              |              |              | Threshold    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| magic_steps  | OT_STRING    | no           | Enables      | CasADi::Ipop |
>|              |              |              | magic steps. | tInternal    |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_cpu_time | OT_REAL      | 1000000      | Maximum      | CasADi::Ipop |
>|              |              |              | number of    | tInternal    |
>|              |              |              | CPU seconds. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_filter_r | OT_INTEGER   | 5            | Maximal      | CasADi::Ipop |
>| esets        |              |              | allowed      | tInternal    |
>|              |              |              | number of    |              |
>|              |              |              | filter       |              |
>|              |              |              | resets (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_hessian_ | OT_REAL      | 1.000e+20    | Maximum      | CasADi::Ipop |
>| perturbation |              |              | value of reg | tInternal    |
>|              |              |              | ularization  |              |
>|              |              |              | parameter    |              |
>|              |              |              | for handling |              |
>|              |              |              | negative     |              |
>|              |              |              | curvature.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_iter     | OT_INTEGER   | 3000         | Maximum      | CasADi::Ipop |
>|              |              |              | number of    | tInternal    |
>|              |              |              | iterations.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
>| f_adj_dir    |              | m_dir        | r_of_adj_dir | ternal       |
>|              |              |              | " to grow    |              |
>|              |              |              | until it     |              |
>|              |              |              | reaches this |              |
>|              |              |              | number       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
>| f_fwd_dir    |              | m_dir        | r_of_fwd_dir | ternal       |
>|              |              |              | " to grow    |              |
>|              |              |              | until it     |              |
>|              |              |              | reaches this |              |
>|              |              |              | number       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_refineme | OT_INTEGER   | 10           | Maximum      | CasADi::Ipop |
>| nt_steps     |              |              | number of    | tInternal    |
>|              |              |              | iterative    |              |
>|              |              |              | refinement   |              |
>|              |              |              | steps per    |              |
>|              |              |              | linear       |              |
>|              |              |              | system       |              |
>|              |              |              | solve. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_resto_it | OT_INTEGER   | 3000000      | Maximum      | CasADi::Ipop |
>| er           |              |              | number of    | tInternal    |
>|              |              |              | successive   |              |
>|              |              |              | iterations   |              |
>|              |              |              | in           |              |
>|              |              |              | restoration  |              |
>|              |              |              | phase. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_soc      | OT_INTEGER   | 4            | Maximum      | CasADi::Ipop |
>|              |              |              | number of    | tInternal    |
>|              |              |              | second order |              |
>|              |              |              | correction   |              |
>|              |              |              | trial steps  |              |
>|              |              |              | at each      |              |
>|              |              |              | iteration.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_soft_res | OT_INTEGER   | 10           | Maximum      | CasADi::Ipop |
>| to_iters     |              |              | number of    | tInternal    |
>|              |              |              | iterations   |              |
>|              |              |              | performed    |              |
>|              |              |              | successively |              |
>|              |              |              | in soft      |              |
>|              |              |              | restoration  |              |
>|              |              |              | phase. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mehrotra_alg | OT_STRING    | no           | Indicates if | CasADi::Ipop |
>| orithm       |              |              | we want to   | tInternal    |
>|              |              |              | do           |              |
>|              |              |              | Mehrotra's   |              |
>|              |              |              | algorithm.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| min_alpha_pr | OT_REAL      | 0.000        | LIFENG       | CasADi::Ipop |
>| imal         |              |              | WRITES THIS. | tInternal    |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| min_hessian_ | OT_REAL      | 0.000        | Smallest     | CasADi::Ipop |
>| perturbation |              |              | perturbation | tInternal    |
>|              |              |              | of the       |              |
>|              |              |              | Hessian      |              |
>|              |              |              | block. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| min_refineme | OT_INTEGER   | 1            | Minimum      | CasADi::Ipop |
>| nt_steps     |              |              | number of    | tInternal    |
>|              |              |              | iterative    |              |
>|              |              |              | refinement   |              |
>|              |              |              | steps per    |              |
>|              |              |              | linear       |              |
>|              |              |              | system       |              |
>|              |              |              | solve. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::FXIn |
>|              | TOR          | )            | be activated | ternal   Cas |
>|              |              |              | (inputs|outp | ADi::IpoptIn |
>|              |              |              | uts)  (eval_ | ternal       |
>|              |              |              | f|eval_g|eva |              |
>|              |              |              | l_jac_g|eval |              |
>|              |              |              | _grad_f)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mu_allow_fas | OT_STRING    | yes          | Allow        | CasADi::Ipop |
>| t_monotone_d |              |              | skipping of  | tInternal    |
>| ecrease      |              |              | barrier      |              |
>|              |              |              | problem if   |              |
>|              |              |              | barrier test |              |
>|              |              |              | is already   |              |
>|              |              |              | met. (see    |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mu_init      | OT_REAL      | 0.100        | Initial      | CasADi::Ipop |
>|              |              |              | value for    | tInternal    |
>|              |              |              | the barrier  |              |
>|              |              |              | parameter.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mu_linear_de | OT_REAL      | 0.200        | Determines   | CasADi::Ipop |
>| crease_facto |              |              | linear       | tInternal    |
>| r            |              |              | decrease     |              |
>|              |              |              | rate of      |              |
>|              |              |              | barrier      |              |
>|              |              |              | parameter.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mu_max       | OT_REAL      | 100000       | Maximum      | CasADi::Ipop |
>|              |              |              | value for    | tInternal    |
>|              |              |              | barrier      |              |
>|              |              |              | parameter.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mu_max_fact  | OT_REAL      | 1000         | Factor for i | CasADi::Ipop |
>|              |              |              | nitializatio | tInternal    |
>|              |              |              | n of maximum |              |
>|              |              |              | value for    |              |
>|              |              |              | barrier      |              |
>|              |              |              | parameter.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mu_min       | OT_REAL      | 0.000        | Minimum      | CasADi::Ipop |
>|              |              |              | value for    | tInternal    |
>|              |              |              | barrier      |              |
>|              |              |              | parameter.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mu_oracle    | OT_STRING    | quality-     | Oracle for a | CasADi::Ipop |
>|              |              | function     | new barrier  | tInternal    |
>|              |              |              | parameter in |              |
>|              |              |              | the adaptive |              |
>|              |              |              | strategy.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mu_strategy  | OT_STRING    | monotone     | Update       | CasADi::Ipop |
>|              |              |              | strategy for | tInternal    |
>|              |              |              | barrier      |              |
>|              |              |              | parameter.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mu_superline | OT_REAL      | 1.500        | Determines   | CasADi::Ipop |
>| ar_decrease_ |              |              | superlinear  | tInternal    |
>| power        |              |              | decrease     |              |
>|              |              |              | rate of      |              |
>|              |              |              | barrier      |              |
>|              |              |              | parameter.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mu_target    | OT_REAL      | 0            | Desired      | CasADi::Ipop |
>|              |              |              | value of com | tInternal    |
>|              |              |              | plementarity |              |
>|              |              |              | . (see IPOPT |              |
>|              |              |              | documentatio |              |
>|              |              |              | n)           |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mult_diverg_ | OT_REAL      | 0.000        | tolerance    | CasADi::Ipop |
>| feasibility_ |              |              | for deciding | tInternal    |
>| tol          |              |              | if the       |              |
>|              |              |              | multipliers  |              |
>|              |              |              | are          |              |
>|              |              |              | diverging    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mult_diverg_ | OT_REAL      | 100000000    | tolerance    | CasADi::Ipop |
>| y_tol        |              |              | for deciding | tInternal    |
>|              |              |              | if the       |              |
>|              |              |              | multipliers  |              |
>|              |              |              | are          |              |
>|              |              |              | diverging    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mumps_dep_to | OT_REAL      | -1           | Pivot        | CasADi::Ipop |
>| l            |              |              | threshold    | tInternal    |
>|              |              |              | for          |              |
>|              |              |              | detection of |              |
>|              |              |              | linearly     |              |
>|              |              |              | dependent    |              |
>|              |              |              | constraints  |              |
>|              |              |              | in MUMPS.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mumps_mem_pe | OT_INTEGER   | 1000         | Percentage   | CasADi::Ipop |
>| rcent        |              |              | increase in  | tInternal    |
>|              |              |              | the          |              |
>|              |              |              | estimated    |              |
>|              |              |              | working      |              |
>|              |              |              | space for    |              |
>|              |              |              | MUMPS. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mumps_permut | OT_INTEGER   | 7            | Controls     | CasADi::Ipop |
>| ing_scaling  |              |              | permuting    | tInternal    |
>|              |              |              | and scaling  |              |
>|              |              |              | in MUMPS     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mumps_pivot_ | OT_INTEGER   | 7            | Controls     | CasADi::Ipop |
>| order        |              |              | pivot order  | tInternal    |
>|              |              |              | in MUMPS     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mumps_pivtol | OT_REAL      | 0.000        | Pivot        | CasADi::Ipop |
>|              |              |              | tolerance    | tInternal    |
>|              |              |              | for the      |              |
>|              |              |              | linear       |              |
>|              |              |              | solver       |              |
>|              |              |              | MUMPS. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mumps_pivtol | OT_REAL      | 0.100        | Maximum      | CasADi::Ipop |
>| max          |              |              | pivot        | tInternal    |
>|              |              |              | tolerance    |              |
>|              |              |              | for the      |              |
>|              |              |              | linear       |              |
>|              |              |              | solver       |              |
>|              |              |              | MUMPS. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| mumps_scalin | OT_INTEGER   | 77           | Controls     | CasADi::Ipop |
>| g            |              |              | scaling in   | tInternal    |
>|              |              |              | MUMPS (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
>|              |              | red_object"  | object       | onsFunctiona |
>|              |              |              |              | lityNode     |
>+--------------+--------------+--------------+--------------+--------------+
>| neg_curv_tes | OT_REAL      | 0            | Tolerance    | CasADi::Ipop |
>| t_tol        |              |              | for          | tInternal    |
>|              |              |              | heuristic to |              |
>|              |              |              | ignore wrong |              |
>|              |              |              | inertia.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| never_use_fa | OT_STRING    | no           | Toggle to    | CasADi::Ipop |
>| ct_cgpen_dir |              |              | switch off   | tInternal    |
>| ection       |              |              | the fast     |              |
>|              |              |              | Chen-        |              |
>|              |              |              | Goldfarb     |              |
>|              |              |              | direction    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| never_use_pi | OT_STRING    | no           | Toggle to    | CasADi::Ipop |
>| ecewise_pena |              |              | switch off   | tInternal    |
>| lty_ls       |              |              | the          |              |
>|              |              |              | piecewise    |              |
>|              |              |              | penalty      |              |
>|              |              |              | method (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| nlp_lower_bo | OT_REAL      | -1.000e+19   | any bound    | CasADi::Ipop |
>| und_inf      |              |              | less or      | tInternal    |
>|              |              |              | equal this   |              |
>|              |              |              | value will   |              |
>|              |              |              | be           |              |
>|              |              |              | considered   |              |
>|              |              |              | -inf (i.e.   |              |
>|              |              |              | not lower    |              |
>|              |              |              | bounded).    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| nlp_scaling_ | OT_REAL      | 0            | Target value | CasADi::Ipop |
>| constr_targe |              |              | for          | tInternal    |
>| t_gradient   |              |              | constraint   |              |
>|              |              |              | function     |              |
>|              |              |              | gradient     |              |
>|              |              |              | size. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| nlp_scaling_ | OT_REAL      | 100          | Maximum      | CasADi::Ipop |
>| max_gradient |              |              | gradient     | tInternal    |
>|              |              |              | after NLP    |              |
>|              |              |              | scaling.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| nlp_scaling_ | OT_STRING    | gradient-    | Select the   | CasADi::Ipop |
>| method       |              | based        | technique    | tInternal    |
>|              |              |              | used for     |              |
>|              |              |              | scaling the  |              |
>|              |              |              | NLP. (see    |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| nlp_scaling_ | OT_REAL      | 0.000        | Minimum      | CasADi::Ipop |
>| min_value    |              |              | value of     | tInternal    |
>|              |              |              | gradient-    |              |
>|              |              |              | based        |              |
>|              |              |              | scaling      |              |
>|              |              |              | values. (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| nlp_scaling_ | OT_REAL      | 0            | Target value | CasADi::Ipop |
>| obj_target_g |              |              | for          | tInternal    |
>| radient      |              |              | objective    |              |
>|              |              |              | function     |              |
>|              |              |              | gradient     |              |
>|              |              |              | size. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| nlp_upper_bo | OT_REAL      | 1.000e+19    | any bound    | CasADi::Ipop |
>| und_inf      |              |              | greater or   | tInternal    |
>|              |              |              | this value   |              |
>|              |              |              | will be      |              |
>|              |              |              | considered   |              |
>|              |              |              | +inf (i.e.   |              |
>|              |              |              | not upper    |              |
>|              |              |              | bounded).    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| nu_inc       | OT_REAL      | 0.000        | Increment of | CasADi::Ipop |
>|              |              |              | the penalty  | tInternal    |
>|              |              |              | parameter.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| nu_init      | OT_REAL      | 0.000        | Initial      | CasADi::Ipop |
>|              |              |              | value of the | tInternal    |
>|              |              |              | penalty      |              |
>|              |              |              | parameter.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| num_linear_v | OT_INTEGER   | 0            | Number of    | CasADi::Ipop |
>| ariables     |              |              | linear       | tInternal    |
>|              |              |              | variables    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| number_of_ad | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
>| j_dir        |              |              | adjoint      | ternal       |
>|              |              |              | derivatives  |              |
>|              |              |              | to be        |              |
>|              |              |              | calculated s |              |
>|              |              |              | imultanously |              |
>+--------------+--------------+--------------+--------------+--------------+
>| number_of_fw | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
>| d_dir        |              |              | forward      | ternal       |
>|              |              |              | derivatives  |              |
>|              |              |              | to be        |              |
>|              |              |              | calculated s |              |
>|              |              |              | imultanously |              |
>+--------------+--------------+--------------+--------------+--------------+
>| numeric_hess | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
>| ian          |              |              | Hessians     | ternal       |
>|              |              |              | numerically  |              |
>|              |              |              | (using       |              |
>|              |              |              | directional  |              |
>|              |              |              | derivatives) |              |
>|              |              |              | rather than  |              |
>|              |              |              | with the     |              |
>|              |              |              | built-in     |              |
>|              |              |              | method       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| numeric_jaco | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
>| bian         |              |              | Jacobians    | ternal       |
>|              |              |              | numerically  |              |
>|              |              |              | (using       |              |
>|              |              |              | directional  |              |
>|              |              |              | derivatives) |              |
>|              |              |              | rather than  |              |
>|              |              |              | with the     |              |
>|              |              |              | built-in     |              |
>|              |              |              | method       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| obj_max_inc  | OT_REAL      | 5            | Determines   | CasADi::Ipop |
>|              |              |              | the upper    | tInternal    |
>|              |              |              | bound on the |              |
>|              |              |              | acceptable   |              |
>|              |              |              | increase of  |              |
>|              |              |              | barrier      |              |
>|              |              |              | objective    |              |
>|              |              |              | function.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| obj_scaling_ | OT_REAL      | 1            | Scaling      | CasADi::Ipop |
>| factor       |              |              | factor for   | tInternal    |
>|              |              |              | the          |              |
>|              |              |              | objective    |              |
>|              |              |              | function.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| option_file_ | OT_STRING    |              | File name of | CasADi::Ipop |
>| name         |              |              | options file | tInternal    |
>|              |              |              | (to          |              |
>|              |              |              | overwrite    |              |
>|              |              |              | default).    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| output_file  | OT_STRING    |              | File name of | CasADi::Ipop |
>|              |              |              | desired      | tInternal    |
>|              |              |              | output file  |              |
>|              |              |              | (leave unset |              |
>|              |              |              | for no file  |              |
>|              |              |              | output).     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| parametric   | OT_BOOLEAN   | GenericType( | Deprecated   | CasADi::NLPS |
>|              |              | )            | option.      | olverInterna |
>|              |              |              | Expect F, G, | l            |
>|              |              |              | H, J to have |              |
>|              |              |              | an           |              |
>|              |              |              | additional   |              |
>|              |              |              | input        |              |
>|              |              |              | argument     |              |
>|              |              |              | appended at  |              |
>|              |              |              | the end,     |              |
>|              |              |              | denoting     |              |
>|              |              |              | fixed        |              |
>|              |              |              | parameters.  |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_iter | OT_INTEGER   | 5000         | Maximum Size | CasADi::Ipop |
>| _coarse_size |              |              | of Coarse    | tInternal    |
>|              |              |              | Grid Matrix  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_iter | OT_REAL      | 0.500        | dropping     | CasADi::Ipop |
>| _dropping_fa |              |              | value for    | tInternal    |
>| ctor         |              |              | incomplete   |              |
>|              |              |              | factor (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_iter | OT_REAL      | 0.100        | dropping     | CasADi::Ipop |
>| _dropping_sc |              |              | value for    | tInternal    |
>| hur          |              |              | sparsify     |              |
>|              |              |              | schur        |              |
>|              |              |              | complement   |              |
>|              |              |              | factor (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_iter | OT_REAL      | 5000000      | (see IPOPT d | CasADi::Ipop |
>| _inverse_nor |              |              | ocumentation | tInternal    |
>| m_factor     |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_iter | OT_INTEGER   | 10           | Maximum Size | CasADi::Ipop |
>| _max_levels  |              |              | of Grid      | tInternal    |
>|              |              |              | Levels (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_iter | OT_INTEGER   | 10000000     | max fill for | CasADi::Ipop |
>| _max_row_fil |              |              | each row     | tInternal    |
>| l            |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_iter | OT_REAL      | 0.000        | Relative     | CasADi::Ipop |
>| _relative_to |              |              | Residual     | tInternal    |
>| l            |              |              | Convergence  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_iter | OT_STRING    | no           | Switch on    | CasADi::Ipop |
>| ative        |              |              | iterative    | tInternal    |
>|              |              |              | solver in    |              |
>|              |              |              | Pardiso      |              |
>|              |              |              | library (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_matc | OT_STRING    | complete+2x2 | Matching     | CasADi::Ipop |
>| hing_strateg |              |              | strategy to  | tInternal    |
>| y            |              |              | be used by   |              |
>|              |              |              | Pardiso (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_max_ | OT_INTEGER   | 4            | Maximal      | CasADi::Ipop |
>| droptol_corr |              |              | number of    | tInternal    |
>| ections      |              |              | decreases of |              |
>|              |              |              | drop         |              |
>|              |              |              | tolerance    |              |
>|              |              |              | during one   |              |
>|              |              |              | solve. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_max_ | OT_INTEGER   | 500          | Maximum      | CasADi::Ipop |
>| iter         |              |              | number of    | tInternal    |
>|              |              |              | Krylov-      |              |
>|              |              |              | Subspace     |              |
>|              |              |              | Iteration    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_msgl | OT_INTEGER   | 0            | Pardiso      | CasADi::Ipop |
>| vl           |              |              | message      | tInternal    |
>|              |              |              | level (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_out_ | OT_INTEGER   | 0            | Enables out- | CasADi::Ipop |
>| of_core_powe |              |              | of-core      | tInternal    |
>| r            |              |              | variant of   |              |
>|              |              |              | Pardiso (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_redo | OT_STRING    | no           | Toggle for   | CasADi::Ipop |
>| _symbolic_fa |              |              | handling     | tInternal    |
>| ct_only_if_i |              |              | case when    |              |
>| nertia_wrong |              |              | elements     |              |
>|              |              |              | were         |              |
>|              |              |              | perturbed by |              |
>|              |              |              | Pardiso.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_repe | OT_STRING    | no           | Interpretati | CasADi::Ipop |
>| ated_perturb |              |              | on of        | tInternal    |
>| ation_means_ |              |              | perturbed    |              |
>| singular     |              |              | elements.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pardiso_skip | OT_STRING    | no           | Always       | CasADi::Ipop |
>| _inertia_che |              |              | pretend      | tInternal    |
>| ck           |              |              | inertia is   |              |
>|              |              |              | correct.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pass_nonline | OT_BOOLEAN   | False        | n/a          | CasADi::Ipop |
>| ar_variables |              |              |              | tInternal    |
>+--------------+--------------+--------------+--------------+--------------+
>| pen_des_fact | OT_REAL      | 0.200        | a parameter  | CasADi::Ipop |
>|              |              |              | used in      | tInternal    |
>|              |              |              | penalty      |              |
>|              |              |              | parameter    |              |
>|              |              |              | computation  |              |
>|              |              |              | (for Chen-   |              |
>|              |              |              | Goldfarb     |              |
>|              |              |              | line         |              |
>|              |              |              | search).     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pen_init_fac | OT_REAL      | 50           | a parameter  | CasADi::Ipop |
>|              |              |              | used to      | tInternal    |
>|              |              |              | choose       |              |
>|              |              |              | initial      |              |
>|              |              |              | penalty para |              |
>|              |              |              | meterswhen   |              |
>|              |              |              | the          |              |
>|              |              |              | regularized  |              |
>|              |              |              | Newton       |              |
>|              |              |              | method is    |              |
>|              |              |              | used. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| pen_theta_ma | OT_REAL      | 10000        | Determines   | CasADi::Ipop |
>| x_fact       |              |              | upper bound  | tInternal    |
>|              |              |              | for          |              |
>|              |              |              | constraint   |              |
>|              |              |              | violation in |              |
>|              |              |              | the filter.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| penalty_init | OT_REAL      | 100000       | Maximal      | CasADi::Ipop |
>| _max         |              |              | value for    | tInternal    |
>|              |              |              | the intial   |              |
>|              |              |              | penalty      |              |
>|              |              |              | parameter    |              |
>|              |              |              | (for Chen-   |              |
>|              |              |              | Goldfarb     |              |
>|              |              |              | line         |              |
>|              |              |              | search).     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| penalty_init | OT_REAL      | 1            | Minimal      | CasADi::Ipop |
>| _min         |              |              | value for    | tInternal    |
>|              |              |              | the intial   |              |
>|              |              |              | penalty      |              |
>|              |              |              | parameter    |              |
>|              |              |              | for line     |              |
>|              |              |              | search(for   |              |
>|              |              |              | Chen-        |              |
>|              |              |              | Goldfarb     |              |
>|              |              |              | line         |              |
>|              |              |              | search).     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| penalty_max  | OT_REAL      | 1.000e+30    | Maximal      | CasADi::Ipop |
>|              |              |              | value for    | tInternal    |
>|              |              |              | the penalty  |              |
>|              |              |              | parameter    |              |
>|              |              |              | (for Chen-   |              |
>|              |              |              | Goldfarb     |              |
>|              |              |              | line         |              |
>|              |              |              | search).     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| penalty_upda | OT_REAL      | 10           | LIFENG       | CasADi::Ipop |
>| te_compl_tol |              |              | WRITES THIS. | tInternal    |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| penalty_upda | OT_REAL      | 0.000        | Threshold    | CasADi::Ipop |
>| te_infeasibi |              |              | for infeasib | tInternal    |
>| lity_tol     |              |              | ility in     |              |
>|              |              |              | penalty      |              |
>|              |              |              | parameter    |              |
>|              |              |              | update test. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| perturb_alwa | OT_STRING    | no           | Active       | CasADi::Ipop |
>| ys_cd        |              |              | permanent    | tInternal    |
>|              |              |              | perturbation |              |
>|              |              |              | of           |              |
>|              |              |              | constraint l |              |
>|              |              |              | inearization |              |
>|              |              |              | . (see IPOPT |              |
>|              |              |              | documentatio |              |
>|              |              |              | n)           |              |
>+--------------+--------------+--------------+--------------+--------------+
>| perturb_dec_ | OT_REAL      | 0.333        | Decrease     | CasADi::Ipop |
>| fact         |              |              | factor for   | tInternal    |
>|              |              |              | x-s perturba |              |
>|              |              |              | tion. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| perturb_inc_ | OT_REAL      | 8            | Increase     | CasADi::Ipop |
>| fact         |              |              | factor for   | tInternal    |
>|              |              |              | x-s perturba |              |
>|              |              |              | tion. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| perturb_inc_ | OT_REAL      | 100          | Increase     | CasADi::Ipop |
>| fact_first   |              |              | factor for   | tInternal    |
>|              |              |              | x-s          |              |
>|              |              |              | perturbation |              |
>|              |              |              | for very     |              |
>|              |              |              | first pertur |              |
>|              |              |              | bation. (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| piecewisepen | OT_REAL      | 0.000        | LIFENG       | CasADi::Ipop |
>| alty_gamma_i |              |              | WRITES THIS. | tInternal    |
>| nfeasi       |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| piecewisepen | OT_REAL      | 0.000        | LIFENG       | CasADi::Ipop |
>| alty_gamma_o |              |              | WRITES THIS. | tInternal    |
>| bj           |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| point_pertur | OT_REAL      | 10           | Maximal      | CasADi::Ipop |
>| bation_radiu |              |              | perturbation | tInternal    |
>| s            |              |              | of an        |              |
>|              |              |              | evaluation   |              |
>|              |              |              | point. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| print_info_s | OT_STRING    | no           | Enables      | CasADi::Ipop |
>| tring        |              |              | printing of  | tInternal    |
>|              |              |              | additional   |              |
>|              |              |              | info string  |              |
>|              |              |              | at end of    |              |
>|              |              |              | iteration    |              |
>|              |              |              | output. (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| print_level  | OT_INTEGER   | 5            | Output       | CasADi::Ipop |
>|              |              |              | verbosity    | tInternal    |
>|              |              |              | level. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| print_option | OT_STRING    | no           | Switch to    | CasADi::Ipop |
>| s_documentat |              |              | print all    | tInternal    |
>| ion          |              |              | algorithmic  |              |
>|              |              |              | options.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| print_option | OT_STRING    | no           | Undocumented | CasADi::Ipop |
>| s_latex_mode |              |              | (see IPOPT d | tInternal    |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| print_time   | OT_BOOLEAN   | True         | print        | CasADi::Ipop |
>|              |              |              | information  | tInternal    |
>|              |              |              | about        |              |
>|              |              |              | execution    |              |
>|              |              |              | time         |              |
>+--------------+--------------+--------------+--------------+--------------+
>| print_timing | OT_STRING    | no           | Switch to    | CasADi::Ipop |
>| _statistics  |              |              | print timing | tInternal    |
>|              |              |              | statistics.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| print_user_o | OT_STRING    | no           | Print all    | CasADi::Ipop |
>| ptions       |              |              | options set  | tInternal    |
>|              |              |              | by the user. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| quality_func | OT_STRING    | none         | The          | CasADi::Ipop |
>| tion_balanci |              |              | balancing    | tInternal    |
>| ng_term      |              |              | term         |              |
>|              |              |              | included in  |              |
>|              |              |              | the quality  |              |
>|              |              |              | function for |              |
>|              |              |              | centrality.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| quality_func | OT_STRING    | none         | The penalty  | CasADi::Ipop |
>| tion_central |              |              | term for     | tInternal    |
>| ity          |              |              | centrality   |              |
>|              |              |              | that is      |              |
>|              |              |              | included in  |              |
>|              |              |              | quality      |              |
>|              |              |              | function.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| quality_func | OT_INTEGER   | 8            | Maximum      | CasADi::Ipop |
>| tion_max_sec |              |              | number of    | tInternal    |
>| tion_steps   |              |              | search steps |              |
>|              |              |              | during       |              |
>|              |              |              | direct       |              |
>|              |              |              | search       |              |
>|              |              |              | procedure    |              |
>|              |              |              | determining  |              |
>|              |              |              | the optimal  |              |
>|              |              |              | centering    |              |
>|              |              |              | parameter.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| quality_func | OT_STRING    | 2-norm-      | Norm used    | CasADi::Ipop |
>| tion_norm_ty |              | squared      | for          | tInternal    |
>| pe           |              |              | components   |              |
>|              |              |              | of the       |              |
>|              |              |              | quality      |              |
>|              |              |              | function.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| quality_func | OT_REAL      | 0            | Tolerance    | CasADi::Ipop |
>| tion_section |              |              | for the      | tInternal    |
>| _qf_tol      |              |              | golden       |              |
>|              |              |              | section      |              |
>|              |              |              | search       |              |
>|              |              |              | procedure    |              |
>|              |              |              | determining  |              |
>|              |              |              | the optimal  |              |
>|              |              |              | centering    |              |
>|              |              |              | parameter    |              |
>|              |              |              | (in the      |              |
>|              |              |              | function     |              |
>|              |              |              | value        |              |
>|              |              |              | space). (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| quality_func | OT_REAL      | 0.010        | Tolerance    | CasADi::Ipop |
>| tion_section |              |              | for the      | tInternal    |
>| _sigma_tol   |              |              | section      |              |
>|              |              |              | search       |              |
>|              |              |              | procedure    |              |
>|              |              |              | determining  |              |
>|              |              |              | the optimal  |              |
>|              |              |              | centering    |              |
>|              |              |              | parameter    |              |
>|              |              |              | (in sigma    |              |
>|              |              |              | space). (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| recalc_y     | OT_STRING    | no           | Tells the    | CasADi::Ipop |
>|              |              |              | algorithm to | tInternal    |
>|              |              |              | recalculate  |              |
>|              |              |              | the equality |              |
>|              |              |              | and          |              |
>|              |              |              | inequality   |              |
>|              |              |              | multipliers  |              |
>|              |              |              | as least     |              |
>|              |              |              | square       |              |
>|              |              |              | estimates.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| recalc_y_fea | OT_REAL      | 0.000        | Feasibility  | CasADi::Ipop |
>| s_tol        |              |              | threshold    | tInternal    |
>|              |              |              | for recomput |              |
>|              |              |              | ation of     |              |
>|              |              |              | multipliers. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
>| heck         |              |              | exceptions   | ternal       |
>|              |              |              | when NaN or  |              |
>|              |              |              | Inf appears  |              |
>|              |              |              | during       |              |
>|              |              |              | evaluation   |              |
>+--------------+--------------+--------------+--------------+--------------+
>| replace_boun | OT_STRING    | no           | Indicates if | CasADi::Ipop |
>| ds           |              |              | all variable | tInternal    |
>|              |              |              | bounds       |              |
>|              |              |              | should be    |              |
>|              |              |              | replaced by  |              |
>|              |              |              | inequality   |              |
>|              |              |              | constraints  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| required_inf | OT_REAL      | 0.900        | Required     | CasADi::Ipop |
>| easibility_r |              |              | reduction of | tInternal    |
>| eduction     |              |              | infeasibilit |              |
>|              |              |              | y before     |              |
>|              |              |              | leaving      |              |
>|              |              |              | restoration  |              |
>|              |              |              | phase. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| residual_imp | OT_REAL      | 1.000        | Minimal      | CasADi::Ipop |
>| rovement_fac |              |              | required     | tInternal    |
>| tor          |              |              | reduction of |              |
>|              |              |              | residual     |              |
>|              |              |              | test ratio   |              |
>|              |              |              | in iterative |              |
>|              |              |              | refinement.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| residual_rat | OT_REAL      | 0.000        | Iterative    | CasADi::Ipop |
>| io_max       |              |              | refinement   | tInternal    |
>|              |              |              | tolerance    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| residual_rat | OT_REAL      | 0.000        | Threshold    | CasADi::Ipop |
>| io_singular  |              |              | for          | tInternal    |
>|              |              |              | declaring    |              |
>|              |              |              | linear       |              |
>|              |              |              | system       |              |
>|              |              |              | singular     |              |
>|              |              |              | after failed |              |
>|              |              |              | iterative    |              |
>|              |              |              | refinement.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| resto_failur | OT_REAL      | 0            | Threshold    | CasADi::Ipop |
>| e_feasibilit |              |              | for primal i | tInternal    |
>| y_threshold  |              |              | nfeasibility |              |
>|              |              |              | to declare   |              |
>|              |              |              | failure of   |              |
>|              |              |              | restoration  |              |
>|              |              |              | phase. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| resto_penalt | OT_REAL      | 1000         | Penalty      | CasADi::Ipop |
>| y_parameter  |              |              | parameter in | tInternal    |
>|              |              |              | the          |              |
>|              |              |              | restoration  |              |
>|              |              |              | phase        |              |
>|              |              |              | objective    |              |
>|              |              |              | function.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| resto_proxim | OT_REAL      | 1            | Weighting    | CasADi::Ipop |
>| ity_weight   |              |              | factor for   | tInternal    |
>|              |              |              | the          |              |
>|              |              |              | proximity    |              |
>|              |              |              | term in      |              |
>|              |              |              | restoration  |              |
>|              |              |              | phase        |              |
>|              |              |              | objective.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| rho          | OT_REAL      | 0.100        | Value in     | CasADi::Ipop |
>|              |              |              | penalty      | tInternal    |
>|              |              |              | parameter    |              |
>|              |              |              | update       |              |
>|              |              |              | formula.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| s_max        | OT_REAL      | 100          | Scaling      | CasADi::Ipop |
>|              |              |              | threshold    | tInternal    |
>|              |              |              | for the NLP  |              |
>|              |              |              | error. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| s_phi        | OT_REAL      | 2.300        | Exponent for | CasADi::Ipop |
>|              |              |              | linear       | tInternal    |
>|              |              |              | barrier      |              |
>|              |              |              | function     |              |
>|              |              |              | model in the |              |
>|              |              |              | switching    |              |
>|              |              |              | rule. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| s_theta      | OT_REAL      | 1.100        | Exponent for | CasADi::Ipop |
>|              |              |              | current      | tInternal    |
>|              |              |              | constraint   |              |
>|              |              |              | violation in |              |
>|              |              |              | the          |              |
>|              |              |              | switching    |              |
>|              |              |              | rule. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| sb           | OT_STRING    | no           | (see IPOPT d | CasADi::Ipop |
>|              |              |              | ocumentation | tInternal    |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| sigma_max    | OT_REAL      | 100          | Maximum      | CasADi::Ipop |
>|              |              |              | value of the | tInternal    |
>|              |              |              | centering    |              |
>|              |              |              | parameter.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| sigma_min    | OT_REAL      | 0.000        | Minimum      | CasADi::Ipop |
>|              |              |              | value of the | tInternal    |
>|              |              |              | centering    |              |
>|              |              |              | parameter.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| skip_corr_if | OT_STRING    | yes          | Skip the     | CasADi::Ipop |
>| _neg_curv    |              |              | corrector    | tInternal    |
>|              |              |              | step in      |              |
>|              |              |              | negative     |              |
>|              |              |              | curvature    |              |
>|              |              |              | iteration (u |              |
>|              |              |              | nsupported!) |              |
>|              |              |              | . (see IPOPT |              |
>|              |              |              | documentatio |              |
>|              |              |              | n)           |              |
>+--------------+--------------+--------------+--------------+--------------+
>| skip_corr_in | OT_STRING    | yes          | Skip the     | CasADi::Ipop |
>| _monotone_mo |              |              | corrector    | tInternal    |
>| de           |              |              | step during  |              |
>|              |              |              | monotone     |              |
>|              |              |              | barrier      |              |
>|              |              |              | parameter    |              |
>|              |              |              | mode (unsupp |              |
>|              |              |              | orted!).     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| skip_finaliz | OT_STRING    | no           | Indicates if | CasADi::Ipop |
>| e_solution_c |              |              | call to NLP: | tInternal    |
>| all          |              |              | :FinalizeSol |              |
>|              |              |              | ution after  |              |
>|              |              |              | optimization |              |
>|              |              |              | should be    |              |
>|              |              |              | suppressed   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| slack_bound_ | OT_REAL      | 0.010        | Desired      | CasADi::Ipop |
>| frac         |              |              | minimum      | tInternal    |
>|              |              |              | relative     |              |
>|              |              |              | distance     |              |
>|              |              |              | from the     |              |
>|              |              |              | initial      |              |
>|              |              |              | slack to     |              |
>|              |              |              | bound. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| slack_bound_ | OT_REAL      | 0.010        | Desired      | CasADi::Ipop |
>| push         |              |              | minimum      | tInternal    |
>|              |              |              | absolute     |              |
>|              |              |              | distance     |              |
>|              |              |              | from the     |              |
>|              |              |              | initial      |              |
>|              |              |              | slack to     |              |
>|              |              |              | bound. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| slack_move   | OT_REAL      | 0.000        | Correction   | CasADi::Ipop |
>|              |              |              | size for     | tInternal    |
>|              |              |              | very small   |              |
>|              |              |              | slacks. (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| soft_resto_p | OT_REAL      | 1.000        | Required     | CasADi::Ipop |
>| derror_reduc |              |              | reduction in | tInternal    |
>| tion_factor  |              |              | primal-dual  |              |
>|              |              |              | error in the |              |
>|              |              |              | soft         |              |
>|              |              |              | restoration  |              |
>|              |              |              | phase. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| sparse       | OT_BOOLEAN   | true         | function is  | CasADi::FXIn |
>|              |              |              | sparse       | ternal       |
>+--------------+--------------+--------------+--------------+--------------+
>| sparsity_gen | OT_SPARSITYG | GenericType( | Function     | CasADi::FXIn |
>| erator       | ENERATOR     | )            | that         | ternal       |
>|              |              |              | provides     |              |
>|              |              |              | sparsity for |              |
>|              |              |              | a given      |              |
>|              |              |              | input output |              |
>|              |              |              | block,       |              |
>|              |              |              | overrides    |              |
>|              |              |              | internal     |              |
>|              |              |              | routines.    |              |
>|              |              |              | Check docume |              |
>|              |              |              | ntation of S |              |
>|              |              |              | parsityGener |              |
>|              |              |              | ator .       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| start_with_r | OT_STRING    | no           | Tells        | CasADi::Ipop |
>| esto         |              |              | algorithm to | tInternal    |
>|              |              |              | switch to    |              |
>|              |              |              | restoration  |              |
>|              |              |              | phase in     |              |
>|              |              |              | first        |              |
>|              |              |              | iteration.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| store_jacobi | OT_BOOLEAN   | false        | keep         | CasADi::FXIn |
>| ans          |              |              | references   | ternal       |
>|              |              |              | to generated |              |
>|              |              |              | Jacobians in |              |
>|              |              |              | order to     |              |
>|              |              |              | avoid        |              |
>|              |              |              | generating   |              |
>|              |              |              | identical    |              |
>|              |              |              | Jacobians    |              |
>|              |              |              | multiple     |              |
>|              |              |              | times        |              |
>+--------------+--------------+--------------+--------------+--------------+
>| suppress_all | OT_STRING    | no           | Undocumented | CasADi::Ipop |
>| _output      |              |              | (see IPOPT d | tInternal    |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| tau_min      | OT_REAL      | 0.990        | Lower bound  | CasADi::Ipop |
>|              |              |              | on fraction- | tInternal    |
>|              |              |              | to-the-      |              |
>|              |              |              | boundary     |              |
>|              |              |              | parameter    |              |
>|              |              |              | tau. (see    |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| theta_max_fa | OT_REAL      | 10000        | Determines   | CasADi::Ipop |
>| ct           |              |              | upper bound  | tInternal    |
>|              |              |              | for          |              |
>|              |              |              | constraint   |              |
>|              |              |              | violation in |              |
>|              |              |              | the filter.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| theta_min    | OT_REAL      | 0.000        | LIFENG       | CasADi::Ipop |
>|              |              |              | WRITES THIS. | tInternal    |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| theta_min_fa | OT_REAL      | 0.000        | Determines   | CasADi::Ipop |
>| ct           |              |              | constraint   | tInternal    |
>|              |              |              | violation    |              |
>|              |              |              | threshold in |              |
>|              |              |              | the          |              |
>|              |              |              | switching    |              |
>|              |              |              | rule. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| tiny_step_to | OT_REAL      | 0.000        | Tolerance    | CasADi::Ipop |
>| l            |              |              | for          | tInternal    |
>|              |              |              | detecting    |              |
>|              |              |              | numerically  |              |
>|              |              |              | insignifican |              |
>|              |              |              | t steps.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| tiny_step_y_ | OT_REAL      | 0.010        | Tolerance    | CasADi::Ipop |
>| tol          |              |              | for quitting | tInternal    |
>|              |              |              | because of   |              |
>|              |              |              | numerically  |              |
>|              |              |              | insignifican |              |
>|              |              |              | t steps.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| tol          | OT_REAL      | 0.000        | Desired      | CasADi::Ipop |
>|              |              |              | convergence  | tInternal    |
>|              |              |              | tolerance    |              |
>|              |              |              | (relative).  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::FXIn |
>|              |              | )            | defined      | ternal       |
>|              |              |              | field that   |              |
>|              |              |              | can be used  |              |
>|              |              |              | to identify  |              |
>|              |              |              | the function |              |
>|              |              |              | or pass      |              |
>|              |              |              | additional   |              |
>|              |              |              | information  |              |
>+--------------+--------------+--------------+--------------+--------------+
>| var_integer_ | OT_DICTIONAR | None         | Integer      | CasADi::Ipop |
>| md           | Y            |              | metadata (a  | tInternal    |
>|              |              |              | dictionary   |              |
>|              |              |              | with lists   |              |
>|              |              |              | of integers) |              |
>|              |              |              | about        |              |
>|              |              |              | variables to |              |
>|              |              |              | be passed to |              |
>|              |              |              | IPOPT        |              |
>+--------------+--------------+--------------+--------------+--------------+
>| var_numeric_ | OT_DICTIONAR | None         | Numeric      | CasADi::Ipop |
>| md           | Y            |              | metadata (a  | tInternal    |
>|              |              |              | dictionary   |              |
>|              |              |              | with lists   |              |
>|              |              |              | of reals)    |              |
>|              |              |              | about        |              |
>|              |              |              | variables to |              |
>|              |              |              | be passed to |              |
>|              |              |              | IPOPT        |              |
>+--------------+--------------+--------------+--------------+--------------+
>| var_string_m | OT_DICTIONAR | None         | String       | CasADi::Ipop |
>| d            | Y            |              | metadata (a  | tInternal    |
>|              |              |              | dictionary   |              |
>|              |              |              | with lists   |              |
>|              |              |              | of strings)  |              |
>|              |              |              | about        |              |
>|              |              |              | variables to |              |
>|              |              |              | be passed to |              |
>|              |              |              | IPOPT        |              |
>+--------------+--------------+--------------+--------------+--------------+
>| vartheta     | OT_REAL      | 0.500        | a parameter  | CasADi::Ipop |
>|              |              |              | used to      | tInternal    |
>|              |              |              | check if the |              |
>|              |              |              | fast         |              |
>|              |              |              | direction    |              |
>|              |              |              | can be used  |              |
>|              |              |              | asthe line   |              |
>|              |              |              | search       |              |
>|              |              |              | direction    |              |
>|              |              |              | (for Chen-   |              |
>|              |              |              | Goldfarb     |              |
>|              |              |              | line         |              |
>|              |              |              | search).     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| verbose      | OT_BOOLEAN   | false        | verbose      | CasADi::FXIn |
>|              |              |              | evaluation   | ternal       |
>|              |              |              | for          |              |
>|              |              |              | debugging    |              |
>+--------------+--------------+--------------+--------------+--------------+
>| warm_start_b | OT_REAL      | 0.001        | same as      | CasADi::Ipop |
>| ound_frac    |              |              | bound_frac   | tInternal    |
>|              |              |              | for the      |              |
>|              |              |              | regular      |              |
>|              |              |              | initializer. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| warm_start_b | OT_REAL      | 0.001        | same as      | CasADi::Ipop |
>| ound_push    |              |              | bound_push   | tInternal    |
>|              |              |              | for the      |              |
>|              |              |              | regular      |              |
>|              |              |              | initializer. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| warm_start_e | OT_STRING    | no           | Tells        | CasADi::Ipop |
>| ntire_iterat |              |              | algorithm    | tInternal    |
>| e            |              |              | whether to   |              |
>|              |              |              | use the GetW |              |
>|              |              |              | armStartIter |              |
>|              |              |              | ate method   |              |
>|              |              |              | in the NLP.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| warm_start_i | OT_STRING    | no           | Warm-start   | CasADi::Ipop |
>| nit_point    |              |              | for initial  | tInternal    |
>|              |              |              | point (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| warm_start_m | OT_REAL      | 0.001        | same as mult | CasADi::Ipop |
>| ult_bound_pu |              |              | _bound_push  | tInternal    |
>| sh           |              |              | for the      |              |
>|              |              |              | regular      |              |
>|              |              |              | initializer. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| warm_start_m | OT_REAL      | 1000000      | Maximum      | CasADi::Ipop |
>| ult_init_max |              |              | initial      | tInternal    |
>|              |              |              | value for    |              |
>|              |              |              | the equality |              |
>|              |              |              | multipliers. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| warm_start_s | OT_STRING    | no           | Indicates    | CasADi::Ipop |
>| ame_structur |              |              | whether a    | tInternal    |
>| e            |              |              | problem with |              |
>|              |              |              | a structure  |              |
>|              |              |              | identical to |              |
>|              |              |              | the previous |              |
>|              |              |              | one is to be |              |
>|              |              |              | solved. (see |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| warm_start_s | OT_REAL      | 0.001        | same as slac | CasADi::Ipop |
>| lack_bound_f |              |              | k_bound_frac | tInternal    |
>| rac          |              |              | for the      |              |
>|              |              |              | regular      |              |
>|              |              |              | initializer. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| warm_start_s | OT_REAL      | 0.001        | same as slac | CasADi::Ipop |
>| lack_bound_p |              |              | k_bound_push | tInternal    |
>| ush          |              |              | for the      |              |
>|              |              |              | regular      |              |
>|              |              |              | initializer. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| warm_start_t | OT_REAL      | 0            | Unsupported! | CasADi::Ipop |
>| arget_mu     |              |              | (see IPOPT d | tInternal    |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| warn_initial | OT_BOOLEAN   | false        | Warn if the  | CasADi::NLPS |
>| _bounds      |              |              | initial      | olverInterna |
>|              |              |              | guess does   | l            |
>|              |              |              | not satisfy  |              |
>|              |              |              | LBX and UBX  |              |
>+--------------+--------------+--------------+--------------+--------------+
>| watchdog_sho | OT_INTEGER   | 10           | Number of    | CasADi::Ipop |
>| rtened_iter_ |              |              | shortened    | tInternal    |
>| trigger      |              |              | iterations   |              |
>|              |              |              | that trigger |              |
>|              |              |              | the          |              |
>|              |              |              | watchdog.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| watchdog_tri | OT_INTEGER   | 3            | Maximum      | CasADi::Ipop |
>| al_iter_max  |              |              | number of    | tInternal    |
>|              |              |              | watchdog     |              |
>|              |              |              | iterations.  |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| wsmp_inexact | OT_REAL      | 0            | Drop         | CasADi::Ipop |
>| _droptol     |              |              | tolerance    | tInternal    |
>|              |              |              | for inexact  |              |
>|              |              |              | factorizatio |              |
>|              |              |              | n preconditi |              |
>|              |              |              | oner in      |              |
>|              |              |              | WISMP. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| wsmp_inexact | OT_REAL      | 0            | Fill-in      | CasADi::Ipop |
>| _fillin_limi |              |              | limit for    | tInternal    |
>| t            |              |              | inexact fact |              |
>|              |              |              | orization pr |              |
>|              |              |              | econditioner |              |
>|              |              |              | in WISMP.    |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| wsmp_iterati | OT_STRING    | no           | Switches to  | CasADi::Ipop |
>| ve           |              |              | iterative    | tInternal    |
>|              |              |              | solver in    |              |
>|              |              |              | WSMP. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| wsmp_max_ite | OT_INTEGER   | 1000         | Maximal      | CasADi::Ipop |
>| r            |              |              | number of    | tInternal    |
>|              |              |              | iterations   |              |
>|              |              |              | in iterative |              |
>|              |              |              | WISMP (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| wsmp_no_pivo | OT_STRING    | no           | Use the      | CasADi::Ipop |
>| ting         |              |              | static       | tInternal    |
>|              |              |              | pivoting     |              |
>|              |              |              | option of    |              |
>|              |              |              | WSMP. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| wsmp_num_thr | OT_INTEGER   | 1            | Number of    | CasADi::Ipop |
>| eads         |              |              | threads to   | tInternal    |
>|              |              |              | be used in   |              |
>|              |              |              | WSMP (see    |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| wsmp_orderin | OT_INTEGER   | 1            | Determines   | CasADi::Ipop |
>| g_option     |              |              | how ordering | tInternal    |
>|              |              |              | is done in   |              |
>|              |              |              | WSMP         |              |
>|              |              |              | (IPARM(16)   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| wsmp_orderin | OT_INTEGER   | 1            | Determines   | CasADi::Ipop |
>| g_option2    |              |              | how ordering | tInternal    |
>|              |              |              | is done in   |              |
>|              |              |              | WSMP         |              |
>|              |              |              | (IPARM(20)   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| wsmp_pivtol  | OT_REAL      | 0.000        | Pivot        | CasADi::Ipop |
>|              |              |              | tolerance    | tInternal    |
>|              |              |              | for the      |              |
>|              |              |              | linear       |              |
>|              |              |              | solver WSMP. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| wsmp_pivtolm | OT_REAL      | 0.100        | Maximum      | CasADi::Ipop |
>| ax           |              |              | pivot        | tInternal    |
>|              |              |              | tolerance    |              |
>|              |              |              | for the      |              |
>|              |              |              | linear       |              |
>|              |              |              | solver WSMP. |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| wsmp_scaling | OT_INTEGER   | 0            | Determines   | CasADi::Ipop |
>|              |              |              | how the      | tInternal    |
>|              |              |              | matrix is    |              |
>|              |              |              | scaled by    |              |
>|              |              |              | WSMP. (see   |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| wsmp_singula | OT_REAL      | 0.000        | WSMP's       | CasADi::Ipop |
>| rity_thresho |              |              | singularity  | tInternal    |
>| ld           |              |              | threshold.   |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| wsmp_skip_in | OT_STRING    | no           | Always       | CasADi::Ipop |
>| ertia_check  |              |              | pretent      | tInternal    |
>|              |              |              | inertia is   |              |
>|              |              |              | correct.     |              |
>|              |              |              | (see IPOPT d |              |
>|              |              |              | ocumentation |              |
>|              |              |              | )            |              |
>+--------------+--------------+--------------+--------------+--------------+
>| wsmp_write_m | OT_INTEGER   | -1           | Iteration in | CasADi::Ipop |
>| atrix_iterat |              |              | which the    | tInternal    |
>| ion          |              |              | matrices are |              |
>|              |              |              | written to   |              |
>|              |              |              | files. (see  |              |
>|              |              |              | IPOPT docume |              |
>|              |              |              | ntation)     |              |
>+--------------+--------------+--------------+--------------+--------------+
>
>>List of available monitors
>+-------------+-----------------------+
>|     Id      |        Used in        |
>+=============+=======================+
>| eval_f      | CasADi::IpoptInternal |
>+-------------+-----------------------+
>| eval_g      | CasADi::IpoptInternal |
>+-------------+-----------------------+
>| eval_grad_f | CasADi::IpoptInternal |
>+-------------+-----------------------+
>| eval_jac_g  | CasADi::IpoptInternal |
>+-------------+-----------------------+
>| inputs      | CasADi::FXInternal    |
>+-------------+-----------------------+
>| outputs     | CasADi::FXInternal    |
>+-------------+-----------------------+
>
>>List of available stats
>+--------------------+-----------------------+
>|         Id         |        Used in        |
>+====================+=======================+
>| con_integer_md     | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| con_numeric_md     | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| con_string_md      | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| iter_count         | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| iteration          | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| return_status      | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| t_callback_fun     | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| t_callback_prepare | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| t_eval_f           | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| t_eval_g           | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| t_eval_grad_f      | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| t_eval_h           | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| t_eval_jac_g       | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| t_mainloop         | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| var_integer_md     | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| var_numeric_md     | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>| var_string_md      | CasADi::IpoptInternal |
>+--------------------+-----------------------+
>
>Diagrams
>
>C++ includes: ipopt_solver.hpp 
-}
newtype IpoptSolver = IpoptSolver (ForeignPtr IpoptSolver')
-- typeclass decl
class IpoptSolverClass a where
  castIpoptSolver :: a -> IpoptSolver
instance IpoptSolverClass IpoptSolver where
  castIpoptSolver = id

-- baseclass instances
instance SharedObjectClass IpoptSolver where
  castSharedObject (IpoptSolver x) = SharedObject (castForeignPtr x)

instance PrintableObjectClass IpoptSolver where
  castPrintableObject (IpoptSolver x) = PrintableObject (castForeignPtr x)

instance IOInterfaceFXClass IpoptSolver where
  castIOInterfaceFX (IpoptSolver x) = IOInterfaceFX (castForeignPtr x)

instance OptionsFunctionalityClass IpoptSolver where
  castOptionsFunctionality (IpoptSolver x) = OptionsFunctionality (castForeignPtr x)

instance FXClass IpoptSolver where
  castFX (IpoptSolver x) = FX (castForeignPtr x)


-- helper instances
instance Marshal IpoptSolver (Ptr IpoptSolver') where
  marshal (IpoptSolver x) = return (unsafeForeignPtrToPtr x)
  marshalFree (IpoptSolver x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__IpoptSolver" 
  c_delete_CasADi__IpoptSolver :: FunPtr (Ptr IpoptSolver' -> IO ())
instance WrapReturn (Ptr IpoptSolver') IpoptSolver where
  wrapReturn = (fmap IpoptSolver) . (newForeignPtr c_delete_CasADi__IpoptSolver)


-- raw decl
data SXMatrix'
-- data decl
{-|
>General sparse matrix class General sparse matrix class that is designed
>with the idea that "everything is a matrix", that is, also scalars and
>vectors.  This philosophy makes it easy to use and to interface in
>particularily with Python and Matlab/Octave. .
>
>The syntax tries to stay as close as possible to the ublas syntax when it
>comes to vector/matrix operations.
>
>Index starts with 0.  Index flatten happens as follows: (i,j) -> k =
>j+i*size2()  Vectors are considered to be column vectors.
>
>The storage format is a (modified) compressed row storage (CRS) format. This
>way, a vector element can always be accessed in constant time.
>
>Matrix<T> is polymorphic with a std::vector<T> that contain all non-
>identical-zero elements.  The sparsity can be accessed with CRSSparsity&
>sparsity()
>
>Joel Andersson
>
>C++ includes: matrix.hpp 
-}
newtype SXMatrix = SXMatrix (ForeignPtr SXMatrix')
-- typeclass decl
class SXMatrixClass a where
  castSXMatrix :: a -> SXMatrix
instance SXMatrixClass SXMatrix where
  castSXMatrix = id

-- baseclass instances
instance PrintableObjectClass SXMatrix where
  castPrintableObject (SXMatrix x) = PrintableObject (castForeignPtr x)


-- helper instances
instance Marshal SXMatrix (Ptr SXMatrix') where
  marshal (SXMatrix x) = return (unsafeForeignPtrToPtr x)
  marshalFree (SXMatrix x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__Matrix_CasADi__SX_" 
  c_delete_CasADi__Matrix_CasADi__SX_ :: FunPtr (Ptr SXMatrix' -> IO ())
instance WrapReturn (Ptr SXMatrix') SXMatrix where
  wrapReturn = (fmap SXMatrix) . (newForeignPtr c_delete_CasADi__Matrix_CasADi__SX_)


-- raw decl
data IOScheme'
-- data decl
{-|
>Class with mapping between names and indices.
>
>Joris Gillis
>
>C++ includes: io_scheme.hpp 
-}
newtype IOScheme = IOScheme (ForeignPtr IOScheme')
-- typeclass decl
class IOSchemeClass a where
  castIOScheme :: a -> IOScheme
instance IOSchemeClass IOScheme where
  castIOScheme = id

-- baseclass instances
instance SharedObjectClass IOScheme where
  castSharedObject (IOScheme x) = SharedObject (castForeignPtr x)

instance PrintableObjectClass IOScheme where
  castPrintableObject (IOScheme x) = PrintableObject (castForeignPtr x)


-- helper instances
instance Marshal IOScheme (Ptr IOScheme') where
  marshal (IOScheme x) = return (unsafeForeignPtrToPtr x)
  marshalFree (IOScheme x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__IOScheme" 
  c_delete_CasADi__IOScheme :: FunPtr (Ptr IOScheme' -> IO ())
instance WrapReturn (Ptr IOScheme') IOScheme where
  wrapReturn = (fmap IOScheme) . (newForeignPtr c_delete_CasADi__IOScheme)


-- raw decl
data DMatrix'
-- data decl
{-|
>General sparse matrix class General sparse matrix class that is designed
>with the idea that "everything is a matrix", that is, also scalars and
>vectors.  This philosophy makes it easy to use and to interface in
>particularily with Python and Matlab/Octave. .
>
>The syntax tries to stay as close as possible to the ublas syntax when it
>comes to vector/matrix operations.
>
>Index starts with 0.  Index flatten happens as follows: (i,j) -> k =
>j+i*size2()  Vectors are considered to be column vectors.
>
>The storage format is a (modified) compressed row storage (CRS) format. This
>way, a vector element can always be accessed in constant time.
>
>Matrix<T> is polymorphic with a std::vector<T> that contain all non-
>identical-zero elements.  The sparsity can be accessed with CRSSparsity&
>sparsity()
>
>Joel Andersson
>
>C++ includes: matrix.hpp 
-}
newtype DMatrix = DMatrix (ForeignPtr DMatrix')
-- typeclass decl
class DMatrixClass a where
  castDMatrix :: a -> DMatrix
instance DMatrixClass DMatrix where
  castDMatrix = id

-- baseclass instances
instance PrintableObjectClass DMatrix where
  castPrintableObject (DMatrix x) = PrintableObject (castForeignPtr x)


-- helper instances
instance Marshal DMatrix (Ptr DMatrix') where
  marshal (DMatrix x) = return (unsafeForeignPtrToPtr x)
  marshalFree (DMatrix x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__Matrix_double_" 
  c_delete_CasADi__Matrix_double_ :: FunPtr (Ptr DMatrix' -> IO ())
instance WrapReturn (Ptr DMatrix') DMatrix where
  wrapReturn = (fmap DMatrix) . (newForeignPtr c_delete_CasADi__Matrix_double_)


-- raw decl
data MX'
-- data decl
{-|
>MX - Matrix expression The MX class is used to build up trees made up from
>MXNodes. It is a more general graph representation than the scalar
>expression, SX, and much less efficient for small objects. On the other
>hand, the class allows much more general operations than does SX, in
>particular matrix valued operations and calls to arbitrary differentiable
>functions.
>
>The MX class is designed to have identical syntax with the Matrix<> template
>class, and uses Matrix<double> as its internal representation of the values
>at a node. By keeping the syntaxes identical, it is possible to switch from
>one class to the other, as well as inlining MX functions to SX functions.
>
>Note that an operation is always "lazy", making a matrix multiplication
>will create a matrix multiplication node, not perform the actual
>multiplication.
>
>Joel Andersson
>
>C++ includes: mx.hpp 
-}
newtype MX = MX (ForeignPtr MX')
-- typeclass decl
class MXClass a where
  castMX :: a -> MX
instance MXClass MX where
  castMX = id

-- baseclass instances
instance SharedObjectClass MX where
  castSharedObject (MX x) = SharedObject (castForeignPtr x)

instance PrintableObjectClass MX where
  castPrintableObject (MX x) = PrintableObject (castForeignPtr x)


-- helper instances
instance Marshal MX (Ptr MX') where
  marshal (MX x) = return (unsafeForeignPtrToPtr x)
  marshalFree (MX x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__MX" 
  c_delete_CasADi__MX :: FunPtr (Ptr MX' -> IO ())
instance WrapReturn (Ptr MX') MX where
  wrapReturn = (fmap MX) . (newForeignPtr c_delete_CasADi__MX)


-- raw decl
data CasadiOptions'
-- data decl
{-|
>Collects global CasADi options.
>
>Note to developers: use sparingly. Global options are - in general - a
>rather bad idea
>
>this class must never be instantiated. Access its static members directly
>
>Joris Gillis
>
>C++ includes: casadi_options.hpp 
-}
newtype CasadiOptions = CasadiOptions (ForeignPtr CasadiOptions')
-- typeclass decl
class CasadiOptionsClass a where
  castCasadiOptions :: a -> CasadiOptions
instance CasadiOptionsClass CasadiOptions where
  castCasadiOptions = id

-- baseclass instances

-- helper instances
instance Marshal CasadiOptions (Ptr CasadiOptions') where
  marshal (CasadiOptions x) = return (unsafeForeignPtrToPtr x)
  marshalFree (CasadiOptions x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__CasadiOptions" 
  c_delete_CasADi__CasadiOptions :: FunPtr (Ptr CasadiOptions' -> IO ())
instance WrapReturn (Ptr CasadiOptions') CasadiOptions where
  wrapReturn = (fmap CasadiOptions) . (newForeignPtr c_delete_CasADi__CasadiOptions)


-- raw decl
data Callback'
-- data decl
{-|
>Callback.
>
>In C++, supply a CallbackCPtr function pointer
>
>In python, supply a callable, annotated with pycallback decorator
>
>C++ includes: functor.hpp 
-}
newtype Callback = Callback (ForeignPtr Callback')
-- typeclass decl
class CallbackClass a where
  castCallback :: a -> Callback
instance CallbackClass Callback where
  castCallback = id

-- baseclass instances
instance SharedObjectClass Callback where
  castSharedObject (Callback x) = SharedObject (castForeignPtr x)

instance FunctorClass Callback where
  castFunctor (Callback x) = Functor (castForeignPtr x)

instance PrintableObjectClass Callback where
  castPrintableObject (Callback x) = PrintableObject (castForeignPtr x)


-- helper instances
instance Marshal Callback (Ptr Callback') where
  marshal (Callback x) = return (unsafeForeignPtrToPtr x)
  marshalFree (Callback x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__Callback" 
  c_delete_CasADi__Callback :: FunPtr (Ptr Callback' -> IO ())
instance WrapReturn (Ptr Callback') Callback where
  wrapReturn = (fmap Callback) . (newForeignPtr c_delete_CasADi__Callback)


-- raw decl
data CustomEvaluate'
-- data decl
{-|
>CustomEvaluate.
>
>In C++, supply a CustomEvaluateCPtr function pointer
>
>In python, supply a callable, annotated with pyevaluate decorator
>
>C++ includes: functor.hpp 
-}
newtype CustomEvaluate = CustomEvaluate (ForeignPtr CustomEvaluate')
-- typeclass decl
class CustomEvaluateClass a where
  castCustomEvaluate :: a -> CustomEvaluate
instance CustomEvaluateClass CustomEvaluate where
  castCustomEvaluate = id

-- baseclass instances
instance SharedObjectClass CustomEvaluate where
  castSharedObject (CustomEvaluate x) = SharedObject (castForeignPtr x)

instance FunctorClass CustomEvaluate where
  castFunctor (CustomEvaluate x) = Functor (castForeignPtr x)

instance PrintableObjectClass CustomEvaluate where
  castPrintableObject (CustomEvaluate x) = PrintableObject (castForeignPtr x)


-- helper instances
instance Marshal CustomEvaluate (Ptr CustomEvaluate') where
  marshal (CustomEvaluate x) = return (unsafeForeignPtrToPtr x)
  marshalFree (CustomEvaluate x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__CustomEvaluate" 
  c_delete_CasADi__CustomEvaluate :: FunPtr (Ptr CustomEvaluate' -> IO ())
instance WrapReturn (Ptr CustomEvaluate') CustomEvaluate where
  wrapReturn = (fmap CustomEvaluate) . (newForeignPtr c_delete_CasADi__CustomEvaluate)


-- raw decl
data ExternalFunction'
-- data decl
{-|
>Interface for a function that is not implemented by CasADi symbolics.
>
>Joel Andersson
>
>>List of available options
>+--------------+--------------+--------------+--------------+--------------+
>|      Id      |     Type     |   Default    | Description  |   Used in    |
>+==============+==============+==============+==============+==============+
>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::FXIn |
>|              |              |              | calculate    | ternal       |
>|              |              |              | the          |              |
>|              |              |              | Jacobians.   |              |
>|              |              |              | (forward:    |              |
>|              |              |              | only forward |              |
>|              |              |              | mode|reverse |              |
>|              |              |              | : only       |              |
>|              |              |              | adjoint mode |              |
>|              |              |              | |automatic:  |              |
>|              |              |              | a heuristic  |              |
>|              |              |              | decides      |              |
>|              |              |              | which is     |              |
>|              |              |              | more         |              |
>|              |              |              | appropriate) |              |
>+--------------+--------------+--------------+--------------+--------------+
>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::FXIn |
>|              |              |              | indicate     | ternal       |
>|              |              |              | wether       |              |
>|              |              |              | statistics   |              |
>|              |              |              | must be      |              |
>|              |              |              | gathered     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
>|              |              |              | exceptions   | ternal       |
>|              |              |              | when the     |              |
>|              |              |              | numerical    |              |
>|              |              |              | values of    |              |
>|              |              |              | the inputs   |              |
>|              |              |              | don't make   |              |
>|              |              |              | sense        |              |
>+--------------+--------------+--------------+--------------+--------------+
>| jacobian_gen | OT_JACOBIANG | GenericType( | Function     | CasADi::FXIn |
>| erator       | ENERATOR     | )            | that returns | ternal       |
>|              |              |              | a Jacobian   |              |
>|              |              |              | function     |              |
>|              |              |              | given a set  |              |
>|              |              |              | of desired   |              |
>|              |              |              | Jacobian     |              |
>|              |              |              | blocks,      |              |
>|              |              |              | overrides    |              |
>|              |              |              | internal     |              |
>|              |              |              | routines.    |              |
>|              |              |              | Check docume |              |
>|              |              |              | ntation of J |              |
>|              |              |              | acobianGener |              |
>|              |              |              | ator .       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
>| f_adj_dir    |              | m_dir        | r_of_adj_dir | ternal       |
>|              |              |              | " to grow    |              |
>|              |              |              | until it     |              |
>|              |              |              | reaches this |              |
>|              |              |              | number       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
>| f_fwd_dir    |              | m_dir        | r_of_fwd_dir | ternal       |
>|              |              |              | " to grow    |              |
>|              |              |              | until it     |              |
>|              |              |              | reaches this |              |
>|              |              |              | number       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::FXIn |
>|              | TOR          | )            | be activated | ternal       |
>|              |              |              | (inputs|outp |              |
>|              |              |              | uts)         |              |
>+--------------+--------------+--------------+--------------+--------------+
>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
>|              |              | red_object"  | object       | onsFunctiona |
>|              |              |              |              | lityNode     |
>+--------------+--------------+--------------+--------------+--------------+
>| number_of_ad | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
>| j_dir        |              |              | adjoint      | ternal       |
>|              |              |              | derivatives  |              |
>|              |              |              | to be        |              |
>|              |              |              | calculated s |              |
>|              |              |              | imultanously |              |
>+--------------+--------------+--------------+--------------+--------------+
>| number_of_fw | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
>| d_dir        |              |              | forward      | ternal       |
>|              |              |              | derivatives  |              |
>|              |              |              | to be        |              |
>|              |              |              | calculated s |              |
>|              |              |              | imultanously |              |
>+--------------+--------------+--------------+--------------+--------------+
>| numeric_hess | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
>| ian          |              |              | Hessians     | ternal       |
>|              |              |              | numerically  |              |
>|              |              |              | (using       |              |
>|              |              |              | directional  |              |
>|              |              |              | derivatives) |              |
>|              |              |              | rather than  |              |
>|              |              |              | with the     |              |
>|              |              |              | built-in     |              |
>|              |              |              | method       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| numeric_jaco | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
>| bian         |              |              | Jacobians    | ternal       |
>|              |              |              | numerically  |              |
>|              |              |              | (using       |              |
>|              |              |              | directional  |              |
>|              |              |              | derivatives) |              |
>|              |              |              | rather than  |              |
>|              |              |              | with the     |              |
>|              |              |              | built-in     |              |
>|              |              |              | method       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
>| heck         |              |              | exceptions   | ternal       |
>|              |              |              | when NaN or  |              |
>|              |              |              | Inf appears  |              |
>|              |              |              | during       |              |
>|              |              |              | evaluation   |              |
>+--------------+--------------+--------------+--------------+--------------+
>| sparse       | OT_BOOLEAN   | true         | function is  | CasADi::FXIn |
>|              |              |              | sparse       | ternal       |
>+--------------+--------------+--------------+--------------+--------------+
>| sparsity_gen | OT_SPARSITYG | GenericType( | Function     | CasADi::FXIn |
>| erator       | ENERATOR     | )            | that         | ternal       |
>|              |              |              | provides     |              |
>|              |              |              | sparsity for |              |
>|              |              |              | a given      |              |
>|              |              |              | input output |              |
>|              |              |              | block,       |              |
>|              |              |              | overrides    |              |
>|              |              |              | internal     |              |
>|              |              |              | routines.    |              |
>|              |              |              | Check docume |              |
>|              |              |              | ntation of S |              |
>|              |              |              | parsityGener |              |
>|              |              |              | ator .       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| store_jacobi | OT_BOOLEAN   | false        | keep         | CasADi::FXIn |
>| ans          |              |              | references   | ternal       |
>|              |              |              | to generated |              |
>|              |              |              | Jacobians in |              |
>|              |              |              | order to     |              |
>|              |              |              | avoid        |              |
>|              |              |              | generating   |              |
>|              |              |              | identical    |              |
>|              |              |              | Jacobians    |              |
>|              |              |              | multiple     |              |
>|              |              |              | times        |              |
>+--------------+--------------+--------------+--------------+--------------+
>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::FXIn |
>|              |              | )            | defined      | ternal       |
>|              |              |              | field that   |              |
>|              |              |              | can be used  |              |
>|              |              |              | to identify  |              |
>|              |              |              | the function |              |
>|              |              |              | or pass      |              |
>|              |              |              | additional   |              |
>|              |              |              | information  |              |
>+--------------+--------------+--------------+--------------+--------------+
>| verbose      | OT_BOOLEAN   | false        | verbose      | CasADi::FXIn |
>|              |              |              | evaluation   | ternal       |
>|              |              |              | for          |              |
>|              |              |              | debugging    |              |
>+--------------+--------------+--------------+--------------+--------------+
>
>Diagrams
>
>C++ includes: external_function.hpp 
-}
newtype ExternalFunction = ExternalFunction (ForeignPtr ExternalFunction')
-- typeclass decl
class ExternalFunctionClass a where
  castExternalFunction :: a -> ExternalFunction
instance ExternalFunctionClass ExternalFunction where
  castExternalFunction = id

-- baseclass instances
instance SharedObjectClass ExternalFunction where
  castSharedObject (ExternalFunction x) = SharedObject (castForeignPtr x)

instance PrintableObjectClass ExternalFunction where
  castPrintableObject (ExternalFunction x) = PrintableObject (castForeignPtr x)

instance IOInterfaceFXClass ExternalFunction where
  castIOInterfaceFX (ExternalFunction x) = IOInterfaceFX (castForeignPtr x)

instance OptionsFunctionalityClass ExternalFunction where
  castOptionsFunctionality (ExternalFunction x) = OptionsFunctionality (castForeignPtr x)

instance FXClass ExternalFunction where
  castFX (ExternalFunction x) = FX (castForeignPtr x)


-- helper instances
instance Marshal ExternalFunction (Ptr ExternalFunction') where
  marshal (ExternalFunction x) = return (unsafeForeignPtrToPtr x)
  marshalFree (ExternalFunction x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__ExternalFunction" 
  c_delete_CasADi__ExternalFunction :: FunPtr (Ptr ExternalFunction' -> IO ())
instance WrapReturn (Ptr ExternalFunction') ExternalFunction where
  wrapReturn = (fmap ExternalFunction) . (newForeignPtr c_delete_CasADi__ExternalFunction)


-- raw decl
data CSparse'
-- data decl
{-|
>LinearSolver with CSparse Interface.
>
>Solves the linear system X*A = B or X*A^T = B for X with A square and non-
>singular
>
>If A is structurally singular, an error will be thrown during init. If A is
>numerically singular, the prepare step will fail.
>
>Note: the transposed form is equivalent to A X^T = B^T which is the same as
>A x = b with x = X^T, b = B^T
>
>CSparse is an CasADi::FX mapping from 2 inputs [ A (matrix),b (vector)] to
>one output [x (vector)].
>
>The usual procedure to use CSparse is:  init()
>
>set the first input (A)
>
>prepare()
>
>set the second input (b)
>
>solve()
>
>Repeat steps 4 and 5 to work with other b vectors.
>
>The method evaluate() combines the prepare() and solve() step and is
>therefore more expensive if A is invariant.
>
>>Input scheme: CasADi::LinsolInput (LINSOL_NUM_IN = 4) [linsolIn]
>+-----------+-------+------------------------------------------------+
>| Full name | Short |                  Description                   |
>+===========+=======+================================================+
>| LINSOL_A  | A     | The square matrix A: sparse, (n x n). .        |
>+-----------+-------+------------------------------------------------+
>| LINSOL_B  | B     | The right-hand-side matrix b: dense, (m x n) . |
>+-----------+-------+------------------------------------------------+
>
>>Output scheme: CasADi::LinsolOutput (LINSOL_NUM_OUT = 2) [linsolOut]
>+-----------+-------+----------------------------------------------+
>| Full name | Short |                 Description                  |
>+===========+=======+==============================================+
>| LINSOL_X  | X     | Solution to the linear system of equations . |
>+-----------+-------+----------------------------------------------+
>
>>List of available options
>+--------------+--------------+--------------+--------------+--------------+
>|      Id      |     Type     |   Default    | Description  |   Used in    |
>+==============+==============+==============+==============+==============+
>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::FXIn |
>|              |              |              | calculate    | ternal       |
>|              |              |              | the          |              |
>|              |              |              | Jacobians.   |              |
>|              |              |              | (forward:    |              |
>|              |              |              | only forward |              |
>|              |              |              | mode|reverse |              |
>|              |              |              | : only       |              |
>|              |              |              | adjoint mode |              |
>|              |              |              | |automatic:  |              |
>|              |              |              | a heuristic  |              |
>|              |              |              | decides      |              |
>|              |              |              | which is     |              |
>|              |              |              | more         |              |
>|              |              |              | appropriate) |              |
>+--------------+--------------+--------------+--------------+--------------+
>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::FXIn |
>|              |              |              | indicate     | ternal       |
>|              |              |              | wether       |              |
>|              |              |              | statistics   |              |
>|              |              |              | must be      |              |
>|              |              |              | gathered     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
>|              |              |              | exceptions   | ternal       |
>|              |              |              | when the     |              |
>|              |              |              | numerical    |              |
>|              |              |              | values of    |              |
>|              |              |              | the inputs   |              |
>|              |              |              | don't make   |              |
>|              |              |              | sense        |              |
>+--------------+--------------+--------------+--------------+--------------+
>| jacobian_gen | OT_JACOBIANG | GenericType( | Function     | CasADi::FXIn |
>| erator       | ENERATOR     | )            | that returns | ternal       |
>|              |              |              | a Jacobian   |              |
>|              |              |              | function     |              |
>|              |              |              | given a set  |              |
>|              |              |              | of desired   |              |
>|              |              |              | Jacobian     |              |
>|              |              |              | blocks,      |              |
>|              |              |              | overrides    |              |
>|              |              |              | internal     |              |
>|              |              |              | routines.    |              |
>|              |              |              | Check docume |              |
>|              |              |              | ntation of J |              |
>|              |              |              | acobianGener |              |
>|              |              |              | ator .       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
>| f_adj_dir    |              | m_dir        | r_of_adj_dir | ternal       |
>|              |              |              | " to grow    |              |
>|              |              |              | until it     |              |
>|              |              |              | reaches this |              |
>|              |              |              | number       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
>| f_fwd_dir    |              | m_dir        | r_of_fwd_dir | ternal       |
>|              |              |              | " to grow    |              |
>|              |              |              | until it     |              |
>|              |              |              | reaches this |              |
>|              |              |              | number       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::FXIn |
>|              | TOR          | )            | be activated | ternal       |
>|              |              |              | (inputs|outp |              |
>|              |              |              | uts)         |              |
>+--------------+--------------+--------------+--------------+--------------+
>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
>|              |              | red_object"  | object       | onsFunctiona |
>|              |              |              |              | lityNode     |
>+--------------+--------------+--------------+--------------+--------------+
>| number_of_ad | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
>| j_dir        |              |              | adjoint      | ternal       |
>|              |              |              | derivatives  |              |
>|              |              |              | to be        |              |
>|              |              |              | calculated s |              |
>|              |              |              | imultanously |              |
>+--------------+--------------+--------------+--------------+--------------+
>| number_of_fw | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
>| d_dir        |              |              | forward      | ternal       |
>|              |              |              | derivatives  |              |
>|              |              |              | to be        |              |
>|              |              |              | calculated s |              |
>|              |              |              | imultanously |              |
>+--------------+--------------+--------------+--------------+--------------+
>| numeric_hess | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
>| ian          |              |              | Hessians     | ternal       |
>|              |              |              | numerically  |              |
>|              |              |              | (using       |              |
>|              |              |              | directional  |              |
>|              |              |              | derivatives) |              |
>|              |              |              | rather than  |              |
>|              |              |              | with the     |              |
>|              |              |              | built-in     |              |
>|              |              |              | method       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| numeric_jaco | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
>| bian         |              |              | Jacobians    | ternal       |
>|              |              |              | numerically  |              |
>|              |              |              | (using       |              |
>|              |              |              | directional  |              |
>|              |              |              | derivatives) |              |
>|              |              |              | rather than  |              |
>|              |              |              | with the     |              |
>|              |              |              | built-in     |              |
>|              |              |              | method       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
>| heck         |              |              | exceptions   | ternal       |
>|              |              |              | when NaN or  |              |
>|              |              |              | Inf appears  |              |
>|              |              |              | during       |              |
>|              |              |              | evaluation   |              |
>+--------------+--------------+--------------+--------------+--------------+
>| sparse       | OT_BOOLEAN   | true         | function is  | CasADi::FXIn |
>|              |              |              | sparse       | ternal       |
>+--------------+--------------+--------------+--------------+--------------+
>| sparsity_gen | OT_SPARSITYG | GenericType( | Function     | CasADi::FXIn |
>| erator       | ENERATOR     | )            | that         | ternal       |
>|              |              |              | provides     |              |
>|              |              |              | sparsity for |              |
>|              |              |              | a given      |              |
>|              |              |              | input output |              |
>|              |              |              | block,       |              |
>|              |              |              | overrides    |              |
>|              |              |              | internal     |              |
>|              |              |              | routines.    |              |
>|              |              |              | Check docume |              |
>|              |              |              | ntation of S |              |
>|              |              |              | parsityGener |              |
>|              |              |              | ator .       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| store_jacobi | OT_BOOLEAN   | false        | keep         | CasADi::FXIn |
>| ans          |              |              | references   | ternal       |
>|              |              |              | to generated |              |
>|              |              |              | Jacobians in |              |
>|              |              |              | order to     |              |
>|              |              |              | avoid        |              |
>|              |              |              | generating   |              |
>|              |              |              | identical    |              |
>|              |              |              | Jacobians    |              |
>|              |              |              | multiple     |              |
>|              |              |              | times        |              |
>+--------------+--------------+--------------+--------------+--------------+
>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::FXIn |
>|              |              | )            | defined      | ternal       |
>|              |              |              | field that   |              |
>|              |              |              | can be used  |              |
>|              |              |              | to identify  |              |
>|              |              |              | the function |              |
>|              |              |              | or pass      |              |
>|              |              |              | additional   |              |
>|              |              |              | information  |              |
>+--------------+--------------+--------------+--------------+--------------+
>| verbose      | OT_BOOLEAN   | false        | verbose      | CasADi::FXIn |
>|              |              |              | evaluation   | ternal       |
>|              |              |              | for          |              |
>|              |              |              | debugging    |              |
>+--------------+--------------+--------------+--------------+--------------+
>
>Diagrams
>
>C++ includes: csparse.hpp 
-}
newtype CSparse = CSparse (ForeignPtr CSparse')
-- typeclass decl
class CSparseClass a where
  castCSparse :: a -> CSparse
instance CSparseClass CSparse where
  castCSparse = id

-- baseclass instances
instance SharedObjectClass CSparse where
  castSharedObject (CSparse x) = SharedObject (castForeignPtr x)

instance PrintableObjectClass CSparse where
  castPrintableObject (CSparse x) = PrintableObject (castForeignPtr x)

instance IOInterfaceFXClass CSparse where
  castIOInterfaceFX (CSparse x) = IOInterfaceFX (castForeignPtr x)

instance OptionsFunctionalityClass CSparse where
  castOptionsFunctionality (CSparse x) = OptionsFunctionality (castForeignPtr x)

instance FXClass CSparse where
  castFX (CSparse x) = FX (castForeignPtr x)


-- helper instances
instance Marshal CSparse (Ptr CSparse') where
  marshal (CSparse x) = return (unsafeForeignPtrToPtr x)
  marshalFree (CSparse x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__CSparse" 
  c_delete_CasADi__CSparse :: FunPtr (Ptr CSparse' -> IO ())
instance WrapReturn (Ptr CSparse') CSparse where
  wrapReturn = (fmap CSparse) . (newForeignPtr c_delete_CasADi__CSparse)


-- raw decl
data SX'
-- data decl
{-|
>The basic scalar symbolic class of CasADi.
>
>Joel Andersson
>
>C++ includes: sx.hpp 
-}
newtype SX = SX (ForeignPtr SX')
-- typeclass decl
class SXClass a where
  castSX :: a -> SX
instance SXClass SX where
  castSX = id

-- baseclass instances

-- helper instances
instance Marshal SX (Ptr SX') where
  marshal (SX x) = return (unsafeForeignPtrToPtr x)
  marshalFree (SX x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__SX" 
  c_delete_CasADi__SX :: FunPtr (Ptr SX' -> IO ())
instance WrapReturn (Ptr SX') SX where
  wrapReturn = (fmap SX) . (newForeignPtr c_delete_CasADi__SX)


-- raw decl
data CasadiMeta'
-- data decl
{-|
>Collects global CasADi meta information.
>
>Joris Gillis
>
>C++ includes: casadi_meta.hpp 
-}
newtype CasadiMeta = CasadiMeta (ForeignPtr CasadiMeta')
-- typeclass decl
class CasadiMetaClass a where
  castCasadiMeta :: a -> CasadiMeta
instance CasadiMetaClass CasadiMeta where
  castCasadiMeta = id

-- baseclass instances

-- helper instances
instance Marshal CasadiMeta (Ptr CasadiMeta') where
  marshal (CasadiMeta x) = return (unsafeForeignPtrToPtr x)
  marshalFree (CasadiMeta x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__CasadiMeta" 
  c_delete_CasADi__CasadiMeta :: FunPtr (Ptr CasadiMeta' -> IO ())
instance WrapReturn (Ptr CasadiMeta') CasadiMeta where
  wrapReturn = (fmap CasadiMeta) . (newForeignPtr c_delete_CasADi__CasadiMeta)


-- raw decl
data Functor'
-- data decl
{-|
>Internal class for Functor.
>
>Joris Gillis
>
>C++ includes: functor.hpp 
-}
newtype Functor = Functor (ForeignPtr Functor')
-- typeclass decl
class FunctorClass a where
  castFunctor :: a -> Functor
instance FunctorClass Functor where
  castFunctor = id

-- baseclass instances
instance SharedObjectClass Functor where
  castSharedObject (Functor x) = SharedObject (castForeignPtr x)

instance PrintableObjectClass Functor where
  castPrintableObject (Functor x) = PrintableObject (castForeignPtr x)


-- helper instances
instance Marshal Functor (Ptr Functor') where
  marshal (Functor x) = return (unsafeForeignPtrToPtr x)
  marshalFree (Functor x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__Functor" 
  c_delete_CasADi__Functor :: FunPtr (Ptr Functor' -> IO ())
instance WrapReturn (Ptr Functor') Functor where
  wrapReturn = (fmap Functor) . (newForeignPtr c_delete_CasADi__Functor)


-- raw decl
data CustomFunction'
-- data decl
{-|
>Interface to a custom function.
>
>Note: max_number_of_fwd_dir and max_number_of_adj_dir will be default zero
>
>Joel Andersson
>
>>List of available options
>+--------------+--------------+--------------+--------------+--------------+
>|      Id      |     Type     |   Default    | Description  |   Used in    |
>+==============+==============+==============+==============+==============+
>| ad_mode      | OT_STRING    | "automatic"  | How to       | CasADi::FXIn |
>|              |              |              | calculate    | ternal       |
>|              |              |              | the          |              |
>|              |              |              | Jacobians.   |              |
>|              |              |              | (forward:    |              |
>|              |              |              | only forward |              |
>|              |              |              | mode|reverse |              |
>|              |              |              | : only       |              |
>|              |              |              | adjoint mode |              |
>|              |              |              | |automatic:  |              |
>|              |              |              | a heuristic  |              |
>|              |              |              | decides      |              |
>|              |              |              | which is     |              |
>|              |              |              | more         |              |
>|              |              |              | appropriate) |              |
>+--------------+--------------+--------------+--------------+--------------+
>| gather_stats | OT_BOOLEAN   | false        | Flag to      | CasADi::FXIn |
>|              |              |              | indicate     | ternal       |
>|              |              |              | wether       |              |
>|              |              |              | statistics   |              |
>|              |              |              | must be      |              |
>|              |              |              | gathered     |              |
>+--------------+--------------+--------------+--------------+--------------+
>| inputs_check | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
>|              |              |              | exceptions   | ternal       |
>|              |              |              | when the     |              |
>|              |              |              | numerical    |              |
>|              |              |              | values of    |              |
>|              |              |              | the inputs   |              |
>|              |              |              | don't make   |              |
>|              |              |              | sense        |              |
>+--------------+--------------+--------------+--------------+--------------+
>| jacobian_gen | OT_JACOBIANG | GenericType( | Function     | CasADi::FXIn |
>| erator       | ENERATOR     | )            | that returns | ternal       |
>|              |              |              | a Jacobian   |              |
>|              |              |              | function     |              |
>|              |              |              | given a set  |              |
>|              |              |              | of desired   |              |
>|              |              |              | Jacobian     |              |
>|              |              |              | blocks,      |              |
>|              |              |              | overrides    |              |
>|              |              |              | internal     |              |
>|              |              |              | routines.    |              |
>|              |              |              | Check docume |              |
>|              |              |              | ntation of J |              |
>|              |              |              | acobianGener |              |
>|              |              |              | ator .       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
>| f_adj_dir    |              | m_dir        | r_of_adj_dir | ternal       |
>|              |              |              | " to grow    |              |
>|              |              |              | until it     |              |
>|              |              |              | reaches this |              |
>|              |              |              | number       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| max_number_o | OT_INTEGER   | optimized_nu | Allow "numbe | CasADi::FXIn |
>| f_fwd_dir    |              | m_dir        | r_of_fwd_dir | ternal       |
>|              |              |              | " to grow    |              |
>|              |              |              | until it     |              |
>|              |              |              | reaches this |              |
>|              |              |              | number       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| monitor      | OT_STRINGVEC | GenericType( | Monitors to  | CasADi::FXIn |
>|              | TOR          | )            | be activated | ternal       |
>|              |              |              | (inputs|outp |              |
>|              |              |              | uts)         |              |
>+--------------+--------------+--------------+--------------+--------------+
>| name         | OT_STRING    | "unnamed_sha | name of the  | CasADi::Opti |
>|              |              | red_object"  | object       | onsFunctiona |
>|              |              |              |              | lityNode     |
>+--------------+--------------+--------------+--------------+--------------+
>| number_of_ad | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
>| j_dir        |              |              | adjoint      | ternal       |
>|              |              |              | derivatives  |              |
>|              |              |              | to be        |              |
>|              |              |              | calculated s |              |
>|              |              |              | imultanously |              |
>+--------------+--------------+--------------+--------------+--------------+
>| number_of_fw | OT_INTEGER   | 1            | number of    | CasADi::FXIn |
>| d_dir        |              |              | forward      | ternal       |
>|              |              |              | derivatives  |              |
>|              |              |              | to be        |              |
>|              |              |              | calculated s |              |
>|              |              |              | imultanously |              |
>+--------------+--------------+--------------+--------------+--------------+
>| numeric_hess | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
>| ian          |              |              | Hessians     | ternal       |
>|              |              |              | numerically  |              |
>|              |              |              | (using       |              |
>|              |              |              | directional  |              |
>|              |              |              | derivatives) |              |
>|              |              |              | rather than  |              |
>|              |              |              | with the     |              |
>|              |              |              | built-in     |              |
>|              |              |              | method       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| numeric_jaco | OT_BOOLEAN   | false        | Calculate    | CasADi::FXIn |
>| bian         |              |              | Jacobians    | ternal       |
>|              |              |              | numerically  |              |
>|              |              |              | (using       |              |
>|              |              |              | directional  |              |
>|              |              |              | derivatives) |              |
>|              |              |              | rather than  |              |
>|              |              |              | with the     |              |
>|              |              |              | built-in     |              |
>|              |              |              | method       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| regularity_c | OT_BOOLEAN   | true         | Throw        | CasADi::FXIn |
>| heck         |              |              | exceptions   | ternal       |
>|              |              |              | when NaN or  |              |
>|              |              |              | Inf appears  |              |
>|              |              |              | during       |              |
>|              |              |              | evaluation   |              |
>+--------------+--------------+--------------+--------------+--------------+
>| sparse       | OT_BOOLEAN   | true         | function is  | CasADi::FXIn |
>|              |              |              | sparse       | ternal       |
>+--------------+--------------+--------------+--------------+--------------+
>| sparsity_gen | OT_SPARSITYG | GenericType( | Function     | CasADi::FXIn |
>| erator       | ENERATOR     | )            | that         | ternal       |
>|              |              |              | provides     |              |
>|              |              |              | sparsity for |              |
>|              |              |              | a given      |              |
>|              |              |              | input output |              |
>|              |              |              | block,       |              |
>|              |              |              | overrides    |              |
>|              |              |              | internal     |              |
>|              |              |              | routines.    |              |
>|              |              |              | Check docume |              |
>|              |              |              | ntation of S |              |
>|              |              |              | parsityGener |              |
>|              |              |              | ator .       |              |
>+--------------+--------------+--------------+--------------+--------------+
>| store_jacobi | OT_BOOLEAN   | false        | keep         | CasADi::FXIn |
>| ans          |              |              | references   | ternal       |
>|              |              |              | to generated |              |
>|              |              |              | Jacobians in |              |
>|              |              |              | order to     |              |
>|              |              |              | avoid        |              |
>|              |              |              | generating   |              |
>|              |              |              | identical    |              |
>|              |              |              | Jacobians    |              |
>|              |              |              | multiple     |              |
>|              |              |              | times        |              |
>+--------------+--------------+--------------+--------------+--------------+
>| user_data    | OT_VOIDPTR   | GenericType( | A user-      | CasADi::FXIn |
>|              |              | )            | defined      | ternal       |
>|              |              |              | field that   |              |
>|              |              |              | can be used  |              |
>|              |              |              | to identify  |              |
>|              |              |              | the function |              |
>|              |              |              | or pass      |              |
>|              |              |              | additional   |              |
>|              |              |              | information  |              |
>+--------------+--------------+--------------+--------------+--------------+
>| verbose      | OT_BOOLEAN   | false        | verbose      | CasADi::FXIn |
>|              |              |              | evaluation   | ternal       |
>|              |              |              | for          |              |
>|              |              |              | debugging    |              |
>+--------------+--------------+--------------+--------------+--------------+
>
>Diagrams
>
>C++ includes: custom_function.hpp 
-}
newtype CustomFunction = CustomFunction (ForeignPtr CustomFunction')
-- typeclass decl
class CustomFunctionClass a where
  castCustomFunction :: a -> CustomFunction
instance CustomFunctionClass CustomFunction where
  castCustomFunction = id

-- baseclass instances
instance SharedObjectClass CustomFunction where
  castSharedObject (CustomFunction x) = SharedObject (castForeignPtr x)

instance PrintableObjectClass CustomFunction where
  castPrintableObject (CustomFunction x) = PrintableObject (castForeignPtr x)

instance IOInterfaceFXClass CustomFunction where
  castIOInterfaceFX (CustomFunction x) = IOInterfaceFX (castForeignPtr x)

instance OptionsFunctionalityClass CustomFunction where
  castOptionsFunctionality (CustomFunction x) = OptionsFunctionality (castForeignPtr x)

instance FXClass CustomFunction where
  castFX (CustomFunction x) = FX (castForeignPtr x)


-- helper instances
instance Marshal CustomFunction (Ptr CustomFunction') where
  marshal (CustomFunction x) = return (unsafeForeignPtrToPtr x)
  marshalFree (CustomFunction x) _ = touchForeignPtr x
foreign import ccall unsafe "&delete_CasADi__CustomFunction" 
  c_delete_CasADi__CustomFunction :: FunPtr (Ptr CustomFunction' -> IO ())
instance WrapReturn (Ptr CustomFunction') CustomFunction where
  wrapReturn = (fmap CustomFunction) . (newForeignPtr c_delete_CasADi__CustomFunction)