document lookup table
This commit is contained in:
@@ -1,6 +1,12 @@
|
|||||||
from typing import Callable
|
from typing import Callable
|
||||||
|
|
||||||
def pack_lut_4(f: Callable[..., int], order: tuple[int, int, int, int] = (0, 1, 2, 3)) -> int:
|
def pack_lut_4(f: Callable[..., int], order: tuple[int, int, int, int] = (0, 1, 2, 3)) -> int:
|
||||||
|
"""
|
||||||
|
Pack a 4-input Boolean function into a 16-bit LUT (Look-Up Table).
|
||||||
|
|
||||||
|
The function is evaluated for all 16 input combinations, and the result for input index ``i`` is stored in bit ``i`` of the returned integer.
|
||||||
|
The ``order`` parameter specifies how the input bits of the LUT index are mapped to the arguments of ``f``, allowing input permutations.
|
||||||
|
"""
|
||||||
lut = 0
|
lut = 0
|
||||||
for idx in range(16):
|
for idx in range(16):
|
||||||
bits = [(idx >> i) & 1 for i in range(4)] # b0, b1, b2, b3
|
bits = [(idx >> i) & 1 for i in range(4)] # b0, b1, b2, b3
|
||||||
@@ -63,6 +69,9 @@ def F32_7(x0, x1, y0, y1):
|
|||||||
return (x0 & x1 & y1) ^ (x0 & y0 & y1) ^ (x0 & y0) ^ (x1 & y0 & y1) ^ x1 ^ y0 ^ y1 ^ 1
|
return (x0 & x1 & y1) ^ (x0 & y0 & y1) ^ (x0 & y0) ^ (x1 & y0 & y1) ^ x1 ^ y0 ^ y1 ^ 1
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
"""
|
||||||
|
Derive TEA3 Look-Up Tables from F31 and F32 definitions.
|
||||||
|
"""
|
||||||
F31_orders = [
|
F31_orders = [
|
||||||
(0, 1, 2, 3),
|
(0, 1, 2, 3),
|
||||||
(0, 1, 2, 3),
|
(0, 1, 2, 3),
|
||||||
|
|||||||
Reference in New Issue
Block a user