//================================================================================================== /* ROTGEN - Runtime Overlay for Eigen Copyright : CODE RECKONS SPDX-License-Identifier: BSL-1.0 */ //================================================================================================== #include #include #include #include namespace rotgen::tests { template void check_cwise_functions(const T& input) { using EigenMatrix = Eigen::Matrix; using mat_t = matrix; TTS_WHEN("Unary Cwise operations") { EigenMatrix e_ref(input.rows(), input.cols()); prepare([&](auto r, auto c) { return input(r,c); }, e_ref); mat_t ref(input.rows(), input.cols()); TTS_AND_THEN(".cwiseAbs") { e_ref = e_ref.cwiseAbs(); prepare([&](auto r, auto c) { return e_ref(r,c); }, ref); TTS_EQUAL(input.cwiseAbs(), ref); } TTS_AND_THEN(".cwiseAbs2") { e_ref = e_ref.cwiseAbs2(); prepare([&](auto r, auto c) { return e_ref(r,c); }, ref); TTS_EQUAL(input.cwiseAbs2(), ref); } TTS_AND_THEN(".cwiseInverse") { e_ref = e_ref.cwiseInverse(); prepare([&](auto r, auto c) { return e_ref(r,c); }, ref); TTS_EQUAL(input.cwiseInverse(), ref); } TTS_AND_THEN(".cwiseSqrt") { e_ref = e_ref.cwiseAbs().cwiseSqrt(); auto mat = input.cwiseAbs(); auto proper_input = mat.cwiseSqrt(); for(rotgen::Index r=0;r