code: protected static void multTransBBlockMinus_L( double[] dataA, double []dataC,
                                                    int indexA, int indexB, int indexC,
                                                    final int widthA, final int heightA, final int widthC ) {
  //        for( int i = 0; i < heightA; i++ ) {
  //            for( int j = 0; j <= i; j++ ) {
  //                double sum = 0;
  //                for( int k = 0; k < widthA; k++ ) {
  //                    sum += dataA[i*widthA + k + indexA] * dataA[j*widthA + k + indexB];
  //                }
  //                dataC[ i*widthC + j + indexC ] -= sum;
  //            }
  //        }
  
          for( int i = 0; i < heightA; i++ ) {
              int rowA = i*widthA+indexA;
              int endA = rowA + widthA;
              int rowB = indexB;
              int rowC = i*widthC + indexC;
              for( int j = 0; j <= i; j++ , rowB += widthA) {
                  double sum = 0;
  
                  int a = rowA;
                  int b = rowB;
  
                  while( a != endA ) {
                      sum += dataA[a++] * dataA[b++];
                  }
                  dataC[ rowC + j ] -= sum;
              }
          }
  
      }
docs: <p>
  Performs the following operation on the lower triangular portion of a block:<br>
  <br>
  c = c - a*a<sup>T</sup><br>
  </p>