10 #ifndef EIGEN_SELFADJOINTRANK2UPTADE_H 11 #define EIGEN_SELFADJOINTRANK2UPTADE_H 21 template<
typename Scalar,
typename Index,
typename UType,
typename VType,
int UpLo>
24 template<
typename Scalar,
typename Index,
typename UType,
typename VType>
27 static void run(Scalar* mat, Index stride,
const UType& u,
const VType& v,
const Scalar& alpha)
29 const Index
size = u.size();
30 for (Index i=0; i<
size; ++i)
33 (numext::conj(alpha) * numext::conj(u.coeff(i))) * v.tail(size-i)
34 + (alpha * numext::conj(v.coeff(i))) * u.tail(size-i);
39 template<
typename Scalar,
typename Index,
typename UType,
typename VType>
42 static void run(Scalar* mat, Index stride,
const UType& u,
const VType& v,
const Scalar& alpha)
44 const Index
size = u.size();
45 for (Index i=0; i<
size; ++i)
47 (numext::conj(alpha) * numext::conj(u.coeff(i))) * v.head(i+1)
48 + (alpha * numext::conj(v.coeff(i))) * u.head(i+1);
54 CwiseUnaryOp<scalar_conjugate_op<typename traits<T>::Scalar>,T> > {};
58 template<
typename MatrixType,
unsigned int UpLo>
59 template<
typename DerivedU,
typename DerivedV>
64 typedef typename UBlasTraits::DirectLinearAccessType ActualUType;
69 typedef typename VBlasTraits::DirectLinearAccessType ActualVType;
77 Scalar actualAlpha = alpha * UBlasTraits::extractScalarFactor(u.derived())
78 * numext::conj(VBlasTraits::extractScalarFactor(v.derived()));
80 actualAlpha = numext::conj(actualAlpha);
86 ::run(_expression().const_cast_derived().data(),_expression().outerStride(),actualU,actualV,actualAlpha);
93 #endif // EIGEN_SELFADJOINTRANK2UPTADE_H Definition: BlasUtil.h:151
Definition: SelfadjointRank2Update.h:52
A matrix or vector expression mapping an existing array of data.
Definition: Map.h:104
iterative scaling algorithm to equilibrate rows and column norms in matrices
Definition: TestIMU_Common.h:87
const unsigned int RowMajorBit
for a matrix, this means that the storage order is row-major.
Definition: Constants.h:53
detail::size< coerce_list< Ts... >> size
Get the size of a list (number of elements.)
Definition: Size.h:56
View matrix as an upper triangular matrix.
Definition: Constants.h:169
Expression of a selfadjoint matrix from a triangular part of a dense matrix.
Definition: SelfAdjointView.h:53
Definition: SelfadjointRank2Update.h:22
Definition: BandTriangularSolver.h:13
View matrix as a lower triangular matrix.
Definition: Constants.h:167
SelfAdjointView & rankUpdate(const MatrixBase< DerivedU > &u, const MatrixBase< DerivedV > &v, const Scalar &alpha=Scalar(1))
Perform a symmetric rank 2 update of the selfadjoint matrix *this: .
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:48
Definition: ForwardDeclarations.h:17
double Scalar
Common scalar type.
Definition: FlexibleKalmanBase.h:48