Skip to content

galois v0.0.24

Choose a tag to compare

@github-actions github-actions released this 12 Feb 21:50

Breaking Changes

  • Move galois.minimal_poly() functionality into FieldArray.minimal_poly().
  • Refactor FieldArray.lup_decompose() into FieldArray.plu_decompose().
  • Raise ValueError instead of returning None for prev_prime(2).
  • Return (n, 1) from perfect_power(n) if n is not a perfect power rather than returning None.

Changes

  • Compute a finite field element's square root (if it exists) with np.sqrt().
  • List which finite field elements are/aren't quadratic residues (have a square root) with FieldClass.quadratic_residues and FieldClass.quadratic_non_residues.
  • Compute standard vector spaces with FieldArray.row_space(), FieldArray.column_space(), FieldArray.left_null_space(), and FieldArray.null_space().
  • Compute a finite field element's additive and multiplicative orders with FieldArray.additive_order() and FieldArray.multiplicative_order().
  • Evaluate polynomials at square matrix inputs using f(X, elementwise=False).
  • Compute the characteristic polynomial of a single element or square matrix with FieldArray.characteristic_poly().
  • Compute the minimal polynomial of a single element with FieldArray.minimal_poly().
  • Compute a Lagrange interpolating polynomial with lagrange_poly(x, y).
  • Support non-square matrix inputs to FieldArray.lu_decompose() and FieldArray.plu_decompose().
  • Support polynomial scalar multiplication. Now p * 3 is valid syntax and represents p + p + p.
  • Allow polynomial comparison with integers and field scalars. Now galois.Poly([0]) == 0 and galois.Poly([0]) == GF(0) return True rather than raising TypeError.
  • Support testing 0-degree polynomials for irreducibility and primitivity.
  • Extend crt() to work over non co-prime moduli.
  • Extend prev_prime() and next_prime() to work over arbitrarily-large inputs.
  • Allow negative integer inputs to primes(), is_prime(), is_composite(), is_prime_power(), is_perfect_power(), is_square_free(), is_smooth(), and is_powersmooth().
  • Fix various type hinting errors.
  • Various other bug fixes.

Contributors

Commits

