Skip to content

Commit

Permalink
Add release notes for v0.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
mhostetter committed Dec 9, 2022
1 parent 87ec4fc commit 648aa06
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 1 deletion.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
68 changes: 68 additions & 0 deletions docs/release-notes/v0.3.0.md
Original file line number Diff line number Diff line change
@@ -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))

0 comments on commit 648aa06

Please sign in to comment.