R4 = GF(2)[x]/(x4+1)
x4 = 1 bindec("1000")) { if (($max & $res) > 0) { $res ^= $max; $tmp = $max >> 4; $res ^= $tmp; } $max >>= 1; } return getbin($res); } function poly_add($val1, $val2) { return getbin($val1 ^ $val2); } function getpoly($val) { $res = ""; $first = false; for($i = 0; $i < strlen($val); $i++) { if ($val[$i] == '1') { if ($first) $res .= " + "; else $first = true; if ((strlen($val)-$i-1) != 0) $res .= "x" . (strlen($val)-$i-1) . ""; else $res .= "1"; } } if ($res == "") $res = "0"; return $res; } echo "

Multiplication

\n"; for ($i = 0; $i < 16; $i++) { if ($i == 0) { echo ""; } echo "\n"; } echo "\n"; echo "\t\n"; for ($j = 0; $j < 16; $j++) { echo "\t"; } echo "\n"; } ?>
\n"; for ($j = 0; $j < 16; $j++) { echo "\t"; echo getbin($j); echo "
\n"; echo "\t\t" . getbin($i) . "\n"; echo "\t"; echo poly_mult($j, $i); echo "
Addition\n"; for ($i = 0; $i < 16; $i++) { if ($i == 0) { echo ""; } echo "\n"; } echo "\n"; echo "\t\n"; for ($j = 0; $j < 16; $j++) { echo "\t"; } echo "\n"; } ?>
\n"; for ($j = 0; $j < 16; $j++) { echo "\t"; echo getbin($j); echo "
\n"; echo "\t\t" . getbin($i) . "\n"; echo "\t"; echo poly_add($j, $i); echo "
Multiplication - Polynomial Form\n"; for ($i = 0; $i < 16; $i++) { if ($i == 0) { echo ""; } echo "\n"; } echo "\n"; echo "\t\n"; for ($j = 0; $j < 16; $j++) { echo "\t"; } echo "\n"; } ?>
\n"; for ($j = 0; $j < 16; $j++) { echo "\t"; echo getpoly(getbin($j)); echo "
\n"; echo "\t\t" . getpoly(getbin($i)) . "\n"; echo "\t"; echo getpoly(poly_mult($j, $i)); echo "
Addition - Polynomial Form\n"; for ($i = 0; $i < 16; $i++) { if ($i == 0) { echo ""; } echo "\n"; } echo "\n"; echo "\t\n"; for ($j = 0; $j < 16; $j++) { echo "\t"; } echo "\n"; } ?>
\n"; for ($j = 0; $j < 16; $j++) { echo "\t"; echo getpoly(getbin($j)); echo "
\n"; echo "\t\t" . getpoly(getbin($i)) . "\n"; echo "\t"; echo getpoly(poly_add($j, $i)); echo "