Skip to content

Commit 2580bc9

Browse files
duvenaudaxch
authored andcommitted
Make new stack size arithmetic match the old one exactly.
1 parent f3fcb50 commit 2580bc9

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

lib/fft.dx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,6 @@ def odd_sized_palindrome(mid:a, seq:n=>a) -> ((n `Either` () `Either` n)=>a) giv
2020
Right () -> mid
2121
Right i -> seq[i]
2222

23-
def nextpow2(x:Nat) -> Nat =
24-
case is_power_of_2 x of
25-
True -> natlog2 x
26-
False -> 1 + natlog2 x
27-
2823
'## Inner FFT functions
2924

3025
data FTDirection =

lib/prelude.dx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2241,6 +2241,11 @@ def natlog2(x:Nat) -> Nat =
22412241
False
22422242
unsafe_nat_diff(tmp, 1) -- TODO: something less horrible
22432243

2244+
def nextpow2(x:Nat) -> Nat =
2245+
case is_power_of_2 x of
2246+
True -> natlog2 x
2247+
False -> 1 + natlog2 x
2248+
22442249
def general_integer_power(
22452250
times:(a,a)->a,
22462251
one:a, base:a,
@@ -2477,7 +2482,7 @@ struct Stack(h:Heap, a|Data) =
24772482

24782483
def ensure_size_at_least(req_size:Nat) -> {State h} () =
24792484
if req_size > self.buf_size() then
2480-
new_buf_size = intpow2 (1 + natlog2 req_size)
2485+
new_buf_size = intpow2 $ nextpow2 req_size
24812486
buf = self.unsafe_get_buffer()
24822487
logical_size = self.size()
24832488
cur_data = get $ unsafe_coerce(to=Ref(h, Fin logical_size => a), buf)

0 commit comments

Comments
 (0)