Skip to content

Releases: mhostetter/galois

galois v0.0.22

03 Dec 17:03
Compare
Choose a tag to compare

Breaking Changes

  • Random integer generation is handled using new style random generators. Now each .Random() call will generate a new seed rather than using the NumPy "global" seed used with np.random.randint().

  • Add a seed=None keyword argument to FieldArray.Random() and Poly.Random(). A reproducible script can be constructed like this:

    rng = np.random.default_rng(123456789)
    x = GF.Random(10, seed=rng)
    y = GF.Random(10, seed=rng)
    poly = galois.Poly.Random(5, seed=rng, field=GF)

Changes

  • Official support for Python 3.9.
  • Major performance improvements to "large" finite fields (those with dtype=np.object_).
  • Minor performance improvements to all finite fields.
  • Add the Number Theoretic Transform (NTT) in ntt() and intt().
  • Add the trace of finite field elements in FieldArray.field_trace().
  • Add the norm of finite field elements in FieldArray.field_norm().
  • Support len() on Poly objects, which returns the length of the coefficient array (polynomial order + 1).
  • Support x.dot(y) syntax for the expression np.dot(x, y).
  • Minimum NumPy version bumped to 1.18.4 for new style random usage.
  • Various bug fixes.

Contributors

Commits

63760c3 Version bump to 0.0.22
5ecae0a Make Poly.Random() outputs consistent with GF.Random()
ba779a9 Add release notes for v0.0.22
1d144e2 Minor documentation tweaks
e1b499c Fix typo in docs build instructions
e4618a9 Add seed kwarg to Poly.Random()
ffe78b4 Add unit tests Random constructor with seed
6b00496 Use new numpy.random.default_rng()
7ecf8ec Bump NumPy to 1.18.4
ab0f108 Prevent other x**np.arange() overflow errors with improper dtype
817ad94 Fix #205
158f5ff Support ndarray.dot() usage
3e8ee35 Add tests for ndarray.dot() usage
976d2a4 Allow caching of constants in lambda functions
f1d2f6e Do not re-verify the type/value of FieldArray instances
d79332e Compute FieldClass.dtypes only once
9316409 Add unit test len(galois.Poly)
79f6dc2 Add len method to Poly class
ba217ff Add unit test with example from #194
48a4ad7 Fix #194
4b9c521 Add field_norm() method
e7d0590 Add field_trace() method
74171dc Fix typos
23ab9ed Fix #188
b08920c Fix #186
69d4a56 Support Python 3.9
c294e5c Add initial implementation of the NTT and INTT
e42a0eb Fix linter suggestions
f9ea821 Merge lint and test dependencies into requirements-dev.txt
271882e Move docs requirements file into docs/ folder
2ed51c2 Update VS Code settings for newer versions
4d25b08 Explicitly specify pylint config file for VS Code

galois v0.0.21

02 Sep 14:40
Compare
Choose a tag to compare

Changes

  • Fix docstrings and code completion for Python classes that weren't rendering correctly in an IDE.
  • Various documentation improvements.

Contributors

Commits

a23bff6 Version bump to 0.0.21
69672c2 Add release notes for v0.0.21
803c872 Clarify warnings in FieldClass and FieldArray docstrings
eff2ce7 Fix FieldClass and FieldArray class docstrings
743a265 Fix LFSR class docstrings
32f0b1f Fix Reed Solomon creation and docstring placement
1f6e582 Fix BCH creation and docstring placement
ded3e3a Update Twitter badge style in README
354f221 Fix display of logo on PyPI's website

galois v0.0.20

24 Aug 23:58
Compare
Choose a tag to compare

Breaking Changes

  • Move poly_gcd() functionality into gcd().
  • Move poly_egcd() functionality into egcd().
  • Move poly_factors() functionality into factors().

