//================================================================================================== /* 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(const T& 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); } } }