     }
   exp = maxExp * INT64L;
   
-  
   // Generate the array of 64-bit matrices
   long minLengthOwnLimbs = LLONG_MAX;
   for(int i = 0; i < nr_rows; ++i)

      c[j * nr_rowsA +  i] = mpf_class("0.0");
    }
  }
  
  long long *tmp = (long long *)malloc(nr_rowsA * nr_colsB * sizeof(long long));
  for (int i = 0; i < size - 1; i++) {
    for (int j = 0; j < i + 1; j++) {
      matrixProduct(tmp, aS[j], bS[i-j], nr_rowsA, nr_colsA, nr_colsB);
      addToGMPMatrix(c, tmp, nr_rowsA, nr_colsB, exp - (i + 1) * ownLimbSize); 
      }
  }
}


void printGMPMatrixDiff(mpf_class *a, mpf_class *b, const int nr_rows, const int nr_cols) {
  std::cout << "Printing GMP matrix difference..."<< std::endl;
  mp_exp_t exp;
  for(int i = 0; i < nr_rows; ++i){
    for(int j = 0; j < nr_cols; ++j){
      mpf_class tmp = (a[j * nr_rows +  i] - b[j * nr_rows +  i]);
      std::cout << tmp << " ";
    }
    std::cout << std::endl;
  }