Changes

  • Fix polynomial factorization algorithms. Previously only parital factorization was implemented.
  • Support generating and testing irreducible and primitive polynomials over extension fields.
  • Support polynomial input to is_square_free().
  • Minor documentation improvements.
  • Pin Numba dependency to <0.54

Contributors

Commits

6bf7b2f Version bump to 0.0.20
e32180b Add release notes for v0.0.20
c14f2ca Pin Numba less than 0.54 until warnings resolved
9efc6e5 Clean-up Galois field array JIT functions
60f83fd Add CITATION file
e57e2d3 Add extra PyPI project URLs
e3c8ff2 Add Twitter badge
16645b5 Remove known mirrors from PyPI downloads badge
7571004 Link galois object to API reference in docs
902e6e6 Greatly clean-up Galois field arithmetic functions/classes
5e5c6a8 Fix linter warning
0722d5e Add v2 of logo with smaller Rubik's cube
8d810da Ignore abstract methods in code coverage
575354e Remove lint badge from README
1a459a7 Make is_square_free() work on polynomials
b286baa Add polymorphic functions for ints and polys
41d6784 Add <meta> HTML tag to README
e486eaa Reset display mode to integer representation in docs
dcabb11 Increase code coverage for poly constructors
efcb9a9 Make poly_factors() work over extension fields
ffea5b7 Fix bug in p-th root of polynomial
7688cc2 Support primitive polynomials over extension fields
4f7cbd1 Support irreducible polynomials over extension fields
c5f7056 Fix poly_factors() for prime fields
53f3b37 Fix bug in equal-degree factorization
eb4ed74 Make unit tests require successful lint stage
510864b Restructure fields and polys subpackages
defea3d Restructure code and clean-up circular dependencies
bf0b27a Fix field docstring in Poly.Degrees()
cee6904 Add polynomial equal-degree factorization
c84e09a Add polynomial distinct-degree factorization
5d7ab83 Add polynomial square-free factorization
3ce5fd9 Fix display of logo on PyPI's website

galois v0.0.19

09 Aug 21:21
Compare
Choose a tag to compare

Breaking Changes

  • Remove unnecessary is_field() function. Use isinstance(x, galois.FieldClass) or isinstance(x, galois.FieldArray) instead.
  • Remove log_naive() function. Might be re-added later through np.log() on a multiplicative group array.
  • Rename mode kwarg in galois.GF() to compile.
  • Revert np.copy() override that always returns a subclass. Now, by default it does not return a sublcass. To return a Galois field array, use x.copy() or np.copy(x, subok=True) instead.

Changes

  • Improve documentation.
  • Improve unit test coverage.
  • Add benchmarking tests.
  • Add initial LFSR implementation.
  • Add display kwarg to galois.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() and np.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

Commits

