aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2009-02-26 10:09:23 +0000
committerGravatar Gael Guennebaud <g.gael@free.fr>2009-02-26 10:09:23 +0000
commit170128770a2c934e9af8cda3642e3fbd44048668 (patch)
tree6cb2265bea53eee06f911622741be5778a63cf0b
parent91af389a9a39deac44a663a1467654ba7874bc93 (diff)
compilation fix + test orho methods for complex
-rw-r--r--Eigen/src/Geometry/OrthoMethods.h2
-rw-r--r--test/geo_orthomethods.cpp7
2 files changed, 5 insertions, 4 deletions
diff --git a/Eigen/src/Geometry/OrthoMethods.h b/Eigen/src/Geometry/OrthoMethods.h
index 4676474db..ab8c25ed5 100644
--- a/Eigen/src/Geometry/OrthoMethods.h
+++ b/Eigen/src/Geometry/OrthoMethods.h
@@ -101,7 +101,7 @@ struct ei_unitOrthogonal_selector
src.cwise().abs().maxCoeff(&maxi);
if (maxi==0)
sndi = 1;
- RealScalar invnm = RealScalar(1)/Vector2(src.coeff(sndi),src.coeff(maxi)).norm();
+ RealScalar invnm = RealScalar(1)/(Vector2() << src.coeff(sndi),src.coeff(maxi)).finished().norm();
perp.coeffRef(maxi) = -ei_conj(src.coeff(sndi)) * invnm;
perp.coeffRef(sndi) = ei_conj(src.coeff(maxi)) * invnm;
diff --git a/test/geo_orthomethods.cpp b/test/geo_orthomethods.cpp
index 1485877d0..ae9f73518 100644
--- a/test/geo_orthomethods.cpp
+++ b/test/geo_orthomethods.cpp
@@ -63,6 +63,7 @@ template<typename Scalar> void orthomethods_3()
template<typename Scalar, int Size> void orthomethods(int size=Size)
{
+ typedef typename NumTraits<Scalar>::Real RealScalar;
typedef Matrix<Scalar,Size,1> VectorType;
typedef Matrix<Scalar,3,Size> Matrix3N;
typedef Matrix<Scalar,Size,3> MatrixN3;
@@ -74,7 +75,7 @@ template<typename Scalar, int Size> void orthomethods(int size=Size)
// unitOrthogonal
VERIFY_IS_MUCH_SMALLER_THAN(v0.unitOrthogonal().dot(v0), Scalar(1));
- VERIFY_IS_APPROX(v0.unitOrthogonal().norm(), Scalar(1));
+ VERIFY_IS_APPROX(v0.unitOrthogonal().norm(), RealScalar(1));
if (size>3)
{
@@ -82,7 +83,7 @@ template<typename Scalar, int Size> void orthomethods(int size=Size)
v0.end(size-3).setRandom();
VERIFY_IS_MUCH_SMALLER_THAN(v0.unitOrthogonal().dot(v0), Scalar(1));
- VERIFY_IS_APPROX(v0.unitOrthogonal().norm(), Scalar(1));
+ VERIFY_IS_APPROX(v0.unitOrthogonal().norm(), RealScalar(1));
}
// colwise/rowwise cross product
@@ -110,7 +111,7 @@ void test_geo_orthomethods()
CALL_SUBTEST( (orthomethods<float,3>()) );
CALL_SUBTEST( (orthomethods<double,3>()) );
CALL_SUBTEST( (orthomethods<float,7>()) );
- CALL_SUBTEST( (orthomethods<double,8>()) );
+ CALL_SUBTEST( (orthomethods<std::complex<double>,8>()) );
CALL_SUBTEST( (orthomethods<float,Dynamic>(36)) );
CALL_SUBTEST( (orthomethods<double,Dynamic>(35)) );
}