@@ -19,10 +19,13 @@ import Base: (*), +, -, /, <, <=, ==, ^, convert,
19
19
eps, realmin, realmax, isinf, isnan, isfinite
20
20
21
21
if is_apple ()
22
+ const quadoplib = " libquadmath.0"
22
23
const libquadmath = " libquadmath.0"
23
24
elseif is_unix ()
25
+ const quadoplib = " libgcc_s"
24
26
const libquadmath = " libquadmath.so.0"
25
27
elseif is_windows ()
28
+ const quadoplib = " libgcc_s_seh-1.dll"
26
29
const libquadmath = " libquadmath-0.dll"
27
30
end
28
31
@@ -71,52 +74,52 @@ fpinttype(::Type{Float128}) = UInt128
71
74
72
75
# # Float64
73
76
convert (:: Type{Float128} , x:: Float64 ) =
74
- Float128 (ccall ((:__extenddftf2 , libquadmath ), Cfloat128, (Cdouble,), x))
77
+ Float128 (ccall ((:__extenddftf2 , quadoplib ), Cfloat128, (Cdouble,), x))
75
78
convert (:: Type{Float64} , x:: Float128 ) =
76
- ccall ((:__trunctfdf2 , libquadmath ), Cdouble, (Cfloat128,), x)
79
+ ccall ((:__trunctfdf2 , quadoplib ), Cdouble, (Cfloat128,), x)
77
80
78
81
# # Cint (Int32)
79
82
convert (:: Type{Cint} , x:: Float128 ) =
80
- ccall ((:__fixtfsi , libquadmath ), Cint, (Cfloat128,), x)
83
+ ccall ((:__fixtfsi , quadoplib ), Cint, (Cfloat128,), x)
81
84
convert (:: Type{Float128} , x:: Cint ) =
82
- Float128 (ccall ((:__floatsitf , libquadmath ), Cfloat128, (Cint,), x))
85
+ Float128 (ccall ((:__floatsitf , quadoplib ), Cfloat128, (Cint,), x))
83
86
84
87
# # Cuint (UInt32)
85
88
convert (:: Type{Float128} , x:: Cuint ) =
86
- Float128 (ccall ((:__floatunsitf , libquadmath ), Cfloat128, (Cuint,), x))
89
+ Float128 (ccall ((:__floatunsitf , quadoplib ), Cfloat128, (Cuint,), x))
87
90
88
91
# # Clong (Int64 on unix)
89
92
if ! is_windows ()
90
93
convert (:: Type{Clong} , x:: Float128 ) =
91
- ccall ((:__fixtfdi , libquadmath ), Clong, (Cfloat128,), x)
94
+ ccall ((:__fixtfdi , quadoplib ), Clong, (Cfloat128,), x)
92
95
convert (:: Type{Float128} , x:: Clong ) =
93
- Float128 (ccall ((:__floatditf , libquadmath ), Cfloat128, (Clong,), x))
96
+ Float128 (ccall ((:__floatditf , quadoplib ), Cfloat128, (Clong,), x))
94
97
end
95
98
96
99
97
100
# comparison
98
101
99
102
(== )(x:: Float128 , y:: Float128 ) =
100
- ccall ((:__eqtf2 ,libquadmath ), Cint, (Cfloat128,Cfloat128), x, y) == 0
103
+ ccall ((:__eqtf2 ,quadoplib ), Cint, (Cfloat128,Cfloat128), x, y) == 0
101
104
102
105
(< )(x:: Float128 , y:: Float128 ) =
103
- ccall ((:__letf2 ,libquadmath ), Cint, (Cfloat128,Cfloat128), x, y) == - 1
106
+ ccall ((:__letf2 ,quadoplib ), Cint, (Cfloat128,Cfloat128), x, y) == - 1
104
107
105
108
(<= )(x:: Float128 , y:: Float128 ) =
106
- ccall ((:__letf2 ,libquadmath ), Cint, (Cfloat128,Cfloat128), x, y) <= 0
109
+ ccall ((:__letf2 ,quadoplib ), Cint, (Cfloat128,Cfloat128), x, y) <= 0
107
110
108
111
# arithmetic
109
112
110
113
(+ )(x:: Float128 , y:: Float128 ) =
111
- Float128 (ccall ((:__addtf3 ,libquadmath ), Cfloat128, (Cfloat128,Cfloat128), x, y))
114
+ Float128 (ccall ((:__addtf3 ,quadoplib ), Cfloat128, (Cfloat128,Cfloat128), x, y))
112
115
(- )(x:: Float128 , y:: Float128 ) =
113
- Float128 (ccall ((:__subtf3 ,libquadmath ), Cfloat128, (Cfloat128,Cfloat128), x, y))
116
+ Float128 (ccall ((:__subtf3 ,quadoplib ), Cfloat128, (Cfloat128,Cfloat128), x, y))
114
117
(* )(x:: Float128 , y:: Float128 ) =
115
- Float128 (ccall ((:__multf3 ,libquadmath ), Cfloat128, (Cfloat128,Cfloat128), x, y))
118
+ Float128 (ccall ((:__multf3 ,quadoplib ), Cfloat128, (Cfloat128,Cfloat128), x, y))
116
119
(/ )(x:: Float128 , y:: Float128 ) =
117
- Float128 (ccall ((:__divtf3 ,libquadmath ), Cfloat128, (Cfloat128,Cfloat128), x, y))
120
+ Float128 (ccall ((:__divtf3 ,quadoplib ), Cfloat128, (Cfloat128,Cfloat128), x, y))
118
121
(- )(x:: Float128 ) =
119
- Float128 (ccall ((:__negtf2 ,libquadmath ), Cfloat128, (Cfloat128,), x))
122
+ Float128 (ccall ((:__negtf2 ,quadoplib ), Cfloat128, (Cfloat128,), x))
120
123
121
124
# math
122
125
0 commit comments