 	//etAddingLongs += (((tB.tv_sec*uS_PER_SEC)+tB.tv_usec) - ((tA.tv_sec*uS_PER_SEC)+tA.tv_usec))/(float)uS_PER_mS;
       } 
     }
-    gettimeofday(&t2, NULL);
-    etAlgebra +=  (((t2.tv_sec*uS_PER_SEC)+t2.tv_usec) - ((t1.tv_sec*uS_PER_SEC)+t1.tv_usec))/(float)uS_PER_mS;
+    //gettimeofday(&t2, NULL);
+    //etAlgebra +=  (((t2.tv_sec*uS_PER_SEC)+t2.tv_usec) - ((t1.tv_sec*uS_PER_SEC)+t1.tv_usec))/(float)uS_PER_mS;
     // Transfer matrix to memeory
     //gettimeofday(&t1, NULL);
     cudaMemcpy(&d_aS[k * nr_rows * nr_cols], tmpA, nr_rows * nr_cols * sizeof(double), cudaMemcpyHostToDevice);

  double free_db = ((double)free_byte) * maxFrac;
  return (int) (8 * free_db/(nr_rows * nr_cols * INT64L));
}


// Implements matrix multiplication c = a.b, and, according to whether or not the matrices fit 

 
  matrixMult_cuBlas(handle, tmpC1, a1, b1, d_aS, d_bS, tmpTransferLongToGMP,
		    tmp, sizeMatrix, realExpMatrix, signMatrix, d_prodRes, d_res,
		    nr_rowsA, nr_colsA, nr_colsB, whatOrder);
  matrixMult_cuBlas(handle, tmpC2, a2, b2, d_aS, d_bS, tmpTransferLongToGMP,
		    tmp, sizeMatrix, realExpMatrix, signMatrix, d_prodRes, d_res,
		    nr_rowsA, nr_colsA, nr_colsB, whatOrder);
  for(int i = 0; i < nr_colsA; ++i){
    for(int k = 0; k < nr_rowsA; ++k){
      a1[i *  nr_rowsA + k] += a2[i *  nr_rowsA + k]; 
