diff options
author | Gael Guennebaud <g.gael@free.fr> | 2016-05-18 16:26:26 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2016-05-18 16:26:26 +0200 |
commit | 1fbfab27a9cf5c7ba9523fbf11905f6702f2d61d (patch) | |
tree | 14edba124549ea2acf40a6f1b18ab1060789c696 /unsupported/test/autodiff.cpp | |
parent | 448d9d943c3996f6d74cebad457865d005248ddd (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.cpp | 19 |
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(); } |