code: 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);
      }
docs: Performs a similar transform on A-pI