Resolve "[API-#2] Pseudo-privatization of rotgen entity member functions"

Closes #18

Co-authored-by: Jules Pénuchot <jules@penuchot.com>

See merge request oss/rotgen!50
This commit is contained in:
Jules Pénuchot 2025-12-17 20:48:00 +01:00 committed by Joel Falcou
parent 6489697c05
commit e151e136d6
52 changed files with 2212 additions and 1556 deletions

View file

@ -10,8 +10,9 @@
#include "unit/common/references.hpp"
#include "unit/tests.hpp"
TTS_CASE_TPL("rowwise API", rotgen::tests::types)<typename T, typename O>(
tts::type<tts::types<T, O>>)
TTS_CASE_TPL("rowwise API", rotgen::tests::types)
<typename T, typename O>(tts::type<tts::types<T, O>>)
{
using eigen_mat_t =
Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic, O::value>;
@ -25,24 +26,25 @@ TTS_CASE_TPL("rowwise API", rotgen::tests::types)<typename T, typename O>(
auto rotgen_rw = rotgen::rowwise(rotgen_mat);
for (rotgen::Index i = 0; i < rotgen_mat.rows(); ++i)
for (rotgen::Index i = 0; i < rows(rotgen_mat); ++i)
TTS_EQUAL(rotgen::sum(rotgen_rw)(i), eigen_ref_rw.sum()(i));
for (rotgen::Index i = 0; i < rotgen_mat.rows(); ++i)
for (rotgen::Index i = 0; i < rows(rotgen_mat); ++i)
TTS_EQUAL(rotgen::mean(rotgen_rw)(i), eigen_ref_rw.mean()(i));
for (rotgen::Index i = 0; i < rotgen_mat.rows(); ++i)
for (rotgen::Index i = 0; i < rows(rotgen_mat); ++i)
TTS_EQUAL(rotgen::prod(rotgen_rw)(i), eigen_ref_rw.prod()(i));
for (rotgen::Index i = 0; i < rotgen_mat.rows(); ++i)
for (rotgen::Index i = 0; i < rows(rotgen_mat); ++i)
TTS_EQUAL(rotgen::maxCoeff(rotgen_rw)(i), eigen_ref_rw.maxCoeff()(i));
for (rotgen::Index i = 0; i < rotgen_mat.rows(); ++i)
for (rotgen::Index i = 0; i < rows(rotgen_mat); ++i)
TTS_EQUAL(rotgen::minCoeff(rotgen_rw)(i), eigen_ref_rw.minCoeff()(i));
for (rotgen::Index i = 0; i < rotgen_mat.rows(); ++i)
for (rotgen::Index i = 0; i < rows(rotgen_mat); ++i)
TTS_EQUAL(rotgen::squaredNorm(rotgen_rw)(i), eigen_ref_rw.squaredNorm()(i));
for (rotgen::Index i = 0; i < rotgen_mat.rows(); ++i)
for (rotgen::Index i = 0; i < rows(rotgen_mat); ++i)
TTS_EQUAL(rotgen::norm(rotgen_rw)(i), eigen_ref_rw.norm()(i));
};
TTS_CASE_TPL("colwise API", rotgen::tests::types)<typename T, typename O>(
tts::type<tts::types<T, O>>)
TTS_CASE_TPL("colwise API", rotgen::tests::types)
<typename T, typename O>(tts::type<tts::types<T, O>>)
{
using eigen_mat_t =
Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic, O::value>;
@ -56,18 +58,18 @@ TTS_CASE_TPL("colwise API", rotgen::tests::types)<typename T, typename O>(
auto rotgen_rw = rotgen::colwise(rotgen_mat);
for (rotgen::Index i = 0; i < rotgen_mat.cols(); ++i)
for (rotgen::Index i = 0; i < cols(rotgen_mat); ++i)
TTS_EQUAL(rotgen::sum(rotgen_rw)(i), eigen_ref_rw.sum()(i));
for (rotgen::Index i = 0; i < rotgen_mat.cols(); ++i)
for (rotgen::Index i = 0; i < cols(rotgen_mat); ++i)
TTS_EQUAL(rotgen::mean(rotgen_rw)(i), eigen_ref_rw.mean()(i));
for (rotgen::Index i = 0; i < rotgen_mat.cols(); ++i)
for (rotgen::Index i = 0; i < cols(rotgen_mat); ++i)
TTS_EQUAL(rotgen::prod(rotgen_rw)(i), eigen_ref_rw.prod()(i));
for (rotgen::Index i = 0; i < rotgen_mat.cols(); ++i)
for (rotgen::Index i = 0; i < cols(rotgen_mat); ++i)
TTS_EQUAL(rotgen::maxCoeff(rotgen_rw)(i), eigen_ref_rw.maxCoeff()(i));
for (rotgen::Index i = 0; i < rotgen_mat.cols(); ++i)
for (rotgen::Index i = 0; i < cols(rotgen_mat); ++i)
TTS_EQUAL(rotgen::minCoeff(rotgen_rw)(i), eigen_ref_rw.minCoeff()(i));
for (rotgen::Index i = 0; i < rotgen_mat.cols(); ++i)
for (rotgen::Index i = 0; i < cols(rotgen_mat); ++i)
TTS_EQUAL(rotgen::squaredNorm(rotgen_rw)(i), eigen_ref_rw.squaredNorm()(i));
for (rotgen::Index i = 0; i < rotgen_mat.cols(); ++i)
for (rotgen::Index i = 0; i < cols(rotgen_mat); ++i)
TTS_EQUAL(rotgen::norm(rotgen_rw)(i), eigen_ref_rw.norm()(i));
};

View file

@ -16,8 +16,8 @@ TTS_CASE_TPL("SVD decomposition - Dynamic case", rotgen::tests::types)
int rank, i = 5;
auto eps = std::numeric_limits<T>::epsilon();
auto m =
rotgen::matrix<T, rotgen::Dynamic, rotgen::Dynamic, O::value>::Random(5, 5);
auto m = rotgen::setRandom<
rotgen::matrix<T, rotgen::Dynamic, rotgen::Dynamic, O::value>>(5, 5);
auto decomp = rotgen::svd(m);
do
@ -55,7 +55,7 @@ TTS_CASE_TPL("SVD decomposition - Static case", rotgen::tests::types)
int rank, i = 5;
auto eps = std::numeric_limits<T>::epsilon();
auto m = rotgen::matrix<T, 5, 5, O::value>::Random();
auto m = rotgen::setRandom<rotgen::matrix<T, 5, 5, O::value>>();
auto decomp = rotgen::svd(m);
do