private void pushRight ( int row ) { if ( isOffZero ( row ) ) return ; // B = createB(); // B.print(); rotatorPushRight ( row ) ; int end = N - 2 - row ; for ( int i = 0 ; i < end && bulge != 0 ; i ++ ) { rotatorPushRight2 ( row , i + 2 ) ; } // } }
If there is a zero on the diagonal element the off diagonal element needs pushed off so that all the algorithms assumptions are two and so that it can split the matrix .