aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/SVD/UpperBidiagonalization.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2017-06-09 15:45:49 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2017-06-09 15:45:49 +0200
commit731c8c704df3c2a2f5872be712a12821e4acd869 (patch)
treed2f836b05554e972871086294adc858c6b06ae89 /Eigen/src/SVD/UpperBidiagonalization.h
parent1bbcf19029ea3ac5493c3511807daa53fcde9e90 (diff)
bug #1403: more scalar conversions fixes in BDCSVD
Diffstat (limited to 'Eigen/src/SVD/UpperBidiagonalization.h')
-rw-r--r--Eigen/src/SVD/UpperBidiagonalization.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/Eigen/src/SVD/UpperBidiagonalization.h b/Eigen/src/SVD/UpperBidiagonalization.h
index 0b1460894..11ac847e1 100644
--- a/Eigen/src/SVD/UpperBidiagonalization.h
+++ b/Eigen/src/SVD/UpperBidiagonalization.h
@@ -159,6 +159,8 @@ void upperbidiagonalization_blocked_helper(MatrixType& A,
traits<MatrixType>::Flags & RowMajorBit> > Y)
{
typedef typename MatrixType::Scalar Scalar;
+ typedef typename MatrixType::RealScalar RealScalar;
+ typedef typename NumTraits<RealScalar>::Literal Literal;
enum { StorageOrder = traits<MatrixType>::Flags & RowMajorBit };
typedef InnerStride<int(StorageOrder) == int(ColMajor) ? 1 : Dynamic> ColInnerStride;
typedef InnerStride<int(StorageOrder) == int(ColMajor) ? Dynamic : 1> RowInnerStride;
@@ -263,7 +265,7 @@ void upperbidiagonalization_blocked_helper(MatrixType& A,
SubMatType A10( A.block(bs,0, brows-bs,bs) );
SubMatType A01( A.block(0,bs, bs,bcols-bs) );
Scalar tmp = A01(bs-1,0);
- A01(bs-1,0) = 1;
+ A01(bs-1,0) = Literal(1);
A11.noalias() -= A10 * Y.topLeftCorner(bcols,bs).bottomRows(bcols-bs).adjoint();
A11.noalias() -= X.topLeftCorner(brows,bs).bottomRows(brows-bs) * A01;
A01(bs-1,0) = tmp;