Release Notes

v0.0.17

Breaking Changes

  • Rename FieldMeta to FieldClass.

  • Remove target keyword from FieldClass.compile() until there is better support for GPUs.

  • Consolidate verify_irreducible and verify_primitive keyword arguments into verify for the galois.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() and irreducible_polys().

  • Add ability to generate primitive polynomials with primitive_poly() and primitive_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 of GF() class factory.

  • Add finite groups modulo n with Group() 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() to poly_pow() to mimic the native pow() function.

  • Rename fermat_primality_test() to is_prime_fermat().

  • Rename miller_rabin_primality_test() to is_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)

v0.0.14

Breaking Changes

  • Rename GFArray.Eye() to GFArray.Identity().

  • Rename chinese_remainder_theorem() to crt().

Changes

  • Lots of performance improvements.

  • Additional linear algebra support.

  • Various bug fixes.

Contributors

  • Baalateja Kataru (@BK-Modding)

  • Matt Hostetter (@mhostetter)