diff options
author | Gael Guennebaud <g.gael@free.fr> | 2016-07-27 23:30:47 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2016-07-27 23:30:47 +0200 |
commit | cc2f6d68b192bcce576ee8c0008c4c4b1f2f62ff (patch) | |
tree | 98495a4bdfc640a30b7f507442d9bb9a07421473 | |
parent | 188590db8269e3fb422bca194ea1ec6c364d94c2 (diff) |
bug #1264: fix compilation
-rwxr-xr-x | unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h | 9 | ||||
-rw-r--r-- | unsupported/test/autodiff.cpp | 8 |
2 files changed, 13 insertions, 4 deletions
diff --git a/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h b/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h index 2db4d8c3b..50fedf6ac 100755 --- a/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +++ b/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h @@ -666,13 +666,14 @@ EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(cosh, #undef EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY template<typename DerType> struct NumTraits<AutoDiffScalar<DerType> > - : NumTraits< typename NumTraits<typename DerType::Scalar>::Real > + : NumTraits< typename NumTraits<typename internal::remove_all<DerType>::type::Scalar>::Real > { - typedef AutoDiffScalar<Matrix<typename NumTraits<typename DerType::Scalar>::Real,DerType::RowsAtCompileTime,DerType::ColsAtCompileTime, - 0, DerType::MaxRowsAtCompileTime, DerType::MaxColsAtCompileTime> > Real; + typedef typename internal::remove_all<DerType>::type DerTypeCleaned; + typedef AutoDiffScalar<Matrix<typename NumTraits<typename DerTypeCleaned::Scalar>::Real,DerTypeCleaned::RowsAtCompileTime,DerTypeCleaned::ColsAtCompileTime, + 0, DerTypeCleaned::MaxRowsAtCompileTime, DerTypeCleaned::MaxColsAtCompileTime> > Real; typedef AutoDiffScalar<DerType> NonInteger; typedef AutoDiffScalar<DerType> Nested; - typedef typename NumTraits<typename DerType::Scalar>::Literal Literal; + typedef typename NumTraits<typename DerTypeCleaned::Scalar>::Literal Literal; enum{ RequireInitialization = 1 }; diff --git a/unsupported/test/autodiff.cpp b/unsupported/test/autodiff.cpp index 118cf2ec7..2da6dd8f3 100644 --- a/unsupported/test/autodiff.cpp +++ b/unsupported/test/autodiff.cpp @@ -256,6 +256,14 @@ double bug_1261() { return maxVal.value() + minVal.value(); } +double bug_1264() { + typedef AutoDiffScalar<Vector2d> AD; + const AD s; + const Matrix<AD, 3, 1> v1; + const Matrix<AD, 3, 1> v2 = (s + 3.0) * v1; + return v2(0).value(); +} + void test_autodiff() { for(int i = 0; i < g_repeat; i++) { |