protected void createBulge ( int x1 , double p , boolean byAngle ) { double a11 = diag [ x1 ] ; double a22 = diag [ x1 + 1 ] ; double a12 = off [ x1 ] ; double a23 = off [ x1 + 1 ] ; if ( byAngle ) { c = Math . cos ( p ) ; s = Math . sin ( p ) ; c2 = c * c ; s2 = s * s ; cs = c * s ; } else { computeRotation ( a11 - p , a12 ) ; } // multiply the rotator on the top left. diag [ x1 ] = c2 * a11 + 2.0 * cs * a12 + s2 * a22 ; diag [ x1 + 1 ] = c2 * a22 - 2.0 * cs * a12 + s2 * a11 ; off [ x1 ] = a12 * ( c2 - s2 ) + cs * ( a22 - a11 ) ; off [ x1 + 1 ] = c * a23 ; bulge = s * a23 ; if ( Q != null ) updateQ ( x1 , x1 + 1 , c , s ) ; }
Performs a similar transform on A - pI