10 #ifndef EIGEN_INVERSE_H
11 #define EIGEN_INVERSE_H
15 template<
typename XprType,
typename StorageKind>
class InverseImpl;
19 template<
typename XprType>
21 :
traits<typename XprType::PlainObject>
23 typedef typename XprType::PlainObject PlainObject;
42 template<
typename XprType>
46 typedef typename XprType::StorageIndex StorageIndex;
47 typedef typename XprType::Scalar Scalar;
49 typedef typename internal::remove_all<XprTypeNested>::type XprTypeNestedCleaned;
51 typedef typename internal::remove_all<XprType>::type NestedExpression;
53 explicit EIGEN_DEVICE_FUNC
Inverse(
const XprType &xpr)
57 EIGEN_DEVICE_FUNC
Index rows()
const {
return m_xpr.cols(); }
58 EIGEN_DEVICE_FUNC
Index cols()
const {
return m_xpr.rows(); }
60 EIGEN_DEVICE_FUNC
const XprTypeNestedCleaned& nestedExpression()
const {
return m_xpr; }
67 template<
typename XprType,
typename StorageKind>
73 typedef typename XprType::Scalar Scalar;
77 Scalar coeff(
Index i)
const;
92 template<
typename ArgType>
94 :
public evaluator<typename Inverse<ArgType>::PlainObject>
97 typedef typename InverseType::PlainObject PlainObject;
103 : m_result(inv_xpr.rows(), inv_xpr.cols())
105 ::new (
static_cast<Base*
>(
this))
Base(m_result);
106 internal::call_assignment_no_alias(m_result, inv_xpr);
110 PlainObject m_result;
117 #endif // EIGEN_INVERSE_H