Skip to content

Commit f61957a

Browse files
committed
Updated HalfVector to use _Float16 when available
1 parent c7fadb2 commit f61957a

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
## 0.3.0 (unreleased)
22

33
- Added support for libpqxx 8
4-
- Changed `HalfVector` to use `std::float16_t` when available
4+
- Changed `HalfVector` to use `std::float16_t` or `_Float16` when available
55
- Dropped support for libpqxx 7
66
- Dropped support for C++17
77

include/pgvector/halfvec.hpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,17 @@
1414

1515
#if __STDCPP_FLOAT16_T__
1616
#include <stdfloat>
17+
#else
18+
#define __STDC_WANT_IEC_60559_TYPES_EXT__
19+
#include <cfloat>
1720
#endif
1821

1922
namespace pgvector {
2023

2124
#if __STDCPP_FLOAT16_T__
2225
using Half = std::float16_t;
26+
#elif defined(__FLT16_MAX__)
27+
using Half = _Float16;
2328
#else
2429
using Half = float;
2530
#endif
@@ -61,7 +66,11 @@ class HalfVector {
6166
if (i > 0) {
6267
os << ",";
6368
}
69+
#if __STDCPP_FLOAT16_T__
6470
os << value.value_[i];
71+
#else
72+
os << static_cast<float>(value.value_[i]);
73+
#endif
6574
}
6675
os << "]";
6776
return os;

test/pqxx_test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,8 @@ void test_vector_from_string() {
179179

180180
void test_halfvec_to_string() {
181181
assert_equal(pqxx::to_string(pgvector::HalfVector({1, 2, 3})), "[1,2,3]");
182-
#if __STDCPP_FLOAT16_T__
183-
assert_equal(pqxx::to_string(pgvector::HalfVector({-1.234567890123f16})), "[-1.234375]");
182+
#if __STDCPP_FLOAT16_T__ || defined(__FLT16_MAX__)
183+
assert_equal(pqxx::to_string(pgvector::HalfVector({static_cast<pgvector::Half>(-1.234567890123)})), "[-1.234375]");
184184
#else
185185
assert_equal(pqxx::to_string(pgvector::HalfVector({-1.234567890123})), "[-1.2345679]");
186186
#endif

0 commit comments

Comments
 (0)