84806de Version bump to 0.0.19
bd4ab58 Add release notes for v0.0.19
def6a4d Increase LFSR code coverage
3f25531 Increase prime functions' code coverage
0e615d8 Rework unit testing of prime factorization
ec2b862 Reconfigure format of test vector LUTs
39c81e2 Rework unit testing of polynomial derivatives
5549e83 Rework unit testing of computing polynomial roots
cea9c68 Fix error in Poly docstring of optional field kwarg
6e556e9 Fix ipython syntax highlighting in sphinx .md files
e51d9e4 Remove is_field() function
ce3f36b Add BCH repetition codes in bch_valid_codes()
d764b4b Use latest docs badge in README
1c1be4c Add features section to docs
660f566 Add versioning section to docs
731e3a4 Add acknowledgements section to docs
960fb02 Add citation style
627b489 Add GitHub social media logo
62d687f Increase logo resolution
a19bde7 Remove nbsphinx docs dependency
489244a Make TOC in README have only one level
69a2b4d Update basic usage examples
882fc27 Allow polynomial strings as input to galois.GF()
ce17e4a Rework unit testing of FEC codes
f1a7c73 Fix literal file includes in docs
a9cd379 Add first version of project logo
24477b0 Disable code coverage on JIT-compiled functions
4c2ce95 Rework unit testing of Galois field class factory function
f1ba17d Use polynomial indeterminate "x" for repr_table()
772d95e Don't update ufunc mode of a Galois field class with defaults
bb1fdc6 Don't update display mode of a Galois field class with defaults
d9fc631 Rework unit testing of number theoretic functions
11532ad Rework unit testing of polynomial factorization
6237b19 Add downloads badge to README
bec80bc Rework unit testing of poly_pow()
a19dfb6 Rework unit testing of polynomial GCDs
3cb9d27 Rework testing primitive elements
b354f58 Rework testing minimal polynomials
1179dcd Update irreducible and primitive poly unit tests
b6d8927 Fix docstring formatting issues for the display() method
2f82555 Hide "Constructor" and "Special Methods" section if they are empty
275f208 Add docstrings to arithmetic dunder methods and include in API reference
b50e6ad Refer GF2 docs to FieldArray
78d08b4 Support np.divmod() and np.remainder() ufuncs for Galois field arrays
c995199 Remove log_naive() function
95445fb Change syntax highlighting style in docs
c65b971 Fix typos in tutorials
cc72ffa Re-order functions in API reference
e6db491 Clean-up docstrings across the library
cef5016 Do not allow non-iterable coeffs to Poly constructor
41b59e5 Ensure copies of LFSR states are returned, not a reference
96a6f74 Ensure single-step LFSR outputs are 0-D arrays
fd6b056 Add hyperlinks to API reference in features section of README
0c89fac Re-arrange API order
24b95cd Clean-up raised exceptions
29e1895 Clean-up docstrings for Galois field array classes
4af4c36 Add display kwarg to GF() class factory
e7a17ca Rename mode kwarg to compile
84b583a Optionally specify x and y values for arithmetic tables
36377e0 Add sorting of rows in repr_table()
798fa2d Add irreducible poly and primitve element to properties of prime fields
c3efa00 In properties string, represent the primitive element as a polynomial
7edc23b Use primes() instead of PRIMES throughout the library
aadbee1 Move developer installation notes to "Installation" page
7ad6c9c Cache output from primes() function
23e05d9 Cleanup polynomial class property references
b267a42 Add reverse() method to polynomials
9a3a88c Add more detail in the LFSR notes section
fb5f108 Add Galois LFSR unit tests
6a53d37 Add Berlekamp-Massey algorithm example in docstring
0d05605 Add Berlekamp-Massey algorithm unit tests
8254a2c Add initial LFSR implementation
1cc5c35 Add protected-access to pylint ignore
cc6fd29 Remove cryptographic ciphers from roadmap
d165351 Revert np.copy() view casting override
6de731d Fix hyperlinks in README
a7c87aa Fix basic usage not being included in generated docs
40cc8d1 Ensure polynomial coefficients can't be modified
4e8204b Make arithmetic_table() use the current display_mode
c32ba4a Add examples to Reed-Solomon properties
cdda540 Add examples to BCH properties
973b3f9 Fix ASCII table border characters
08cb5bb Hide source links in sphinx docs
8e836c4 Add benchmarking info to documentation
2fb7239 Add .benchmarks/ to gitignore
cd9617f Add FEC benchmarking
a1b962c Add Galois field array benchmark tests

galois v0.0.18

06 Jul 21:43
Compare
Choose a tag to compare

Breaking Changes

  • Make API more consistent with software like Matlab and Wolfram:
    • Rename galois.prime_factors() to galois.factors().
    • Rename galois.gcd() to galois.egcd() and add galois.gcd() for conventional GCD.
    • Rename galois.poly_gcd() to galois.poly_egcd() and add galois.poly_gcd() for conventional GCD.
    • Rename galois.euler_totient() to galois.euler_phi().
    • Rename galois.carmichael() to galois.carmichael_lambda().
    • Rename galois.is_prime_fermat() to galois.fermat_primality_test().
    • Rename galois.is_prime_miller_rabin() to galois.miller_rabin_primality_test().
  • Rename polynomial search method keyword argument values from ["smallest", "largest", "random"] to ["min", "max", "random"].