e35831a Version bump to 0.0.24
0196d7f Add release notes for v0.0.24
48dc549 Fix irreducible and primitive polynomial degree criteria
4083e89 Add () to functions/methods in README
cf97f21 Add unit tests for null_space()
71dd31c Add FieldArray.null_space() method
2669826 Add unit tests for left_null_space()
0a103f6 Add FieldArray.left_null_space() method
839d621 Add unit tests for column_space()
3c8ced9 Add FieldArray.column_space() method
bfbeb31 Add unit tests for row_space()
7c595cc Add FieldArray.row_space() method
134eb7d Fix code coverage exclusion of typing overloads
5d0f353 Update codecov GitHub action version
3aa7d1b Ensure pure-Python ufuncs are performing integer arithmetic
8993630 Add more is_powersmooth() unit tests
9b356cb Add more is_smooth() unit tests
9003ed4 Rearrange prime generation and factoring code
0748408 Add more is_monic() unit tests
e61ba58 Accept non-monic polynomials to is_square_free()
322a962 Add more unit tests for testing square-free integers
0932530 Add is_perfect_power() unit tests
9e5fe69 Make perfect_power() and is_perfect_power() more consistent with Sage
a70d95b Add more is_prime_power() unit tests
2153cef Allow negative integers to is_prime_power()
a8fb8ef Allow negative integers to is_composite()
d77bb3e Add more is_prime() unit tests
4c16712 Allow negative integers to is_prime()
a55e277 Add more next_prime() unit tests
01a4737 Add more prev_prime() unit tests
7eea08a Raise ValueError instead of returning None for invalid previous prime
8b9f23c Add more kth_prime() unit tests
0f0d686 Add more primes() unit tests
19398cc Add more is_cyclic() unit tests
d9dfa2d Add more carmichael_lambda() unit tests
93d486f Add more euler_phi() unit tests
f8a9f24 Add unit tests for polynomial CRT
ff04822 Raise ValueError on polynomial CRT if remainder degrees not less than moduli degrees
91f4651 Make CRT support non-coprime moduli
005d77c Resolve pytest warnings
d68f537 Add unit tests for integer logarithms
d77b1ee Add more unit tests for integer roots
f29b0e8 Add more unit tests for integer square root
f477eae Add more unit tests for integer modular exponentiation
f61bae2 Add unit tests for integer prod()
12f3ca3 Add more unit tests for integer LCM
e90d43e Add more unit tests for integer extended GCD
2d4f210 Remove old poly evaluation at matrices unit tests
1166dbe Add more primitive polynomial unit tests
d3ad835 Add more irreducible polynomial unit tests
d34b654 Add more unit tests for polynomial modular exponentiation
5344660 Add unit tests for galois.prod() with polynomials
a5d9dd2 Add unit tests for polynomial LCM
15b4c7f Add more polynomial GCD unit tests
f1452f6 Clean up test vector generation script
0140a45 Add more Poly.derivative() unit tests
5780e1e Add more Poly.roots() unit tests
8355743 Add unit tests for polynomial reversals
09f984b Add unit tests for poly evaluation at square matrices
e78d46f Increase linear algebra code coverage
53d6b0e Support non-square matrices for LU and PLU decomposition
fccdf0d Instruct code coverage to ignore typing overloads
f27480c Add more np.linalg.solve() unit tests
edd2e0f Add more matrix determinant unit tests
f1561b4 Add unit tests for matrix inverses
991feb7 Refactor lup_decompose() into plu_decompose()
f4a2cc7 Add more lu_decompose() unit tests
84eaaf6 Add unit tests for row_reduce()
a8ac0e6 Add more matrix multiplication unit tests
6f64f2d Add more field_norm() unit tests
95d80ef Add more field_trace() unit tests
51c4362 Add more minimal_poly() unit tests for 0-D scalars
4879587 Add more characteristic_poly() unit tests for matrices
8147946 Add more characteristic_poly() unit tests for 0-D scalars
b6abfc2 Add more multiplicative_order() unit tests
a00e496 Add more additive_order() unit tests
5a002d4 Rename field fixtures for unit tests
767588c Move unit test LUT folders
bf6d120 Make each unit test LUT reproducible with unique seed
a5e6386 Resolve NumbaIRAssumptionWarning
70dc6e2 Support polynomial scalar multiplication
0a37672 Add unit tests for Galois field class properties
2eea839 Add back erroneously-deleted multiplicative_inverse.pkl generation
9904f57 Use poly comparison with 0 and 1 throughout library
51135fd Support Poly equals comparison with scalars
21b2487 Change np.sqrt() error to ArithmeticError
82b938e Add unit tests for np.sqrt()
eaad6da Support np.sqrt() on Galois field arrays
a41cd7c Fix other type hints for shape
14a1547 Add unit tests for quadratic residues
c26143c Add FieldClass.quadratic_non_residues
ef7f9b7 Add FieldClass.quadratic_residues
8c00cb2 Add FieldArray.is_quadratic_residue()
3c49aa7 Fix shape type hint
ce0ad6b Speed up FieldArray.multiplicative_order() when LUTs are available
89ad6a5 Support prev_prime(n) for arbitrarily-large n
a1fc17d Support next_prime(n) for arbitrarily-large n
50eb7e8 Fix bug in field trace/norm tests
1ee3f8e Add unit tests for FieldArray.additive_order()
5cf3082 Add FieldArray.additive_order()
8d989dd Add unit tests for FieldArray.multiplicative_order()
8a247a9 Add FieldArray.multiplicative_order()
04539f7 Fix type hint for NumPy integer types
54e99b7 Move galois.minimal_poly() to FieldArray.minimal_poly()
db133a6 Add unit tests for characteristic poly of finite field elements
f2e5492 Add ability to compute characteristic polynomial of a finite field element
b57d6e9 Add ability to evaluate polynomials at square matrices
0bd8b61 Add __len__ special method to docs
5cc3560 Add __call__ special method to docs
29aa072 Add missing dependency to min-requirements.txt
f3d9984 Add unit tests for lagrange_poly()
1b63538 Add lagrange_poly function
f78cb64 Add non constant-time disclaimer to README