Compare commits

...

7 Commits

Author SHA1 Message Date
Daniel Lemire
5f7e0d599b
Merge c086f538e87b31c48fb2b6e1ed743e8141e3695c into f8c573d7419ab08de382c60005e37caa271e869a 2025-12-05 08:08:06 +03:00
Daniel Lemire
f8c573d741
Merge pull request #338 from Gravecat/mingw-fix
Fixes compilation on GCC/MinGW
2025-11-23 16:25:56 -05:00
Raine 'Gravecat' Simmons
9d78a01ff7
Fixed formatting with clang-format 2025-11-22 21:53:37 +00:00
Raine 'Gravecat' Simmons
409d6215b4
Fixes compilation on GCC/MinGW 2025-11-22 16:11:06 +00:00
Anders Dalvander
c086f538e8
Merge branch 'main' into adding_explicit_cxx23_specialization 2025-09-29 21:35:46 +02:00
Daniel Lemire
b370ee2976 lint 2025-09-29 15:05:33 -04:00
Daniel Lemire
b3dd09bb86 specialize for std::float32_t and std::float64_t explicitly 2025-09-29 14:14:01 -04:00

View File

@ -406,8 +406,8 @@ full_multiplication(uint64_t a, uint64_t b) {
// But MinGW on ARM64 doesn't have native support for 64-bit multiplications
answer.high = __umulh(a, b);
answer.low = a * b;
#elif defined(FASTFLOAT_32BIT) || \
(defined(_WIN64) && !defined(__clang__) && !defined(_M_ARM64))
#elif defined(FASTFLOAT_32BIT) || (defined(_WIN64) && !defined(__clang__) && \
!defined(_M_ARM64) && !defined(__GNUC__))
answer.low = _umul128(a, b, &answer.high); // _umul128 not available on ARM64
#elif defined(FASTFLOAT_64BIT) && defined(__SIZEOF_INT128__)
__uint128_t r = ((__uint128_t)a) * b;
@ -1251,6 +1251,16 @@ constexpr chars_format adjust_for_feature_macros(chars_format fmt) {
;
}
} // namespace detail
#ifdef __STDCPP_FLOAT64_T__
template <>
struct binary_format<std::float64_t> : public binary_format<double> {};
#endif
#ifdef __STDCPP_FLOAT32_T__
template <>
struct binary_format<std::float32_t> : public binary_format<float> {};
#endif
} // namespace fast_float
#endif