Eigen::SkewSymmetricBase< Derived > Class Template Reference

Base class for skew symmetric matrices and expressions. More...

#include <SkewSymmetricMatrix3.h>

+ Inheritance diagram for Eigen::SkewSymmetricBase< Derived >:

Public Types

enum  {
  RowsAtCompileTime = SkewSymmetricVectorType::SizeAtCompileTime , ColsAtCompileTime = SkewSymmetricVectorType::SizeAtCompileTime , MaxRowsAtCompileTime = SkewSymmetricVectorType::MaxSizeAtCompileTime , MaxColsAtCompileTime = SkewSymmetricVectorType::MaxSizeAtCompileTime ,
  IsVectorAtCompileTime = 0 , Flags = NoPreferredStorageOrderBit
}
 
typedef internal::traits< Derived >::SkewSymmetricVectorType SkewSymmetricVectorType
 
typedef SkewSymmetricVectorType::Scalar Scalar
 
typedef SkewSymmetricVectorType::RealScalar RealScalar
 
typedef internal::traits< Derived >::StorageKind StorageKind
 
typedef internal::traits< Derived >::StorageIndex StorageIndex
 
typedef Matrix< Scalar, RowsAtCompileTime, ColsAtCompileTime, 0, MaxRowsAtCompileTime, MaxColsAtCompileTimeDenseMatrixType
 
typedef DenseMatrixType DenseType
 
typedef SkewSymmetricMatrix3< ScalarPlainObject
 
template<typename OtherDerived >
using SkewSymmetricProductReturnType = SkewSymmetricWrapper< const EIGEN_CWISE_BINARY_RETURN_TYPE(SkewSymmetricVectorType, typename OtherDerived::SkewSymmetricVectorType, product)>
 
using SkewSymmetricScaleReturnType = SkewSymmetricWrapper< const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(SkewSymmetricVectorType, Scalar, product)>
 
using ScaleSkewSymmetricReturnType = SkewSymmetricWrapper< const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar, SkewSymmetricVectorType, product)>
 
template<typename OtherDerived >
using SkewSymmetricSumReturnType = SkewSymmetricWrapper< const EIGEN_CWISE_BINARY_RETURN_TYPE(SkewSymmetricVectorType, typename OtherDerived::SkewSymmetricVectorType, sum)>
 
template<typename OtherDerived >
using SkewSymmetricDifferenceReturnType = SkewSymmetricWrapper< const EIGEN_CWISE_BINARY_RETURN_TYPE(SkewSymmetricVectorType, typename OtherDerived::SkewSymmetricVectorType, difference)>
 
- Public Types inherited from Eigen::EigenBase< Derived >
typedef Eigen::Index Index
 The interface type of indices. More...
 
typedef internal::traits< Derived >::StorageKind StorageKind
 

Public Member Functions

EIGEN_DEVICE_FUNC const Derived & derived () const
 
EIGEN_DEVICE_FUNC Derived & derived ()
 
EIGEN_DEVICE_FUNC DenseMatrixType toDenseMatrix () const
 
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Scalar determinant () const
 
EIGEN_DEVICE_FUNC PlainObject transpose () const
 
EIGEN_DEVICE_FUNC DenseMatrixType exponential () const
 
EIGEN_DEVICE_FUNC const SkewSymmetricVectorTypevector () const
 
EIGEN_DEVICE_FUNC SkewSymmetricVectorTypevector ()
 
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index rows () const
 
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols () const
 
template<typename MatrixDerived >
EIGEN_DEVICE_FUNC Product< Derived, MatrixDerived, LazyProductoperator* (const MatrixBase< MatrixDerived > &matrix) const
 
template<typename MatrixDerived >
EIGEN_DEVICE_FUNC Product< Derived, MatrixDerived, LazyProductoperator* (const SkewSymmetricBase< MatrixDerived > &matrix) const
 
template<typename OtherDerived >
EIGEN_DEVICE_FUNC SkewSymmetricProductReturnType< OtherDerived > wedge (const SkewSymmetricBase< OtherDerived > &other) const
 
EIGEN_DEVICE_FUNC SkewSymmetricScaleReturnType operator* (const Scalar &scalar) const
 
template<typename OtherDerived >
EIGEN_DEVICE_FUNC SkewSymmetricSumReturnType< OtherDerived > operator+ (const SkewSymmetricBase< OtherDerived > &other) const
 
template<typename OtherDerived >
EIGEN_DEVICE_FUNC SkewSymmetricDifferenceReturnType< OtherDerived > operator- (const SkewSymmetricBase< OtherDerived > &other) const
 
