Excellence research internship, LJK

How few multiplications does a bilinear map need?

Multiplying two polynomials, or two matrices, costs a number of multiplications. That number is not fixed by the problem: choosing a different basis can lower it, and Strassen doing 2x2 matrix multiplication in seven instead of eight is the famous case. This internship searched for such decompositions over finite fields.

Jean Kuntzmann Laboratory, Universite Grenoble Alpes
Supervised by Jean-Guillaume Dumas
21 May to 15 July 2024, 40 days

The two strands

Bilinear rank over finite fields

Given a bilinear map, find another that spans the same space and needs fewer multiplications. Implemented in Python and Julia over the automorphisms of the map.

Sparsifying matrices

Multiplications are not the only cost. The additions are set by how many nonzero entries the operators carry, and a change of basis can reduce those too.

What it reached

A heuristic search over alternative bases, on polynomial multiplication over finite fields.

MapNaiveReachedSaved
5x5 over GF(2)251444%
four benchmark maps37% to 44%

The search is a heuristic, so those are upper bounds: it says a map needs no more than that many multiplications, and it does not prove them optimal. Saying which of the two a number is turned out to be the whole of the next question.

Where the work went

The code, as it was delivered

This repository holds the internship exactly as handed in: the Python and Julia implementations of both strands, and a PDF for each explaining the mathematics behind it. Nothing has been added to the work itself.

Browse the repository ↗