summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKévin Le Gouguec <kevin.legouguec@airbus.com>2019-07-02 17:21:00 +0200
committerKévin Le Gouguec <kevin.legouguec@airbus.com>2019-07-02 17:21:00 +0200
commitc8d9ca35ffdb735f8fe5a2a7e018fd29e88f215d (patch)
treeb959865809e50612867d93428ce093a04266ec95
parentb34ff4d15c914b726dd3fee77eaff95fa54eb61f (diff)
downloadlilliput-ae-implem-c8d9ca35ffdb735f8fe5a2a7e018fd29e88f215d.tar.xz
Réécriture de M_R² en Python
-rw-r--r--src/add_python/lilliput/multiplications.py41
1 files changed, 15 insertions, 26 deletions
diff --git a/src/add_python/lilliput/multiplications.py b/src/add_python/lilliput/multiplications.py
index 8ca8c7f..edbdaf3 100644
--- a/src/add_python/lilliput/multiplications.py
+++ b/src/add_python/lilliput/multiplications.py
@@ -41,6 +41,9 @@ def _M1(xi):
def _M2(xi):
return (xi<<6 ^ (xi&0b11111000) ^ xi>>6) & 0xff
+def _M3(xi):
+ return xi & 0b00011111
+
M = (
( _0, _Id, _0, _0, _0, _0, _0, _0),
@@ -91,6 +94,17 @@ MR = (
(_Id, _0, _0, _0, _0, _0, _0, _0),
)
+MR2 = (
+ ( _0, _0, _Id, _0, _0, _0, _0, _0),
+ ( _0, _0, _0, _Id, _Sr(3), _0, _0, _0),
+ ( _0, _0, _0, _0, _Id, _Sr(3), _M3, _0),
+ ( _0, _0, _0, _0, _0, _Id, _Sl(3), _0),
+ ( _0, _0, _0, _Sl(2), _0, _0, _Id, _Sl(3)),
+ ( _0, _0, _0, _0, _Sl(2), _0, _0, _Id),
+ (_Id, _0, _0, _0, _0, _0, _0, _0),
+ ( _0, _Id, _0, _0, _0, _0, _0, _0),
+)
+
def _multiplication(m, reverse=True):
def ordered(l):
@@ -107,31 +121,6 @@ def _multiplication(m, reverse=True):
return _multiply
-def _multiply_MR2(lane):
- multiplied_lane = [lane[(byte+2) % 8] for byte in range(0, 8)]
-
- multiplied_lane[1] ^= ((lane[4] >> 3) & 0xff)
- multiplied_lane[2] ^= ((lane[5] >> 3) & 0xff)
- multiplied_lane[3] ^= ((lane[6] << 3) & 0xff)
- multiplied_lane[4] ^= ((lane[3] << 2) & 0xff) ^ ((lane[7] << 3) & 0xff)
- multiplied_lane[5] ^= ((lane[4] << 2) & 0xff)
-
-
- # binary matrix m3
- multi_mat_l6_m3 = 0
- l6 = lane[6]
- multi_mat_l6_m3 ^= (l6 & 0x1)
- multi_mat_l6_m3 ^= (l6 & 0x2)
- multi_mat_l6_m3 ^= (l6 & 0x4)
- multi_mat_l6_m3 ^= (l6 & 0x8)
- multi_mat_l6_m3 ^= (l6 & 0x10)
-
-
- multiplied_lane[2] ^= multi_mat_l6_m3
-
- return multiplied_lane
-
-
def _multiply_MR3(lane):
multiplied_lane = [lane[(byte+3) % 8] for byte in range(0, 8)]
@@ -193,6 +182,6 @@ ALPHAS = (
_multiplication(M2),
_multiplication(M3),
_multiplication(MR, reverse=False),
- _multiply_MR2,
+ _multiplication(MR2, reverse=False),
_multiply_MR3
)