| #include "proj.h" |
| |
| |
| void project(OSQPWorkspace *work, c_float *z) { |
| c_int i, m; |
| |
| m = work->data->m; |
| |
| for (i = 0; i < m; i++) { |
| z[i] = c_min(c_max(z[i], |
| work->data->l[i]), // Between lower |
| work->data->u[i]); // and upper bounds |
| } |
| } |
| |
| void project_normalcone(OSQPWorkspace *work, c_float *z, c_float *y) { |
| c_int i, m; |
| |
| // NB: Use z_prev as temporary vector |
| |
| m = work->data->m; |
| |
| for (i = 0; i < m; i++) { |
| work->z_prev[i] = z[i] + y[i]; |
| z[i] = c_min(c_max(work->z_prev[i], work->data->l[i]), |
| work->data->u[i]); |
| y[i] = work->z_prev[i] - z[i]; |
| } |
| } |