Tweaks to galois.py
This commit is contained in:
parent
0d92601702
commit
043dbbb1a2
19
galois.py
19
galois.py
@ -46,6 +46,16 @@ class GaloisNumber:
|
||||
raise ValueError ("Value {0} is outside field".format (v))
|
||||
self.value = v
|
||||
|
||||
def mul_region (self, arr, init_value = None):
|
||||
if not init_value:
|
||||
init_value = [GaloisNumber (0, self.field)] * len (arr)
|
||||
if any ([type(x) != GaloisNumber or type(x.field) != type(self.field) for x in arr]):
|
||||
raise ValueError ("All items must be Galois numbers in this field!")
|
||||
return [x * self + i for x, i in zip (arr, init_value)]
|
||||
|
||||
def copy (self):
|
||||
return GaloisNumber (self.value, self.field)
|
||||
|
||||
def __add__ (self, other):
|
||||
if self.field != other.field:
|
||||
raise GaloisException ("Field elements from different fields")
|
||||
@ -54,13 +64,13 @@ class GaloisNumber:
|
||||
def __iadd__ (self, other):
|
||||
if self.field != other.field:
|
||||
raise GaloisException ("Field elements from different fields")
|
||||
self.value ^= other.value
|
||||
return self + other
|
||||
|
||||
def __sub__ (self, other):
|
||||
return self + other
|
||||
|
||||
def __isub__ (self, other):
|
||||
self += other
|
||||
return self + other
|
||||
|
||||
def __invert__ (self):
|
||||
return self.field.invert (self)
|
||||
@ -76,7 +86,7 @@ class GaloisNumber:
|
||||
def __imul__ (self, other):
|
||||
if self.field != other.field:
|
||||
raise GaloisException ("Field elements from different fields")
|
||||
self.value = self.field.direct_multiply (self.value, other.value)
|
||||
return self.field.multiply (self, other)
|
||||
|
||||
def __floordiv__ (self, other):
|
||||
if self.field != other.field:
|
||||
@ -94,6 +104,9 @@ class GaloisNumber:
|
||||
def __repr__ (self):
|
||||
return self.field.fmt (self.value)
|
||||
|
||||
def to_bytes (self):
|
||||
return (self.value).to_bytes ((self.field.bits + 7) // 8, byteorder='big')
|
||||
|
||||
class GaloisFieldLog:
|
||||
'''
|
||||
Pure python implementation of Galois (finite) field arithmetic routines using log/antilog
|
||||
|
Loading…
Reference in New Issue
Block a user