| 165 | template<typename MatrixType, unsigned int Mode> |
| 166 | template<int Side, typename OtherDerived> |
| 167 | void TriangularViewImpl<MatrixType,Mode,Dense>::solveInPlace(const MatrixBase<OtherDerived>& _other) const |
| 168 | { |
| 169 | OtherDerived& other = _other.const_cast_derived(); |
| 170 | eigen_assert( derived().cols() == derived().rows() && ((Side==OnTheLeft && derived().cols() == other.rows()) || (Side==OnTheRight && derived().cols() == other.cols())) ); |
| 171 | eigen_assert((!(Mode & ZeroDiag)) && bool(Mode & (Upper|Lower))); |
| 172 | |
| 173 | enum { copy = (internal::traits<OtherDerived>::Flags & RowMajorBit) && OtherDerived::IsVectorAtCompileTime && OtherDerived::SizeAtCompileTime!=1}; |
| 174 | typedef typename internal::conditional<copy, |
| 175 | typename internal::plain_matrix_type_column_major<OtherDerived>::type, OtherDerived&>::type OtherCopy; |
| 176 | OtherCopy otherCopy(other); |
| 177 | |
| 178 | internal::triangular_solver_selector<MatrixType, typename internal::remove_reference<OtherCopy>::type, |
| 179 | Side, Mode>::run(derived().nestedExpression(), otherCopy); |
| 180 | |
| 181 | if (copy) |
| 182 | other = otherCopy; |
| 183 | } |
| 184 | |
| 185 | template<typename Derived, unsigned int Mode> |
| 186 | template<int Side, typename Other> |
no test coverage detected