24 void casadi_kron_contract_outer_dense_sparse(
const T1* m, casadi_int mB, casadi_int nB,
25 const T1* a,
const casadi_int* sp_a,
27 casadi_int mA = sp_a[0], nA = sp_a[1];
28 const casadi_int* a_colind = sp_a+2;
29 const casadi_int* a_row = sp_a+2+nA+1;
30 casadi_int j, a_el, i, s, rr, k;
32 const T1* m_col, *m_block;
34 for (k=0; k<mB*nB; ++k) y[k] = 0;
35 for (j=0; j<nA; ++j) {
36 for (a_el=a_colind[j]; a_el<a_colind[j+1]; ++a_el) {
39 for (s=0; s<nB; ++s) {
40 m_col = m + (j*nB+s)*(mA*mB);
41 m_block = m_col + i*mB;
43 for (rr=0; rr<mB; ++rr) y_col[rr] += a_val * m_block[rr];