/* This file was automatically generated by CasADi.
 *  It consists of: 
 *   1) content generated by CasADi runtime: not copyrighted
 *   2) template code copied from CasADi source: permissively licensed (MIT-0)
 *   3) user code: owned by the user
 *
 */
#ifdef __cplusplus
extern "C" {
#endif

/* How to prefix internal symbols */
#ifdef CASADI_CODEGEN_PREFIX
  #define CASADI_NAMESPACE_CONCAT(NS, ID) _CASADI_NAMESPACE_CONCAT(NS, ID)
  #define _CASADI_NAMESPACE_CONCAT(NS, ID) NS ## ID
  #define CASADI_PREFIX(ID) CASADI_NAMESPACE_CONCAT(CODEGEN_PREFIX, ID)
#else
  #define CASADI_PREFIX(ID) rosenbrock_functions_test_ ## ID
#endif

#include <math.h>

#ifndef casadi_real
#define casadi_real double
#endif

#ifndef casadi_int
#define casadi_int long long int
#endif

/* Add prefix to internal symbols */
#define casadi_f0 CASADI_PREFIX(f0)
#define casadi_f1 CASADI_PREFIX(f1)
#define casadi_f10 CASADI_PREFIX(f10)
#define casadi_f2 CASADI_PREFIX(f2)
#define casadi_f3 CASADI_PREFIX(f3)
#define casadi_f4 CASADI_PREFIX(f4)
#define casadi_f5 CASADI_PREFIX(f5)
#define casadi_f6 CASADI_PREFIX(f6)
#define casadi_f7 CASADI_PREFIX(f7)
#define casadi_f8 CASADI_PREFIX(f8)
#define casadi_f9 CASADI_PREFIX(f9)
#define casadi_fmax CASADI_PREFIX(fmax)
#define casadi_fmin CASADI_PREFIX(fmin)
#define casadi_s0 CASADI_PREFIX(s0)
#define casadi_s1 CASADI_PREFIX(s1)
#define casadi_s2 CASADI_PREFIX(s2)
#define casadi_s3 CASADI_PREFIX(s3)
#define casadi_sq CASADI_PREFIX(sq)

/* Symbol visibility in DLLs */
#ifndef CASADI_SYMBOL_EXPORT
  #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
    #if defined(STATIC_LINKED)
      #define CASADI_SYMBOL_EXPORT
    #else
      #define CASADI_SYMBOL_EXPORT __declspec(dllexport)
    #endif
  #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
    #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default")))
  #else
    #define CASADI_SYMBOL_EXPORT
  #endif
#endif

casadi_real casadi_sq(casadi_real x) { return x*x;}

casadi_real casadi_fmin(casadi_real x, casadi_real y) {
/* Pre-c99 compatibility */
#if __STDC_VERSION__ < 199901L
  return x<y ? x : y;
#else
  return fmin(x, y);
#endif
}

casadi_real casadi_fmax(casadi_real x, casadi_real y) {
/* Pre-c99 compatibility */
#if __STDC_VERSION__ < 199901L
  return x>y ? x : y;
#else
  return fmax(x, y);
#endif
}

static const casadi_int casadi_s0[6] = {2, 1, 0, 2, 0, 1};
static const casadi_int casadi_s1[5] = {1, 1, 0, 1, 0};
static const casadi_int casadi_s2[7] = {1, 2, 0, 1, 2, 0, 0};
static const casadi_int casadi_s3[9] = {2, 2, 0, 2, 4, 0, 1, 0, 1};

/* f:(i0[2],i1)->(f) */
static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) {
  casadi_real a0, a1, a2;
  a0=1.;
  a1=arg[0]? arg[0][0] : 0;
  a0=(a0-a1);
  a0=casadi_sq(a0);
  a2=arg[0]? arg[0][1] : 0;
  a1=casadi_sq(a1);
  a2=(a2-a1);
  a2=casadi_sq(a2);
  a0=(a0+a2);
  if (res[0]!=0) res[0][0]=a0;
  return 0;
}

CASADI_SYMBOL_EXPORT int f(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){
  return casadi_f0(arg, res, iw, w, mem);
}

