aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/adjoint.cpp
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2011-06-15 00:30:46 -0400
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2011-06-15 00:30:46 -0400
commitd2673d89bdc91e24366ca85fb8fd54695e877b38 (patch)
tree4e1de1d679062c65a9a52da400c93a08ece5a78a /test/adjoint.cpp
parent842881cfb1b8ece6e41c58f0466ae979e514d001 (diff)
add test for normalize() and normalized()
Diffstat (limited to 'test/adjoint.cpp')
-rw-r--r--test/adjoint.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/test/adjoint.cpp b/test/adjoint.cpp
index bc0bad4d0..98d7aabfb 100644
--- a/test/adjoint.cpp
+++ b/test/adjoint.cpp
@@ -65,15 +65,23 @@ template<typename MatrixType> void adjoint(const MatrixType& m)
// check basic properties of dot, norm, norm2
typedef typename NumTraits<Scalar>::Real RealScalar;
- RealScalar ref = NumTraits<Scalar>::IsInteger ? 0 : std::max((s1 * v1 + s2 * v2).norm(),v3.norm());
+ RealScalar ref = NumTraits<Scalar>::IsInteger ? RealScalar(0) : std::max((s1 * v1 + s2 * v2).norm(),v3.norm());
VERIFY(test_isApproxWithRef((s1 * v1 + s2 * v2).dot(v3), internal::conj(s1) * v1.dot(v3) + internal::conj(s2) * v2.dot(v3), ref));
VERIFY(test_isApproxWithRef(v3.dot(s1 * v1 + s2 * v2), s1*v3.dot(v1)+s2*v3.dot(v2), ref));
VERIFY_IS_APPROX(internal::conj(v1.dot(v2)), v2.dot(v1));
VERIFY_IS_APPROX(internal::real(v1.dot(v1)), v1.squaredNorm());
- if(!NumTraits<Scalar>::IsInteger)
+ if(!NumTraits<Scalar>::IsInteger) {
VERIFY_IS_APPROX(v1.squaredNorm(), v1.norm() * v1.norm());
+ // check normalized() and normalize()
+ VERIFY_IS_APPROX(v1, v1.norm() * v1.normalized());
+ // normalize() returns a reference to *this
+ v3 = v1;
+ VERIFY_IS_APPROX(v1, v1.norm() * v3.normalize());
+ VERIFY_IS_APPROX(v3, v1.normalized());
+ VERIFY_IS_APPROX(v3.norm(), RealScalar(1));
+ }
VERIFY_IS_MUCH_SMALLER_THAN(internal::abs(vzero.dot(v1)), static_cast<RealScalar>(1));
-
+
// check compatibility of dot and adjoint
ref = NumTraits<Scalar>::IsInteger ? 0 : std::max(std::max(v1.norm(),v2.norm()),std::max((square * v2).norm(),(square.adjoint() * v1).norm()));