void testCanonicalAngles() {
	typedef Matrix<double, Dynamic, Dynamic, RowMajor> MatT;
	double AData[] = {
		1, 2,
		3, 4,
		5, 6
	};
	double BData[] = {
		1, 5,
		3, 7,
		5, -1
	};
	Map<MatT> A(AData, 3, 2);
	Map<MatT> B(BData, 3, 2);
	cout<<A<<endl;
	cout<<B<<endl;
	VectorXd expectedCos(2);
	expectedCos(0) = 1.000;
	expectedCos(1) = 0.856;
	MatrixXd U, V;
	VectorXd cosines;

	canonicalAngles(A, B, U, V, cosines);

	cout<<expectedCos<<endl;
	cout<<cosines<<endl;

	assert(cosines.isApprox(expectedCos, 10E-4));
}