Austin Schuh | 9049e20 | 2022-02-20 17:34:16 -0800 | [diff] [blame] | 1 | #include "proj.h" |
| 2 | |
| 3 | |
| 4 | void project(OSQPWorkspace *work, c_float *z) { |
| 5 | c_int i, m; |
| 6 | |
| 7 | m = work->data->m; |
| 8 | |
| 9 | for (i = 0; i < m; i++) { |
| 10 | z[i] = c_min(c_max(z[i], |
| 11 | work->data->l[i]), // Between lower |
| 12 | work->data->u[i]); // and upper bounds |
| 13 | } |
| 14 | } |
| 15 | |
| 16 | void project_normalcone(OSQPWorkspace *work, c_float *z, c_float *y) { |
| 17 | c_int i, m; |
| 18 | |
| 19 | // NB: Use z_prev as temporary vector |
| 20 | |
| 21 | m = work->data->m; |
| 22 | |
| 23 | for (i = 0; i < m; i++) { |
| 24 | work->z_prev[i] = z[i] + y[i]; |
| 25 | z[i] = c_min(c_max(work->z_prev[i], work->data->l[i]), |
| 26 | work->data->u[i]); |
| 27 | y[i] = work->z_prev[i] - z[i]; |
| 28 | } |
| 29 | } |