Skip to content

galois v0.0.25

Compare
Choose a tag to compare
@github-actions github-actions released this 21 Mar 22:06
· 0 commits to 989657f95e71f2b403c4969e0567b0a8170cd302 since this release

Released March 21, 2022

Breaking Changes

  • Separated LFSR into FLFSR/GLFSR and fixed/redefined terms (feedback poly, characteristic poly, state). (#285)
  • Removed galois.pow() and replaced it with the built-in pow(). (#300)
    >>> f = galois.Poly([6, 3, 0, 1], field=galois.GF(7))
    >>> g = galois.Poly([5, 0, 3], field=galois.GF(7))
    >>> pow(f, 123456789, g)
    Poly(6x + 2, GF(7))
  • Removed FieldClass.properties and replaced with FieldClass.__str__. (#289)
    >>> GF = galois.GF(3**5)
    >>> print(GF)
    Galois Field:
      name: GF(3^5)
      characteristic: 3
      degree: 5
      order: 243
      irreducible_poly: x^5 + 2x + 1
      is_primitive_poly: True
      primitive_element: x
  • Differentiated repr() and str() for Galois field arrays, like NumPy. repr() displays the finite field's order, but str() does not.
    >>> GF = galois.GF(31, display="power")
    >>> x = GF([1, 23, 0, 15])
    >>> x
    GF([   1, α^27,    0, α^21], order=31)
    >>> print(x)
    [   1, α^27,    0, α^21]
  • Renamed Poly.String() to Poly.Str(). Removed Poly.string and replaced it with Poly.__str__. (#300)
    >>> f = galois.Poly.Str("x^3 + x + 1"); f
    Poly(x^3 + x + 1, GF(2))
    >>> str(f)
    'x^3 + x + 1'
  • Renamed Poly.Integer() to Poly.Int(). Removed Poly.integer and replaced it with Poly.__int__. (#300)
    >>> f = galois.Poly.Int(11); f
    Poly(x^3 + x + 1, GF(2))
    >>> int(f)
    11

Changes

  • Fixed bug in Fibonacci/Galois LFSRs where feedback polynomial wasn't interpreted correctly for fields with characteristic greater than 2. (#299)
  • Utilized memoization for expensive search routines (irreducible_poly() and primitive_poly()) to speed-up subsequent calls. (#295)
    In [2]: %time galois.primitive_poly(7, 4)
    CPU times: user 675 ms, sys: 6.24 ms, total: 682 ms
    Wall time: 741 ms
    Out[2]: Poly(x^4 + x^2 + 3x + 5, GF(7))
    
    In [3]: %time galois.primitive_poly(7, 4)
    CPU times: user 30 µs, sys: 0 ns, total: 30 µs
    Wall time: 31.7 µs
    Out[3]: Poly(x^4 + x^2 + 3x + 5, GF(7))
  • Added support for bin(), oct(), and hex() on Poly objects. (#300)
    >>> f = galois.Poly.Int(11); f
    Poly(x^3 + x + 1, GF(2))
    >>> bin(f)
    '0b1011'
    >>> oct(f)
    '0o13'
    >>> hex(f)
    '0xb'
  • Made Galois field arrays display with fixed-width elements, like NumPy. (#270)
  • Achieved speed-up of repr() and str() on Galois field arrays of at least 25x. Achieved a much greater speed-up for large arrays, since now elements converted to ... are no longer needlessly converted to their string representation. (#270)
  • Overhauled documentation and website. Type hints are now displayed in the API reference. (#263)
  • Various bug fixes.

Contributors

Commits

f9b6cab Version bump to 0.0.25
989657f Add release notes for v0.0.25
c2e3def Update feature list
98b9f3f Make GF() docstring more readable with a tab set
a401abf Document poly arithmetic only on the Basic Usage page
3edc4e9 Remove galois.pow(), instead use built-in pow()
7f8ce52 Define Poly.__index__() to support bin(), oct(), and hex()
6816adc Remove unnecessary __ne__() definition
45db3a5 Rename Poly.Integer to Poly.Int
d05ce1b Replace Poly.integer with int(poly)
4a3ff9d Rename Poly.String() to Poly.Str()
47eb6f5 Replace Poly.string with str(poly)
af3e6ee Remove unused section in API reference
7c2b1f0 Do not fail CI if codecov fails to upload
d3be8ab Complete overhaul of LFSRs and fix bug when p > 2
f691bb5 Memoize slow polynomial search functions
2bd30ef Differentiate str() and repr() for FieldArray
1b102d1 Remove unnecessary tabs in docstring
5b5c65c Replace FieldClass.properties with FieldClass.__str__()
3ec09d3 Separate LFSR into FLFSR and GLFSR
1a2a8e7 Build the docs with Python 3.8 on Read the Docs
b373d45 Fix properties formatting for prime fields in power display mode
3881ea0 Fix typos in finite field tutorials
1aceed0 Display type hints in API documentation
5efd39c Add tabbed sections with different reprs in basic usage
1dd41e1 Add tabbed sections with different reprs for tutorials
c63fecf Modify the CSS rules for tab-set from sphinx-design
1018fd5 Add sphinx-design dependency for tabbed sections
b77e999 Switch light/night mode icons
337ef93 Update BibTeX citation
88487c1 Remove unnecessary doc dependencies
005c493 Revert autosummary table fix since already fixed in upstream
5799874 Separate Poly class and init docstrings
5553d0f Revert use of box drawing glyphs for monospace consistency with more fonts
aaebb3d Remove NumPy reference and use Basic Usage articles instead
2f24414 Remove old basic usage file
7e19eab Fix autosummary strange line wrapping
f28176d Add more detail in the field element representation docs
603c03d Update Getting Started guide with new array repr()
fd9a57c Make repr() more efficient for large arrays
3c4c2d4 Make "poly" display mode use fixed widths
7ffd551 Make "poly" display mode more efficient for prime fields
3a0c668 Use fixed widths in "power" display mode for all array sizes
b506f1b Make __repr__() more efficient
6872b7a Initial docs port to sphinx-immaterial