code: public static void blockMultPlus( final double[] dataA, final double []dataB, final double []dataC,
                                       int indexA, int indexB, int indexC,
                                       final int heightA, final int widthA, final int widthC) {
  //        for( int i = 0; i < heightA; i++ ) {
  //            for( int k = 0; k < widthA; k++ ) {
  //                for( int j = 0; j < widthC; j++ ) {
  //                    dataC[ i*widthC + j + indexC ] += dataA[i*widthA + k + indexA] * dataB[k*widthC + j + indexB];
  //                }
  //            }
  //        }
  
          int a = indexA;
          int rowC = indexC;
          for( int i = 0; i < heightA; i++ , rowC += widthC ) {
              int b = indexB;
  
              final int endC = rowC + widthC;
              final int endA = a + widthA;
              while( a != endA ) {//for( int k = 0; k < widthA; k++ ) {
                  double valA = dataA[a++];
  
                  int c = rowC;
  
                  while( c != endC  ) {//for( int j = 0; j < widthC; j++ ) {
                      dataC[ c++ ] += valA * dataB[ b++ ];
                  }
              }
          }
      }
docs: <p>
  Performs the follow operation on individual inner blocks:<br>
  <br>
  C = C + A * B
  </p>