- Public Member Functions inherited from Eigen::EigenBase< Derived >
constexpr EIGEN_DEVICE_FUNC Derived & derived ()
 
constexpr EIGEN_DEVICE_FUNC const Derived & derived () const
 
EIGEN_DEVICE_FUNC Derived & const_cast_derived () const
 
EIGEN_DEVICE_FUNC const Derived & const_derived () const
 
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index rows () const EIGEN_NOEXCEPT
 
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols () const EIGEN_NOEXCEPT
 
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index size () const EIGEN_NOEXCEPT
 
template<typename Dest >
EIGEN_DEVICE_FUNC void evalTo (Dest &dst) const
 
template<typename Dest >
EIGEN_DEVICE_FUNC void addTo (Dest &dst) const
 
template<typename Dest >
EIGEN_DEVICE_FUNC void subTo (Dest &dst) const
 
template<typename Dest >
EIGEN_DEVICE_FUNC void applyThisOnTheRight (Dest &dst) const
 
template<typename Dest >
EIGEN_DEVICE_FUNC void applyThisOnTheLeft (Dest &dst) const
 
template<typename Device >
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DeviceWrapper< Derived, Device > device (Device &device)
 
template<typename Device >
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DeviceWrapper< const Derived, Device > device (Device &device) const
 

Friends

EIGEN_DEVICE_FUNC friend ScaleSkewSymmetricReturnType operator* (const Scalar &scalar, const SkewSymmetricBase &other)
 

Detailed Description

template<typename Derived>
class Eigen::SkewSymmetricBase< Derived >

Base class for skew symmetric matrices and expressions.

This is the base class that is inherited by SkewSymmetricMatrix3 and related expression types, which internally use a three vector for storing the entries. SkewSymmetric types always represent square three times three matrices.

This implementations follows class DiagonalMatrix

Template Parameters
Derivedis the derived type, a SkewSymmetricMatrix3 or SkewSymmetricWrapper.
See also
class SkewSymmetricMatrix3, class SkewSymmetricWrapper

Member Typedef Documentation

◆ DenseMatrixType

◆ DenseType

template<typename Derived >
typedef DenseMatrixType Eigen::SkewSymmetricBase< Derived >::DenseType

◆ PlainObject

template<typename Derived >
typedef SkewSymmetricMatrix3<Scalar> Eigen::SkewSymmetricBase< Derived >::PlainObject

◆ RealScalar

template<typename Derived >
typedef SkewSymmetricVectorType::RealScalar Eigen::SkewSymmetricBase< Derived >::RealScalar

◆ Scalar

template<typename Derived >
typedef SkewSymmetricVectorType::Scalar Eigen::SkewSymmetricBase< Derived >::Scalar

◆ ScaleSkewSymmetricReturnType

template<typename Derived >
using Eigen::SkewSymmetricBase< Derived >::ScaleSkewSymmetricReturnType = SkewSymmetricWrapper<const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar, SkewSymmetricVectorType, product)>

◆ SkewSymmetricDifferenceReturnType

template<typename Derived >
template<typename OtherDerived >
using Eigen::SkewSymmetricBase< Derived >::SkewSymmetricDifferenceReturnType = SkewSymmetricWrapper<const EIGEN_CWISE_BINARY_RETURN_TYPE( SkewSymmetricVectorType, typename OtherDerived::SkewSymmetricVectorType, difference)>

◆ SkewSymmetricProductReturnType

template<typename Derived >
template<typename OtherDerived >
using Eigen::SkewSymmetricBase< Derived >::SkewSymmetricProductReturnType = SkewSymmetricWrapper<const EIGEN_CWISE_BINARY_RETURN_TYPE( SkewSymmetricVectorType, typename OtherDerived::SkewSymmetricVectorType, product)>

◆ SkewSymmetricScaleReturnType

◆ SkewSymmetricSumReturnType

template<typename Derived >
template<typename OtherDerived >
using Eigen::SkewSymmetricBase< Derived >::SkewSymmetricSumReturnType = SkewSymmetricWrapper<const EIGEN_CWISE_BINARY_RETURN_TYPE( SkewSymmetricVectorType, typename OtherDerived::SkewSymmetricVectorType, sum)>

◆ SkewSymmetricVectorType

template<typename Derived >
typedef internal::traits<Derived>::SkewSymmetricVectorType Eigen::SkewSymmetricBase< Derived >::SkewSymmetricVectorType

◆ StorageIndex

template<typename Derived >
typedef internal::traits<Derived>::StorageIndex Eigen::SkewSymmetricBase< Derived >::StorageIndex

◆ StorageKind

