Lines Matching refs:im

198     void initFrancisQRStep(Index il, Index iu, const Vector3s& shiftInfo, Index& im, Vector3s& firstHouseholderVector);
199 void performFrancisQRStep(Index il, Index im, Index iu, bool computeU, const Vector3s& firstHouseholderVector, Scalar* workspace);
255 Index im;
256 initFrancisQRStep(il, iu, shiftInfo, im, firstHouseholderVector);
257 performFrancisQRStep(il, im, iu, computeU, firstHouseholderVector, workspace);
375 /** \internal Compute index im at which Francis QR step starts and the first Householder vector. */
377 inline void RealSchur<MatrixType>::initFrancisQRStep(Index il, Index iu, const Vector3s& shiftInfo, Index& im, Vector3s& firstHouseholderVector)
381 for (im = iu-2; im >= il; --im)
383 const Scalar Tmm = m_matT.coeff(im,im);
386 v.coeffRef(0) = (r * s - shiftInfo.coeff(2)) / m_matT.coeff(im+1,im) + m_matT.coeff(im,im+1);
387 v.coeffRef(1) = m_matT.coeff(im+1,im+1) - Tmm - r - s;
388 v.coeffRef(2) = m_matT.coeff(im+2,im+1);
389 if (im == il) {
392 const Scalar lhs = m_matT.coeff(im,im-1) * (internal::abs(v.coeff(1)) + internal::abs(v.coeff(2)));
393 const Scalar rhs = v.coeff(0) * (internal::abs(m_matT.coeff(im-1,im-1)) + internal::abs(Tmm) + internal::abs(m_matT.coeff(im+1,im+1)));
401 /** \internal Perform a Francis QR step involving rows il:iu and columns im:iu. */
403 inline void RealSchur<MatrixType>::performFrancisQRStep(Index il, Index im, Index iu, bool computeU, const Vector3s& firstHouseholderVector, Scalar* workspace)
405 assert(im >= il);
406 assert(im <= iu-2);
410 for (Index k = im; k <= iu-2; ++k)
412 bool firstIteration = (k == im);
454 for (Index i = im+2; i <= iu; ++i)
457 if (i > im+2)