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 // Eigen is free software; you can redistribute it and/or 00007 // modify it under the terms of the GNU Lesser General Public 00008 // License as published by the Free Software Foundation; either 00009 // version 3 of the License, or (at your option) any later version. 00010 // 00011 // Alternatively, you can redistribute it and/or 00012 // modify it under the terms of the GNU General Public License as 00013 // published by the Free Software Foundation; either version 2 of 00014 // the License, or (at your option) any later version. 00015 // 00016 // Eigen is distributed in the hope that it will be useful, but WITHOUT ANY 00017 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00018 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the 00019 // GNU General Public License for more details. 00020 // 00021 // You should have received a copy of the GNU Lesser General Public 00022 // License and a copy of the GNU General Public License along with 00023 // Eigen. If not, see <http://www.gnu.org/licenses/>. 00024 00025 #ifndef EIGEN_TRIANGULAR_SOLVER2_H 00026 #define EIGEN_TRIANGULAR_SOLVER2_H 00027 00028 const unsigned int UnitDiagBit = UnitDiag; 00029 const unsigned int SelfAdjointBit = SelfAdjoint; 00030 const unsigned int UpperTriangularBit = Upper; 00031 const unsigned int LowerTriangularBit = Lower; 00032 00033 const unsigned int UpperTriangular = Upper; 00034 const unsigned int LowerTriangular = Lower; 00035 const unsigned int UnitUpperTriangular = UnitUpper; 00036 const unsigned int UnitLowerTriangular = UnitLower; 00037 00038 template<typename ExpressionType, unsigned int Added, unsigned int Removed> 00039 template<typename OtherDerived> 00040 typename ExpressionType::PlainObject 00041 Flagged<ExpressionType,Added,Removed>::solveTriangular(const MatrixBase<OtherDerived>& other) const 00042 { 00043 return m_matrix.template triangularView<Added>().solve(other.derived()); 00044 } 00045 00046 template<typename ExpressionType, unsigned int Added, unsigned int Removed> 00047 template<typename OtherDerived> 00048 void Flagged<ExpressionType,Added,Removed>::solveTriangularInPlace(const MatrixBase<OtherDerived>& other) const 00049 { 00050 m_matrix.template triangularView<Added>().solveInPlace(other.derived()); 00051 } 00052 00053 #endif // EIGEN_TRIANGULAR_SOLVER2_H