code: public static void mult(DMatrixRBlock A , DMatrixRBlock B , DMatrixRBlock C )
      {
          if( A.numCols != B.numRows )
              throw new IllegalArgumentException("Columns in A are incompatible with rows in B");
          if( A.numRows != C.numRows )
              throw new IllegalArgumentException("Rows in A are incompatible with rows in C");
          if( B.numCols != C.numCols )
              throw new IllegalArgumentException("Columns in B are incompatible with columns in C");
          if( A.blockLength != B.blockLength || A.blockLength != C.blockLength )
              throw new IllegalArgumentException("Block lengths are not all the same.");
  
          final int blockLength = A.blockLength;
  
          DSubmatrixD1 Asub = new DSubmatrixD1(A,0, A.numRows, 0, A.numCols);
          DSubmatrixD1 Bsub = new DSubmatrixD1(B,0, B.numRows, 0, B.numCols);
          DSubmatrixD1 Csub = new DSubmatrixD1(C,0, C.numRows, 0, C.numCols);
  
          MatrixMult_DDRB.mult(blockLength,Asub,Bsub,Csub);
      }
docs: and other stuff.  doesn't seem to have any speed advantage over mult_reorder()