Changes

  • Clean up galois API and dir() so only public classes and functions are displayed.
  • Speed-up galois.is_primitive() test and search for primitive polynomials in galois.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

Commits

5ca778e Version bump to 0.0.18
8a2adff Add release notes for v0.0.18
3a84c38 Hide implementation details from galois namespace
213f0ab Clean up integer arithmetic docstrings
c4138ab Add trial division factorization to public API
fb6e509 Add Pollard rho algorithm
ba742c6 Add Pollard's p-1 algorithm
9c72502 Disable too-many-branches in pylint
20fe5ed Speed-up is_smooth()
b4e5dc5 Fix erroneous pylint complaints
aef9b25 Add is_powersmooth()
995dc80 Add perfect_power() to the public API
134c286 Clean up backslashes in LaTeX in docstrings
a006bea Clean up the Miller-Rabin primality test
be55733 Clean up Fermat's primality test
f710153 Speed up is_smooth() test
b03c5bc Add are_coprime() to test if integers are pairwise coprime
8418e1a Add is_perfect_power()
3ea43a4 Add Legendre, Jacobi, and Kronecker symbols
0da1449 Rename is_prime_miller_rabin() to miller_rabin_primality_test()
b9ed28f Rename is_prime_fermat() to fermat_primality_test()
4d1e3f8 Add poly_gcd() for non-extended GCD
c21c1c7 Rename poly_gcd() to poly_egcd()
cfe8190 Move integer arithmetic routines to separate file
a2b47a4 Restructure docs hierarchy
c8d35c9 Add gcd() to find the greatest common divisor of two integers
c72b1c3 Rename gcd() to egcd()
7a1f5b0 Restructure API reference
77e01c0 Remove Oakley Galois fields
3e48a13 Add is_square_free()
d6b78b4 Add is_prime_power()
d0aad9d Add is_composite()
f102cd7 Rename prime_factors() to factors()
b2770f6 Add divisor_sigma() to implement the sum of divisors functions
2e29c6b Add divisors() to find all integer divisors of n
46bb848 Rename carmichael() to carmichael_lambda()
e57d7ec Rename euler_totient() to euler_phi()
a34f4bf Fix numpy API reference
efbce45 Fix is_primitive() test for degree-1 polynomials
0a3aa6e Greatly speed up is_primitive()
0a6debb Cache prime_factors() output
7b418f1 Rearrange conway poly database code
94eca9e State incompatibility with numpy v1.21
037850b Add tests for number of irreducible and primitive polynomials over GF(2)
2563b20 Add tests for matlab_primitive_poly()
a9ffd87 Make poly search method arguments consistent
fc89ae1 Speed-up creation of cyclic generator matrices
c5ecb59 Add linear block code functions
c8259f2 Remove superfluous FEC functions
a3c7563 Rename generator_poly_to_matrix() to poly_to_generator_matrix()
4821550 Add error detection to RS codes
b9db515 Add error detection to BCH codes
d77c493 Add shortened RS codes
0adda4c Add shortened BCH codes
a09bce4 Add design distance property
f90450c Add FEC encode/decode unit tests
cd97abd Increase primitive polynomial test coverage
8c65c4d Update README with FEC basic usage
9ae3910 Cleanup BCH comments and improve testing
f6013b2 Add ReedSolomon class
f803bfe Add polynomial evaluation JIT function
1f9d33c Fix error message in GF() class factory
998aa7a Prevent modification of input argument to poly_roots JIT function
9c88843 Enable Poly str/repr with display mode "power"
ed4e63f Cleanup FEC docstrings
cf6a57d Add matlab_primitive_poly() function
040df1d Add Reed-Solomon functions
28b42c2 Fix BCH default primitive poly for GF(2^7)
d53e2e3 Fix bug in computation of t in bch_generator_poly()
185a425 Add bch_parity_check_matrix() and common cyclic code functions
dd2a252 Fix sphinx docs for FieldArray

