# Status values¶

These are the exit statuses, their respective constants and values returned by the solver as defined in constants.h.
The *inaccurate* statuses define when the optimality, primal infeasibility or dual infeasibility conditions are satisfied with tolerances 10 times larger than the ones set.

Status |
Constant |
Value |
---|---|---|

solved |
OSQP_SOLVED |
1 |

solved inaccurate |
OSQP_SOLVED_INACCURATE |
2 |

maximum iterations reached |
OSQP_MAX_ITER_REACHED |
-2 |

primal infeasible |
OSQP_PRIMAL_INFEASIBLE |
-3 |

primal infeasible inaccurate |
OSQP_PRIMAL_INFEASIBLE_INACCURATE |
3 |

dual infeasible |
OSQP_DUAL_INFEASIBLE |
-4 |

dual infeasible inaccurate |
OSQP_DUAL_INFEASIBLE_INACCURATE |
4 |

interrupted by user |
OSQP_SIGINT |
-5 |

run time limit reached |
OSQP_TIME_LIMIT_REACHED |
-6 |

unsolved |
OSQP_UNSOLVED |
-10 |

problem non convex |
OSQP_NON_CVX |
-7 |

Note

We recommend the user to **check the convexity of their problem before
passing it to OSQP**! If the user passes a non-convex problem we do not
assure the solver will be able to detect it.

OSQP will try to detect **non-convex** problems by checking if the residuals
diverge or if there are any issues in the initial factorization (if a direct
method is used). It will detect non-convex problems when one or more of the
eigenvalues of `P`

are “clearly” negative, i.e., when ```
P + sigma
* I
```

is not positive semidefinite. However, it might fail to detect
non-convexity when `P`

has slightly negative eigenvalues, i.e., when
`P + sigma * I`

is positive semidefinite and `P`

is not.