aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/test/autodiff.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2016-05-18 16:26:26 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2016-05-18 16:26:26 +0200
commit1fbfab27a9cf5c7ba9523fbf11905f6702f2d61d (patch)
tree14edba124549ea2acf40a6f1b18ab1060789c696 /unsupported/test/autodiff.cpp
parent448d9d943c3996f6d74cebad457865d005248ddd (diff)
bug #1223: fix compilation of AutoDiffScalar's min/max operators, and add regression unit test.
Diffstat (limited to 'unsupported/test/autodiff.cpp')
-rw-r--r--unsupported/test/autodiff.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/unsupported/test/autodiff.cpp b/unsupported/test/autodiff.cpp
index ad3f83d4e..b59fd1c43 100644
--- a/unsupported/test/autodiff.cpp
+++ b/unsupported/test/autodiff.cpp
@@ -216,6 +216,24 @@ double bug_1222() {
return denom.value();
}
+double bug_1223() {
+ using std::min;
+ typedef Eigen::AutoDiffScalar<Eigen::Vector3d> AD;
+
+ const double _cv1_3 = 1.0;
+ const AD chi_3 = 1.0;
+ const AD denom = 1.0;
+
+ // failed because implementation of min attempts to construct ADS<DerType&> via constructor AutoDiffScalar(const Real& value)
+ // without initializing m_derivatives (which is a reference in this case)
+ #define EIGEN_TEST_SPACE
+ const AD t = min EIGEN_TEST_SPACE (denom / chi_3, 1.0);
+
+ const AD t2 = min EIGEN_TEST_SPACE (denom / (chi_3 * _cv1_3), 1.0);
+
+ return t.value() + t2.value();
+}
+
void test_autodiff()
{
for(int i = 0; i < g_repeat; i++) {
@@ -226,5 +244,6 @@ void test_autodiff()
}
bug_1222();
+ bug_1223();
}