Strassen-like product/squaring implementations.

Patches for Fast Matrix Multiplication Algorithms.

Implements the new proposed sequence[1] both for product and for matrix squaring. It uses exactly the same structure of the fastmm library[2], so it can simply replace the original mat-mulkernels.c file. Optimisations for exponentiation and chain-product are not implemented.

NOTE: Licence issue needs clarification. The code must be tested, so it is not published.

Licence: GNU GPLv3+.

Download: Mul/mat-mulkernels.c. (and Examples/example.2.c for testing purposes)

References: [1]A Strassen-like matrix multiplication suited for squaring and higher power computation by Marco Bodrato.
[2]Fast Matrix Multiplication Algorithms.

Patches for M4RI.

Implements the new proposed sequence[1] both for product and for matrix squaring. It uses exactly the same structure of the M4RI library[2], so it can simply replace the original strassen.c file.

Product performance should be basically the same with respect to the previously implemented Winograd variant. Squaring should be around 1% faster. Further optimisations for exponentiation are not implemented yet.

Licence: GNU GPLv3+.

Download:

References: [1]A Strassen-like matrix multiplication suited for squaring and higher power computation by Marco Bodrato.
[2]M4RI - Linear Algebra over F2.

Patches for JLinAlg.

Implements the proven optimal[1] matrix squaring with binary splitting, original code[1] implemented Strassen's and Winograd's variant, my code also add the new proposed sequence, with the same or better performances for plain multiplication.

Licence: GNU GPLv3+.

Download: src-including-eclipse-project/src/main/java/org/jlinalg/MatrixMultiplication.java. (and a patch to MatrixMultiplicationTest.java to include tests for the code above).

References: [1]A Strassen-like matrix multiplication suited for squaring and higher power computation by Marco Bodrato.
[2]JLinAlg - a Java-library for linear algebra.


Marco Bodrato - 22 ottobre 2011