//================================================================================================== /* ROTGEN - Runtime Overlay for Eigen Copyright : CODE RECKONS SPDX-License-Identifier: BSL-1.0 */ //================================================================================================== #include #include #include #include namespace rotgen::tests { template void check_norms_functions(T const& input) { using EigenMatrix = Eigen::Matrix; EigenMatrix ref(input.rows(), input.cols()); prepare([&](auto r, auto c) { return input(r, c); }, ref); TTS_EQUAL(rotgen::norm(input), ref.norm()); TTS_EQUAL(rotgen::squaredNorm(input), ref.squaredNorm()); TTS_EQUAL(rotgen::lpNorm<1>(input), ref.template lpNorm<1>()); TTS_EQUAL(rotgen::lpNorm<2>(input), ref.template lpNorm<2>()); TTS_EQUAL(rotgen::lpNorm(input), ref.template lpNorm()); if constexpr (T::IsVectorAtCompileTime) { EigenMatrix e_norm = ref.normalized(); using mat_t = rotgen::matrix; mat_t norm_ref(input.rows(), input.cols()); prepare([&](auto r, auto c) { return e_norm(r, c); }, norm_ref); TTS_EQUAL(rotgen::normalized(input), norm_ref); auto f_norm = input; rotgen::normalize(f_norm); TTS_EQUAL(f_norm, norm_ref); } } }