void LowerPanel ( DistMatrix<F>& A, DistMatrix<F>& W, DistMatrix<F,MD,STAR>& t, DistMatrix<F,MC,STAR>& B_MC_STAR, DistMatrix<F,MR,STAR>& B_MR_STAR, DistMatrix<F,MC,STAR>& W_MC_STAR, DistMatrix<F,MR,STAR>& W_MR_STAR, const SymvCtrl<F>& ctrl ) { DEBUG_CSE const Int n = A.Height(); const Int nW = W.Width(); DEBUG_ONLY( AssertSameGrids( A, W, t ); if( n != A.Width() ) LogicError("A must be square"); if( n != W.Height() ) LogicError("A and W must be the same height"); if( n <= nW ) LogicError("W must be a column panel"); if( W.ColAlign() != A.ColAlign() || W.RowAlign() != A.RowAlign() ) LogicError("W and A must be aligned"); if( t.Height() != nW || t.Width() != 1 ) LogicError ("t must be a column vector of the same length as W's width"); if( !A.DiagonalAlignedWith(t,-1) ) LogicError("t is not aligned with A's subdiagonal."); )
void LPan ( DistMatrix<F>& A, DistMatrix<F>& W, DistMatrix<F,MD,STAR>& t, DistMatrix<F,MC,STAR>& APan_MC_STAR, DistMatrix<F,MR,STAR>& APan_MR_STAR, DistMatrix<F,MC,STAR>& W_MC_STAR, DistMatrix<F,MR,STAR>& W_MR_STAR ) { const Int n = A.Height(); const Int nW = W.Width(); DEBUG_ONLY( CallStackEntry cse("herm_tridiag::LPan"); AssertSameGrids( A, W, t ); if( n != A.Width() ) LogicError("A must be square"); if( n != W.Height() ) LogicError("A and W must be the same height"); if( n <= nW ) LogicError("W must be a column panel"); if( W.ColAlign() != A.ColAlign() || W.RowAlign() != A.RowAlign() ) LogicError("W and A must be aligned"); if( t.Height() != nW || t.Width() != 1 ) LogicError ("t must be a column vector of the same length as W's width"); if( !A.DiagonalAlignedWith(t,-1) ) LogicError("t is not aligned with A's subdiagonal."); )