diff options
author | Gael Guennebaud <g.gael@free.fr> | 2016-07-27 14:52:48 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2016-07-27 14:52:48 +0200 |
commit | 8972323c088350200fd9e799238081aa37c2342a (patch) | |
tree | 4e49bb6e9c4e1a22473eb9ad98058273dc4d9667 /unsupported | |
parent | 5d94dc85e5b8c88497d60448d4367dafbca72690 (diff) |
Big 1261: add missing max(ADS,ADS) overload (same for min)
Diffstat (limited to 'unsupported')
-rwxr-xr-x | unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h | 9 | ||||
-rw-r--r-- | unsupported/test/autodiff.cpp | 12 |
2 files changed, 21 insertions, 0 deletions
diff --git a/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h b/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h index 98e0e3b73..2db4d8c3b 100755 --- a/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +++ b/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h @@ -562,6 +562,15 @@ inline AutoDiffScalar<typename Eigen::internal::remove_all<DerType>::type::Plain typedef AutoDiffScalar<typename Eigen::internal::remove_all<DerType>::type::PlainObject> ADS; return (x > y ? ADS(x) : ADS(y)); } +template<typename DerType> +inline AutoDiffScalar<typename Eigen::internal::remove_all<DerType>::type::PlainObject> (min)(const AutoDiffScalar<DerType>& x, const AutoDiffScalar<DerType>& y) { + return (x.value() < y.value() ? x : y); +} +template<typename DerType> +inline AutoDiffScalar<typename Eigen::internal::remove_all<DerType>::type::PlainObject> (max)(const AutoDiffScalar<DerType>& x, const AutoDiffScalar<DerType>& y) { + return (x.value() >= y.value() ? x : y); +} + EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(abs, using std::abs; diff --git a/unsupported/test/autodiff.cpp b/unsupported/test/autodiff.cpp index 83f336d68..118cf2ec7 100644 --- a/unsupported/test/autodiff.cpp +++ b/unsupported/test/autodiff.cpp @@ -245,6 +245,17 @@ void bug_1260() { A*v; } +// check a compilation issue with numext::max +double bug_1261() { + typedef AutoDiffScalar<Matrix2d> AD; + typedef Matrix<AD,2,1> VectorAD; + + VectorAD v; + const AD maxVal = v.maxCoeff(); + const AD minVal = v.minCoeff(); + return maxVal.value() + minVal.value(); +} + void test_autodiff() { for(int i = 0; i < g_repeat; i++) { @@ -257,5 +268,6 @@ void test_autodiff() bug_1222(); bug_1223(); bug_1260(); + bug_1261(); } |