Matrix-by-matrix multiplication algorithm with $O(N^2log_2N)$ computational complexity for variable precision arithmetic
Data Structures and Algorithms
2025-08-19 v2 Computational Complexity
Mathematical Software
Abstract
We show that assuming the availability of the processor with variable precision arithmetic, we can compute matrix-by-matrix multiplications in O(N2log2N) computational complexity. We replace the standard matrix-by-matrix multiplications [A11A21A12A22][B11B21B12B22]=[A11B11+A12B21A21B11+A22B21A11B12+A12B22A21B12+A22B22] by [A11A21A12A22][B11B21B12B22]=⌊[(A11+ϵA12)(B11+1/ϵB21)(A21+ϵA22)(B11+1/ϵB21)(A11+ϵA12)(B12+1/ϵB22)(A21+ϵA22)(B12+1/ϵB22)]⌋%ϵ1 where ⌊⌋ denotes the floor, and % denotes the modulo operators. We reduce the number of block matrix-by-matrix multiplications from 8 to 4, keeping the number of additions equal to 4, and additionally introducing 4 multiplications of a block matrices by ϵ or ϵ1, and 4 floor and 4 modulo operations. The resulting computational complexity for two matrices of size N×N can be estimated from recursive equation T(N)=4(N/2)2 (multiplication of a matrix by ϵ and 1/ϵ) plus 4(N/2)2 (additions of two matrices) plus 2N2 (floor and modulo) plus 4T(N/2) (four recursive calls) as O(N2log2N). These multiplications of blocks of a matrix by number scales like O((N/2)2). We also present a MATLAB code using \emph{vpa} variable precision arithmetic emulator that can multiply matrices of size N×N using (4log2N+1)N2 vpa operations. This emulator uses O(N) digits to run our algorithm.
Cite
@article{arxiv.2410.21050,
title = {Matrix-by-matrix multiplication algorithm with $O(N^2log_2N)$ computational complexity for variable precision arithmetic},
author = {Maciej Paszyński},
journal= {arXiv preprint arXiv:2410.21050},
year = {2025}
}
Comments
20 pages, 2 tables, 1 figure