Skip to content

Commit d3d23dd

Browse files
authored
Merge pull request #450 from jberg5/fix-equality-comparison
Issue 449: fix various equality comparisons
2 parents b6e45b9 + bffb070 commit d3d23dd

4 files changed

Lines changed: 17 additions & 5 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
2424
- Fix -Wdeprecated-literal-operator warning ([#420](https://github.com/Simple-Robotics/proxsuite/pull/420))
2525
- Fix compilation error with Apple Clang compiler ([#431](https://github.com/Simple-Robotics/proxsuite/pull/431))
2626
- Fix `settings.primal_infeasibility_solving` documentation ([#438](https://github.com/Simple-Robotics/proxsuite/pull/438))
27+
- Various fixes for equality comparisons for `Results` and `Settings` objects ([#450]https://github.com/Simple-Robotics/proxsuite/pull/450)
2728

2829
### Removed
2930
- Don't release PyPy package on GNU/Linux anymore ([#403](https://github.com/Simple-Robotics/proxsuite/pull/403))

bindings/python/src/expose-results.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ exposeResults(nanobind::module_ m)
5757
&Info<T>::minimal_H_eigenvalue_estimate,
5858
"By default it equals 0, in order to get an estimate, set "
5959
"appropriately the setting option "
60-
"find_H_minimal_eigenvalue.");
60+
"find_H_minimal_eigenvalue.")
61+
.def(nanobind::self == nanobind::self)
62+
.def(nanobind::self != nanobind::self);
6163

6264
::nanobind::class_<Results<T>>(m, "Results")
6365
.def(::nanobind::init<isize, isize, isize>(),

include/proxsuite/proxqp/results.hpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#ifndef PROXSUITE_PROXQP_RESULTS_HPP
88
#define PROXSUITE_PROXQP_RESULTS_HPP
99

10+
#include <algorithm>
1011
#include <proxsuite/helpers/optional.hpp>
1112
#include <Eigen/Core>
1213
#include <proxsuite/linalg/veg/type_traits/core.hpp>
@@ -218,7 +219,8 @@ operator==(const Info<T>& info1, const Info<T>& info2)
218219
info1.solve_time == info2.solve_time && info1.run_time == info2.run_time &&
219220
info1.objValue == info2.objValue && info1.pri_res == info2.pri_res &&
220221
info1.dua_res == info2.dua_res && info1.duality_gap == info2.duality_gap &&
221-
info1.duality_gap == info2.duality_gap &&
222+
info1.iterative_residual == info2.iterative_residual &&
223+
info1.sparse_backend == info2.sparse_backend &&
222224
info1.minimal_H_eigenvalue_estimate == info2.minimal_H_eigenvalue_estimate;
223225
return value;
224226
}
@@ -235,7 +237,14 @@ bool
235237
operator==(const Results<T>& results1, const Results<T>& results2)
236238
{
237239
bool value = results1.x == results2.x && results1.y == results2.y &&
238-
results1.z == results2.z && results1.info == results2.info;
240+
results1.z == results2.z && results1.se == results2.se &&
241+
results1.si == results2.si && results1.info == results2.info;
242+
if (value) {
243+
auto const& ac1 = results1.active_constraints;
244+
auto const& ac2 = results2.active_constraints;
245+
value = ac1.len() == ac2.len() &&
246+
std::equal(ac1.ptr(), ac1.ptr() + ac1.len(), ac2.ptr());
247+
}
239248
return value;
240249
}
241250

include/proxsuite/proxqp/settings.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ operator==(const Settings<T>& settings1, const Settings<T>& settings2)
324324
settings1.default_mu_eq == settings2.default_mu_eq &&
325325
settings1.default_mu_in == settings2.default_mu_in &&
326326
settings1.alpha_bcl == settings2.alpha_bcl &&
327-
settings1.alpha_bcl == settings2.alpha_bcl &&
327+
settings1.beta_bcl == settings2.beta_bcl &&
328328
settings1.refactor_dual_feasibility_threshold ==
329329
settings2.refactor_dual_feasibility_threshold &&
330330
settings1.refactor_rho_threshold == settings2.refactor_rho_threshold &&
@@ -333,7 +333,7 @@ operator==(const Settings<T>& settings1, const Settings<T>& settings2)
333333
settings1.mu_max_eq_inv == settings2.mu_max_eq_inv &&
334334
settings1.mu_max_in_inv == settings2.mu_max_in_inv &&
335335
settings1.mu_update_factor == settings2.mu_update_factor &&
336-
settings1.mu_update_factor == settings2.mu_update_factor &&
336+
settings1.mu_update_inv_factor == settings2.mu_update_inv_factor &&
337337
settings1.cold_reset_mu_eq == settings2.cold_reset_mu_eq &&
338338
settings1.cold_reset_mu_in == settings2.cold_reset_mu_in &&
339339
settings1.cold_reset_mu_eq_inv == settings2.cold_reset_mu_eq_inv &&

0 commit comments

Comments
 (0)