You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
gh-40773: Faster determinant for matrices over gf2e (M4RIE)
This computes the determinant for matrices over `GF(2**e)` by directly
relying on the PLE decomposition of M4RIE. This provides a significant
speed-up over the generic implementation used until now for this class.
Before:
```
sage: mat = matrix.random(GF(2**4), 200, 200)
sage: %time dd = mat.det()
CPU times: user 706 ms, sys: 2.26 ms, total: 708 ms
Wall time: 705 ms
sage: mat = matrix.random(GF(2**8), 200, 200)
sage: %time dd = mat.det()
CPU times: user 746 ms, sys: 890 µs, total: 747 ms
Wall time: 744 ms
sage: mat = matrix.random(GF(2**15), 200, 200)
sage: %time dd = mat.det()
CPU times: user 1.37 s, sys: 4.74 ms, total: 1.38 s
Wall time: 1.37 s
sage: mat = matrix.random(GF(2**4), 500, 500)
sage: %time dd = mat.det()
CPU times: user 10.8 s, sys: 23.8 ms, total: 10.8 s
Wall time: 10.7 s
sage: mat = matrix.random(GF(2**8), 500, 500)
sage: %time dd = mat.det()
CPU times: user 11.6 s, sys: 22.1 ms, total: 11.6 s
Wall time: 11.6 s
sage: mat = matrix.random(GF(2**15), 500, 500)
sage: %time dd = mat.det()
CPU times: user 21.7 s, sys: 37 ms, total: 21.7 s
Wall time: 21.7 s
```
After:
```
sage: mat = matrix.random(GF(2**4), 200, 200)
sage: %time dd = mat.det()
CPU times: user 275 µs, sys: 68 µs, total: 343 µs
Wall time: 356 µs
sage: mat = matrix.random(GF(2**8), 200, 200)
sage: %time dd = mat.det()
CPU times: user 1.1 ms, sys: 21 µs, total: 1.12 ms
Wall time: 1.13 ms
sage: mat = matrix.random(GF(2**15), 200, 200)
sage: %time dd = mat.det()
CPU times: user 81.2 ms, sys: 8.98 ms, total: 90.1 ms
Wall time: 89.7 ms
sage: mat = matrix.random(GF(2**4), 500, 500)
sage: %time dd = mat.det()
CPU times: user 1.84 ms, sys: 0 ns, total: 1.84 ms
Wall time: 1.86 ms
sage: mat = matrix.random(GF(2**8), 500, 500)
sage: %time dd = mat.det()
CPU times: user 5.23 ms, sys: 39 µs, total: 5.27 ms
Wall time: 5.44 ms
sage: mat = matrix.random(GF(2**15), 500, 500)
sage: %time dd = mat.det()
CPU times: user 719 ms, sys: 17.6 ms, total: 737 ms
Wall time: 732 ms
```
URL: #40773
Reported by: Vincent Neiger
Reviewer(s): user202729, Vincent Neiger
0 commit comments