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