//================================================================================================== /* ROTGEN - Runtime Overlay for Eigen Copyright : CODE RECKONS SPDX-License-Identifier: BSL-1.0 */ //================================================================================================== #include #include "unit/tests.hpp" TTS_CASE_TPL("rowwise API", rotgen::tests::types)( tts::type>) { using eigen_mat_t = Eigen::Matrix; eigen_mat_t eigen_ref = eigen_mat_t::Random(4, 4); auto eigen_ref_rw = eigen_ref.rowwise(); rotgen::matrix rotgen_mat(4, 4); rotgen::tests::prepare([&](auto r, auto c) { return eigen_ref(r, c); }, rotgen_mat); auto rotgen_rw = rotgen::rowwise(rotgen_mat); for (rotgen::Index i = 0; i < rotgen_mat.rows(); ++i) TTS_EQUAL(rotgen::sum(rotgen_rw)(i), eigen_ref_rw.sum()(i)); for (rotgen::Index i = 0; i < rotgen_mat.rows(); ++i) TTS_EQUAL(rotgen::mean(rotgen_rw)(i), eigen_ref_rw.mean()(i)); for (rotgen::Index i = 0; i < rotgen_mat.rows(); ++i) TTS_EQUAL(rotgen::prod(rotgen_rw)(i), eigen_ref_rw.prod()(i)); for (rotgen::Index i = 0; i < rotgen_mat.rows(); ++i) TTS_EQUAL(rotgen::maxCoeff(rotgen_rw)(i), eigen_ref_rw.maxCoeff()(i)); for (rotgen::Index i = 0; i < rotgen_mat.rows(); ++i) TTS_EQUAL(rotgen::minCoeff(rotgen_rw)(i), eigen_ref_rw.minCoeff()(i)); for (rotgen::Index i = 0; i < rotgen_mat.rows(); ++i) TTS_EQUAL(rotgen::squaredNorm(rotgen_rw)(i), eigen_ref_rw.squaredNorm()(i)); for (rotgen::Index i = 0; i < rotgen_mat.rows(); ++i) TTS_EQUAL(rotgen::norm(rotgen_rw)(i), eigen_ref_rw.norm()(i)); }; TTS_CASE_TPL("colwise API", rotgen::tests::types)( tts::type>) { using eigen_mat_t = Eigen::Matrix; eigen_mat_t eigen_ref = eigen_mat_t::Random(4, 4); auto eigen_ref_rw = eigen_ref.colwise(); rotgen::matrix rotgen_mat(4, 4); rotgen::tests::prepare([&](auto r, auto c) { return eigen_ref(r, c); }, rotgen_mat); auto rotgen_rw = rotgen::colwise(rotgen_mat); for (rotgen::Index i = 0; i < rotgen_mat.cols(); ++i) TTS_EQUAL(rotgen::sum(rotgen_rw)(i), eigen_ref_rw.sum()(i)); for (rotgen::Index i = 0; i < rotgen_mat.cols(); ++i) TTS_EQUAL(rotgen::mean(rotgen_rw)(i), eigen_ref_rw.mean()(i)); for (rotgen::Index i = 0; i < rotgen_mat.cols(); ++i) TTS_EQUAL(rotgen::prod(rotgen_rw)(i), eigen_ref_rw.prod()(i)); for (rotgen::Index i = 0; i < rotgen_mat.cols(); ++i) TTS_EQUAL(rotgen::maxCoeff(rotgen_rw)(i), eigen_ref_rw.maxCoeff()(i)); for (rotgen::Index i = 0; i < rotgen_mat.cols(); ++i) TTS_EQUAL(rotgen::minCoeff(rotgen_rw)(i), eigen_ref_rw.minCoeff()(i)); for (rotgen::Index i = 0; i < rotgen_mat.cols(); ++i) TTS_EQUAL(rotgen::squaredNorm(rotgen_rw)(i), eigen_ref_rw.squaredNorm()(i)); for (rotgen::Index i = 0; i < rotgen_mat.cols(); ++i) TTS_EQUAL(rotgen::norm(rotgen_rw)(i), eigen_ref_rw.norm()(i)); };