Implement normalize and normalized

See merge request oss/rotgen!24
This commit is contained in:
Joel Falcou 2025-09-18 16:25:51 +02:00
parent e7cf89a903
commit 3e2e6f253c
14 changed files with 169 additions and 65 deletions

View file

@ -225,6 +225,13 @@ struct CLASSNAME::payload
//==================================================================================================
// Matrix operations
//==================================================================================================
SOURCENAME CLASSNAME::normalized() const
{
SOURCENAME result;
storage_->apply([&](const auto& blk) { result.storage()->assign(blk.normalized().eval()); });
return result;
}
SOURCENAME CLASSNAME::transpose() const
{
SOURCENAME result;
@ -239,6 +246,13 @@ struct CLASSNAME::payload
return result;
}
SOURCENAME CLASSNAME::adjoint() const
{
SOURCENAME result;
storage_->apply([&](const auto& blk) { result.storage()->assign(blk.adjoint().eval()); });
return result;
}
SOURCENAME CLASSNAME::cwiseAbs() const
{
SOURCENAME result;
@ -267,14 +281,12 @@ struct CLASSNAME::payload
return result;
}
SOURCENAME CLASSNAME::adjoint() const
#if !defined(USE_CONST)
void CLASSNAME::normalize()
{
SOURCENAME result;
storage_->apply([&](const auto& blk) { result.storage()->assign(blk.adjoint().eval()); });
return result;
storage_->apply([](auto& blk) { blk.normalize(); });
}
#if !defined(USE_CONST)
void CLASSNAME::transposeInPlace()
{
storage_->apply([](auto& blk) { blk.transposeInPlace(); });

View file

@ -62,6 +62,13 @@
TYPE CLASSNAME::operator()(Index i, Index j) const { return storage_->data(i,j); }
TYPE CLASSNAME::operator()(Index i) const { return storage_->data.data()[i]; }
SOURCENAME CLASSNAME::normalized() const
{
SOURCENAME result;
result.storage()->assign(storage_->data.normalized().eval());
return result;
}
SOURCENAME CLASSNAME::transpose() const
{
SOURCENAME result;
@ -112,6 +119,11 @@
}
#if !defined(USE_CONST)
void CLASSNAME::normalize()
{
storage_->data.normalize();
}
void CLASSNAME::transposeInPlace()
{
storage_->data.transposeInPlace();

View file

@ -75,12 +75,18 @@ TYPE const& CLASSNAME::operator()(std::size_t index) const { return storage_->da
const TYPE* CLASSNAME::data() const { return storage_->data.data(); }
TYPE* CLASSNAME::data() { return storage_->data.data(); }
CLASSNAME CLASSNAME::normalized() const
{
CLASSNAME result(*this);
result.storage_->data.normalize();
return result;
}
CLASSNAME CLASSNAME::transpose() const
{
CLASSNAME result(*this);
result.storage_->data.transposeInPlace();
return result;
}
CLASSNAME CLASSNAME::conjugate() const
@ -97,6 +103,11 @@ CLASSNAME CLASSNAME::adjoint() const
return result;
}
void CLASSNAME::normalize()
{
storage_->data.normalize();
}
void CLASSNAME::transposeInPlace()
{
storage_->data.transposeInPlace();