template<typename Derived >
typedef internal::traits<Derived>::StorageKind Eigen::SkewSymmetricBase< Derived >::StorageKind

Member Enumeration Documentation

◆ anonymous enum

template<typename Derived >
anonymous enum
Enumerator
RowsAtCompileTime 
ColsAtCompileTime 
MaxRowsAtCompileTime 
MaxColsAtCompileTime 
IsVectorAtCompileTime 
Flags 
43  {
44  RowsAtCompileTime = SkewSymmetricVectorType::SizeAtCompileTime,
45  ColsAtCompileTime = SkewSymmetricVectorType::SizeAtCompileTime,
46  MaxRowsAtCompileTime = SkewSymmetricVectorType::MaxSizeAtCompileTime,
47  MaxColsAtCompileTime = SkewSymmetricVectorType::MaxSizeAtCompileTime,
50  };
@ ColsAtCompileTime
Definition: SkewSymmetricMatrix3.h:45
@ MaxColsAtCompileTime
Definition: SkewSymmetricMatrix3.h:47
@ MaxRowsAtCompileTime
Definition: SkewSymmetricMatrix3.h:46
@ RowsAtCompileTime
Definition: SkewSymmetricMatrix3.h:44
@ IsVectorAtCompileTime
Definition: SkewSymmetricMatrix3.h:48
const unsigned int NoPreferredStorageOrderBit
Definition: Constants.h:182
Extend namespace for flags.
Definition: fsi_chan_precond_driver.cc:56

Member Function Documentation

◆ cols()

◆ derived() [1/2]

template<typename Derived >
EIGEN_DEVICE_FUNC Derived& Eigen::SkewSymmetricBase< Derived >::derived ( )
inline
Returns
a const reference to the derived object.
60 { return *static_cast<Derived*>(this); }

◆ derived() [2/2]

template<typename Derived >
EIGEN_DEVICE_FUNC const Derived& Eigen::SkewSymmetricBase< Derived >::derived ( ) const
inline

◆ determinant()

template<typename Derived >
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Scalar Eigen::SkewSymmetricBase< Derived >::determinant ( ) const
inline

Determinant vanishes

69 { return 0; }

◆ exponential()

template<typename Derived >
EIGEN_DEVICE_FUNC DenseMatrixType Eigen::SkewSymmetricBase< Derived >::exponential ( ) const
inline
Returns
the exponential of this matrix using Rodrigues’ formula
75  {
76  DenseMatrixType retVal = DenseMatrixType::Identity();
77  const SkewSymmetricVectorType& v = vector();
78  if (v.isZero()) {
79  return retVal;
80  }
81  const Scalar norm2 = v.squaredNorm();
82  const Scalar norm = numext::sqrt(norm2);
83  retVal += ((((1 - numext::cos(norm)) / norm2) * derived()) * derived()) +
84  (numext::sin(norm) / norm) * derived().toDenseMatrix();
85  return retVal;
86  }
Array< int, Dynamic, 1 > v
Definition: Array_initializer_list_vector_cxx11.cpp:1
SCALAR Scalar
Definition: bench_gemm.cpp:45
EIGEN_DEVICE_FUNC const Derived & derived() const
Definition: SkewSymmetricMatrix3.h:58
internal::traits< Derived >::SkewSymmetricVectorType SkewSymmetricVectorType
Definition: SkewSymmetricMatrix3.h:37
EIGEN_DEVICE_FUNC const SkewSymmetricVectorType & vector() const
Definition: SkewSymmetricMatrix3.h:89
Matrix< Scalar, RowsAtCompileTime, ColsAtCompileTime, 0, MaxRowsAtCompileTime, MaxColsAtCompileTime > DenseMatrixType
Definition: SkewSymmetricMatrix3.h:53
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T cos(const T &x)
Definition: MathFunctions.h:1559
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T sin(const T &x)
Definition: MathFunctions.h:1581
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE float sqrt(const float &x)
Definition: arch/SSE/MathFunctions.h:69

References Eigen::numext::cos(), Eigen::SkewSymmetricBase< Derived >::derived(), Eigen::numext::sin(), Eigen::numext::sqrt(), v, and Eigen::SkewSymmetricBase< Derived >::vector().

◆ operator*() [1/3]

template<typename Derived >
template<typename MatrixDerived >
EIGEN_DEVICE_FUNC Product<Derived, MatrixDerived, LazyProduct> Eigen::SkewSymmetricBase< Derived >::operator* ( const MatrixBase< MatrixDerived > &  matrix) const
inline
Returns
the matrix product of *this by the dense matrix, matrix
101  {
102  return Product<Derived, MatrixDerived, LazyProduct>(derived(), matrix.derived());
103  }
Eigen::Map< Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor >, 0, Eigen::OuterStride<> > matrix(T *data, int rows, int cols, int stride)
Definition: common.h:85

