00001 // This file is part of Eigen, a lightweight C++ template library 00002 // for linear algebra. 00003 // 00004 // Copyright (C) 2010 Gael Guennebaud <gael.guennebaud@inria.fr> 00005 // 00006 // This Source Code Form is subject to the terms of the Mozilla 00007 // Public License v. 2.0. If a copy of the MPL was not distributed 00008 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 00009 00010 #ifndef EIGEN_TRIANGULAR_SOLVER2_H 00011 #define EIGEN_TRIANGULAR_SOLVER2_H 00012 00013 namespace Eigen { 00014 00015 const unsigned int UnitDiagBit = UnitDiag; 00016 const unsigned int SelfAdjointBit = SelfAdjoint; 00017 const unsigned int UpperTriangularBit = Upper; 00018 const unsigned int LowerTriangularBit = Lower; 00019 00020 const unsigned int UpperTriangular = Upper; 00021 const unsigned int LowerTriangular = Lower; 00022 const unsigned int UnitUpperTriangular = UnitUpper; 00023 const unsigned int UnitLowerTriangular = UnitLower; 00024 00025 template<typename ExpressionType, unsigned int Added, unsigned int Removed> 00026 template<typename OtherDerived> 00027 typename ExpressionType::PlainObject 00028 Flagged<ExpressionType,Added,Removed>::solveTriangular(const MatrixBase<OtherDerived>& other) const 00029 { 00030 return m_matrix.template triangularView<Added>().solve(other.derived()); 00031 } 00032 00033 template<typename ExpressionType, unsigned int Added, unsigned int Removed> 00034 template<typename OtherDerived> 00035 void Flagged<ExpressionType,Added,Removed>::solveTriangularInPlace(const MatrixBase<OtherDerived>& other) const 00036 { 00037 m_matrix.template triangularView<Added>().solveInPlace(other.derived()); 00038 } 00039 00040 } // end namespace Eigen 00041 00042 #endif // EIGEN_TRIANGULAR_SOLVER2_H