diff options
Diffstat (limited to 'runtimes/nn/depend/external/eigen/Eigen/src/Core/Inverse.h')
-rw-r--r-- | runtimes/nn/depend/external/eigen/Eigen/src/Core/Inverse.h | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/runtimes/nn/depend/external/eigen/Eigen/src/Core/Inverse.h b/runtimes/nn/depend/external/eigen/Eigen/src/Core/Inverse.h deleted file mode 100644 index b76f0439d..000000000 --- a/runtimes/nn/depend/external/eigen/Eigen/src/Core/Inverse.h +++ /dev/null @@ -1,118 +0,0 @@ -// This file is part of Eigen, a lightweight C++ template library -// for linear algebra. -// -// Copyright (C) 2014 Gael Guennebaud <gael.guennebaud@inria.fr> -// -// This Source Code Form is subject to the terms of the Mozilla -// Public License v. 2.0. If a copy of the MPL was not distributed -// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. - -#ifndef EIGEN_INVERSE_H -#define EIGEN_INVERSE_H - -namespace Eigen { - -template<typename XprType,typename StorageKind> class InverseImpl; - -namespace internal { - -template<typename XprType> -struct traits<Inverse<XprType> > - : traits<typename XprType::PlainObject> -{ - typedef typename XprType::PlainObject PlainObject; - typedef traits<PlainObject> BaseTraits; - enum { - Flags = BaseTraits::Flags & RowMajorBit - }; -}; - -} // end namespace internal - -/** \class Inverse - * - * \brief Expression of the inverse of another expression - * - * \tparam XprType the type of the expression we are taking the inverse - * - * This class represents an abstract expression of A.inverse() - * and most of the time this is the only way it is used. - * - */ -template<typename XprType> -class Inverse : public InverseImpl<XprType,typename internal::traits<XprType>::StorageKind> -{ -public: - typedef typename XprType::StorageIndex StorageIndex; - typedef typename XprType::PlainObject PlainObject; - typedef typename XprType::Scalar Scalar; - typedef typename internal::ref_selector<XprType>::type XprTypeNested; - typedef typename internal::remove_all<XprTypeNested>::type XprTypeNestedCleaned; - typedef typename internal::ref_selector<Inverse>::type Nested; - typedef typename internal::remove_all<XprType>::type NestedExpression; - - explicit EIGEN_DEVICE_FUNC Inverse(const XprType &xpr) - : m_xpr(xpr) - {} - - EIGEN_DEVICE_FUNC Index rows() const { return m_xpr.rows(); } - EIGEN_DEVICE_FUNC Index cols() const { return m_xpr.cols(); } - - EIGEN_DEVICE_FUNC const XprTypeNestedCleaned& nestedExpression() const { return m_xpr; } - -protected: - XprTypeNested m_xpr; -}; - -// Generic API dispatcher -template<typename XprType, typename StorageKind> -class InverseImpl - : public internal::generic_xpr_base<Inverse<XprType> >::type -{ -public: - typedef typename internal::generic_xpr_base<Inverse<XprType> >::type Base; - typedef typename XprType::Scalar Scalar; -private: - - Scalar coeff(Index row, Index col) const; - Scalar coeff(Index i) const; -}; - -namespace internal { - -/** \internal - * \brief Default evaluator for Inverse expression. - * - * This default evaluator for Inverse expression simply evaluate the inverse into a temporary - * by a call to internal::call_assignment_no_alias. - * Therefore, inverse implementers only have to specialize Assignment<Dst,Inverse<...>, ...> for - * there own nested expression. - * - * \sa class Inverse - */ -template<typename ArgType> -struct unary_evaluator<Inverse<ArgType> > - : public evaluator<typename Inverse<ArgType>::PlainObject> -{ - typedef Inverse<ArgType> InverseType; - typedef typename InverseType::PlainObject PlainObject; - typedef evaluator<PlainObject> Base; - - enum { Flags = Base::Flags | EvalBeforeNestingBit }; - - unary_evaluator(const InverseType& inv_xpr) - : m_result(inv_xpr.rows(), inv_xpr.cols()) - { - ::new (static_cast<Base*>(this)) Base(m_result); - internal::call_assignment_no_alias(m_result, inv_xpr); - } - -protected: - PlainObject m_result; -}; - -} // end namespace internal - -} // end namespace Eigen - -#endif // EIGEN_INVERSE_H |