diff options
| author | Kévin Le Gouguec <kevin.legouguec@airbus.com> | 2019-07-02 17:21:00 +0200 |
|---|---|---|
| committer | Kévin Le Gouguec <kevin.legouguec@airbus.com> | 2019-07-02 17:21:00 +0200 |
| commit | ca765aa586265fd0ab9c7baaee69f5c1dc9185ae (patch) | |
| tree | b959865809e50612867d93428ce093a04266ec95 /src/add_python/lilliput/multiplications.py | |
| parent | f501e900de666e13abd552b41d228666f3cdad35 (diff) | |
| download | lilliput-ae-implem-ca765aa586265fd0ab9c7baaee69f5c1dc9185ae.tar.xz | |
Réécriture de M_R² en Python
Diffstat (limited to 'src/add_python/lilliput/multiplications.py')
| -rw-r--r-- | src/add_python/lilliput/multiplications.py | 41 |
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 ) |
