aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Rasmus Munk Larsen <rmlarsen@google.com>2021-04-02 22:06:27 +0000
committerGravatar Rasmus Munk Larsen <rmlarsen@google.com>2021-04-02 22:06:27 +0000
commit3ddc0974ce42d7cdd9161dda2a9558d6800d12c8 (patch)
treed7f2c3352c9d7fdf6fcad0cf240206e9ec5033d1 /test
parentc24bee6120d40987b15df0cbdaaa60e3de877e01 (diff)
Fix two bugs in commit
Diffstat (limited to 'test')
-rw-r--r--test/AnnoyingScalar.h21
-rw-r--r--test/geo_quaternion.cpp2
2 files changed, 18 insertions, 5 deletions
diff --git a/test/AnnoyingScalar.h b/test/AnnoyingScalar.h
index 889e6cc86..9f8d52796 100644
--- a/test/AnnoyingScalar.h
+++ b/test/AnnoyingScalar.h
@@ -76,20 +76,20 @@ class AnnoyingScalar
AnnoyingScalar operator/(const AnnoyingScalar& other) const
{ return AnnoyingScalar((*v)/(*other.v)); }
-
+
AnnoyingScalar& operator+=(const AnnoyingScalar& other) { *v += *other.v; return *this; }
AnnoyingScalar& operator-=(const AnnoyingScalar& other) { *v -= *other.v; return *this; }
AnnoyingScalar& operator*=(const AnnoyingScalar& other) { *v *= *other.v; return *this; }
AnnoyingScalar& operator/=(const AnnoyingScalar& other) { *v /= *other.v; return *this; }
AnnoyingScalar& operator= (const AnnoyingScalar& other) { *v = *other.v; return *this; }
-
+
bool operator==(const AnnoyingScalar& other) const { return *v == *other.v; }
bool operator!=(const AnnoyingScalar& other) const { return *v != *other.v; }
bool operator<=(const AnnoyingScalar& other) const { return *v <= *other.v; }
bool operator< (const AnnoyingScalar& other) const { return *v < *other.v; }
bool operator>=(const AnnoyingScalar& other) const { return *v >= *other.v; }
bool operator> (const AnnoyingScalar& other) const { return *v > *other.v; }
-
+
float* v;
float data;
static int instances;
@@ -136,12 +136,23 @@ struct NumTraits<AnnoyingScalar> : NumTraits<float>
template<> inline AnnoyingScalar test_precision<AnnoyingScalar>() { return test_precision<float>(); }
+namespace numext {
+template<>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+bool (isfinite)(const AnnoyingScalar& x) {
+ return (numext::isfinite)(*x.v);
+}
+}
+
namespace internal {
+ template<> AnnoyingScalar pcmp_eq(const AnnoyingScalar& x, const AnnoyingScalar& y)
+ { return AnnoyingScalar(pcmp_eq(*x.v, *y.v)); }
+ template<> AnnoyingScalar pselect(const AnnoyingScalar& cond, const AnnoyingScalar& x, const AnnoyingScalar& y)
+ { return numext::equal_strict(*cond.v, 0.f) ? y : x; }
template<> double cast(const AnnoyingScalar& x) { return double(*x.v); }
template<> float cast(const AnnoyingScalar& x) { return *x.v; }
}
-
-}
+} // namespace Eigen
AnnoyingScalar get_test_precision(const AnnoyingScalar&)
{ return Eigen::test_precision<AnnoyingScalar>(); }
diff --git a/test/geo_quaternion.cpp b/test/geo_quaternion.cpp
index 6cfdb6f10..c4a3162b3 100644
--- a/test/geo_quaternion.cpp
+++ b/test/geo_quaternion.cpp
@@ -332,7 +332,9 @@ EIGEN_DECLARE_TEST(geo_quaternion)
CALL_SUBTEST_2(( quaternionAlignment<double>() ));
CALL_SUBTEST_2( mapQuaternion<double>() );
+#ifndef EIGEN_TEST_ANNOYING_SCALAR_DONT_THROW
AnnoyingScalar::dont_throw = true;
+#endif
CALL_SUBTEST_3(( quaternion<AnnoyingScalar,AutoAlign>() ));
}
}