CASADI_SYMBOL_EXPORT int f_alloc_mem(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT int f_init_mem(int mem) {
  return 0;
}

CASADI_SYMBOL_EXPORT void f_free_mem(int mem) {
}

CASADI_SYMBOL_EXPORT int f_checkout(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT void f_release(int mem) {
}

CASADI_SYMBOL_EXPORT void f_incref(void) {
}

CASADI_SYMBOL_EXPORT void f_decref(void) {
}

CASADI_SYMBOL_EXPORT casadi_int f_n_in(void) { return 2;}

CASADI_SYMBOL_EXPORT casadi_int f_n_out(void) { return 1;}

CASADI_SYMBOL_EXPORT casadi_real f_default_in(casadi_int i) {
  switch (i) {
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* f_name_in(casadi_int i) {
  switch (i) {
    case 0: return "i0";
    case 1: return "i1";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* f_name_out(casadi_int i) {
  switch (i) {
    case 0: return "f";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* f_sparsity_in(casadi_int i) {
  switch (i) {
    case 0: return casadi_s0;
    case 1: return casadi_s1;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* f_sparsity_out(casadi_int i) {
  switch (i) {
    case 0: return casadi_s1;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT int f_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) {
  if (sz_arg) *sz_arg = 2;
  if (sz_res) *sz_res = 1;
  if (sz_iw) *sz_iw = 0;
  if (sz_w) *sz_w = 0;
  return 0;
}

/* f_grad_f:(i0[2],i1)->(f,grad_f[2]) */
static int casadi_f1(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) {
  casadi_real a0, a1, a2, a3, a4;
  a0=1.;
  a1=arg[0]? arg[0][0] : 0;
  a2=(a0-a1);
  a2=casadi_sq(a2);
  a3=arg[0]? arg[0][1] : 0;
  a4=casadi_sq(a1);
  a4=(a3-a4);
  a4=casadi_sq(a4);
  a2=(a2+a4);
  if (res[0]!=0) res[0][0]=a2;
  a2=(a1+a1);
  a4=casadi_sq(a1);
  a3=(a3-a4);
  a3=(a3+a3);
  a2=(a2*a3);
  a0=(a0-a1);
  a0=(a0+a0);
  a2=(a2+a0);
  a2=(-a2);
  if (res[1]!=0) res[1][0]=a2;
  if (res[1]!=0) res[1][1]=a3;
  return 0;
}

CASADI_SYMBOL_EXPORT int f_grad_f(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){
  return casadi_f1(arg, res, iw, w, mem);
}

CASADI_SYMBOL_EXPORT int f_grad_f_alloc_mem(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT int f_grad_f_init_mem(int mem) {
  return 0;
}

CASADI_SYMBOL_EXPORT void f_grad_f_free_mem(int mem) {
}

CASADI_SYMBOL_EXPORT int f_grad_f_checkout(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT void f_grad_f_release(int mem) {
}

CASADI_SYMBOL_EXPORT void f_grad_f_incref(void) {
}

CASADI_SYMBOL_EXPORT void f_grad_f_decref(void) {
}

CASADI_SYMBOL_EXPORT casadi_int f_grad_f_n_in(void) { return 2;}

CASADI_SYMBOL_EXPORT casadi_int f_grad_f_n_out(void) { return 2;}

CASADI_SYMBOL_EXPORT casadi_real f_grad_f_default_in(casadi_int i) {
  switch (i) {
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* f_grad_f_name_in(casadi_int i) {
  switch (i) {
    case 0: return "i0";
    case 1: return "i1";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* f_grad_f_name_out(casadi_int i) {
  switch (i) {
    case 0: return "f";
    case 1: return "grad_f";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* f_grad_f_sparsity_in(casadi_int i) {
  switch (i) {
    case 0: return casadi_s0;
    case 1: return casadi_s1;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* f_grad_f_sparsity_out(casadi_int i) {
  switch (i) {
    case 0: return casadi_s1;
    case 1: return casadi_s0;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT int f_grad_f_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) {
  if (sz_arg) *sz_arg = 2;
  if (sz_res) *sz_res = 2;
  if (sz_iw) *sz_iw = 0;
  if (sz_w) *sz_w = 0;
  return 0;
}

/* g:(i0[2],i1)->(g) */
static int casadi_f2(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) {
  casadi_real a0, a1, a2;
  a0=arg[0]? arg[0][0] : 0;
  a0=casadi_sq(a0);
  a1=arg[1]? arg[1][0] : 0;
  a2=arg[0]? arg[0][1] : 0;
  a2=casadi_sq(a2);
  a1=(a1*a2);
  a0=(a0+a1);
  if (res[0]!=0) res[0][0]=a0;
  return 0;
}

CASADI_SYMBOL_EXPORT int g(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){
  return casadi_f2(arg, res, iw, w, mem);
}

CASADI_SYMBOL_EXPORT int g_alloc_mem(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT int g_init_mem(int mem) {
  return 0;
}

CASADI_SYMBOL_EXPORT void g_free_mem(int mem) {
}

CASADI_SYMBOL_EXPORT int g_checkout(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT void g_release(int mem) {
}

CASADI_SYMBOL_EXPORT void g_incref(void) {
}

CASADI_SYMBOL_EXPORT void g_decref(void) {
}

CASADI_SYMBOL_EXPORT casadi_int g_n_in(void) { return 2;}

CASADI_SYMBOL_EXPORT casadi_int g_n_out(void) { return 1;}

CASADI_SYMBOL_EXPORT casadi_real g_default_in(casadi_int i) {
  switch (i) {
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* g_name_in(casadi_int i) {
  switch (i) {
    case 0: return "i0";
    case 1: return "i1";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* g_name_out(casadi_int i) {
  switch (i) {
    case 0: return "g";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* g_sparsity_in(casadi_int i) {
  switch (i) {
    case 0: return casadi_s0;
    case 1: return casadi_s1;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* g_sparsity_out(casadi_int i) {
  switch (i) {
    case 0: return casadi_s1;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT int g_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) {
  if (sz_arg) *sz_arg = 2;
  if (sz_res) *sz_res = 1;
  if (sz_iw) *sz_iw = 0;
  if (sz_w) *sz_w = 0;
  return 0;
}

/* psi_grad_psi:(i0[2],i1,y,Σ,zl,zu)->(ψ,grad_ψ[2]) */
static int casadi_f3(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) {
  casadi_real a0, a1, a10, a11, a12, a13, a14, a2, a3, a4, a5, a6, a7, a8, a9;
  a0=1.;
  a1=arg[0]? arg[0][0] : 0;
  a0=(a0-a1);
  a2=casadi_sq(a0);
  a3=arg[0]? arg[0][1] : 0;
  a4=casadi_sq(a1);
  a4=(a3-a4);
  a5=casadi_sq(a4);
  a2=(a2+a5);
  a5=5.0000000000000000e-01;
  a6=arg[3]? arg[3][0] : 0;
  a7=casadi_sq(a1);
  a8=arg[1]? arg[1][0] : 0;
  a9=casadi_sq(a3);
  a9=(a8*a9);
  a7=(a7+a9);
  a9=arg[2]? arg[2][0] : 0;
  a9=(a9/a6);
  a7=(a7+a9);
  a9=arg[4]? arg[4][0] : 0;
  a10=arg[5]? arg[5][0] : 0;
  a11=casadi_fmin(a7,a10);
  a12=casadi_fmax(a9,a11);
  a12=(a7-a12);
  a13=(a6*a12);
  a14=(a13*a12);
  a14=(a5*a14);
  a2=(a2+a14);
  if (res[0]!=0) res[0][0]=a2;
  a2=(a1+a1);
  a13=(a5*a13);
  a5=(a5*a12);
  a6=(a6*a5);
  a13=(a13+a6);
  a6=(a7<=a10);
  a10=(a10<=a7);
  a10=(a6+a10);
  a6=(a6/a10);
  a10=(a9<=a11);
  a11=(a11<=a9);
  a11=(a11+a10);
  a10=(a10/a11);
  a10=(a10*a13);
  a6=(a6*a10);
  a13=(a13-a6);
  a2=(a2*a13);
  a1=(a1+a1);
  a4=(a4+a4);
  a1=(a1*a4);
  a2=(a2-a1);
  a0=(a0+a0);
  a2=(a2-a0);
  if (res[1]!=0) res[1][0]=a2;
  a3=(a3+a3);
  a8=(a8*a13);
  a3=(a3*a8);
  a3=(a3+a4);
  if (res[1]!=0) res[1][1]=a3;
  return 0;
}

CASADI_SYMBOL_EXPORT int psi_grad_psi(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){
  return casadi_f3(arg, res, iw, w, mem);
}

CASADI_SYMBOL_EXPORT int psi_grad_psi_alloc_mem(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT int psi_grad_psi_init_mem(int mem) {
  return 0;
}

CASADI_SYMBOL_EXPORT void psi_grad_psi_free_mem(int mem) {
}

CASADI_SYMBOL_EXPORT int psi_grad_psi_checkout(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT void psi_grad_psi_release(int mem) {
}

CASADI_SYMBOL_EXPORT void psi_grad_psi_incref(void) {
}

CASADI_SYMBOL_EXPORT void psi_grad_psi_decref(void) {
}

CASADI_SYMBOL_EXPORT casadi_int psi_grad_psi_n_in(void) { return 6;}

CASADI_SYMBOL_EXPORT casadi_int psi_grad_psi_n_out(void) { return 2;}

CASADI_SYMBOL_EXPORT casadi_real psi_grad_psi_default_in(casadi_int i) {
  switch (i) {
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* psi_grad_psi_name_in(casadi_int i) {
  switch (i) {
    case 0: return "i0";
    case 1: return "i1";
    case 2: return "y";
    case 3: return "Σ";
    case 4: return "zl";
    case 5: return "zu";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* psi_grad_psi_name_out(casadi_int i) {
  switch (i) {
    case 0: return "ψ";
    case 1: return "grad_ψ";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* psi_grad_psi_sparsity_in(casadi_int i) {
  switch (i) {
    case 0: return casadi_s0;
    case 1: return casadi_s1;
    case 2: return casadi_s1;
    case 3: return casadi_s1;
    case 4: return casadi_s1;
    case 5: return casadi_s1;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* psi_grad_psi_sparsity_out(casadi_int i) {
  switch (i) {
    case 0: return casadi_s1;
    case 1: return casadi_s0;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT int psi_grad_psi_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) {
  if (sz_arg) *sz_arg = 6;
  if (sz_res) *sz_res = 2;
  if (sz_iw) *sz_iw = 0;
  if (sz_w) *sz_w = 0;
  return 0;
}

/* grad_L:(i0[2],i1,y)->(grad_L[2]) */
static int casadi_f4(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) {
  casadi_real a0, a1, a2, a3, a4, a5;
  a0=arg[0]? arg[0][0] : 0;
  a1=(a0+a0);
  a2=arg[2]? arg[2][0] : 0;
  a1=(a1*a2);
  a3=(a0+a0);
  a4=arg[0]? arg[0][1] : 0;
  a5=casadi_sq(a0);
  a5=(a4-a5);
  a5=(a5+a5);
  a3=(a3*a5);
  a1=(a1-a3);
  a3=1.;
  a3=(a3-a0);
  a3=(a3+a3);
  a1=(a1-a3);
  if (res[0]!=0) res[0][0]=a1;
  a4=(a4+a4);
  a1=arg[1]? arg[1][0] : 0;
  a1=(a1*a2);
  a4=(a4*a1);
  a4=(a4+a5);
  if (res[0]!=0) res[0][1]=a4;
  return 0;
}

CASADI_SYMBOL_EXPORT int grad_L(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){
  return casadi_f4(arg, res, iw, w, mem);
}

CASADI_SYMBOL_EXPORT int grad_L_alloc_mem(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT int grad_L_init_mem(int mem) {
  return 0;
}

CASADI_SYMBOL_EXPORT void grad_L_free_mem(int mem) {
}

CASADI_SYMBOL_EXPORT int grad_L_checkout(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT void grad_L_release(int mem) {
}

CASADI_SYMBOL_EXPORT void grad_L_incref(void) {
}

CASADI_SYMBOL_EXPORT void grad_L_decref(void) {
}

CASADI_SYMBOL_EXPORT casadi_int grad_L_n_in(void) { return 3;}

CASADI_SYMBOL_EXPORT casadi_int grad_L_n_out(void) { return 1;}

CASADI_SYMBOL_EXPORT casadi_real grad_L_default_in(casadi_int i) {
  switch (i) {
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* grad_L_name_in(casadi_int i) {
  switch (i) {
    case 0: return "i0";
    case 1: return "i1";
    case 2: return "y";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* grad_L_name_out(casadi_int i) {
  switch (i) {
    case 0: return "grad_L";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* grad_L_sparsity_in(casadi_int i) {
  switch (i) {
    case 0: return casadi_s0;
    case 1: return casadi_s1;
    case 2: return casadi_s1;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* grad_L_sparsity_out(casadi_int i) {
  switch (i) {
    case 0: return casadi_s0;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT int grad_L_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) {
  if (sz_arg) *sz_arg = 3;
  if (sz_res) *sz_res = 1;
  if (sz_iw) *sz_iw = 0;
  if (sz_w) *sz_w = 0;
  return 0;
}

/* psi:(i0[2],i1,y,Σ,zl,zu)->(ψ,ŷ) */
static int casadi_f5(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) {
  casadi_real a0, a1, a2, a3, a4, a5;
  a0=1.;
  a1=arg[0]? arg[0][0] : 0;
  a0=(a0-a1);
  a0=casadi_sq(a0);
  a2=arg[0]? arg[0][1] : 0;
  a3=casadi_sq(a1);
  a3=(a2-a3);
  a3=casadi_sq(a3);
  a0=(a0+a3);
  a3=5.0000000000000000e-01;
  a4=arg[3]? arg[3][0] : 0;
  a1=casadi_sq(a1);
  a5=arg[1]? arg[1][0] : 0;
  a2=casadi_sq(a2);
  a5=(a5*a2);
  a1=(a1+a5);
  a5=arg[2]? arg[2][0] : 0;
  a5=(a5/a4);
  a1=(a1+a5);
  a5=arg[4]? arg[4][0] : 0;
  a2=arg[5]? arg[5][0] : 0;
  a2=casadi_fmin(a1,a2);
  a5=casadi_fmax(a5,a2);
  a1=(a1-a5);
  a4=(a4*a1);
  a1=(a4*a1);
  a3=(a3*a1);
  a0=(a0+a3);
  if (res[0]!=0) res[0][0]=a0;
  if (res[1]!=0) res[1][0]=a4;
  return 0;
}

CASADI_SYMBOL_EXPORT int psi(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){
  return casadi_f5(arg, res, iw, w, mem);
}

CASADI_SYMBOL_EXPORT int psi_alloc_mem(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT int psi_init_mem(int mem) {
  return 0;
}

CASADI_SYMBOL_EXPORT void psi_free_mem(int mem) {
}

CASADI_SYMBOL_EXPORT int psi_checkout(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT void psi_release(int mem) {
}

CASADI_SYMBOL_EXPORT void psi_incref(void) {
}

CASADI_SYMBOL_EXPORT void psi_decref(void) {
}

CASADI_SYMBOL_EXPORT casadi_int psi_n_in(void) { return 6;}

CASADI_SYMBOL_EXPORT casadi_int psi_n_out(void) { return 2;}

CASADI_SYMBOL_EXPORT casadi_real psi_default_in(casadi_int i) {
  switch (i) {
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* psi_name_in(casadi_int i) {
  switch (i) {
    case 0: return "i0";
    case 1: return "i1";
    case 2: return "y";
    case 3: return "Σ";
    case 4: return "zl";
    case 5: return "zu";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* psi_name_out(casadi_int i) {
  switch (i) {
    case 0: return "ψ";
    case 1: return "ŷ";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* psi_sparsity_in(casadi_int i) {
  switch (i) {
    case 0: return casadi_s0;
    case 1: return casadi_s1;
    case 2: return casadi_s1;
    case 3: return casadi_s1;
    case 4: return casadi_s1;
    case 5: return casadi_s1;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* psi_sparsity_out(casadi_int i) {
  switch (i) {
    case 0: return casadi_s1;
    case 1: return casadi_s1;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT int psi_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) {
  if (sz_arg) *sz_arg = 6;
  if (sz_res) *sz_res = 2;
  if (sz_iw) *sz_iw = 0;
  if (sz_w) *sz_w = 0;
  return 0;
}

/* jacobian_g:(i0[2],i1)->(jac_g[1x2]) */
static int casadi_f6(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) {
  casadi_real a0, a1;
  a0=arg[0]? arg[0][0] : 0;
  a0=(a0+a0);
  if (res[0]!=0) res[0][0]=a0;
  a0=arg[1]? arg[1][0] : 0;
  a1=arg[0]? arg[0][1] : 0;
  a1=(a1+a1);
  a0=(a0*a1);
  if (res[0]!=0) res[0][1]=a0;
  return 0;
}

CASADI_SYMBOL_EXPORT int jacobian_g(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){
  return casadi_f6(arg, res, iw, w, mem);
}

CASADI_SYMBOL_EXPORT int jacobian_g_alloc_mem(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT int jacobian_g_init_mem(int mem) {
  return 0;
}

CASADI_SYMBOL_EXPORT void jacobian_g_free_mem(int mem) {
}

CASADI_SYMBOL_EXPORT int jacobian_g_checkout(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT void jacobian_g_release(int mem) {
}

CASADI_SYMBOL_EXPORT void jacobian_g_incref(void) {
}

CASADI_SYMBOL_EXPORT void jacobian_g_decref(void) {
}

CASADI_SYMBOL_EXPORT casadi_int jacobian_g_n_in(void) { return 2;}

CASADI_SYMBOL_EXPORT casadi_int jacobian_g_n_out(void) { return 1;}

CASADI_SYMBOL_EXPORT casadi_real jacobian_g_default_in(casadi_int i) {
  switch (i) {
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* jacobian_g_name_in(casadi_int i) {
  switch (i) {
    case 0: return "i0";
    case 1: return "i1";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* jacobian_g_name_out(casadi_int i) {
  switch (i) {
    case 0: return "jac_g";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* jacobian_g_sparsity_in(casadi_int i) {
  switch (i) {
    case 0: return casadi_s0;
    case 1: return casadi_s1;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* jacobian_g_sparsity_out(casadi_int i) {
  switch (i) {
    case 0: return casadi_s2;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT int jacobian_g_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) {
  if (sz_arg) *sz_arg = 2;
  if (sz_res) *sz_res = 1;
  if (sz_iw) *sz_iw = 0;
  if (sz_w) *sz_w = 0;
  return 0;
}

/* hess_L:(i0[2],i1,y,s)->(hess_L[2x2]) */
static int casadi_f7(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) {
  casadi_real a0, a1, a2, a3, a4, a5, a6;
  a0=2.;
  a1=arg[2]? arg[2][0] : 0;
  a2=(a0*a1);
  a3=arg[0]? arg[0][1] : 0;
  a4=arg[0]? arg[0][0] : 0;
  a5=casadi_sq(a4);
  a3=(a3-a5);
  a3=(a3+a3);
  a5=arg[3]? arg[3][0] : 0;
  a3=(a3*a5);
  a3=(a0*a3);
  a6=(a4+a4);
  a4=(a4+a4);
  a4=(a4+a4);
  a4=(a5*a4);
  a4=(a6*a4);
  a3=(a3-a4);
  a2=(a2-a3);
  a3=-2.;
  a3=(a3*a5);
  a2=(a2-a3);
  if (res[0]!=0) res[0][0]=a2;
  a5=(a0*a5);
  a6=(a6*a5);
  a6=(-a6);
  if (res[0]!=0) res[0][1]=a6;
  if (res[0]!=0) res[0][2]=a6;
  a6=arg[1]? arg[1][0] : 0;
  a6=(a6*a1);
  a0=(a0*a6);
  a0=(a0+a5);
  if (res[0]!=0) res[0][3]=a0;
  return 0;
}

CASADI_SYMBOL_EXPORT int hess_L(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){
  return casadi_f7(arg, res, iw, w, mem);
}

CASADI_SYMBOL_EXPORT int hess_L_alloc_mem(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT int hess_L_init_mem(int mem) {
  return 0;
}

CASADI_SYMBOL_EXPORT void hess_L_free_mem(int mem) {
}

CASADI_SYMBOL_EXPORT int hess_L_checkout(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT void hess_L_release(int mem) {
}

CASADI_SYMBOL_EXPORT void hess_L_incref(void) {
}

CASADI_SYMBOL_EXPORT void hess_L_decref(void) {
}

CASADI_SYMBOL_EXPORT casadi_int hess_L_n_in(void) { return 4;}

CASADI_SYMBOL_EXPORT casadi_int hess_L_n_out(void) { return 1;}

CASADI_SYMBOL_EXPORT casadi_real hess_L_default_in(casadi_int i) {
  switch (i) {
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* hess_L_name_in(casadi_int i) {
  switch (i) {
    case 0: return "i0";
    case 1: return "i1";
    case 2: return "y";
    case 3: return "s";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* hess_L_name_out(casadi_int i) {
  switch (i) {
    case 0: return "hess_L";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* hess_L_sparsity_in(casadi_int i) {
  switch (i) {
    case 0: return casadi_s0;
    case 1: return casadi_s1;
    case 2: return casadi_s1;
    case 3: return casadi_s1;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* hess_L_sparsity_out(casadi_int i) {
  switch (i) {
    case 0: return casadi_s3;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT int hess_L_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) {
  if (sz_arg) *sz_arg = 4;
  if (sz_res) *sz_res = 1;
  if (sz_iw) *sz_iw = 0;
  if (sz_w) *sz_w = 0;
  return 0;
}

/* hess_L_prod:(i0[2],i1,y,s,v[2])->(hess_L_prod[2]) */
static int casadi_f8(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) {
  casadi_real a0, a1, a2, a3, a4, a5, a6;
  a0=arg[4]? arg[4][0] : 0;
  a1=arg[2]? arg[2][0] : 0;
  a2=(a0*a1);
  a2=(a2+a2);
  a3=arg[3]? arg[3][0] : 0;
  a4=(a0*a3);
  a4=(a4+a4);
  a2=(a2+a4);
  a4=arg[0]? arg[0][1] : 0;
  a5=arg[0]? arg[0][0] : 0;
  a6=casadi_sq(a5);
  a4=(a4-a6);
  a4=(a4+a4);
  a4=(a4*a3);
  a4=(a0*a4);
  a2=(a2-a4);
  a2=(a2-a4);
  a4=(a5+a5);
  a6=arg[4]? arg[4][1] : 0;
  a5=(a5+a5);
  a5=(a5*a0);
  a5=(a6-a5);
  a5=(a5*a3);
  a5=(a5+a5);
  a4=(a4*a5);
  a2=(a2-a4);
  if (res[0]!=0) res[0][0]=a2;
  a2=arg[1]? arg[1][0] : 0;
  a2=(a2*a1);
  a6=(a6*a2);
  a6=(a6+a6);
  a6=(a6+a5);
  if (res[0]!=0) res[0][1]=a6;
  return 0;
}

CASADI_SYMBOL_EXPORT int hess_L_prod(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){
  return casadi_f8(arg, res, iw, w, mem);
}

CASADI_SYMBOL_EXPORT int hess_L_prod_alloc_mem(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT int hess_L_prod_init_mem(int mem) {
  return 0;
}

CASADI_SYMBOL_EXPORT void hess_L_prod_free_mem(int mem) {
}

CASADI_SYMBOL_EXPORT int hess_L_prod_checkout(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT void hess_L_prod_release(int mem) {
}

CASADI_SYMBOL_EXPORT void hess_L_prod_incref(void) {
}

CASADI_SYMBOL_EXPORT void hess_L_prod_decref(void) {
}

CASADI_SYMBOL_EXPORT casadi_int hess_L_prod_n_in(void) { return 5;}

CASADI_SYMBOL_EXPORT casadi_int hess_L_prod_n_out(void) { return 1;}

CASADI_SYMBOL_EXPORT casadi_real hess_L_prod_default_in(casadi_int i) {
  switch (i) {
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* hess_L_prod_name_in(casadi_int i) {
  switch (i) {
    case 0: return "i0";
    case 1: return "i1";
    case 2: return "y";
    case 3: return "s";
    case 4: return "v";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* hess_L_prod_name_out(casadi_int i) {
  switch (i) {
    case 0: return "hess_L_prod";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* hess_L_prod_sparsity_in(casadi_int i) {
  switch (i) {
    case 0: return casadi_s0;
    case 1: return casadi_s1;
    case 2: return casadi_s1;
    case 3: return casadi_s1;
    case 4: return casadi_s0;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* hess_L_prod_sparsity_out(casadi_int i) {
  switch (i) {
    case 0: return casadi_s0;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT int hess_L_prod_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) {
  if (sz_arg) *sz_arg = 5;
  if (sz_res) *sz_res = 1;
  if (sz_iw) *sz_iw = 0;
  if (sz_w) *sz_w = 0;
  return 0;
}

/* hess_psi:(i0[2],i1,y,Σ,s,zl,zu)->(hess_psi[2x2]) */
static int casadi_f9(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) {
  casadi_real a0, a1, a10, a11, a12, a13, a14, a15, a16, a2, a3, a4, a5, a6, a7, a8, a9;
  a0=2.;
  a1=5.0000000000000000e-01;
  a2=arg[3]? arg[3][0] : 0;
  a3=arg[0]? arg[0][0] : 0;
  a4=casadi_sq(a3);
  a5=arg[1]? arg[1][0] : 0;
  a6=arg[0]? arg[0][1] : 0;
  a7=casadi_sq(a6);
  a7=(a5*a7);
  a4=(a4+a7);
  a7=arg[2]? arg[2][0] : 0;
  a7=(a7/a2);
  a4=(a4+a7);
  a7=arg[5]? arg[5][0] : 0;
  a8=arg[6]? arg[6][0] : 0;
  a9=casadi_fmin(a4,a8);
  a10=casadi_fmax(a7,a9);
  a10=(a4-a10);
  a11=(a2*a10);
  a11=(a1*a11);
  a10=(a1*a10);
  a10=(a2*a10);
  a11=(a11+a10);
  a10=(a4<=a8);
  a12=(a8<=a4);
  a12=(a10+a12);
  a10=(a10/a12);
  a12=(a7<=a9);
  a13=(a9<=a7);
  a13=(a13+a12);
  a12=(a12/a13);
  a13=(a12*a11);
  a13=(a10*a13);
  a11=(a11-a13);
  a13=(a0*a11);
  a14=(a3+a3);
  a15=(a3+a3);
  a16=(a7<=a9);
  a9=(a9<=a7);
  a9=(a9+a16);
  a16=(a16/a9);
  a9=(a4<=a8);
  a8=(a8<=a4);
  a8=(a9+a8);
  a9=(a9/a8);
  a8=(a9*a15);
  a8=(a16*a8);
  a15=(a15-a8);
  a8=(a2*a15);
  a8=(a1*a8);
  a15=(a1*a15);
  a15=(a2*a15);
  a8=(a8+a15);
  a15=(a12*a8);
  a15=(a10*a15);
  a8=(a8-a15);
  a8=(a14*a8);
  a13=(a13+a8);
  a8=casadi_sq(a3);
  a8=(a6-a8);
  a8=(a8+a8);
  a15=arg[4]? arg[4][0] : 0;
  a8=(a8*a15);
  a8=(a0*a8);
  a4=(a3+a3);
  a3=(a3+a3);
  a3=(a3+a3);
  a3=(a15*a3);
  a3=(a4*a3);
  a8=(a8-a3);
  a13=(a13-a8);
  a8=-2.;
  a8=(a8*a15);
  a13=(a13-a8);
  if (res[0]!=0) res[0][0]=a13;
  a13=(a6+a6);
  a13=(a5*a13);
  a9=(a9*a13);
  a16=(a16*a9);
  a13=(a13-a16);
  a16=(a2*a13);
  a16=(a1*a16);
  a1=(a1*a13);
  a2=(a2*a1);
  a16=(a16+a2);
  a12=(a12*a16);
  a10=(a10*a12);
  a16=(a16-a10);
  a14=(a14*a16);
  a15=(a0*a15);
  a4=(a4*a15);
  a14=(a14-a4);
  if (res[0]!=0) res[0][1]=a14;
  if (res[0]!=0) res[0][2]=a14;
  a11=(a5*a11);
  a0=(a0*a11);
  a6=(a6+a6);
  a5=(a5*a16);
  a6=(a6*a5);
  a0=(a0+a6);
  a0=(a0+a15);
  if (res[0]!=0) res[0][3]=a0;
  return 0;
}

CASADI_SYMBOL_EXPORT int hess_psi(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){
  return casadi_f9(arg, res, iw, w, mem);
}

CASADI_SYMBOL_EXPORT int hess_psi_alloc_mem(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT int hess_psi_init_mem(int mem) {
  return 0;
}

CASADI_SYMBOL_EXPORT void hess_psi_free_mem(int mem) {
}

CASADI_SYMBOL_EXPORT int hess_psi_checkout(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT void hess_psi_release(int mem) {
}

CASADI_SYMBOL_EXPORT void hess_psi_incref(void) {
}

CASADI_SYMBOL_EXPORT void hess_psi_decref(void) {
}

CASADI_SYMBOL_EXPORT casadi_int hess_psi_n_in(void) { return 7;}

CASADI_SYMBOL_EXPORT casadi_int hess_psi_n_out(void) { return 1;}

CASADI_SYMBOL_EXPORT casadi_real hess_psi_default_in(casadi_int i) {
  switch (i) {
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* hess_psi_name_in(casadi_int i) {
  switch (i) {
    case 0: return "i0";
    case 1: return "i1";
    case 2: return "y";
    case 3: return "Σ";
    case 4: return "s";
    case 5: return "zl";
    case 6: return "zu";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* hess_psi_name_out(casadi_int i) {
  switch (i) {
    case 0: return "hess_psi";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* hess_psi_sparsity_in(casadi_int i) {
  switch (i) {
    case 0: return casadi_s0;
    case 1: return casadi_s1;
    case 2: return casadi_s1;
    case 3: return casadi_s1;
    case 4: return casadi_s1;
    case 5: return casadi_s1;
    case 6: return casadi_s1;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* hess_psi_sparsity_out(casadi_int i) {
  switch (i) {
    case 0: return casadi_s3;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT int hess_psi_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) {
  if (sz_arg) *sz_arg = 7;
  if (sz_res) *sz_res = 1;
  if (sz_iw) *sz_iw = 0;
  if (sz_w) *sz_w = 0;
  return 0;
}

/* hess_psi_prod:(i0[2],i1,y,Σ,s,zl,zu,v[2])->(hess_psi_prod[2]) */
static int casadi_f10(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) {
  casadi_real a0, a1, a10, a11, a12, a13, a14, a15, a16, a17, a2, a3, a4, a5, a6, a7, a8, a9;
  a0=arg[7]? arg[7][0] : 0;
  a1=5.0000000000000000e-01;
  a2=arg[3]? arg[3][0] : 0;
  a3=arg[0]? arg[0][0] : 0;
  a4=casadi_sq(a3);
  a5=arg[1]? arg[1][0] : 0;
  a6=arg[0]? arg[0][1] : 0;
  a7=casadi_sq(a6);
  a7=(a5*a7);
  a4=(a4+a7);
  a7=arg[2]? arg[2][0] : 0;
  a7=(a7/a2);
  a4=(a4+a7);
  a7=arg[5]? arg[5][0] : 0;
  a8=arg[6]? arg[6][0] : 0;
  a9=casadi_fmin(a4,a8);
  a10=casadi_fmax(a7,a9);
  a10=(a4-a10);
  a11=(a2*a10);
  a11=(a1*a11);
  a10=(a1*a10);
  a10=(a2*a10);
  a11=(a11+a10);
  a10=(a4<=a8);
  a12=(a8<=a4);
  a12=(a10+a12);
  a10=(a10/a12);
  a12=(a7<=a9);
  a13=(a9<=a7);
  a13=(a13+a12);
  a12=(a12/a13);
  a13=(a12*a11);
  a13=(a10*a13);
  a11=(a11-a13);
  a13=(a0*a11);
  a13=(a13+a13);
  a14=(a3+a3);
  a15=(a3+a3);
  a15=(a15*a0);
  a16=(a6+a6);
  a17=arg[7]? arg[7][1] : 0;
  a16=(a16*a17);
  a16=(a5*a16);
  a15=(a15+a16);
  a10=(a10*a15);
  a12=(a12*a10);
  a15=(a15-a12);
  a12=(a1*a15);
  a12=(a2*a12);
  a2=(a2*a15);
  a1=(a1*a2);
  a12=(a12+a1);
  a1=(a4<=a8);
  a8=(a8<=a4);
  a8=(a1+a8);
  a1=(a1/a8);
  a8=(a7<=a9);
  a9=(a9<=a7);
  a9=(a9+a8);
  a8=(a8/a9);
  a8=(a8*a12);
  a1=(a1*a8);
  a12=(a12-a1);
  a14=(a14*a12);
  a13=(a13+a14);
  a14=arg[4]? arg[4][0] : 0;
  a1=(a0*a14);
  a1=(a1+a1);
  a13=(a13+a1);
  a1=casadi_sq(a3);
  a1=(a6-a1);
  a1=(a1+a1);
  a1=(a1*a14);
  a1=(a0*a1);
  a13=(a13-a1);
  a13=(a13-a1);
  a1=(a3+a3);
  a3=(a3+a3);
  a3=(a3*a0);
  a3=(a17-a3);
  a3=(a3*a14);
  a3=(a3+a3);
  a1=(a1*a3);
  a13=(a13-a1);
  if (res[0]!=0) res[0][0]=a13;
  a11=(a5*a11);
  a17=(a17*a11);
  a17=(a17+a17);
  a6=(a6+a6);
  a5=(a5*a12);
  a6=(a6*a5);
  a17=(a17+a6);
  a17=(a17+a3);
  if (res[0]!=0) res[0][1]=a17;
  return 0;
}

CASADI_SYMBOL_EXPORT int hess_psi_prod(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){
  return casadi_f10(arg, res, iw, w, mem);
}

CASADI_SYMBOL_EXPORT int hess_psi_prod_alloc_mem(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT int hess_psi_prod_init_mem(int mem) {
  return 0;
}

CASADI_SYMBOL_EXPORT void hess_psi_prod_free_mem(int mem) {
}

CASADI_SYMBOL_EXPORT int hess_psi_prod_checkout(void) {
  return 0;
}

CASADI_SYMBOL_EXPORT void hess_psi_prod_release(int mem) {
}

CASADI_SYMBOL_EXPORT void hess_psi_prod_incref(void) {
}

CASADI_SYMBOL_EXPORT void hess_psi_prod_decref(void) {
}

CASADI_SYMBOL_EXPORT casadi_int hess_psi_prod_n_in(void) { return 8;}

CASADI_SYMBOL_EXPORT casadi_int hess_psi_prod_n_out(void) { return 1;}

CASADI_SYMBOL_EXPORT casadi_real hess_psi_prod_default_in(casadi_int i) {
  switch (i) {
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* hess_psi_prod_name_in(casadi_int i) {
  switch (i) {
    case 0: return "i0";
    case 1: return "i1";
    case 2: return "y";
    case 3: return "Σ";
    case 4: return "s";
    case 5: return "zl";
    case 6: return "zu";
    case 7: return "v";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const char* hess_psi_prod_name_out(casadi_int i) {
  switch (i) {
    case 0: return "hess_psi_prod";
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* hess_psi_prod_sparsity_in(casadi_int i) {
  switch (i) {
    case 0: return casadi_s0;
    case 1: return casadi_s1;
    case 2: return casadi_s1;
    case 3: return casadi_s1;
    case 4: return casadi_s1;
    case 5: return casadi_s1;
    case 6: return casadi_s1;
    case 7: return casadi_s0;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT const casadi_int* hess_psi_prod_sparsity_out(casadi_int i) {
  switch (i) {
    case 0: return casadi_s0;
    default: return 0;
  }
}

CASADI_SYMBOL_EXPORT int hess_psi_prod_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) {
  if (sz_arg) *sz_arg = 8;
  if (sz_res) *sz_res = 1;
  if (sz_iw) *sz_iw = 0;
  if (sz_w) *sz_w = 0;
  return 0;
}


#ifdef __cplusplus
} /* extern "C" */
#endif
