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