diff options
author | Benoit Jacob <jacob.benoit.1@gmail.com> | 2010-03-08 12:37:04 -0500 |
---|---|---|
committer | Benoit Jacob <jacob.benoit.1@gmail.com> | 2010-03-08 12:37:04 -0500 |
commit | 89343a38afab4c2a677614eb928881040b763941 (patch) | |
tree | 60b9cb66d2a0491870c5681c84e5741d773d6605 /Eigen/src/Core/VectorBlock.h | |
parent | 4293a4d1af0221ae4a9b19e28d118951ff56400b (diff) |
* Fix #97 : Householder operations on 1x1 matrices
* Fix VectorBlock on 1x1 "vectors"
* remove useless makeTrivialHouseholder function
Diffstat (limited to 'Eigen/src/Core/VectorBlock.h')
-rw-r--r-- | Eigen/src/Core/VectorBlock.h | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/Eigen/src/Core/VectorBlock.h b/Eigen/src/Core/VectorBlock.h index 5bb7fd35d..94b56f321 100644 --- a/Eigen/src/Core/VectorBlock.h +++ b/Eigen/src/Core/VectorBlock.h @@ -59,20 +59,33 @@ template<typename VectorType, int Size> struct ei_traits<VectorBlock<VectorType, Size> > : public ei_traits<Block<VectorType, ei_traits<VectorType>::RowsAtCompileTime==1 ? 1 : Size, - ei_traits<VectorType>::ColsAtCompileTime==1 ? 1 : Size> > + ei_traits<VectorType>::ColsAtCompileTime==1 + // handle the 1x1 case. Taking a dynamic-sized vectorblock in a 1x1 xpr. + // example: when doing HouseholderQR<Matrix<float,1,1> >. + && ei_traits<VectorType>::RowsAtCompileTime!=1 + ? 1 : Size> > { }; template<typename VectorType, int Size> class VectorBlock : public Block<VectorType, ei_traits<VectorType>::RowsAtCompileTime==1 ? 1 : Size, - ei_traits<VectorType>::ColsAtCompileTime==1 ? 1 : Size> + ei_traits<VectorType>::ColsAtCompileTime==1 + // handle the 1x1 case. Taking a dynamic-sized vectorblock in a 1x1 xpr. + // example: when doing HouseholderQR<Matrix<float,1,1> >. + && ei_traits<VectorType>::RowsAtCompileTime!=1 + ? 1 : Size> { typedef Block<VectorType, ei_traits<VectorType>::RowsAtCompileTime==1 ? 1 : Size, - ei_traits<VectorType>::ColsAtCompileTime==1 ? 1 : Size> Base; + ei_traits<VectorType>::ColsAtCompileTime==1 + // handle the 1x1 case. Taking a dynamic-sized vectorblock in a 1x1 xpr. + // example: when doing HouseholderQR<Matrix<float,1,1> >. + && ei_traits<VectorType>::RowsAtCompileTime!=1 + ? 1 : Size + > Base; enum { - IsColVector = ei_traits<VectorType>::ColsAtCompileTime==1 + IsColVector = ei_traits<VectorType>::ColsAtCompileTime==1 && ei_traits<VectorType>::RowsAtCompileTime!=1 }; public: EIGEN_DENSE_PUBLIC_INTERFACE(VectorBlock) |