@@ -324,11 +324,11 @@ struct PrimalDualGradResult
324324/* !
325325 * Executes the PROXQP algorithm.
326326 *
327- * @param work solver workspace .
328- * @param model QP problem model as defined by the user (without any scaling
327+ * @param results solver results .
328+ * @param data QP problem model as defined by the user (without any scaling
329329 * performed).
330330 * @param settings solver settings.
331- * @param results solver results .
331+ * @param work solver workspace .
332332 * @param precond preconditioner.
333333 */
334334template <typename T, typename I, typename P>
@@ -781,7 +781,8 @@ qp_solve(Results<T>& results,
781781 VEG_BIND ( // ?
782782 auto ,
783783 (primal_feasibility_lhs, dual_feasibility_lhs),
784- detail::unscaled_primal_dual_residual (results,
784+ detail::unscaled_primal_dual_residual (work,
785+ results,
785786 primal_residual_eq_scaled,
786787 primal_residual_in_scaled_lo,
787788 primal_residual_in_scaled_up,
@@ -841,9 +842,8 @@ qp_solve(Results<T>& results,
841842 }
842843 if (is_primal_feasible (primal_feasibility_lhs) &&
843844 is_dual_feasible (dual_feasibility_lhs)) {
844- if (results.info .duality_gap <=
845- settings.eps_abs +
846- (settings.eps_rel + settings.eps_abs ) * rhs_duality_gap) {
845+ if (std::abs (results.info .duality_gap ) <=
846+ settings.eps_abs + settings.eps_rel * rhs_duality_gap) {
847847 results.info .pri_res = primal_feasibility_lhs;
848848 results.info .dua_res = dual_feasibility_lhs;
849849 results.info .status = QPSolverOutput::PROXQP_SOLVED;
@@ -886,8 +886,10 @@ qp_solve(Results<T>& results,
886886 LDLT_TEMP_VEC_UNINIT (bool , new_active_constraints, n_in, stack);
887887 auto rhs = dw;
888888
889- work.active_set_low .array () = primal_residual_in_scaled_lo.array () <= 0 ;
890- work.active_set_up .array () = primal_residual_in_scaled_up.array () >= 0 ;
889+ work.active_set_low .array () =
890+ primal_residual_in_scaled_lo.array () <= 0 ;
891+ work.active_set_up .array () =
892+ primal_residual_in_scaled_up.array () >= 0 ;
891893 new_active_constraints = work.active_set_low || work.active_set_up ;
892894
893895 // active set change
@@ -1211,7 +1213,8 @@ qp_solve(Results<T>& results,
12111213 VEG_BIND (
12121214 auto ,
12131215 (primal_feasibility_lhs_new, dual_feasibility_lhs_new),
1214- detail::unscaled_primal_dual_residual (results,
1216+ detail::unscaled_primal_dual_residual (work,
1217+ results,
12151218 primal_residual_eq_scaled,
12161219 primal_residual_in_scaled_lo,
12171220 primal_residual_in_scaled_up,
@@ -1232,9 +1235,8 @@ qp_solve(Results<T>& results,
12321235
12331236 if (is_primal_feasible (primal_feasibility_lhs_new) &&
12341237 is_dual_feasible (dual_feasibility_lhs_new)) {
1235- if (results.info .duality_gap <=
1236- settings.eps_abs +
1237- (settings.eps_abs + settings.eps_rel ) * rhs_duality_gap) {
1238+ if (std::fabs (results.info .duality_gap ) <=
1239+ settings.eps_abs + settings.eps_rel * rhs_duality_gap) {
12381240 results.info .pri_res = primal_feasibility_lhs_new;
12391241 results.info .dua_res = dual_feasibility_lhs_new;
12401242 results.info .status = QPSolverOutput::PROXQP_SOLVED;
@@ -1274,7 +1276,8 @@ qp_solve(Results<T>& results,
12741276 VEG_BIND (
12751277 auto ,
12761278 (_, dual_feasibility_lhs_new_2),
1277- detail::unscaled_primal_dual_residual (results,
1279+ detail::unscaled_primal_dual_residual (work,
1280+ results,
12781281 primal_residual_eq_scaled,
12791282 primal_residual_in_scaled_lo,
12801283 primal_residual_in_scaled_up,
0 commit comments