galois v0.0.17

15 Jun 22:04
Compare
Choose a tag to compare

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

Commits

0134648 Version bump to 0.0.17
ec0009b Update release notes for v0.0.17
288526f Fix contributors in release notes
cca0e91 Fix bug in power representation of constant elements
6a3fcb1 Improve code coverage
8d46346 Remove target keyword until there is better support
a5f9f16 Rename FieldMeta to FieldClass
1e73ca9 Fix syntax highlighting of sphinx markdown document
92be9bd Enable tab-completion of Galois field classes
22e581b Restructure FieldMeta and FieldArray
87f6013 Remove group arrays until there is better support
8c5fab2 Allow poly coefficients for irreducible_poly and primitive_element in galois.GF
746576a Unify verify arguments to class constructor galois.GF
49f8f1d Make prime factoring of perfect powers efficient
1ecbd56 Add primitive binary BCH codes
af54a87 Make GF._poly_divmod() support 2-D dividends
22b1fd9 Re-architect JIT compilation and caching process
856a47a Make GitHub releases drafts
747672f Ensure GF2 has a ufunc for each arithmetic type
1025738 Unify JIT keyword arguments
32532f6 Add Berlekamp-Massey algorithm
649280d JIT compile Poly.roots()
bbeac79 Add irreducible_polys() function
bc61bea Add primitive_polys() function
3577ae5 Add input checking for irreducible_poly() and primitive_poly()
0f4315f Minor cleanup
54459b7 Fix bug preventing instantiating a large prime field in its extension field
677218b Reduce JIT compile times
1e79bb9 Add Intro to Galois Fields tutorials
840d479 Add arithmetic_table() method
944dcdf Add repr_table() method
d7f544a Suppress erroneous pylint warnings
ee66cc2 Fix bug in degree of large binary polynomials
59bc0cc Fix bug in "power" representation display mode
4af9bf1 Consolidate functions in modular.py
04605b7 Fix bug in Roots constructors with FieldArray roots
209b8d5 Hide classes flyweights
5504b71 Fix typos in README
1701467 Remove functions from bottom of API reference page
8f060e8 Fix typo
08aa24f Fix math representation
97c35af Add generation of minimal polynomials
ef1e778 Enable irreducible and primitive tests of degree-1 polynomials
b37f811 Add ability to generate a primitive polynomial
ec3c66b Fix bug in is_primitive where some reducible polynomials were marked as primitive
0e96460 Add ability to generate an irreducible polynomial
c5cd6b6 Fix bug in integer-poly conversions due to math.log inaccuracy
96211b4 Fix broken hyperlinks in README

galois v0.0.16

19 May 15:07
Compare
Choose a tag to compare

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

Commits

37060cb Version bump to 0.0.16
cd812c8 Add release notes for v0.0.16
a113001 Add subpackages to wheel build
f1eb439 Fix unit testing against wheel not source code
d9f0ba2 Add Poly.String constructor
555f696 Add poly_factors functions
ace826a Fix bug in poly_gcd not returning monic gcd polynomial
5f1a057 Add vdot linear algebra function
23efd8e Add unit test coverage
33ed685 Support out keyword-argument for linalg functions
2f8194f Don't compute primitive root for large prime fields
ab7341c Cache results of Pollard's rho factorization
ee1bf67 Support arbitrarily-large degrees array
a8b90aa Add tests of algebraic structure
8497816 Fix occasional bug in linear algebra on object arrays
a5ab270 Add exponentiation to groups
14ba4d8 Fix bug in creation of 0-degree polynomials
58fa8a5 Update pytest markers
fde8f51 Prevent equality bug with object arrays
5a9107e Add release notes to docs
ebba567 Use the cutom class template for the API reference
04420c6 Update the docstring for is_cyclic()
1bd1b65 Add GF(p^m) examples in FieldMeta
519c15f Prevent generation of singular matrix in building the docs
7e99551 Add basic finite groups of integers mod n
c2ee03f Add is_field() function
7baa72b Rename GFArray/GFMeta to FieldArray/FieldMeta
3e1d333 Add Field() as an alias of GF()
f0f6f8b Reorganize field unit tests
2d65f60 Reset CHANGELOG

