From 1d20e2a89a9dbae670d813d90e50f44b3f1dbd91 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Sat, 27 Jul 2024 20:28:30 +0200 Subject: Fixed truly crazy bug in some rare cases --- std/Number/Ternary.bruijn | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'std/Number/Ternary.bruijn') diff --git a/std/Number/Ternary.bruijn b/std/Number/Ternary.bruijn index fcc6ca6..5392b63 100644 --- a/std/Number/Ternary.bruijn +++ b/std/Number/Ternary.bruijn @@ -384,12 +384,16 @@ div² [z [[[[rec]]]] (+0) 0 0] ⧗ Number → Number # also counts leading 0s log₃* [0 (+0) inc inc inc] ⧗ Number → Number +:test (log₃* (+42)) ((+5)) +:test (log₃* [[[[1 (0 (0 (0 (0 3))))]]]]) ((+5)) + # ceiled integer log₃ by counting number of trits log₃ log₃* ∘ strip ⧗ Number → Number :test (log₃ (+0)) ((+0)) :test (log₃ (+5)) ((+3)) :test (log₃ (+42)) ((+5)) +:test (log₃ [[[[1 (0 (0 (0 (0 3))))]]]]) ((+1)) # amount of non-zero trits hamming-weight [0 (+0) inc inc [0]] ⧗ Number → Number @@ -427,7 +431,7 @@ force [[[0 ? 3 ←0 0] + trim [(log₃* 0) >? 3 ←0 0] left trim ((nth-trit --2 0) ↑ 1) right trim ↑⁰0 @@ -435,7 +439,7 @@ double-shift [[[left : right]]] ⧗ Number → Number → Number → (Pair Numbe # technique by Douglas W. Jones # algorithm originally intended for fixed-width numbers (=> ugly hacks) # TODO: remove the final `huh` correction step (probably some off-by-one bug?) -quot-rem [[[[[z [[[[rec]]]] 1 (+0) 4]]] ?1 ⋀? 6) ⋁? (