Skip to content

Commit 6453242

Browse files
committed
a different approach to edge decomposition
1 parent 96ed07f commit 6453242

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

src/decompositions.jl

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,23 +48,27 @@ end
4848
"""
4949
function tet_to_edges!(pair::Vector, pair_set::Set, t)
5050
empty!(pair_set)
51-
for i in eachindex(t)
51+
length(pair) < length(t)*6 && resize!(pair, length(t)*6)
52+
num_pair = 1
53+
@inbounds for i in eachindex(t)
5254
for ep in 1:6
5355
p1 = t[i][tetpairs[ep][1]]
5456
p2 = t[i][tetpairs[ep][2]]
55-
push!(pair_set, p1 > p2 ? (p2,p1) : (p1,p2))
57+
elt = p1 > p2 ? (p2,p1) : (p1,p2)
58+
if !in(elt, pair_set)
59+
push!(pair_set, elt)
60+
pair[num_pair] = elt
61+
num_pair += 1
62+
end
5663
end
5764
end
58-
length(pair) < length(pair_set) && resize!(pair, length(pair_set))
59-
# copy pair set to array since sets are not sortable
60-
i = 1
61-
for elt in pair_set
62-
pair[i] = elt
63-
i = i + 1
64-
end
6565

6666
# sort the edge pairs for better point lookup
67-
sort!(view(pair, 1:(i-1)))
67+
sort!(view(pair, 1:(num_pair-1)))
68+
69+
return num_pair - 1 # return the number of pairs
70+
end
6871

69-
return i - 1 # return the number of pairs
72+
function bitpack(xi,yi)
73+
(unsafe_trunc(UInt64, xi) << 32) | unsafe_trunc(UInt64, yi)
7074
end

0 commit comments

Comments
 (0)