From 648aa062c8867ca7e4fc026bda838190ce6c832e Mon Sep 17 00:00:00 2001 From: mhostetter Date: Fri, 9 Dec 2022 09:23:31 -0500 Subject: [PATCH] Add release notes for v0.3.0 --- README.md | 2 +- docs/index.rst | 1 + docs/release-notes/v0.3.0.md | 68 ++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 docs/release-notes/v0.3.0.md diff --git a/README.md b/README.md index 84da3955f..6a0600814 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ Import the `galois` package in Python. In [1]: import galois In [2]: galois.__version__ -Out[2]: '0.2.0' +Out[2]: '0.3.0' ``` ### Create a [`FieldArray`](https://mhostetter.github.io/galois/latest/api/galois.FieldArray/) subclass diff --git a/docs/index.rst b/docs/index.rst index f600c608c..cf4bb0239 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -140,6 +140,7 @@ If this library was useful to you in your research, please cite us. Following th :hidden: release-notes/versioning.rst + release-notes/v0.3.0.md release-notes/v0.2.0.md release-notes/v0.1.2.md release-notes/v0.1.1.md diff --git a/docs/release-notes/v0.3.0.md b/docs/release-notes/v0.3.0.md new file mode 100644 index 000000000..12129ce48 --- /dev/null +++ b/docs/release-notes/v0.3.0.md @@ -0,0 +1,68 @@ +# v0.3.0 + +*Released December 9, 2022* + +## Breaking changes + +- Increased minimum NumPy version to 1.21.0. ([#441](https://github.com/mhostetter/galois/pull/441)) +- Increased minimum Numba version to 0.55.0 ([#441](https://github.com/mhostetter/galois/pull/441)) +- Modified `galois.GF()` and `galois.Field()` so that keyword arguments `irreducible_poly`, `primitive_element`, `verify`, `compile`, and `repr` may no longer be passed as positional arguments. ([#442](https://github.com/mhostetter/galois/pull/442)) + +## Changes + +- Added a `galois.GF(p, m)` call signature in addition to `galois.GF(p**m)`. This also applies to `galois.Field()`. Separately specifying $p$ and $m$ eliminates the need to factor the order $p^m$ in very large finite fields. ([#442](https://github.com/mhostetter/galois/pull/442)) + ```python + >>> import galois + # This is faster than galois.GF(2**409) + >>> GF = galois.GF(2, 409) + >>> print(GF.properties) + Galois Field: + name: GF(2^409) + characteristic: 2 + degree: 409 + order: 1322111937580497197903830616065542079656809365928562438569297590548811582472622691650378420879430569695182424050046716608512 + irreducible_poly: x^409 + x^7 + x^5 + x^3 + 1 + is_primitive_poly: True + primitive_element: x + ``` +- Optimized matrix multiplication by parallelizing across multiple cores. ([#440](https://github.com/mhostetter/galois/pull/440)) + ```ipython + In [1]: import galois + + In [2]: GF = galois.GF(3**5) + + In [3]: A = GF.Random((300, 400), seed=1) + + In [4]: B = GF.Random((400, 500), seed=2) + + # v0.2.0 + In [5]: %timeit A @ B + 664 ms ± 3.31 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) + + # v0.3.0 + In [5]: %timeit A @ B + 79.1 ms ± 7.32 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) + ``` +- Optimized polynomial evaluation by parallelizing across multiple cores. ([#440](https://github.com/mhostetter/galois/pull/440)) + ```ipython + In [1]: import galois + + In [2]: GF = galois.GF(3**5) + + In [3]: f = galois.Poly.Random(100, seed=1, field=GF) + + In [4]: x = GF.Random(100_000, seed=1) + + # v0.2.0 + In [5]: %timeit f(x) + 776 ms ± 2.12 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) + + # v0.3.0 + In [5]: %timeit f(x) + 13.9 ms ± 2.51 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) + ``` +- Fixed an occasional arithmetic type error in binary extension fields $\mathrm{GF}(2^m)$ when using the built-in `np.bitwise_xor()`. ([#441](https://github.com/mhostetter/galois/pull/441)) + +## Contributors + +- Matt Hostetter ([@mhostetter](https://github.com/mhostetter))