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)
38 void casadi_copy(
const T1* x, casadi_int n, T1* y);
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>
54 void casadi_sparsify(
const T1* x, T2* y,
const casadi_int* sp_y, casadi_int tr);
58 void casadi_scal(casadi_int n, T1 alpha, T1* x);
62 void casadi_axpy(casadi_int n, T1 alpha,
const T1* x, T1* y);
66 T1 casadi_dot(casadi_int n,
const T1* x,
const T1* y);
70 T1 casadi_max_viol(casadi_int n,
const T1* x,
const T1* lb,
const T1* ub);
74 T1 casadi_sum_viol(casadi_int n,
const T1* x,
const T1* lb,
const T1* ub);
78 casadi_int casadi_iamax(casadi_int n,
const T1* x, casadi_int inc_x);
82 void casadi_clear(T1* x, casadi_int n);
86 void casadi_fill(T1* x, casadi_int n, T1 alpha);
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>
104 void casadi_trilsolve(
const casadi_int* sp_a,
const T1* nz_a, T1* x,
int tr,
int unity,
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>
114 T1 casadi_norm_1(casadi_int n,
const T1* x);
117 template<
typename T1>
118 T1 casadi_norm_2(casadi_int n,
const T1* x);
123 template<
typename T1>
124 T1 casadi_norm_inf(casadi_int n,
const T1* x);
132 template<
typename T1>
133 T1 casadi_norm_inf_mul(
const T1* x,
const casadi_int* sp_x,
const T1* y,
const casadi_int* sp_y,
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>
150 void casadi_getu(
const T1* x,
const casadi_int* sp_x, T1* v);
153 template<
typename T1>
154 T1 casadi_polyval(
const T1* p, casadi_int n, T1 x);
157 casadi_int casadi_flip(casadi_int* corner, casadi_int ndim);
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>
165 void casadi_interpn_weights(casadi_int ndim,
const T1* grid,
const casadi_int* offset,
166 const T1* x, T1* alpha, casadi_int* index);
169 template<
typename T1>
170 T1 casadi_interpn_interpolate(casadi_int ndim,
const casadi_int* offset,
const T1* values,
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>
181 void casadi_interpn_grad(T1* grad, casadi_int ndim,
const T1* grid,
const casadi_int* offset,
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>
190 void casadi_nd_boor_eval(T1* ret, casadi_int n_dims,
const T1* knots,
const casadi_int* offset,
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>
196 T1 casadi_mmax(
const T1* x, casadi_int n, T1 is_dense);
198 template<
typename T1>
199 T1 casadi_mmin(
const T1* x, casadi_int n, casadi_int is_dense);
201 template<
typename T1>
202 T1 casadi_vfmax(
const T1* x, casadi_int n, T1 r);
204 template<
typename T1>
205 T1 casadi_vfmin(
const T1* x, casadi_int n, T1 r);
208 inline void casadi_fill_casadi_int(casadi_int* x, casadi_int n, casadi_int alpha) {
209 casadi_fill(x, n, alpha);
213 inline void casadi_clear_casadi_int(casadi_int* x, casadi_int n) {
217 template<
typename T1>
218 void casadi_bound_consistency(casadi_int n, T1* x, T1* lam,
219 const T1* lbx,
const T1* ubx);
222 template<
typename T1>
223 T1 casadi_logsumexp(
const T1* x, casadi_int n);
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"