Skip to content

Commit 8eca99e

Browse files
authored
Make thread-safe; use JLL package (#106)
* Make _buffer thread-safe * Make thread-safe; use JLL package * BinaryProvider not needed * resize! global vectors * Vector declaration * Use RefArray * Use buffer in functions
1 parent 7c213d3 commit 8eca99e

File tree

7 files changed

+116
-126
lines changed

7 files changed

+116
-126
lines changed

.gitignore

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
11
*.jl.cov
22
*.jl.mem
33
Manifest.toml
4-
deps/IntelRDFPMathLib*
5-
deps/installed_vers
6-
deps/libbid*.*
7-
deps/deps.jl
8-
deps/usr
9-
deps/build.log

.travis.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,15 @@ os:
55
- osx
66

77
julia:
8-
- 0.7
9-
- 1.0
8+
- 1.3
9+
- 1.4
1010
- nightly
1111

12+
env:
13+
matrix:
14+
- JULIA_NUM_THREADS=1
15+
- JULIA_NUM_THREADS=2
16+
1217
notifications:
1318
email: false
1419

Project.toml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,13 @@ uuid = "55939f99-70c6-5e9b-8bb0-5071ed7d61fd"
33
version = "0.4.10"
44

55
[deps]
6-
BinaryProvider = "b99e7846-7c00-51b0-8f62-c81ae34c0232"
7-
Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
6+
DecFP_jll = "47200ebd-12ce-5be5-abb7-8e082af23329"
87
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
98
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
109

1110
[compat]
12-
BinaryProvider = "0.5"
1311
SpecialFunctions = "0.7, 0.8, 0.9"
14-
julia = "0.7, 1"
12+
julia = "1.3"
1513

1614
[extras]
1715
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"

appveyor.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
environment:
22
matrix:
3-
- julia_version: 0.7
4-
- julia_version: 1.0
3+
- julia_version: 1.3
4+
- julia_version: 1.4
55
- julia_version: latest
66

77
platform:

deps/build.jl

Lines changed: 0 additions & 37 deletions
This file was deleted.

src/DecFP.jl

Lines changed: 79 additions & 72 deletions
Large diffs are not rendered by default.

test/runtests.jl

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,28 @@
11
using DecFP, Test, Printf, Base.MathConstants, SpecialFunctions
22

3-
@test unsafe_load(DecFP.flags[]) == 0
3+
@test DecFP.flags[Threads.threadid()] == 0
44

55
import DecFP.isnanstr
66
@test isnanstr("nan") && isnanstr(" +NAN") && isnanstr("-NaN") && !isnanstr("nano")
77

8+
function testthreads(T, i, mode)
9+
@test @sprintf("%.0f", T(i)) == string(i)
10+
@test rounding(T) == RoundNearest
11+
setrounding(T, mode) do
12+
@test rounding(T) == mode
13+
if mode in (RoundNearest, RoundToZero, RoundDown)
14+
@test T(1) + eps(T(1)) / 2 == T(1)
15+
else
16+
@test T(1) + eps(T(1)) / 2 == T(1) + eps(T(1))
17+
end
18+
end
19+
@test rounding(T) == RoundNearest
20+
@test_throws InexactError convert(Int64, T("1.5"))
21+
@test_throws DomainError sqrt(T(-2))
22+
end
23+
824
for T in (Dec32, Dec64, Dec128)
9-
@info "TESTING $T ..."
25+
@info "TESTING $T nthreads = $(Threads.nthreads()) ..."
1026

1127
if T == Dec32
1228
@test d32"3.2" * d32"4.5" == d32"14.4"
@@ -141,6 +157,9 @@ for T in (Dec32, Dec64, Dec128)
141157
@test f(T(v)) f(v)
142158
end
143159

160+
# issue #47
161+
@test exp10(T(0)) == T(1)
162+
144163
for c in (π, e, γ, catalan, φ)
145164
@test T(c) Float64(c)
146165
end
@@ -215,11 +234,15 @@ for T in (Dec32, Dec64, Dec128)
215234
@test typeof(xd * pi) == T
216235
@test typeof((xd+yd*im)*pi) == Complex{T}
217236

237+
Threads.@threads for (i, mode) in collect(enumerate((RoundNearest, RoundToZero, RoundFromZero, RoundUp, RoundDown)))
238+
testthreads(T, i, mode)
239+
end
240+
218241
# issue #85
219242
@test T(1.5) == T(T(1.5))
220243
end
221244

222-
@test unsafe_load(DecFP.flags[]) == 0
245+
@test DecFP.flags[Threads.threadid()] == 0
223246

224247
# issue #37
225248
@test reinterpret(UInt128, Dec128(1.5)) == 0x303e000000000000000000000000000f

0 commit comments

Comments
 (0)