code: protected void updateRotator(DMatrixRMaj Q , int m, int n, double c, double s) {
          int rowA = m*Q.numCols;
          int rowB = n*Q.numCols;
  
  //        for( int i = 0; i < Q.numCols; i++ ) {
  //            double a = Q.get(rowA+i);
  //            double b = Q.get(rowB+i);
  //            Q.set( rowA+i, c*a + s*b);
  //            Q.set( rowB+i, -s*a + c*b);
  //        }
  //        System.out.println("------ AFter Update Rotator "+m+" "+n);
  //        Q.print();
  //        System.out.println();
          int endA = rowA + Q.numCols;
          for( ; rowA != endA; rowA++ , rowB++ ) {
              double a = Q.get(rowA);
              double b = Q.get(rowB);
              Q.set(rowA, c*a + s*b);
              Q.set(rowB, -s*a + c*b);
          }
      }
docs: Multiplied a transpose orthogonal matrix Q by the specified rotator.  This is used
  to update the U and V matrices.  Updating the transpose of the matrix is faster
  since it only modifies the rows.
  
  
  @param Q Orthogonal matrix
  @param m Coordinate of rotator.
  @param n Coordinate of rotator.
  @param c cosine of rotator.
  @param s sine of rotator.