Skip to content

Commit 5e764fc

Browse files
Second commit
1 parent 6419b5a commit 5e764fc

File tree

2 files changed

+26
-13
lines changed

2 files changed

+26
-13
lines changed

float128.c

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -180,10 +180,10 @@ myfloat128 acosh_q(myfloat128 x) { myfloat128 res; F(res) = acoshq (F(x)); retur
180180
myfloat128 asin_q(myfloat128 x) { myfloat128 res; F(res) = asinq (F(x)); return res; }
181181
myfloat128 asinh_q(myfloat128 x) { myfloat128 res; F(res) = asinhq (F(x)); return res; }
182182
myfloat128 atan_q(myfloat128 x) { myfloat128 res; F(res) = atanq (F(x)); return res; }
183-
myfloat128 atanhq_q(myfloat128 x) { myfloat128 res; F(res) = atanhq (F(x)); return res; }
184-
myfloat128 atan2q_q(myfloat128 x, myfloat128 y) { myfloat128 res; F(res) = atan2q (F(x), F(y)); return res; }
185-
myfloat128 cbrtq_q(myfloat128 x) { myfloat128 res; F(res) = cbrtq (F(x)); return res; }
186-
myfloat128 ceilq_q(myfloat128 x) { myfloat128 res; F(res) = ceilq (F(x)); return res; }
183+
myfloat128 atanh_q(myfloat128 x) { myfloat128 res; F(res) = atanhq (F(x)); return res; }
184+
myfloat128 atan2_q(myfloat128 x, myfloat128 y) { myfloat128 res; F(res) = atan2q (F(x), F(y)); return res; }
185+
myfloat128 cbrt_q(myfloat128 x) { myfloat128 res; F(res) = cbrtq (F(x)); return res; }
186+
myfloat128 ceil_q(myfloat128 x) { myfloat128 res; F(res) = ceilq (F(x)); return res; }
187187
myfloat128 copysign_q(myfloat128 x, myfloat128 y) { myfloat128 res; F(res) = copysignq (F(x), F(y)); return res; }
188188
myfloat128 cosh_q(myfloat128 x) { myfloat128 res; F(res) = coshq (F(x)); return res; }
189189
myfloat128 cos_q(myfloat128 x) { myfloat128 res; F(res) = cosq (F(x)); return res; }
@@ -244,7 +244,7 @@ myfloat128 bessely_q(int n, myfloat128 x) { myfloat128 res; F(res) = ynq (n, F(x
244244

245245

246246
myfloat128 cabs_q (mycomplex128 z) { myfloat128 res; F(res) = cabsq(F(z)); return res; };
247-
myfloat128 carg_q (mycomplex128 z) { myfloat128 res; F(res) = cargq(F(z)); return res; };
247+
myfloat128 cangle_q (mycomplex128 z) { myfloat128 res; F(res) = cargq(F(z)); return res; };
248248
myfloat128 cimag_q (mycomplex128 z) { myfloat128 res; F(res) = cimagq(F(z)); return res; };
249249
myfloat128 creal_q (mycomplex128 z) { myfloat128 res; F(res) = crealq(F(z)); return res; };
250250
mycomplex128 cacos_q (mycomplex128 z) { mycomplex128 res; F(res) = cacosq(F(z)); return res; };
@@ -256,7 +256,7 @@ mycomplex128 catanh_q (mycomplex128 z) { mycomplex128 res; F(res) = catanhq(F(z)
256256
mycomplex128 ccos_q (mycomplex128 z) { mycomplex128 res; F(res) = ccosq(F(z)); return res; };
257257
mycomplex128 ccosh_q (mycomplex128 z) { mycomplex128 res; F(res) = ccoshq(F(z)); return res; };
258258
mycomplex128 cexp_q (mycomplex128 z) { mycomplex128 res; F(res) = cexpq(F(z)); return res; };
259-
mycomplex128 cexpi_q (myfloat128 z) { mycomplex128 res; F(res) = cexpiq(F(z)); return res; };
259+
mycomplex128 ccis_q (myfloat128 z) { mycomplex128 res; F(res) = cexpiq(F(z)); return res; };
260260
mycomplex128 clog_q (mycomplex128 z) { mycomplex128 res; F(res) = clogq(F(z)); return res; };
261261
mycomplex128 clog10_q (mycomplex128 z) { mycomplex128 res; F(res) = clog10q(F(z)); return res; };
262262
mycomplex128 cconj_q (mycomplex128 z) { mycomplex128 res; F(res) = conjq(F(z)); return res; };
@@ -269,7 +269,11 @@ mycomplex128 ctan_q (mycomplex128 z) { mycomplex128 res; F(res) = ctanq(F(z)); r
269269
mycomplex128 ctanh_q (mycomplex128 z) { mycomplex128 res; F(res) = ctanhq(F(z)); return res; };
270270

271271

272-
272+
myfloat128 eps_q (void) {myfloat128 res; F(res) = FLT128_EPSILON; return res; };
273+
myfloat128 realmax_q (void) {myfloat128 res; F(res) = FLT128_MAX; return res; };
274+
myfloat128 realmin_q (void) {myfloat128 res; F(res) = FLT128_MIN; return res; };
275+
myfloat128 pi_q (void) {myfloat128 res; F(res) = M_PIq; return res; };
276+
myfloat128 e_q (void) {myfloat128 res; F(res) = M_Eq; return res; };
273277

274278

275279

float128.jl

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ import
1212
ceil, floor, trunc, round, fma,
1313
atan2, copysign, max, min, hypot,
1414
gamma, lgamma,
15-
abs, imag, real, conj
15+
abs, imag, real, conj, angle, cis,
16+
eps, realmin, realmax
1617

1718

1819
import Base.GMP: ClongMax, CulongMax, CdoubleMax
@@ -65,9 +66,6 @@ function tryparse(::Type{Float128}, s::AbstractString, base::Int=0)
6566
Nullable(ccall((:set_str_q, :libfloat128), Float128, (Cstring, ), s))
6667
end
6768

68-
69-
70-
7169
# Basic arithmetic without promotion
7270
for (fJ, fC) in ((:+,:add), (:-,:sub), (:/,:div), (:(*),:mul))
7371
@eval begin
@@ -206,6 +204,14 @@ function ^(x::Float128, y::Float128)
206204
ccall((:pow_q, :libfloat128), Float128, (Float128, Float128,), x, y)
207205
end
208206

207+
# constants
208+
eps(::Type{Float128}) = ccall(("eps_q", :libfloat128), Float128, (), )
209+
realmin(::Type{Float128}) = ccall(("realmin_q", :libfloat128), Float128, (), )
210+
realmax(::Type{Float128}) = ccall(("realmax_q", :libfloat128), Float128, (), )
211+
convert(::Type{Float128}, ::Irrational{:π}) = ccall(("pi_q", :libfloat128), Float128, (), )
212+
convert(::Type{Float128}, ::Irrational{:e}) = ccall(("e_q", :libfloat128), Float128, (), )
213+
214+
209215

210216
# unary functions
211217
for f in (:acos, :acosh, :asin, :asinh, :atan, :atanh, :cosh, :cos,
@@ -242,13 +248,16 @@ for f in (:acos, :acosh, :asin, :asinh, :atan, :atanh, :cosh, :cos,
242248
end
243249

244250
# unary complex functions with real result
245-
for f in (:abs, :imag, :real, )
251+
for f in (:abs, :imag, :real, :angle )
246252
@eval function $f(x::Float128)
247253
ccall(($(string(:c,f,:_q)), :libfloat128), Float128, (Complex256, ), x)
248254
end
249255
end
250256

251-
# arg, expi, proj
257+
function cis(x::Float128)
258+
ccall((:ccis_q, :libfloat128), Complex256, (Float128,), x)
259+
end
260+
252261

253262

254263
function string(x::Float128)

0 commit comments

Comments
 (0)