docs: public static double computeTauAndDivideRow( final int blockLength ,
                                                   final DSubmatrixD1 Y ,
                                                   final int row , int colStart , final double max ) {
          final int height = Math.min(blockLength , Y.row1-Y.row0);
  
          final double dataY[] = Y.original.data;
  
          double top=0;
          double norm2 = 0;
  
          int startJ = Y.col0 + colStart - colStart%blockLength;
          colStart = colStart%blockLength;
  
          for( int j = startJ; j < Y.col1; j += blockLength ) {
              int width = Math.min( blockLength , Y.col1 - j );
  
              int index = Y.row0*Y.original.numCols + height*j + row*width;
  
              if( j == startJ ) {
                  index += colStart;
                  // save this value so that the sign can be determined later on
                  top = dataY[index] /= max;
                  norm2 += top*top;
                  index++;
  
                  for( int k = colStart+1; k < width; k++ ) {
                      double val = dataY[index++] /= max;
                      norm2 += val*val;
                  }
              } else {
                  for( int k = 0; k < width; k++ ) {
                      double val = dataY[index++] /= max;
                      norm2 += val*val;
                  }
              }
          }
  
          norm2 = Math.sqrt(norm2);
  
          if( top < 0 )
              norm2 = -norm2;
  
          return norm2;
      }