public void passEigenValues(
	double[] eigenValues,
	double[][] eigenVectors )
{
	int n = eigenValues.length;
	// generate value list with identity permutation
	LinkedList<Pair> list = new LinkedList<Pair>();
	for ( int j = 0; j < n; ++j )
	{
		Pair pair = new Pair();
		if ( this.absolute )
			pair.value = Math.abs(eigenValues[j]);
		else
			pair.value = eigenValues[j];
		pair.index = j;
		list.add(pair);
	}
	Collections.sort(list);
	// reverse the permutation if descending
	if ( this.descending )
		Collections.reverse(list);
	// copy eigenvectors according to the permutation
	int m = Matrix.getNumOfRows(eigenVectors);
	this.eigenValues = Vector.newVector(n);
	this.eigenVectors = Matrix.newMatrix(m, n);
	for ( int j = 0; j < n; ++j )
	{
		int k = list.get(j).index;
		this.eigenValues[j] = eigenValues[k];
		for ( int i = 0; i < m; ++i )
			this.eigenVectors[i][j] = eigenVectors[i][k];
	}
}