18 #ifndef LIBMESH_FLOAT128_SHIMS_H
19 #define LIBMESH_FLOAT128_SHIMS_H
21 # include <boost/multiprecision/float128.hpp>
29 #define LIBMESH_FLOAT128_UNARY(funcname) \
30 inline boost::multiprecision::float128 funcname \
31 (const boost::multiprecision::float128 in) \
33 return boost::multiprecision::funcname(in); \
36 #define LIBMESH_FLOAT128_MATH_BOOL(funcname) \
37 inline bool funcname \
38 (const boost::multiprecision::float128 in) \
40 return boost::math::funcname(in); \
43 #define LIBMESH_FLOAT128_BINARY(funcname) \
44 inline boost::multiprecision::float128 funcname \
45 (const boost::multiprecision::float128 in1, \
46 const boost::multiprecision::float128 in2) \
48 return boost::multiprecision::funcname(in1, in2); \
70 inline boost::multiprecision::float128
norm
71 (
const boost::multiprecision::float128 in)
76 inline boost::multiprecision::float128
real
77 (
const boost::multiprecision::float128 in)
82 inline boost::multiprecision::float128
imag
83 (
const boost::multiprecision::float128 )
89 struct plus<
boost::multiprecision::float128>
91 boost::multiprecision::float128 operator ()
92 (
const boost::multiprecision::float128 a,
93 const boost::multiprecision::float128 b)
100 struct multiplies<
boost::multiprecision::float128>
102 boost::multiprecision::float128 operator ()
103 (
const boost::multiprecision::float128 a,
104 const boost::multiprecision::float128 b)
116 inline boost::multiprecision::float128 modf
117 (
const boost::multiprecision::float128 in,
118 boost::multiprecision::float128 * intpart)
120 #ifdef BOOST_MP_USE_QUAD
121 return __modfq(in.backend().value(), &intpart->backend().value());
122 #elif defined(BOOST_MP_USE_FLOAT128)
123 return modfq(in.backend().value(), &intpart->backend().value());
133 inline boost::multiprecision::float128
pow
134 (
const boost::multiprecision::float128 in1,
165 #endif // LIBMESH_FLOAT128_SHIMS_H