blob: 69f3bdcff7107a65ebb3d6dcb491070d2bfca518 [file] [log] [blame]
#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