From 11ad390da78c5b952666fe60bfc51194df806263 Mon Sep 17 00:00:00 2001 From: Laurynas Jagutis Date: Wed, 21 Feb 2024 14:52:17 +0100 Subject: [PATCH 01/13] change the criterions Signed-off-by: Laurynas Jagutis --- .../include/power_grid_model/index_mapping.hpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp index f2f06f9f8..a89c045bd 100644 --- a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp +++ b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp @@ -126,12 +126,15 @@ inline auto build_dense_mapping_counting_sort(IdxVector const& idx_B_in_A, Idx c } // namespace detail inline DenseIndexMapping build_dense_mapping(IdxVector const& idx_B_in_A, Idx const n_B) { - constexpr auto relative_complexity_prefactor = 1.0; - auto const n_A_ = static_cast(idx_B_in_A.size()); auto const n_B_ = static_cast(n_B); - if (n_A_ + n_B_ < relative_complexity_prefactor * n_A_ * log(n_A_)) { + float a = 251.97501525083325; + float b = -157.37873480423605; + float c = -0.09607294313272485; + float d = -251154.76319178438; + + if (b * n_A_ + a * n_B_ < c * n_A_ * log(n_A_) + d) { return detail::build_dense_mapping_counting_sort(idx_B_in_A, n_B); } return detail::build_dense_mapping_comparison_sort(idx_B_in_A, n_B); From b796be0241335da227167c6382066eb99330a726 Mon Sep 17 00:00:00 2001 From: Laurynas Jagutis Date: Wed, 21 Feb 2024 14:57:39 +0100 Subject: [PATCH 02/13] update the criterions Signed-off-by: Laurynas Jagutis --- .../include/power_grid_model/index_mapping.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp index a89c045bd..492473402 100644 --- a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp +++ b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp @@ -129,10 +129,10 @@ inline DenseIndexMapping build_dense_mapping(IdxVector const& idx_B_in_A, Idx co auto const n_A_ = static_cast(idx_B_in_A.size()); auto const n_B_ = static_cast(n_B); - float a = 251.97501525083325; - float b = -157.37873480423605; - float c = -0.09607294313272485; - float d = -251154.76319178438; + double const a = 251.97501525083325; + double const b = -157.37873480423605; + double const c = -0.09607294313272485; + double const d = -251154.76319178438; if (b * n_A_ + a * n_B_ < c * n_A_ * log(n_A_) + d) { return detail::build_dense_mapping_counting_sort(idx_B_in_A, n_B); From 6461063fa2781cf287912ac50e2de32661cc7681 Mon Sep 17 00:00:00 2001 From: Laurynas Jagutis Date: Tue, 5 Mar 2024 08:44:00 +0100 Subject: [PATCH 03/13] resolve conversations Signed-off-by: Laurynas Jagutis --- .../include/power_grid_model/index_mapping.hpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp index 492473402..1d3518132 100644 --- a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp +++ b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp @@ -129,12 +129,11 @@ inline DenseIndexMapping build_dense_mapping(IdxVector const& idx_B_in_A, Idx co auto const n_A_ = static_cast(idx_B_in_A.size()); auto const n_B_ = static_cast(n_B); - double const a = 251.97501525083325; - double const b = -157.37873480423605; - double const c = -0.09607294313272485; - double const d = -251154.76319178438; + constexpr double a = -0.62458071347; + constexpr double b = -0.00038127964; + constexpr double c = -996.744708763; - if (b * n_A_ + a * n_B_ < c * n_A_ * log(n_A_) + d) { + if (n_A_ < a * n_B_ + b * n_A_ * log(n_A_) + c) { return detail::build_dense_mapping_counting_sort(idx_B_in_A, n_B); } return detail::build_dense_mapping_comparison_sort(idx_B_in_A, n_B); From a53e4cda1520fd054f22bf70b2eaf0c393293bb1 Mon Sep 17 00:00:00 2001 From: Laurynas Jagutis Date: Tue, 5 Mar 2024 09:14:18 +0100 Subject: [PATCH 04/13] fix 1 sonarcloud issue? Signed-off-by: Laurynas Jagutis --- .../include/power_grid_model/index_mapping.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp index 1f0cf8753..39164290b 100644 --- a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp +++ b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp @@ -130,9 +130,9 @@ inline DenseIndexMapping build_dense_mapping(IdxVector const& idx_B_in_A, Idx co constexpr double a = -0.62458071347; constexpr double b = -0.00038127964; - constexpr double c = -996.744708763; + // constexpr double c = -996.744708763; - if (n_A_ < a * n_B_ + b * n_A_ * log(n_A_) + c) { + if (constexpr double c = -996.744708763; n_A_ < a * n_B_ + b * n_A_ * log(n_A_) + c) { return detail::build_dense_mapping_counting_sort(idx_B_in_A, n_B); } return detail::build_dense_mapping_comparison_sort(idx_B_in_A, n_B); From 66f54cda3dd5d877ef794298839db1c046817b58 Mon Sep 17 00:00:00 2001 From: Laurynas Jagutis Date: Tue, 5 Mar 2024 09:44:01 +0100 Subject: [PATCH 05/13] fix sonarcloud issues Signed-off-by: Laurynas Jagutis --- .../include/power_grid_model/index_mapping.hpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp index 39164290b..37c73dc5e 100644 --- a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp +++ b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp @@ -128,11 +128,10 @@ inline DenseIndexMapping build_dense_mapping(IdxVector const& idx_B_in_A, Idx co auto const n_A_ = static_cast(idx_B_in_A.size()); auto const n_B_ = static_cast(n_B); - constexpr double a = -0.62458071347; - constexpr double b = -0.00038127964; - // constexpr double c = -996.744708763; + constexpr double coeff_1 = -0.62458071347; + constexpr double coeff_2 = -0.00038127964; - if (constexpr double c = -996.744708763; n_A_ < a * n_B_ + b * n_A_ * log(n_A_) + c) { + if (constexpr double coeff_3 = -996.744708763; n_A_ < coeff_1 * n_B_ + coeff_2 * n_A_ * log(n_A_) + coeff_3) { return detail::build_dense_mapping_counting_sort(idx_B_in_A, n_B); } return detail::build_dense_mapping_comparison_sort(idx_B_in_A, n_B); From b7ae008746181bbe720afc3473ddb5278b2f3e99 Mon Sep 17 00:00:00 2001 From: Laurynas Jagutis Date: Tue, 5 Mar 2024 11:34:19 +0100 Subject: [PATCH 06/13] setup a struct for index mapping criterion Signed-off-by: Laurynas Jagutis --- .../power_grid_model/index_mapping.hpp | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp index 37c73dc5e..e64a0a2fc 100644 --- a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp +++ b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp @@ -89,7 +89,7 @@ struct DenseIndexMapping { IdxVector reorder; }; -namespace detail { +namespace index_mapping::detail { inline auto build_dense_mapping_comparison_sort(IdxVector const& idx_B_in_A, Idx const /* n_B */) { using DenseEntry = std::pair; @@ -118,23 +118,32 @@ inline auto build_dense_mapping_comparison_sort(IdxVector const& idx_B_in_A, Idx inline auto build_dense_mapping_counting_sort(IdxVector const& idx_B_in_A, Idx const n_B) { auto sparse_result = build_sparse_mapping(idx_B_in_A, n_B); - return DenseIndexMapping{.indvector = sparse_decode(sparse_result.indptr), + return DenseIndexMapping{.indvector = power_grid_model::detail::sparse_decode(sparse_result.indptr), .reorder = std::move(sparse_result.reorder)}; } -} // namespace detail +struct IndexMappingCriterion { + double coeff_1{}; + double coeff_2{}; + double coeff_3{}; -inline DenseIndexMapping build_dense_mapping(IdxVector const& idx_B_in_A, Idx const n_B) { - auto const n_A_ = static_cast(idx_B_in_A.size()); - auto const n_B_ = static_cast(n_B); + constexpr bool operator()(std::integral auto n_A, std::integral auto n_B) const { + auto const n_A_ = static_cast(n_A); + auto const n_B_ = static_cast(n_B); + return n_A < coeff_1 * n_B_ + coeff_2 * n_A_ * log(n_A_) + coeff_3; + } +}; - constexpr double coeff_1 = -0.62458071347; - constexpr double coeff_2 = -0.00038127964; +constexpr IndexMappingCriterion index_mapping_criterion_gcc{ + .coeff_1 = -0.62458071347, .coeff_2 = -0.00038127964, .coeff_3 = -996.744708763}; - if (constexpr double coeff_3 = -996.744708763; n_A_ < coeff_1 * n_B_ + coeff_2 * n_A_ * log(n_A_) + coeff_3) { - return detail::build_dense_mapping_counting_sort(idx_B_in_A, n_B); +} // namespace index_mapping::detail + +inline DenseIndexMapping build_dense_mapping(IdxVector const& idx_B_in_A, Idx const n_B) { + if (index_mapping::detail::index_mapping_criterion_gcc(idx_B_in_A.size(), n_B)) { + return index_mapping::detail::build_dense_mapping_counting_sort(idx_B_in_A, n_B); } - return detail::build_dense_mapping_comparison_sort(idx_B_in_A, n_B); + return index_mapping::detail::build_dense_mapping_comparison_sort(idx_B_in_A, n_B); } } // namespace power_grid_model From e51fb17c10c43847dce4d3621b1d2bfc8d147d20 Mon Sep 17 00:00:00 2001 From: Laurynas Jagutis Date: Wed, 13 Mar 2024 13:48:33 +0100 Subject: [PATCH 07/13] add the if statements for OS Signed-off-by: Laurynas Jagutis --- .../include/power_grid_model/index_mapping.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp index e64a0a2fc..a09a35f48 100644 --- a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp +++ b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp @@ -134,8 +134,13 @@ struct IndexMappingCriterion { } }; +#ifdef _WIND32 constexpr IndexMappingCriterion index_mapping_criterion_gcc{ - .coeff_1 = -0.62458071347, .coeff_2 = -0.00038127964, .coeff_3 = -996.744708763}; + .coeff_1 = -1.4407094632018602, .coeff_2 = 0.060335413266752236, .coeff_3 = -130.95675432669466}; +#else +constexpr IndexMappingCriterion index_mapping_criterion_gcc{ + .coeff_1 = 0.00733595283054587, .coeff_2 = -0.01888288636738604, .coeff_3 = -20.338844396105696}; +#endif } // namespace index_mapping::detail From 8d6cf4715e6c0ccd89cca79472034898221f2cea Mon Sep 17 00:00:00 2001 From: Laurynas Jagutis Date: Wed, 13 Mar 2024 14:07:06 +0100 Subject: [PATCH 08/13] update the if statements for OS Signed-off-by: Laurynas Jagutis --- .../power_grid_model/include/power_grid_model/index_mapping.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp index a09a35f48..8fc967f5b 100644 --- a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp +++ b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp @@ -134,7 +134,7 @@ struct IndexMappingCriterion { } }; -#ifdef _WIND32 +#ifdef _WIN32 constexpr IndexMappingCriterion index_mapping_criterion_gcc{ .coeff_1 = -1.4407094632018602, .coeff_2 = 0.060335413266752236, .coeff_3 = -130.95675432669466}; #else From 5ee2d492c66ca93343bcaea5cb7fe98b28ba1a91 Mon Sep 17 00:00:00 2001 From: Laurynas Jagutis Date: Wed, 13 Mar 2024 14:33:20 +0100 Subject: [PATCH 09/13] update unit test Signed-off-by: Laurynas Jagutis --- tests/cpp_unit_tests/test_index_mapping.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tests/cpp_unit_tests/test_index_mapping.cpp b/tests/cpp_unit_tests/test_index_mapping.cpp index 3da12dfa5..b928ba3ca 100644 --- a/tests/cpp_unit_tests/test_index_mapping.cpp +++ b/tests/cpp_unit_tests/test_index_mapping.cpp @@ -17,7 +17,7 @@ TEST_CASE("Test sparse mapping") { CHECK(mapping.reorder == mapping_2.reorder); } -TEST_CASE("Test dense mapping - counting sort") { +TEST_CASE("Test dense mapping - comparison sort") { IdxVector const idx_B_in_A{3, 5, 2, 1, 1, 2}; DenseIndexMapping const mapping{{1, 1, 2, 2, 3, 5}, {3, 4, 2, 5, 0, 1}}; DenseIndexMapping const mapping_2 = build_dense_mapping(idx_B_in_A, 7); @@ -28,18 +28,21 @@ TEST_CASE("Test dense mapping - counting sort") { CHECK(mapping_2.indvector.end() - 1 == std::ranges::max_element(mapping_2.indvector)); } -TEST_CASE("Test dense mapping - comparison sort") { - constexpr Idx count{1'000'000}; +TEST_CASE("Test dense mapping - counting sort") { + constexpr Idx count{100000}; + double n_B = 1000.0; + + double decrement = n_B / count; IdxVector idx_B_in_A(count); for (Idx i = 0; i < count; ++i) { - idx_B_in_A[i] = count - 1 - i; + idx_B_in_A[i] = n_B - i * decrement; } IdxVector sorted_idx_B_in_A = idx_B_in_A; std::ranges::sort(sorted_idx_B_in_A); - DenseIndexMapping const mapping = build_dense_mapping(idx_B_in_A, count); + DenseIndexMapping const mapping = build_dense_mapping(idx_B_in_A, n_B); CHECK(mapping.indvector == sorted_idx_B_in_A); CHECK(mapping.indvector.begin() == std::ranges::min_element(mapping.indvector)); From 1d32e5dd7b9dd6bab3c4a9605102f39471b09a61 Mon Sep 17 00:00:00 2001 From: Laurynas Jagutis Date: Thu, 14 Mar 2024 12:23:19 +0100 Subject: [PATCH 10/13] final version Signed-off-by: Laurynas Jagutis --- .../power_grid_model/index_mapping.hpp | 10 ++-- tests/cpp_unit_tests/test_index_mapping.cpp | 48 +++++++++++++++---- 2 files changed, 41 insertions(+), 17 deletions(-) diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp index 8fc967f5b..06d1c06a0 100644 --- a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp +++ b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp @@ -130,17 +130,13 @@ struct IndexMappingCriterion { constexpr bool operator()(std::integral auto n_A, std::integral auto n_B) const { auto const n_A_ = static_cast(n_A); auto const n_B_ = static_cast(n_B); - return n_A < coeff_1 * n_B_ + coeff_2 * n_A_ * log(n_A_) + coeff_3; + + return n_B_ < coeff_1 * n_A_ + coeff_2 * n_A_ * log(n_A_) + coeff_3; } }; -#ifdef _WIN32 -constexpr IndexMappingCriterion index_mapping_criterion_gcc{ - .coeff_1 = -1.4407094632018602, .coeff_2 = 0.060335413266752236, .coeff_3 = -130.95675432669466}; -#else constexpr IndexMappingCriterion index_mapping_criterion_gcc{ - .coeff_1 = 0.00733595283054587, .coeff_2 = -0.01888288636738604, .coeff_3 = -20.338844396105696}; -#endif + .coeff_1 = -0.00733595283054587, .coeff_2 = 0.01888288636738604, .coeff_3 = 20.338844396105696}; } // namespace index_mapping::detail diff --git a/tests/cpp_unit_tests/test_index_mapping.cpp b/tests/cpp_unit_tests/test_index_mapping.cpp index b928ba3ca..db391cb58 100644 --- a/tests/cpp_unit_tests/test_index_mapping.cpp +++ b/tests/cpp_unit_tests/test_index_mapping.cpp @@ -18,25 +18,44 @@ TEST_CASE("Test sparse mapping") { } TEST_CASE("Test dense mapping - comparison sort") { - IdxVector const idx_B_in_A{3, 5, 2, 1, 1, 2}; - DenseIndexMapping const mapping{{1, 1, 2, 2, 3, 5}, {3, 4, 2, 5, 0, 1}}; - DenseIndexMapping const mapping_2 = build_dense_mapping(idx_B_in_A, 7); + constexpr Idx count{10}; + double n_B = 100000.0; - CHECK(mapping.indvector == mapping_2.indvector); - CHECK(mapping.reorder == mapping_2.reorder); - CHECK(mapping_2.indvector.begin() == std::ranges::min_element(mapping_2.indvector)); - CHECK(mapping_2.indvector.end() - 1 == std::ranges::max_element(mapping_2.indvector)); + double decrement = n_B / count; + + IdxVector idx_B_in_A(count); + for (Idx i = 0; i < count; ++i) { + idx_B_in_A[i] = n_B - i * decrement; + } + + IdxVector sorted_idx_B_in_A = idx_B_in_A; + std::ranges::sort(sorted_idx_B_in_A); + + DenseIndexMapping const mapping = build_dense_mapping(idx_B_in_A, n_B); + + CHECK(mapping.indvector == sorted_idx_B_in_A); + CHECK(mapping.indvector.begin() == std::ranges::min_element(mapping.indvector)); + CHECK(mapping.indvector.end() - 1 == std::ranges::max_element(mapping.indvector)); +} + +TEST_CASE("Test dense mapping index criterion - comparison sort") { + constexpr Idx count{10}; + constexpr Idx n_B = 100000; + + auto result = index_mapping::detail::index_mapping_criterion_gcc(count, n_B); + + CHECK(result == false); } TEST_CASE("Test dense mapping - counting sort") { - constexpr Idx count{100000}; - double n_B = 1000.0; + constexpr Idx count{1000000}; + double n_B = 10.0; double decrement = n_B / count; IdxVector idx_B_in_A(count); for (Idx i = 0; i < count; ++i) { - idx_B_in_A[i] = n_B - i * decrement; + idx_B_in_A[i] = (n_B - 1) - i * decrement; } IdxVector sorted_idx_B_in_A = idx_B_in_A; @@ -49,4 +68,13 @@ TEST_CASE("Test dense mapping - counting sort") { CHECK(mapping.indvector.end() - 1 == std::ranges::max_element(mapping.indvector)); } +TEST_CASE("Test dense mapping index criterion - counting sort") { + constexpr Idx count{1000000}; + constexpr Idx n_B = 10; + + auto result = index_mapping::detail::index_mapping_criterion_gcc(count, n_B); + + CHECK(result == true); +} + } // namespace power_grid_model From 5b3a91db0509ef0fdee49d0c31b56d583898d81e Mon Sep 17 00:00:00 2001 From: Laurynas Jagutis Date: Thu, 14 Mar 2024 12:29:45 +0100 Subject: [PATCH 11/13] change coefficient names Signed-off-by: Laurynas Jagutis --- .../include/power_grid_model/index_mapping.hpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp index 06d1c06a0..16f336173 100644 --- a/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp +++ b/power_grid_model_c/power_grid_model/include/power_grid_model/index_mapping.hpp @@ -122,21 +122,22 @@ inline auto build_dense_mapping_counting_sort(IdxVector const& idx_B_in_A, Idx c .reorder = std::move(sparse_result.reorder)}; } -struct IndexMappingCriterion { - double coeff_1{}; - double coeff_2{}; - double coeff_3{}; +struct IndexMappingApproachCriterion { + double n_a_prefactor{}; + double n_a_log_n_a_prefactor{}; + double constant{}; constexpr bool operator()(std::integral auto n_A, std::integral auto n_B) const { auto const n_A_ = static_cast(n_A); auto const n_B_ = static_cast(n_B); - return n_B_ < coeff_1 * n_A_ + coeff_2 * n_A_ * log(n_A_) + coeff_3; + return n_B_ < n_a_prefactor * n_A_ + n_a_log_n_a_prefactor * n_A_ * log(n_A_) + constant; } }; -constexpr IndexMappingCriterion index_mapping_criterion_gcc{ - .coeff_1 = -0.00733595283054587, .coeff_2 = 0.01888288636738604, .coeff_3 = 20.338844396105696}; +constexpr IndexMappingApproachCriterion index_mapping_criterion_gcc{.n_a_prefactor = -0.00733595283054587, + .n_a_log_n_a_prefactor = 0.01888288636738604, + .constant = 20.338844396105696}; } // namespace index_mapping::detail From 6ca83de1ece443109b2dee79cc824a1cae381940 Mon Sep 17 00:00:00 2001 From: Laurynas Jagutis Date: Fri, 15 Mar 2024 08:19:08 +0100 Subject: [PATCH 12/13] code smells Signed-off-by: Laurynas Jagutis --- tests/cpp_unit_tests/test_index_mapping.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/cpp_unit_tests/test_index_mapping.cpp b/tests/cpp_unit_tests/test_index_mapping.cpp index db391cb58..12e6d6b76 100644 --- a/tests/cpp_unit_tests/test_index_mapping.cpp +++ b/tests/cpp_unit_tests/test_index_mapping.cpp @@ -19,13 +19,13 @@ TEST_CASE("Test sparse mapping") { TEST_CASE("Test dense mapping - comparison sort") { constexpr Idx count{10}; - double n_B = 100000.0; + constexpr Idx n_B = 100000; - double decrement = n_B / count; + double decrement = static_cast(n_B) / count; IdxVector idx_B_in_A(count); for (Idx i = 0; i < count; ++i) { - idx_B_in_A[i] = n_B - i * decrement; + idx_B_in_A[i] = static_cast(n_B - i * decrement); } IdxVector sorted_idx_B_in_A = idx_B_in_A; @@ -49,13 +49,13 @@ TEST_CASE("Test dense mapping index criterion - comparison sort") { TEST_CASE("Test dense mapping - counting sort") { constexpr Idx count{1000000}; - double n_B = 10.0; + constexpr Idx n_B = 10; - double decrement = n_B / count; + double decrement = static_cast(n_B) / count; IdxVector idx_B_in_A(count); for (Idx i = 0; i < count; ++i) { - idx_B_in_A[i] = (n_B - 1) - i * decrement; + idx_B_in_A[i] = static_cast((n_B - 1) - i * decrement); } IdxVector sorted_idx_B_in_A = idx_B_in_A; From 03e60d5f15f3282c3d5fb257f551ed98ef534cb7 Mon Sep 17 00:00:00 2001 From: Martijn Govers Date: Fri, 15 Mar 2024 11:31:01 +0100 Subject: [PATCH 13/13] fix sonar cloud Signed-off-by: Martijn Govers --- tests/cpp_unit_tests/test_index_mapping.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/cpp_unit_tests/test_index_mapping.cpp b/tests/cpp_unit_tests/test_index_mapping.cpp index 12e6d6b76..3cd5944e0 100644 --- a/tests/cpp_unit_tests/test_index_mapping.cpp +++ b/tests/cpp_unit_tests/test_index_mapping.cpp @@ -25,7 +25,7 @@ TEST_CASE("Test dense mapping - comparison sort") { IdxVector idx_B_in_A(count); for (Idx i = 0; i < count; ++i) { - idx_B_in_A[i] = static_cast(n_B - i * decrement); + idx_B_in_A[i] = static_cast(static_cast(n_B) - static_cast(i) * decrement); } IdxVector sorted_idx_B_in_A = idx_B_in_A; @@ -55,7 +55,7 @@ TEST_CASE("Test dense mapping - counting sort") { IdxVector idx_B_in_A(count); for (Idx i = 0; i < count; ++i) { - idx_B_in_A[i] = static_cast((n_B - 1) - i * decrement); + idx_B_in_A[i] = static_cast(static_cast(n_B - 1) - static_cast(i) * decrement); } IdxVector sorted_idx_B_in_A = idx_B_in_A;