@@ -270,7 +270,7 @@ template<> struct fp_traits_non_native<double, double_precision>
270
270
// long double (64 bits) -------------------------------------------------------
271
271
272
272
#if defined(BOOST_NO_INT64_T) || defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)\
273
- || defined(BOOST_BORLANDC) || defined(__CODEGEAR__)
273
+ || defined(BOOST_BORLANDC) || defined(__CODEGEAR__) || (defined(__APPLE__) && defined(__aarch64__)) || defined(_MSC_VER)
274
274
275
275
template <> struct fp_traits_non_native <long double , double_precision>
276
276
{
@@ -297,31 +297,9 @@ template<> struct fp_traits_non_native<long double, double_precision>
297
297
static constexpr int offset_ = BOOST_MATH_ENDIAN_BIG_BYTE ? 0 : 4 ;
298
298
};
299
299
300
- // ..............................................................................
301
-
302
- #else
303
-
304
- template <> struct fp_traits_non_native <long double , double_precision>
305
- {
306
- typedef ieee_copy_all_bits_tag method;
307
-
308
- static const uint64_t sign = static_cast <uint64_t >(0x80000000u ) << 32 ;
309
- static const uint64_t exponent = static_cast <uint64_t >(0x7ff00000 ) << 32 ;
310
- static const uint64_t flag = 0 ;
311
- static const uint64_t significand
312
- = (static_cast <uint64_t >(0x000fffff ) << 32 ) + static_cast <uint64_t >(0xffffffffu );
313
-
314
- typedef uint64_t bits;
315
- static void get_bits (long double x, uint64_t & a) { std::memcpy (&a, &x, 8 ); }
316
- static void set_bits (long double & x, uint64_t a) { std::memcpy (&x, &a, 8 ); }
317
- };
318
-
319
- #endif
320
-
321
-
322
300
// long double (>64 bits), x86 and x64 -----------------------------------------
323
301
324
- #if defined(__i386) || defined(__i386__) || defined(_M_IX86) \
302
+ #elif defined(__i386) || defined(__i386__) || defined(_M_IX86) \
325
303
|| defined(__amd64) || defined(__amd64__) || defined(_M_AMD64) \
326
304
|| defined(__x86_64) || defined(__x86_64__) || defined(_M_X64)
327
305
0 commit comments