docs: public static void computeW_row(final int blockLength ,
                                      final DSubmatrixD1 Y , final DSubmatrixD1 W ,
                                      final double beta[] , int betaIndex ) {
  
          final int heightY = Y.row1-Y.row0;
          CommonOps_DDRM.fill(W.original, 0);
  
          // W = -beta*v(1)
          BlockHouseHolder_DDRB.scale_row(blockLength,Y,W,0,1,-beta[betaIndex++]);
  
          final int min = Math.min(heightY,W.col1-W.col0);
  
          // set up rest of the rows
          for( int i = 1; i < min; i++ ) {
              // w=-beta*(I + W*Y^T)*u
              double b = -beta[betaIndex++];
  
              // w = w -beta*W*(Y^T*u)
              for( int j = 0; j < i; j++ ) {
                  double yv = BlockHouseHolder_DDRB.innerProdRow(blockLength,Y,i,Y,j,1);
                  VectorOps_DDRB.add_row(blockLength,W,i,1,W,j,b*yv,W,i,1,Y.col1-Y.col0);
              }
  
              //w=w -beta*u + stuff above
              BlockHouseHolder_DDRB.add_row(blockLength,Y,i,b,W,i,1,W,i,1,Y.col1-Y.col0);
          }
      }