Skip to content

Commit 93b51ff

Browse files
committed
fix style
1 parent 24491e0 commit 93b51ff

File tree

3 files changed

+30
-13
lines changed

3 files changed

+30
-13
lines changed

nucs/heaps.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,10 @@ def min_heap_init(capacity: int) -> NDArray:
3232
@njit(cache=True)
3333
def min_heap_add(heap: NDArray, capacity: int, val: int) -> None:
3434
if heap[capacity + val] == 0:
35-
heap[heap[-1]] = val
36-
min_heap_up(heap, heap[-1])
37-
heap[-1] += 1
35+
size = heap[-1]
36+
heap[size] = val
37+
min_heap_up(heap, size)
38+
heap[-1] = size + 1
3839
heap[capacity + val] = 1
3940

4041

@@ -65,7 +66,7 @@ def min_heap_up(heap: NDArray, pos: int) -> None:
6566
while pos > 0:
6667
father = (pos - 1) >> 1
6768
if heap[father] <= heap[pos]:
68-
break
69+
return
6970
min_heap_swap(heap, pos, father)
7071
pos = father
7172

@@ -75,13 +76,14 @@ def min_heap_down(heap: NDArray, pos: int) -> None:
7576
"""
7677
Non-recursive version because of a Numba bug.
7778
"""
79+
size = heap[-1]
7880
while True:
7981
left = (pos << 1) + 1
80-
if left >= heap[-1]:
81-
break
82+
if left >= size:
83+
return
8284
right = left + 1
83-
smallest = right if right < heap[-1] and heap[right] < heap[left] else left
85+
smallest = right if right < size and heap[right] < heap[left] else left
8486
if heap[pos] <= heap[smallest]:
85-
break
87+
return
8688
min_heap_swap(heap, pos, smallest)
8789
pos = smallest

nucs/propagators/propagators.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,17 +214,32 @@ def reset_triggered_propagators(triggered_propagators: NDArray, propagator_nb: i
214214

215215

216216
@njit(cache=True)
217-
def update_propagators(
217+
def update_propagators_with_previous_prop(
218218
propagator_nb: int,
219219
triggered_propagators: NDArray,
220220
not_entailed_propagators: NDArray,
221221
triggers: NDArray,
222222
events: int,
223223
variable: int,
224-
previous_prop_idx: int = -1,
224+
previous_prop_idx: int,
225225
) -> None:
226226
for prop_idx in triggers[variable, events]:
227227
if prop_idx == -1:
228-
break
228+
return
229229
if not_entailed_propagators[prop_idx] and prop_idx != previous_prop_idx:
230230
min_heap_add(triggered_propagators, propagator_nb, prop_idx)
231+
232+
233+
def update_propagators(
234+
propagator_nb: int,
235+
triggered_propagators: NDArray,
236+
not_entailed_propagators: NDArray,
237+
triggers: NDArray,
238+
events: int,
239+
variable: int,
240+
) -> None:
241+
for prop_idx in triggers[variable, events]:
242+
if prop_idx == -1:
243+
return
244+
if not_entailed_propagators[prop_idx]:
245+
min_heap_add(triggered_propagators, propagator_nb, prop_idx)

nucs/solvers/bound_consistency_algorithm.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
)
3939
from nucs.heaps import min_heap_pop
4040
from nucs.numba_helper import function_from_address
41-
from nucs.propagators.propagators import COMPUTE_DOMAINS_FCTS, update_propagators
41+
from nucs.propagators.propagators import COMPUTE_DOMAINS_FCTS, update_propagators_with_previous_prop
4242
from nucs.solvers.solver import is_solved
4343

4444

@@ -118,7 +118,7 @@ def bound_consistency_algorithm(
118118
if events:
119119
if domain_min == domain_max:
120120
events |= EVENT_MASK_GROUND
121-
update_propagators(
121+
update_propagators_with_previous_prop(
122122
propagator_nb,
123123
triggered_propagators,
124124
not_entailed_propagators_stk[top],

0 commit comments

Comments
 (0)