Skip to content
Snippets Groups Projects
Commit cbdfd46b authored by Wiebe van Breukelen's avatar Wiebe van Breukelen
Browse files

Merge branch 'fix-radec2lmn-indexing' into 'main'

Fix radec2lmn indexing

See merge request mancini/predict!27
parents 9bb73a49 d425f50c
No related branches found
No related tags found
1 merge request!27Fix radec2lmn indexing
Pipeline #117368 passed
...@@ -184,9 +184,9 @@ void radec2lmn::operator()(Arch, const Direction &reference, const C &ra, ...@@ -184,9 +184,9 @@ void radec2lmn::operator()(Arch, const Direction &reference, const C &ra,
double sin_dec = std::sin(dec[i]); double sin_dec = std::sin(dec[i]);
double cos_dec = std::cos(dec[i]); double cos_dec = std::cos(dec[i]);
lmn(i, 0) = cos_dec * sin_delta_ra; lmn(0, i) = cos_dec * sin_delta_ra;
lmn(i, 1) = sin_dec * cos_dec0 - cos_dec * sin_dec0 * cos_delta_ra; lmn(1, i) = sin_dec * cos_dec0 - cos_dec * sin_dec0 * cos_delta_ra;
lmn(i, 2) = sin_dec * sin_dec0 + cos_dec * cos_dec0 * cos_delta_ra; lmn(2, i) = sin_dec * sin_dec0 + cos_dec * cos_dec0 * cos_delta_ra;
} }
} }
...@@ -197,7 +197,7 @@ inline void Directions::radec2lmn<Directions::computation_strategy::MULTI_SIMD>( ...@@ -197,7 +197,7 @@ inline void Directions::radec2lmn<Directions::computation_strategy::MULTI_SIMD>(
const Direction &reference, xt::xtensor<double, 2> &lmn) { const Direction &reference, xt::xtensor<double, 2> &lmn) {
xt::xtensor<double, 2> lmn_tmp({3, ra.size()}); xt::xtensor<double, 2> lmn_tmp({3, ra.size()});
xsimd::dispatch(xsimd::radec2lmn{})(reference, ra, dec, lmn_tmp, xsimd::dispatch(xsimd::radec2lmn{})(reference, ra, dec, lmn_tmp,
xsimd::aligned_mode()); xsimd::unaligned_mode());
lmn = xt::transpose(lmn_tmp); lmn = xt::transpose(lmn_tmp);
} }
#endif #endif
\ No newline at end of file
...@@ -114,4 +114,31 @@ BOOST_AUTO_TEST_CASE(test_radec_to_lmn_xsimd) { ...@@ -114,4 +114,31 @@ BOOST_AUTO_TEST_CASE(test_radec_to_lmn_xsimd) {
} }
} }
BOOST_AUTO_TEST_CASE(test_radec_to_lmn_xsimd_with_remainder) {
Direction reference(0.2, 0.3);
Direction dir_0(0.1, 0.2);
Direction dir_1(0.2, 0.3);
Direction dir_2(0.3, 0.4);
xt::xtensor<double, 2> lmn_expected({3, 3});
dp3::base::radec2lmn(reference, dir_0, &lmn_expected(0, 0));
dp3::base::radec2lmn(reference, dir_1, &lmn_expected(1, 0));
dp3::base::radec2lmn(reference, dir_2, &lmn_expected(2, 0));
Directions directions;
directions.add(dir_0);
directions.add(dir_1);
directions.add(dir_2);
xt::xtensor<double, 2> lmn_actual({3, 3});
directions.radec2lmn<Directions::computation_strategy::MULTI_SIMD>(
reference, lmn_actual);
for (size_t i; i < 3; ++i) {
BOOST_CHECK_CLOSE(lmn_expected(i, 0), lmn_actual(i, 0), 1.e-6);
BOOST_CHECK_CLOSE(lmn_expected(i, 1), lmn_actual(i, 1), 1.e-6);
BOOST_CHECK_CLOSE(lmn_expected(i, 2), lmn_actual(i, 2), 1.e-6);
}
}
BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment