code: protected static void multTransABlockMinus( double[] dataA, 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 * dataA[k*widthC + j + indexB];
  //                }
  //            }
  //        }
  
          int rowB = indexB;
          int endLoopK = rowB + heightA*widthC;
          int startA = indexA;
  
          //for( int k = 0; k < heightA; k++ ) {
          for( ; rowB != endLoopK; rowB += widthC , startA += widthA ) {
              int a = startA;
              int c = indexC;
  
              int endA = a + widthA;
              int endB = rowB + widthC;
  
              while( a != endA ) {
                  double valA = dataA[a++];
  
                  int b = rowB;
                  while( b != endB ) {
                      dataC[ c++ ] -= valA * dataA[b++];
                  }
              }
          }
      }
docs: <p>
  Performs the following operation on a block:<br>
  <br>
  c = c - a<sup>T</sup>a<br>
  </p>