galois v0.0.15

12 May 14:51
Compare
Choose a tag to compare

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

Commits

c4c04d2 Version bump to 0.0.15
dcc3598 Add CHANGELOG
170841c Support poly and scalar field element arithmetic
65db10c Allow polynomial creation from single integers
5e263a1 Only allow polynomial equality comparison with other polynomials
41e0a35 Support poly and single field element arithmetic
bb8bf7f Reorganize API reference
4c44bb0 Create base classes Array, Meta, Ufunc, and Func for use by other algebraic structures
8029a5e Move Galois field modules into field/ folder
a0407d7 Add naive algorithm for discrete logarithms
67864fb Add Oakley groups
368d0a4 Rename primality test functions
5358495 Add Mersenne prime functions to API reference
73b3fb5 Add alias of pow for modular exponentiation
588af9f Organize API reference into sections
6b02e94 Speed-up GF(p^m) arithmetic by working with vectors in GF(p)
656671f Minor README updates
32adea6 Disable reduction ufunc methods on "power" and "log"
878444e Verify ufunc method for unary operators
cfb58d1 Add np.positive ufunc support
ec683c0 Use XOR ufuncs on object arrays for GF(2^m)
5bb3721 Remove "negative" ufunc for characteristic-2 fields
6d36014 Use explicit calculation when faster than lookup tables for GF(2^m)
275848d Use explicit calculation when faster than lookup tables for GF(p)
f69ad89 Fix newline in release notes
ea6e6a8 Reorganize functions that compile ufuncs
f3bf3fe Update performance examples in docs
e89b839 Add linear algebra performance to docs
2aca943 Add JIT-compiled matmul function for massive speed-up
bea1d6e Use native np.convolve for extremely large prime fields
03791e5 Avoid strange bug with LAPACK linear algebra
00c873f Clean up input checking for a few functions
9375606 Suppress verbose mode in pytest
f11dba2 Add np.convolve() support and speed-up for prime fields
0cfa1fe Speed-up poly arithmetic with JIT-compiled functions
88812d7 Add performance analysis script for poly implementations
a0be93c Speed up poly eval constant unit test
663eac1 Fix bug where BinaryPoly fast arithmetic wasn't getting invoked
c137488 Better instantiate dictionaries
a3581c7 Remove unnecessary test fixture that wastes time
740fa46 Speed up slow logarithm test
738503d Make separate test file for modular arithmetic functions
a4d5d7e Rename poly_exp_mod() to poly_pow()
c2cf712 Run GF arithmetic unit tests over random dtype, not all dtypes

galois v0.0.14

07 May 19:13
Compare
Choose a tag to compare

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)

Commits

fb977d5 Version bump to 0.0.14
30c110d Fix bug in multiply.outer unit test
9e10d56 Update pypi metadata
c43123c Remove explicit scalar_multiply ufunc
179972c Make prime factorization more robust
1567312 Use native numpy bitwise_xor for add/subtract in GF(2^m)
5a514c5 Remove unnecessary view of inputs to ndarray
e02c69f Move exception raising into numba ufuncs for speed-up
517eeee Reduce exponents mod p-1 in GF(p) for a speed-up
142396d Make crt() support arbitrarily-large integers
013d83a Rename chinese_remainder_theorem() to crt()
859115b Make multiplicative inverse in prime fields faster
7f6cfff Greatly speed up is_primitive() by only checking prime factors of p^n - 1
e7a74bb Minor documentation updates
bcc5d76 Add abstract class section in API reference
d836910 Add list of contributors in release
b0404d3 Add future roadmap to README
6982345 Make linear algebra more efficient in prime fields
42481e3 Further numba optimzations for GF(2)
5b2ca0d Additional poly_gcd() bug fix
e7a8688 Unit test added for modified poly_gcd() and fixed linting errors
5f5fb4a Return weighted coefficient polynomials from galois.poly_gcd()
ba659b2 Standardized output datatype of galois.poly_gcd() to only return galois.DensePoly objects
73c2598 Add unit tests for numpy functions on Galois field arrays
ae7af2b Fix bug in poly copy method
f381cfc Fix bug in calculating degree of a binary polynomial
0d88ad4 Add GF(p^m) fields
7645b75 Ensure exponents are not field elements
bb5d9d0 Rename test data folder
5f5abc4 Disable more unsupported numpy functions
a29b6be Add Galois quote to doc homepage
5461c17 Rename Eye() to Identity()
0f63f30 Support np.outer()
56e628d Support np.inner()
0a76b53 Support np.dot()
dfe4160 Add methods to convert between Galois field vector spaces
2587f29 Remove convolution for multiplying GF(2) polys in place of BinaryPoly
0f3a970 Set the module of public functions/classes to the their public signature
bd5fcc4 Rename multiple_add to scalar_multiply
059db9c Rename ground_field to prime_subfield
7a7b9c1 Add unit tests for GF(2^8) with non-primitive polynomial
7ef9ea0 Replace np.all with np.array_equal
23dc9e7 Fix bug in log of Galois field arrays with objects
66d3132 Add check if an integer is B-smooth
9c0cfd2 Add Vandermonde matrix GFArray constructor
28b460e Add function to generate random prime of given bit length
f1dd0ec Add power representation display mode to README
12689db Add BinaryPoly implementation for speed-ups of poly arithmetic in GF(2)
5706f32 Ensure matrices are invertible so linalg docs build
81af4b7 Rearrange polynomial inheritance
fc8f062 Remove some modulo operations for speed ups in prime fields
153b051 Add power representation display mode
6f8e77b Fix bug where log was returning field elements not integers
2cac803 Speed up GF(2^m) lookup table construction
ef14e17 Multiply polys over GF(2) using FFT-based convolution
d4dd3e0 Fix bug in multiplication over GF(2^m) with alpha != 2
98d8c44 Make GCD more compact

galois v0.0.13

23 Apr 16:40
Compare
Choose a tag to compare

Contributors

Commits

364d510 Version bump to 0.0.13
cd80d90 Remove erroneous print statement
53b0d6c Update basic usage documentation
5546f81 Rename target() to compile()
3898bc1 Add linear algebra routines
7f267a9 Add matmul ufunc
eacc4d8 Add performance speed tests
11870d3 Clean up some docstrings
b88030a Hide class inheritance from docs
c516d79 Update performance section in README
98bd78e Rework GFArray ufuncs for better performance
8555567 Rework method of retargeting Galois field arrays
12375f9 Add polynomial monic check function
7e6c383 Add identity matrix constructor
1bf7a97 Add reciprocal ufunc
96c418c Allow polynomial string inputs for Galois field arrays
d78997d Cleanup build lookup table process
0e244da Add LCM function for arbitrarily-large integers
d070b36 Use metaclasses to refactor Galois field arrays
0ab8b79 Move math routines in _math module
06a26f7 Make alpha the default polynomial indeterminate
e201c05 Add class property that displays all GF properties in one formatted string
4e1ff40 Rename some GF array modules
462db39 Remove factors()
22d0842 Protect GFArray class attributes
2704ffa Have SparsePoly arithmetic return either dense or sparse polys
b6a0668 Cleanup documentation and various docstrings
0da73b8 Run tests against wheels not source code