diff options
author | Ilya Tokar <tokarip@google.com> | 2019-12-16 16:00:35 -0500 |
---|---|---|
committer | Ilya Tokar <tokarip@google.com> | 2020-01-07 21:22:44 +0000 |
commit | 19876ced76bd1730008e02fc4c43c2228faed38a (patch) | |
tree | 22f999134e79f84f6f9dc0d19bdfa6740db416f0 /test/array_cwise.cpp | |
parent | d0ae052da4ce25a5b4306bfbb5bf8edcd010b663 (diff) |
Bug #1785: Introduce numext::rint.
This provides a new op that matches std::rint and previous behavior of
pround. Also adds corresponding unsupported/../Tensor op.
Performance is the same as e. g. floor (tested SSE/AVX).
Diffstat (limited to 'test/array_cwise.cpp')
-rw-r--r-- | test/array_cwise.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/test/array_cwise.cpp b/test/array_cwise.cpp index 48ebcc88b..76fc83c33 100644 --- a/test/array_cwise.cpp +++ b/test/array_cwise.cpp @@ -296,6 +296,7 @@ template<typename ArrayType> void array_real(const ArrayType& m) VERIFY_IS_APPROX(m1.arg(), arg(m1)); VERIFY_IS_APPROX(m1.round(), round(m1)); + VERIFY_IS_APPROX(m1.rint(), rint(m1)); VERIFY_IS_APPROX(m1.floor(), floor(m1)); VERIFY_IS_APPROX(m1.ceil(), ceil(m1)); VERIFY((m1.isNaN() == (Eigen::isnan)(m1)).all()); @@ -331,6 +332,11 @@ template<typename ArrayType> void array_real(const ArrayType& m) VERIFY_IS_APPROX(logistic(m1), (1.0/(1.0+exp(-m1)))); VERIFY_IS_APPROX(arg(m1), ((m1<0).template cast<Scalar>())*std::acos(-1.0)); VERIFY((round(m1) <= ceil(m1) && round(m1) >= floor(m1)).all()); + VERIFY((rint(m1) <= ceil(m1) && rint(m1) >= floor(m1)).all()); + VERIFY(((ceil(m1) - round(m1)) <= Scalar(0.5) || (round(m1) - floor(m1)) <= Scalar(0.5)).all()); + VERIFY(((ceil(m1) - round(m1)) <= Scalar(1.0) && (round(m1) - floor(m1)) <= Scalar(1.0)).all()); + VERIFY(((ceil(m1) - rint(m1)) <= Scalar(0.5) || (rint(m1) - floor(m1)) <= Scalar(0.5)).all()); + VERIFY(((ceil(m1) - rint(m1)) <= Scalar(1.0) && (rint(m1) - floor(m1)) <= Scalar(1.0)).all()); VERIFY((Eigen::isnan)((m1*0.0)/0.0).all()); VERIFY((Eigen::isinf)(m4/0.0).all()); VERIFY(((Eigen::isfinite)(m1) && (!(Eigen::isfinite)(m1*0.0/0.0)) && (!(Eigen::isfinite)(m4/0.0))).all()); |