docs: public static void multTransB(int blockLength ,
                                    DSubmatrixD1 A , DSubmatrixD1 B ,
                                    DSubmatrixD1 C )
      {
          for( int i = A.row0; i < A.row1; i += blockLength ) {
              int heightA = Math.min( blockLength , A.row1 - i );
  
              for( int j = B.row0; j < B.row1; j += blockLength ) {
                  int widthC = Math.min( blockLength , B.row1 - j );
  
                  int indexC = (i-A.row0+C.row0)*C.original.numCols + (j-B.row0+C.col0)*heightA;
  
                  for( int k = A.col0; k < A.col1; k += blockLength ) {
                      int widthA = Math.min( blockLength , A.col1 - k );
  
                      int indexA = i*A.original.numCols + k*heightA;
                      int indexB = j*B.original.numCols + (k-A.col0+B.col0)*widthC;
  
                      if( k == A.col0 )
                          blockMultSetTransB(A.original.data,B.original.data,C.original.data,
                                  indexA,indexB,indexC,heightA,widthA,widthC);
                      else
                          blockMultPlusTransB(A.original.data,B.original.data,C.original.data,
                                  indexA,indexB,indexC,heightA,widthA,widthC);
                  }
              }
          }
      }