References Eigen::SkewSymmetricBase< Derived >::derived(), and matrix().

◆ operator*() [2/3]

template<typename Derived >
EIGEN_DEVICE_FUNC SkewSymmetricScaleReturnType Eigen::SkewSymmetricBase< Derived >::operator* ( const Scalar scalar) const
inline
Returns
the product of *this by the scalar scalar
128  {
129  return (vector() * scalar).asSkewSymmetric();
130  }

References Eigen::SkewSymmetricBase< Derived >::vector().

◆ operator*() [3/3]

template<typename Derived >
template<typename MatrixDerived >
EIGEN_DEVICE_FUNC Product<Derived, MatrixDerived, LazyProduct> Eigen::SkewSymmetricBase< Derived >::operator* ( const SkewSymmetricBase< MatrixDerived > &  matrix) const
inline
Returns
the matrix product of *this by the skew symmetric matrix, matrix
108  {
109  return Product<Derived, MatrixDerived, LazyProduct>(derived(), matrix.derived());
110  }

References Eigen::SkewSymmetricBase< Derived >::derived(), and matrix().

◆ operator+()

template<typename Derived >
template<typename OtherDerived >
EIGEN_DEVICE_FUNC SkewSymmetricSumReturnType<OtherDerived> Eigen::SkewSymmetricBase< Derived >::operator+ ( const SkewSymmetricBase< OtherDerived > &  other) const
inline
Returns
the sum of *this and the skew symmetric matrix other
148  {
149  return (vector() + other.vector()).asSkewSymmetric();
150  }

References Eigen::SkewSymmetricBase< Derived >::vector().

◆ operator-()

template<typename Derived >
template<typename OtherDerived >
EIGEN_DEVICE_FUNC SkewSymmetricDifferenceReturnType<OtherDerived> Eigen::SkewSymmetricBase< Derived >::operator- ( const SkewSymmetricBase< OtherDerived > &  other) const
inline
Returns
the difference of *this and the skew symmetric matrix other
159  {
160  return (vector() - other.vector()).asSkewSymmetric();
161  }

References Eigen::SkewSymmetricBase< Derived >::vector().

◆ rows()

◆ toDenseMatrix()

template<typename Derived >
EIGEN_DEVICE_FUNC DenseMatrixType Eigen::SkewSymmetricBase< Derived >::toDenseMatrix ( ) const
inline

Constructs a dense matrix from *this. Note, this directly returns a dense matrix type, not an expression.

Returns
A dense matrix, with its entries set from the the derived object.
66 { return derived(); }

References Eigen::SkewSymmetricBase< Derived >::derived().

Referenced by anonymous_namespace{skew_symmetric_matrix3.cpp}::constructors().

◆ transpose()

template<typename Derived >
EIGEN_DEVICE_FUNC PlainObject Eigen::SkewSymmetricBase< Derived >::transpose ( ) const
inline

A.transpose() = -A

72 { return (-vector()).asSkewSymmetric(); }

References Eigen::SkewSymmetricBase< Derived >::vector().

◆ vector() [1/2]

template<typename Derived >
EIGEN_DEVICE_FUNC SkewSymmetricVectorType& Eigen::SkewSymmetricBase< Derived >::vector ( )
inline
Returns
a const reference to the derived object's vector of coefficients.
91 { return derived().vector(); }

References Eigen::SkewSymmetricBase< Derived >::derived().

◆ vector() [2/2]

◆ wedge()

template<typename Derived >
template<typename OtherDerived >
EIGEN_DEVICE_FUNC SkewSymmetricProductReturnType<OtherDerived> Eigen::SkewSymmetricBase< Derived >::wedge ( const SkewSymmetricBase< OtherDerived > &  other) const
inline
Returns
the wedge product of *this by the skew symmetric matrix other A wedge B = AB - BA
120  {
121  return vector().cross(other.vector()).asSkewSymmetric();
122  }

References Eigen::SkewSymmetricBase< Derived >::vector().

Friends And Related Function Documentation

◆ operator*

template<typename Derived >
EIGEN_DEVICE_FUNC friend ScaleSkewSymmetricReturnType operator* ( const Scalar scalar,
const SkewSymmetricBase< Derived > &  other 
)
friend
Returns
the product of a scalar and the skew symmetric matrix other
137  {
138  return (scalar * other.vector()).asSkewSymmetric();
139  }

The documentation for this class was generated from the following file: