aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2016-07-27 14:52:48 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2016-07-27 14:52:48 +0200
commit8972323c088350200fd9e799238081aa37c2342a (patch)
tree4e49bb6e9c4e1a22473eb9ad98058273dc4d9667 /unsupported
parent5d94dc85e5b8c88497d60448d4367dafbca72690 (diff)
Big 1261: add missing max(ADS,ADS) overload (same for min)
Diffstat (limited to 'unsupported')
-rwxr-xr-xunsupported/Eigen/src/AutoDiff/AutoDiffScalar.h9
-rw-r--r--unsupported/test/autodiff.cpp12
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();
}