26 void casadi_blazing_1d_boor_eval(T1* f, T1* J, T1* H,
const T1* all_knots,
const T1* all_knots_cache,
const casadi_int* offset,
const T1* c,
const T1* dc,
const T1* ddc,
const T1* all_x,
const casadi_int* lookup_mode, casadi_int* iw, T1* w) {
31 simde__m256d boor0_d2, boor0_d1, boor0_d0;
32 const T1* inv2_0 = 0;
const T1* inv3_0 = 0;
34 starts[0] = casadi_blazing_boor_init<T1>(all_x[0], all_knots, all_knots_cache,
35 offset[0], offset[1], lookup_mode[0], &boor0_d0, &boor0_d1, &boor0_d2, &inv2_0, &inv3_0);
37 const T1*
C = c+starts[0];
40 simde_mm256_storeu_pd(boor0_d0v, boor0_d0);
43 for (casadi_int i=0;i<4;++i) {
44 f[0] += boor0_d0v[i]*
C[i];
52 const T1* Cdc = dc+starts[0];
55 simde_mm256_storeu_pd(boor0_d1v, boor0_d1);
58 for (casadi_int i=0;i<3;++i) {
59 J[0] += boor0_d1v[i+1]*Cdc[i];
63 const T1* t0 = all_knots + offset[0] + starts[0];
64 simde__m256d boor0_J = casadi_blazing_dbasis<T1>(boor0_d1, t0, inv3_0);
67 simde_mm256_storeu_pd(boor0_Jv, boor0_J);
70 for (casadi_int i=0;i<4;++i) {
71 J[0] += boor0_Jv[i]*
C[i];
80 const T1* Cddc = ddc+starts[0];
83 simde_mm256_storeu_pd(boor0_d2v, boor0_d2);
86 for (casadi_int i=0;i<2;++i) {
87 H[0] += boor0_d2v[i+2]*Cddc[i];
91 const T1* t0 = all_knots + offset[0] + starts[0];
92 simde__m256d boor0_H = casadi_blazing_d2basis<T1>(boor0_d2, t0,
96 simde_mm256_storeu_pd(boor0_Hv, boor0_H);
99 for (casadi_int i=0;i<4;++i) {
100 H[0] += boor0_Hv[i]*
C[i];