Release Notes¶
v0.0.19¶
Breaking Changes¶
Remove unnecessary
is_field()
function. Useisinstance(x, galois.FieldClass)
orisinstance(x, galois.FieldArray)
instead.Remove
log_naive()
function. Might be re-added later throughnp.log()
on a multiplicative group array.Rename
mode
kwarg ingalois.GF()
tocompile
.Revert
np.copy()
override that always returns a subclass. Now, by default it does not return a sublcass. To return a Galois field array, usex.copy()
ornp.copy(x, subok=True)
instead.
Changes¶
Improve documentation.
Improve unit test coverage.
Add benchmarking tests.
Add initial LFSR implementation.
Add
display
kwarg togalois.GF()
class factory to set the display mode at class-creation time.Add
Poly.reverse()
method.Allow polynomial strings as input to
galois.GF()
. For example,galois.GF(2**4, irreducible_poly="x^4 + x + 1")
.Enable
np.divmod()
andnp.remainder()
on Galois field arrays. The remainder is always zero, though.Fix bug in
bch_valid_codes()
where repetition codes weren’t included.Various minor bug fixes.
Contributors¶
Matt Hostetter (@mhostetter)
v0.0.18¶
Breaking Changes¶
Make API more consistent with software like Matlab and Wolfram:
Rename
galois.prime_factors()
togalois.factors()
.Rename
galois.gcd()
togalois.egcd()
and addgalois.gcd()
for conventional GCD.Rename
galois.poly_gcd()
togalois.poly_egcd()
and addgalois.poly_gcd()
for conventional GCD.Rename
galois.euler_totient()
togalois.euler_phi()
.Rename
galois.carmichael()
togalois.carmichael_lambda()
.Rename
galois.is_prime_fermat()
togalois.fermat_primality_test()
.Rename
galois.is_prime_miller_rabin()
togalois.miller_rabin_primality_test()
.
Rename polynomial search
method
keyword argument values from["smallest", "largest", "random"]
to["min", "max", "random"]
.
Changes¶
Clean up
galois
API anddir()
so only public classes and functions are displayed.Speed-up
galois.is_primitive()
test and search for primitive polynomials ingalois.primitive_poly()
.Speed-up
galois.is_smooth()
.Add Reed-Solomon codes in
galois.ReedSolomon
.Add shortened BCH and Reed-Solomon codes.
Add error detection for BCH and Reed-Solomon with the
detect()
method.Add general cyclic linear block code functions.
Add Matlab default primitive polynomial with
galois.matlab_primitive_poly()
.Add number theoretic functions:
Add
galois.legendre_symbol()
,galois.jacobi_symbol()
,galois.kronecker_symbol()
.Add
galois.divisors()
,galois.divisor_sigma()
.Add
galois.is_composite()
,galois.is_prime_power()
,galois.is_perfect_power()
,galois.is_square_free()
,galois.is_powersmooth()
.Add
galois.are_coprime()
.
Clean up integer factorization algorithms and add some to public API:
Add
galois.perfect_power()
,galois.trial_division()
,galois.pollard_p1()
,galois.pollard_rho()
.
Clean up API reference structure and hierarchy.
Fix minor bugs in BCH codes.
Contributors¶
Matt Hostetter (@mhostetter)
v0.0.17¶
Breaking Changes¶
Rename
FieldMeta
toFieldClass
.Remove
target
keyword fromFieldClass.compile()
until there is better support for GPUs.Consolidate
verify_irreducible
andverify_primitive
keyword arguments intoverify
for thegalois.GF()
class factory function.Remove group arrays until there is more complete support.
Changes¶
Speed-up Galois field class creation time.
Speed-up JIT compilation time by caching functions.
Speed-up
Poly.roots()
by JIT compiling it.Add BCH codes with
galois.BCH
.Add ability to generate irreducible polynomials with
irreducible_poly()
andirreducible_polys()
.Add ability to generate primitive polynomials with
primitive_poly()
andprimitive_polys()
.Add computation of the minimal polynomial of an element of an extension field with
minimal_poly()
.Add display of arithmetic tables with
FieldClass.arithmetic_table()
.Add display of field element representation table with
FieldClass.repr_table()
.Add Berlekamp-Massey algorithm in
berlekamp_massey()
.Enable ipython tab-completion of Galois field classes.
Cleanup API reference page.
Add introduction to Galois fields tutorials.
Fix bug in
is_primitive()
where some reducible polynomials were marked irreducible.Fix bug in integer<–>polynomial conversions for large binary polynomials.
Fix bug in “power” display mode of 0.
Other minor bug fixes.
Contributors¶
Dominik Wernberger (@Werni2A)
Matt Hostetter (@mhostetter)
v0.0.16¶
Changes¶
Add
Field()
alias ofGF()
class factory.Add finite groups modulo
n
withGroup()
class factory.Add
is_group()
,is_field()
,is_prime_field()
,is_extension_field()
.Add polynomial constructor
Poly.String()
.Add polynomial factorization in
poly_factors()
.Add
np.vdot()
support.Fix PyPI packaging issue from v0.0.15.
Fix bug in creation of 0-degree polynomials.
Fix bug in
poly_gcd()
not returning monic GCD polynomials.
Contributors¶
Matt Hostetter (@mhostetter)
v0.0.15¶
Breaking Changes¶
Rename
poly_exp_mod()
topoly_pow()
to mimic the nativepow()
function.Rename
fermat_primality_test()
tois_prime_fermat()
.Rename
miller_rabin_primality_test()
tois_prime_miller_rabin()
.
Changes¶
Massive linear algebra speed-ups. (See #88)
Massive polynomial speed-ups. (See #88)
Various Galois field performance enhancements. (See #92)
Support
np.convolve()
for two Galois field arrays.Allow polynomial arithmetic with Galois field scalars (of the same field). (See #99), e.g.
>>> GF = galois.GF(3)
>>> p = galois.Poly([1,2,0], field=GF)
Poly(x^2 + 2x, GF(3))
>>> p * GF(2)
Poly(2x^2 + x, GF(3))
Allow creation of 0-degree polynomials from integers. (See #99), e.g.
>>> p = galois.Poly(1)
Poly(1, GF(2))
Add the four Oakley fields from RFC 2409.
Speed-up unit tests.
Restructure API reference.
Contributors¶
Matt Hostetter (@mhostetter)