aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/VectorBlock.h
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-03-08 12:37:04 -0500
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-03-08 12:37:04 -0500
commit89343a38afab4c2a677614eb928881040b763941 (patch)
tree60b9cb66d2a0491870c5681c84e5741d773d6605 /Eigen/src/Core/VectorBlock.h
parent4293a4d1af0221ae4a9b19e28d118951ff56400b (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.h21
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)