26 #ifndef CASADI_CASADI_RUNTIME_HPP
27 #define CASADI_CASADI_RUNTIME_HPP
29 #include "../calculus.hpp"
31 #define CASADI_PREFIX(ID) casadi_##ID
32 #define CASADI_CAST(TYPE, ARG) static_cast<TYPE>(ARG)
42 void casadi_swap(casadi_int n, T1* x, casadi_int inc_x, T1* y, casadi_int inc_y);
46 void casadi_project(
const T1* x,
const casadi_int* sp_x, T1* y,
const casadi_int* sp_y, T1* w);
49 template<
typename T1,
typename T2>
50 void casadi_densify(
const T1* x,
const casadi_int* sp_x, T2* y, casadi_int tr);
53 template<
typename T1,
typename T2>
78 casadi_int
casadi_iamax(casadi_int n,
const T1* x, casadi_int inc_x);
90 void casadi_mtimes(
const T1* x,
const casadi_int* sp_x,
const T1* y,
const casadi_int* sp_y,
91 T1* z,
const casadi_int* sp_z, T1* w, casadi_int tr);
95 void casadi_mv(
const T1* x,
const casadi_int* sp_x,
const T1* y, T1* z, casadi_int tr);
99 void casadi_triusolve(
const casadi_int* sp_a,
const T1* nz_a, T1* x,
int tr,
int unity,
103 template<
typename T1>
108 template<
typename T1>
109 void casadi_trans(
const T1* x,
const casadi_int* sp_x, T1* y,
const casadi_int* sp_y,
113 template<
typename T1>
117 template<
typename T1>
123 template<
typename T1>
132 template<
typename T1>
134 T1* dwork, casadi_int* iwork);
137 template<
typename T1>
138 T1
casadi_bilin(
const T1* A,
const casadi_int* sp_A,
const T1* x,
const T1* y);
141 template<
typename T1>
142 void casadi_kron(
const T1* a,
const casadi_int* sp_a,
const T1* b,
const casadi_int* sp_b, T1* r);
145 template<
typename T1>
146 void casadi_rank1(T1* A,
const casadi_int* sp_A, T1 alpha,
const T1* x);
149 template<
typename T1>
153 template<
typename T1>
160 template<
typename T1>
161 casadi_int
casadi_low(T1 x,
const T1* grid, casadi_int ng, casadi_int lookup_mode);
164 template<
typename T1>
166 const T1* x, T1* alpha, casadi_int* index);
169 template<
typename T1>
171 const T1* alpha,
const casadi_int* index,
172 const casadi_int* corner, T1* coeff);
175 template<
typename T1>
176 T1
casadi_interpn(casadi_int ndim,
const T1* grid,
const casadi_int* offset,
const T1* values,
177 const T1* x, casadi_int* iw, T1* w);
180 template<
typename T1>
182 const T1* values,
const T1* x, casadi_int* iw, T1* w);
185 template<
typename T1>
186 void casadi_de_boor(T1 x,
const T1* knots, casadi_int n_knots, casadi_int degree, T1* boor);
189 template<
typename T1>
191 const casadi_int* degree,
const casadi_int* strides,
const T1* c,
193 const T1* x,
const casadi_int* lookup_mode, casadi_int* iw, T1* w);
195 template<
typename T1>
198 template<
typename T1>
201 template<
typename T1>
204 template<
typename T1>
217 template<
typename T1>
219 const T1* lbx,
const T1* ubx);
222 template<
typename T1>
229 template<
typename T1>
233 #define CASADI_GEMM_NT(M, N, K, A, LDA, B, LDB, C, LDC) \
234 for (i=0, rr=C; i<M; ++i) \
235 for (j=0; j<N; ++j, ++rr) \
236 for (k=0, ss=A+i*LDA, tt=B+j*LDB; k<K; ++k) \
240 #include "casadi_copy.hpp"
241 #include "casadi_cvx.hpp"
242 #include "casadi_swap.hpp"
243 #include "casadi_project.hpp"
244 #include "casadi_tri_project.hpp"
245 #include "casadi_densify.hpp"
246 #include "casadi_sparsify.hpp"
247 #include "casadi_scal.hpp"
248 #include "casadi_iamax.hpp"
249 #include "casadi_axpy.hpp"
250 #include "casadi_dot.hpp"
251 #include "casadi_kron.hpp"
252 #include "casadi_clear.hpp"
253 #include "casadi_clip_max.hpp"
254 #include "casadi_clip_min.hpp"
255 #include "casadi_fill.hpp"
256 #include "casadi_max_viol.hpp"
257 #include "casadi_mmin.hpp"
258 #include "casadi_mmax.hpp"
259 #include "casadi_vfmin.hpp"
260 #include "casadi_vfmax.hpp"
261 #include "casadi_vector_fmin.hpp"
262 #include "casadi_vector_fmax.hpp"
263 #include "casadi_sum_viol.hpp"
264 #include "casadi_mtimes.hpp"
265 #include "casadi_mv.hpp"
266 #include "casadi_trilsolve.hpp"
267 #include "casadi_triusolve.hpp"
268 #include "casadi_trans.hpp"
269 #include "casadi_norm_1.hpp"
270 #include "casadi_norm_2.hpp"
271 #include "casadi_norm_inf.hpp"
272 #include "casadi_masked_norm_inf.hpp"
273 #include "casadi_norm_inf_mul.hpp"
274 #include "casadi_bilin.hpp"
275 #include "casadi_rank1.hpp"
276 #include "casadi_low.hpp"
277 #include "casadi_flip.hpp"
278 #include "casadi_polyval.hpp"
279 #include "casadi_de_boor.hpp"
280 #include "casadi_nd_boor_eval.hpp"
281 #include "casadi_nd_boor_dual_eval.hpp"
282 #include "casadi_interpn_weights.hpp"
283 #include "casadi_interpn_interpolate.hpp"
284 #include "casadi_interpn.hpp"
285 #include "casadi_interpn_grad.hpp"
286 #include "casadi_mv_dense.hpp"
287 #include "casadi_finite_diff.hpp"
288 #include "casadi_file_slurp.hpp"
289 #include "casadi_ldl.hpp"
290 #include "casadi_qr.hpp"
291 #include "casadi_qp.hpp"
292 #include "casadi_qrqp.hpp"
293 #include "casadi_kkt.hpp"
294 #include "casadi_ipqp.hpp"
295 #include "casadi_oracle.hpp"
296 #include "casadi_nlp.hpp"
297 #include "casadi_sqpmethod.hpp"
298 #include "casadi_feasiblesqpmethod.hpp"
299 #include "casadi_bfgs.hpp"
300 #include "casadi_regularize.hpp"
301 #include "casadi_newton.hpp"
302 #include "casadi_bound_consistency.hpp"
303 #include "casadi_lsqr.hpp"
304 #include "casadi_dense_lsqr.hpp"
305 #include "casadi_cache.hpp"
306 #include "casadi_convexify.hpp"
307 #include "casadi_logsumexp.hpp"
308 #include "casadi_sum.hpp"
309 #include "casadi_sparsity.hpp"
310 #include "casadi_jac.hpp"
311 #include "casadi_oracle_callback.hpp"
312 #include "casadi_ocp_block.hpp"
313 #include "casadi_scaled_copy.hpp"
T1 casadi_max_viol(casadi_int n, const T1 *x, const T1 *lb, const T1 *ub)
Largest bound violation.
T1 casadi_logsumexp(const T1 *x, casadi_int n)
T1 casadi_interpn_interpolate(casadi_int ndim, const casadi_int *offset, const T1 *values, const T1 *alpha, const casadi_int *index, const casadi_int *corner, T1 *coeff)
void casadi_interpn_weights(casadi_int ndim, const T1 *grid, const casadi_int *offset, const T1 *x, T1 *alpha, casadi_int *index)
T1 casadi_interpn(casadi_int ndim, const T1 *grid, const casadi_int *offset, const T1 *values, const T1 *x, casadi_int *iw, T1 *w)
T1 casadi_norm_1(casadi_int n, const T1 *x)
NORM_1: ||x||_1 -> return.
void casadi_triusolve(const casadi_int *sp_a, const T1 *nz_a, T1 *x, int tr, int unity, casadi_int nrhs)
Linear solve, upper triangular matrix, optionally transposed or unity diagonal (1 - R)
casadi_int casadi_low(T1 x, const T1 *grid, casadi_int ng, casadi_int lookup_mode)
void casadi_sparsify(const T1 *x, T2 *y, const casadi_int *sp_y, casadi_int tr)
Convert dense to sparse.
T1 casadi_bilin(const T1 *A, const casadi_int *sp_A, const T1 *x, const T1 *y)
void casadi_project(const T1 *x, const casadi_int *sp_x, T1 *y, const casadi_int *sp_y, T1 *w)
Sparse copy: y <- x, w work vector (length >= number of rows)
void casadi_bound_consistency(casadi_int n, T1 *x, T1 *lam, const T1 *lbx, const T1 *ubx)
T1 casadi_norm_inf_mul(const T1 *x, const casadi_int *sp_x, const T1 *y, const casadi_int *sp_y, T1 *dwork, casadi_int *iwork)
casadi_int casadi_iamax(casadi_int n, const T1 *x, casadi_int inc_x)
IAMAX: index corresponding to the entry with the largest absolute value.
T1 casadi_sum_viol(casadi_int n, const T1 *x, const T1 *lb, const T1 *ub)
Sum of bound violations.
void casadi_clear_casadi_int(casadi_int *x, casadi_int n)
void casadi_copy(const T1 *x, casadi_int n, T1 *y)
COPY: y <-x.
void casadi_getu(const T1 *x, const casadi_int *sp_x, T1 *v)
Get the nonzeros for the upper triangular half.
void casadi_fill(T1 *x, casadi_int n, T1 alpha)
FILL: x <- alpha.
T1 casadi_norm_2(casadi_int n, const T1 *x)
NORM_2: ||x||_2 -> return.
casadi_int casadi_flip(casadi_int *corner, casadi_int ndim)
void casadi_interpn_grad(T1 *grad, casadi_int ndim, const T1 *grid, const casadi_int *offset, const T1 *values, const T1 *x, casadi_int *iw, T1 *w)
T1 casadi_vfmax(const T1 *x, casadi_int n, T1 r)
T1 casadi_vfmin(const T1 *x, casadi_int n, T1 r)
void casadi_mtimes(const T1 *x, const casadi_int *sp_x, const T1 *y, const casadi_int *sp_y, T1 *z, const casadi_int *sp_z, T1 *w, casadi_int tr)
Sparse matrix-matrix multiplication: z <- z + x*y.
T1 casadi_dot(casadi_int n, const T1 *x, const T1 *y)
Inner product.
T1 casadi_mmax(const T1 *x, casadi_int n, T1 is_dense)
void casadi_densify(const T1 *x, const casadi_int *sp_x, T2 *y, casadi_int tr)
Convert sparse to dense.
void casadi_fill_casadi_int(casadi_int *x, casadi_int n, casadi_int alpha)
void casadi_scal(casadi_int n, T1 alpha, T1 *x)
SCAL: x <- alpha*x.
void casadi_swap(casadi_int n, T1 *x, casadi_int inc_x, T1 *y, casadi_int inc_y)
SWAP: x <-> y.
int casadi_newton(const casadi_newton_mem< T1 > *m)
void casadi_kron(const T1 *a, const casadi_int *sp_a, const T1 *b, const casadi_int *sp_b, T1 *r)
T1 casadi_mmin(const T1 *x, casadi_int n, casadi_int is_dense)
void casadi_axpy(casadi_int n, T1 alpha, const T1 *x, T1 *y)
AXPY: y <- a*x + y.
void casadi_trilsolve(const casadi_int *sp_a, const T1 *nz_a, T1 *x, int tr, int unity, casadi_int nrhs)
Linear solve, lower triangular matrix, optionally transposed or unity diagonal (1 - L)
void casadi_de_boor(T1 x, const T1 *knots, casadi_int n_knots, casadi_int degree, T1 *boor)
T1 casadi_norm_inf(casadi_int n, const T1 *x)
void casadi_clear(T1 *x, casadi_int n)
CLEAR: x <- 0.
void casadi_mv(const T1 *x, const casadi_int *sp_x, const T1 *y, T1 *z, casadi_int tr)
Sparse matrix-vector multiplication: z <- z + x*y.
void casadi_rank1(T1 *A, const casadi_int *sp_A, T1 alpha, const T1 *x)
Adds a multiple alpha/2 of the outer product mul(x, trans(x)) to A.
void casadi_trans(const T1 *x, const casadi_int *sp_x, T1 *y, const casadi_int *sp_y, casadi_int *tmp)
TRANS: y <- trans(x) , w work vector (length >= rows x)
void casadi_nd_boor_eval(T1 *ret, casadi_int n_dims, const T1 *knots, const casadi_int *offset, const casadi_int *degree, const casadi_int *strides, const T1 *c, casadi_int m, const T1 *x, const casadi_int *lookup_mode, casadi_int *iw, T1 *w)
T1 casadi_polyval(const T1 *p, casadi_int n, T1 x)
Evaluate a polynomial.