From 1fbfab27a9cf5c7ba9523fbf11905f6702f2d61d Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Wed, 18 May 2016 16:26:26 +0200 Subject: bug #1223: fix compilation of AutoDiffScalar's min/max operators, and add regression unit test. --- unsupported/test/autodiff.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'unsupported/test/autodiff.cpp') 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 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 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(); } -- cgit v1.2.3