aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Eigen/src/Core/arch/Default/BFloat16.h4
-rw-r--r--test/bfloat16_float.cpp6
2 files changed, 5 insertions, 5 deletions
diff --git a/Eigen/src/Core/arch/Default/BFloat16.h b/Eigen/src/Core/arch/Default/BFloat16.h
index 561304f80..abf2ac933 100644
--- a/Eigen/src/Core/arch/Default/BFloat16.h
+++ b/Eigen/src/Core/arch/Default/BFloat16.h
@@ -117,10 +117,10 @@ struct bfloat16 : public bfloat16_impl::bfloat16_base {
EIGEN_DEVICE_FUNC EIGEN_EXPLICIT_CAST(unsigned long long) const {
return static_cast<unsigned long long>(bfloat16_to_float(*this));
}
- EIGEN_DEVICE_FUNC EIGEN_EXPLICIT_CAST(float) const {
+ EIGEN_DEVICE_FUNC operator float() const {
return bfloat16_impl::bfloat16_to_float(*this);
}
- EIGEN_DEVICE_FUNC EIGEN_EXPLICIT_CAST(double) const {
+ EIGEN_DEVICE_FUNC operator double() const {
return static_cast<double>(bfloat16_impl::bfloat16_to_float(*this));
}
template<typename RealScalar>
diff --git a/test/bfloat16_float.cpp b/test/bfloat16_float.cpp
index eb55f7d45..478aef3a3 100644
--- a/test/bfloat16_float.cpp
+++ b/test/bfloat16_float.cpp
@@ -53,9 +53,9 @@ void test_conversion()
VERIFY_IS_EQUAL(bfloat16(3.40e38f).value, 0x7f80); // Becomes infinity.
// Verify round-to-nearest-even behavior.
- float val1 = static_cast<float>(bfloat16(__bfloat16_raw(0x3c00)));
- float val2 = static_cast<float>(bfloat16(__bfloat16_raw(0x3c01)));
- float val3 = static_cast<float>(bfloat16(__bfloat16_raw(0x3c02)));
+ float val1 = bfloat16(__bfloat16_raw(0x3c00));
+ float val2 = bfloat16(__bfloat16_raw(0x3c01));
+ float val3 = bfloat16(__bfloat16_raw(0x3c02));
VERIFY_IS_EQUAL(bfloat16(0.5f * (val1 + val2)).value, 0x3c00);
VERIFY_IS_EQUAL(bfloat16(0.5f * (val2 + val3)).value, 0x3c02);