   long minLengthOwnLimbs = LLONG_MAX;
   for(int i = 0; i < nr_rows; ++i)
     for(int j = 0; j < nr_cols; ++j) {
-      generateLongsFromGMP(a[j * nr_rows + i], tmpX[j * nr_rows + i], lengthOwnLimbs[j * nr_rows + i], maxBits, maxExp); 
+      generateLongsFromGMP(a[j * nr_rows + i], tmpX[j * nr_rows + i], lengthOwnLimbs[j * nr_rows + i], ownLimbSize, maxExp); 
       if (minLengthOwnLimbs > lengthOwnLimbs[j * nr_rows + i]) minLengthOwnLimbs = lengthOwnLimbs[j * nr_rows + i];
     }
 

  
  // Define the maximum no of bits we can store in a 64-bit variable 
  // and the exponent to which we should pad one (or none) of the no
  int maxBits = DOUBLE_MANT/2;
  int maxExp = max(a.get_mpf_t()->_m_exp, b.get_mpf_t()->_m_exp);
  generateLongsFromGMP(a, aS, size_aS, maxBits, maxExp);
  generateLongsFromGMP(b, bS, size_bS, maxBits, maxExp);
  int size = min(size_aS, size_bS);

  // Allocate memory to save the result in another array of 64-bit variables

}

// NOT TESTED
void longToGMP(mpf_class &a, const long long *toAdd, const int size_toAdd, const int ownLimbSize, const int whereWeStart) {
  // Is the precision a global variable?... I assume so?
  a = mpf_class("0");
  for (int i = 0; i < size_toAdd; i++) {
    addToGMP(a, toAdd[i], whereWeStart - (i + 1) * ownLimbSize)
  }
}

