mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-12 03:39:01 +08:00
Replace multiple constructors of half-type by a generic/templated constructor. This fixes an incompatibility with long double, exposed by the previous commit.
This commit is contained in:
parent
718521d5cf
commit
88654762da
@ -72,22 +72,11 @@ struct half : public __half {
|
||||
|
||||
explicit EIGEN_DEVICE_FUNC half(bool b)
|
||||
: __half(internal::raw_uint16_to_half(b ? 0x3c00 : 0)) {}
|
||||
explicit EIGEN_DEVICE_FUNC half(unsigned int ui)
|
||||
: __half(internal::float_to_half_rtne(static_cast<float>(ui))) {}
|
||||
explicit EIGEN_DEVICE_FUNC half(int i)
|
||||
: __half(internal::float_to_half_rtne(static_cast<float>(i))) {}
|
||||
explicit EIGEN_DEVICE_FUNC half(unsigned long ul)
|
||||
: __half(internal::float_to_half_rtne(static_cast<float>(ul))) {}
|
||||
explicit EIGEN_DEVICE_FUNC half(long l)
|
||||
: __half(internal::float_to_half_rtne(static_cast<float>(l))) {}
|
||||
explicit EIGEN_DEVICE_FUNC half(long long ll)
|
||||
: __half(internal::float_to_half_rtne(static_cast<float>(ll))) {}
|
||||
explicit EIGEN_DEVICE_FUNC half(unsigned long long ull)
|
||||
: __half(internal::float_to_half_rtne(static_cast<float>(ull))) {}
|
||||
template<class T>
|
||||
explicit EIGEN_DEVICE_FUNC half(const T& x)
|
||||
: __half(internal::float_to_half_rtne(static_cast<float>(x))) {}
|
||||
explicit EIGEN_DEVICE_FUNC half(float f)
|
||||
: __half(internal::float_to_half_rtne(f)) {}
|
||||
explicit EIGEN_DEVICE_FUNC half(double d)
|
||||
: __half(internal::float_to_half_rtne(static_cast<float>(d))) {}
|
||||
|
||||
EIGEN_DEVICE_FUNC EIGEN_EXPLICIT_CAST(bool) const {
|
||||
// +0.0 and -0.0 become false, everything else becomes true.
|
||||
|
Loading…
x
Reference in New Issue
Block a user