30 void casadi_fatrop_conic_mproject(T1 factor,
const T1* x,
const casadi_int* sp_x,
31 T1* y,
const casadi_int* sp_y, T1* w) {
33 const casadi_int* colind_y;
36 casadi_project(x, sp_x, y, sp_y, w);
37 casadi_scal(colind_y[ncol_y], factor, y);
42 void casadi_fatrop_conic_dense_transfer(
double factor,
const T1* x,
43 const casadi_int* sp_x, T1* y,
44 const casadi_int* sp_y, T1* w) {
45 casadi_sparsify(x, w, sp_x, 0);
46 casadi_int nrow_y = sp_y[0];
47 casadi_int ncol_y = sp_y[1];
48 const casadi_int *colind_y = sp_y+2, *row_y = sp_y + 2 + ncol_y+1;
51 for (i=0; i<ncol_y; ++i) {
52 for (el=colind_y[i]; el<colind_y[i+1]; ++el) y[nrow_y*i + row_y[el]] += factor*(*w++);
104 template<
typename T1>
111 template<
typename T1>
113 casadi_int k, i, start, stop;
118 for (
int i=0;i<casadi_sp_nnz(p_qp->
sp_a);++i) {
119 printf(
"a %d: %e\n", i, d_qp->
a[i]);
122 casadi_fatrop_conic_mproject(-1.0, d_qp->
a, p_qp->
sp_a, d->
AB, p->
ABsp, d->
pv);
133 for (k=0;k<p->
N+1;++k) {
138 for (i=start;i<stop;++i) {
139 if (d_qp->
lba[i]==d_qp->
uba[i]) {
142 if (d_qp->
lba[i]==-inf && d_qp->
uba[i]==inf)
continue;
151 for (i=start;i<stop;++i) {
152 if (d_qp->
lbx[i]==d_qp->
ubx[i]) {
155 if (d_qp->
lbx[i]==-inf && d_qp->
ubx[i]==inf)
continue;
177 template<
typename T1>
178 void casadi_fatrop_conic_work(
const casadi_fatrop_conic_prob<T1>* p, casadi_int* sz_arg, casadi_int* sz_res, casadi_int* sz_iw, casadi_int* sz_w) {
179 casadi_qp_work(p->
qp, sz_arg, sz_res, sz_iw, sz_w);
182 *sz_w = casadi_max(*sz_w, 2*(p->
qp->nx+p->
qp->na));
184 *sz_w += casadi_sp_nnz(p->
ABsp);
185 *sz_w += casadi_sp_nnz(p->
CDsp);
186 *sz_w += casadi_sp_nnz(p->
RSQsp);
201 template<
typename T1>
207 d->
AB = *w; *w += casadi_sp_nnz(p->
ABsp);
208 d->
CD = *w; *w += casadi_sp_nnz(p->
CDsp);
209 d->
RSQ = *w; *w += casadi_sp_nnz(p->
RSQsp);
216 d->
a_eq = *iw; *iw += p->
qp->na;
218 d->
x_eq = *iw; *iw += p->
qp->nx;
const char * return_status
casadi_qp_data< T1 > * qp
const casadi_fatrop_conic_prob< T1 > * prob
const casadi_int * AB_offsets
const casadi_int * RSQ_offsets
const casadi_int * CD_offsets
const casadi_qp_prob< T1 > * qp