mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-13 04:09:10 +08:00
bug #1222: fix compilation in AutoDiffScalar and add respective unit test
This commit is contained in:
parent
5a71eb5985
commit
448d9d943c
@ -101,7 +101,7 @@ class AutoDiffScalar
|
|||||||
template<typename OtherDerType>
|
template<typename OtherDerType>
|
||||||
AutoDiffScalar(const AutoDiffScalar<OtherDerType>& other
|
AutoDiffScalar(const AutoDiffScalar<OtherDerType>& other
|
||||||
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
||||||
, typename internal::enable_if<internal::is_same<Scalar,typename OtherDerType::Scalar>::value,void*>::type = 0
|
, typename internal::enable_if<internal::is_same<Scalar, typename internal::traits<typename internal::remove_all<OtherDerType>::type>::Scalar>::value,void*>::type = 0
|
||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
: m_value(other.value()), m_derivatives(other.derivatives())
|
: m_value(other.value()), m_derivatives(other.derivatives())
|
||||||
|
@ -207,7 +207,14 @@ void test_autodiff_hessian()
|
|||||||
VERIFY_IS_APPROX(y.derivatives()(1).derivatives(), -std::sin(s1*s3+s2*s4)*Vector2d(s3*s4,s4*s4));
|
VERIFY_IS_APPROX(y.derivatives()(1).derivatives(), -std::sin(s1*s3+s2*s4)*Vector2d(s3*s4,s4*s4));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double bug_1222() {
|
||||||
|
typedef Eigen::AutoDiffScalar<Eigen::Vector3d> AD;
|
||||||
|
const double _cv1_3 = 1.0;
|
||||||
|
const AD chi_3 = 1.0;
|
||||||
|
// this line did not work, because operator+ returns ADS<DerType&>, which then cannot be converted to ADS<DerType>
|
||||||
|
const AD denom = chi_3 + _cv1_3;
|
||||||
|
return denom.value();
|
||||||
|
}
|
||||||
|
|
||||||
void test_autodiff()
|
void test_autodiff()
|
||||||
{
|
{
|
||||||
@ -217,5 +224,7 @@ void test_autodiff()
|
|||||||
CALL_SUBTEST_3( test_autodiff_jacobian<1>() );
|
CALL_SUBTEST_3( test_autodiff_jacobian<1>() );
|
||||||
CALL_SUBTEST_4( test_autodiff_hessian<1>() );
|
CALL_SUBTEST_4( test_autodiff_hessian<1>() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bug_1222();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user