 			outputItem( stats.timeSolve);
 			// Total amount of time
 			outputItem( stats.timeSetup + stats.timeSolve);
-		}
-		else if (!setupSuccess)
-			outputItem ( "Out of memory");
-		else if (ISNAN(cusp::blas::nrm1(x)))
-			outputItem ( "Zero pivoting");
-		else
+		} else
 			outputItem ( "Not converged");
 
 		cout << "</tr>" << endl;

	SpmvFunctor  mySpmv(A);
	Vector       x(A.num_rows, 0);

	bool setupSuccess = true, solveSuccess = true; 

	try {
		mySolver.setup(A);
		solveSuccess = mySolver.solve(mySpmv, b, x);
	} catch (std::bad_alloc e) {
		setupSuccess = false;
		solveSuccess = false;
	}

	// Write solution file and print solver statistics.
	if (fileSol.length() > 0)
		cusp::io::write_matrix_market_file(x, fileSol);

	// Calculate the actual residual and its norm.
	{
		spike::Stats stats = mySolver.getStats();
		int i;
		for (i = fileMat.size()-1; i>=0 && fileMat[i] != '/' && fileMat[i] != '\\'; i--);
		i++;

		OutputItem outputItem(cout);

		cout << "<tr valign=top>" << endl;
		// Name of matrix
		outputItem( fileMat.substr(i));
		// Dimension
		outputItem( A.num_rows);
		// No. of non-zeros
		outputItem( A.num_entries);
		// Half-bandwidth
		outputItem( stats.bandwidth);
		// Half-bandwidth after MC64

// -----------------------------------------------------------------------------
void ShowUsage()
{
	cout << "Usage:  driver_test [OPTIONS]" << endl;
	cout << endl;
	cout << " -p=NUM_PARTITIONS" << endl;
	cout << " --num-partitions=NUM_PARTITIONS" << endl;
