@@ -113,38 +113,6 @@ save_data(const std::string& filename, const ::Eigen::MatrixBase<Derived>& mat)
113113 }
114114}
115115
116- #define LDLT_DEDUCE_RET (...) \
117- noexcept (noexcept (__VA_ARGS__)) \
118- ->typename std::remove_const<decltype (__VA_ARGS__)>::type \
119- { \
120- return __VA_ARGS__; \
121- } \
122- static_assert (true , " ." )
123-
124- // / @brief \brief Returns the part of the expression which is lower than value
125- template <typename T, typename Scalar>
126- auto
127- lower_than (T const & expr, const Scalar value)
128- LDLT_DEDUCE_RET ((expr.array() < value).select(expr, T::Zero(expr.rows())));
129-
130- // / @brief \brief Returns the part of the expression which is greater than value
131- template <typename T, typename Scalar>
132- auto
133- greater_than (T const & expr, const Scalar value)
134- LDLT_DEDUCE_RET((expr.array() > value).select(expr, T::Zero(expr.rows())));
135-
136- // / @brief \brief Returns the positive part of an expression
137- template <typename T>
138- auto
139- positive_part (T const & expr)
140- LDLT_DEDUCE_RET((expr.array() > 0).select(expr, T::Zero(expr.rows())));
141-
142- // / @brief \brief Returns the negative part of an expression
143- template <typename T>
144- auto
145- negative_part (T const & expr)
146- LDLT_DEDUCE_RET((expr.array() < 0).select(expr, T::Zero(expr.rows())));
147-
148116/* !
149117 * Derives the global primal residual of the QP problem.
150118 *
@@ -199,8 +167,8 @@ global_primal_residual(const Model<T>& qpmodel,
199167 primal_feasibility_in_rhs_0 = infty_norm (qpwork.primal_residual_in_scaled_up );
200168
201169 qpwork.primal_residual_in_scaled_low =
202- positive_part (qpwork.primal_residual_in_scaled_up - qpmodel.u ) +
203- negative_part (qpwork.primal_residual_in_scaled_up - qpmodel.l );
170+ helpers:: positive_part (qpwork.primal_residual_in_scaled_up - qpmodel.u ) +
171+ helpers:: negative_part (qpwork.primal_residual_in_scaled_up - qpmodel.l );
204172 qpwork.primal_residual_eq_scaled -= qpmodel.b ;
205173
206174 primal_feasibility_in_lhs = infty_norm (qpwork.primal_residual_in_scaled_low );
@@ -255,8 +223,8 @@ global_primal_residual_infeasibility(
255223 ruiz.unscale_dual_residual_in_place (ATdy);
256224 ruiz.unscale_dual_residual_in_place (CTdz);
257225 T eq_inf = dy.to_eigen ().dot (qpwork.b_scaled );
258- T in_inf = positive_part (dz.to_eigen ()).dot (qpwork.u_scaled ) -
259- positive_part (- dz.to_eigen ()).dot (qpwork.l_scaled );
226+ T in_inf = helpers:: positive_part (dz.to_eigen ()).dot (qpwork.u_scaled ) -
227+ helpers::negative_part ( dz.to_eigen ()).dot (qpwork.l_scaled );
260228 ruiz.unscale_dual_in_place_eq (dy);
261229 ruiz.unscale_dual_in_place_in (dz);
262230
@@ -429,14 +397,14 @@ global_dual_residual(Results<T>& qpresults,
429397 ruiz.unscale_dual_in_place_in (VectorViewMut<T>{ from_eigen, qpresults.z });
430398
431399 const T zu =
432- positive_part (qpresults.z )
433- .dot (lower_than (qpmodel.u , helpers::infinite_bound<T>::value ()));
400+ helpers:: positive_part (qpresults.z )
401+ .dot (helpers:: lower_than (qpmodel.u , helpers::infinite_bound<T>::value ()));
434402 rhs_duality_gap = std::max (rhs_duality_gap, std::abs (zu));
435403 duality_gap += zu;
436404
437- const T zl =
438- negative_part (qpresults. z )
439- . dot ( greater_than ( qpmodel.l , -helpers::infinite_bound<T>::value ()));
405+ const T zl = helpers::negative_part (qpresults. z )
406+ . dot ( helpers::greater_than (
407+ qpmodel.l , -helpers::infinite_bound<T>::value ()));
440408 rhs_duality_gap = std::max (rhs_duality_gap, std::abs (zl));
441409 duality_gap += zl;
442410
0 commit comments