| #ifndef LIN_SYS_H |
| # define LIN_SYS_H |
| |
| /* KKT linear system definition and solution */ |
| |
| # ifdef __cplusplus |
| extern "C" { |
| # endif // ifdef __cplusplus |
| |
| # include "types.h" |
| |
| /** |
| * Load linear system solver shared library |
| * @param linsys_solver Linear system solver |
| * @return Zero on success, nonzero on failure. |
| */ |
| c_int load_linsys_solver(enum linsys_solver_type linsys_solver); |
| |
| |
| /** |
| * Unload linear system solver shared library |
| * @param linsys_solver Linear system solver |
| * @return Zero on success, nonzero on failure. |
| */ |
| c_int unload_linsys_solver(enum linsys_solver_type linsys_solver); |
| |
| |
| // NB: Only the upper triangular part of P is stuffed! |
| |
| /** |
| * Initialize linear system solver structure |
| * @param s Pointer to linear system solver structure |
| * @param P Cost function matrix |
| * @param A Constraint matrix |
| * @param sigma Algorithm parameter |
| * @param rho_vec Algorithm parameter |
| * @param linsys_solver Linear system solver |
| * @param polish 0/1 depending whether we are allocating for |
| *polishing or not |
| * @return Exitflag for error (0 if no errors) |
| */ |
| c_int init_linsys_solver(LinSysSolver **s, |
| const csc *P, |
| const csc *A, |
| c_float sigma, |
| const c_float *rho_vec, |
| enum linsys_solver_type linsys_solver, |
| c_int polish); |
| |
| # ifdef __cplusplus |
| } |
| # endif // ifdef __cplusplus |
| |
| #endif // ifndef LIN_SYS_H |