acb_mat_mul_classical, acb_mat_mul_threaded, acb_mat_mul_reorder, acb_mat_mul
#include <flint/acb_mat.h>void acb_mat_mul_classical(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec)sourcevoid acb_mat_mul_threaded(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec)sourcevoid acb_mat_mul_reorder(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec)sourceSet res to the matrix product. The classical version computes each entry with acb_dot, and the threaded version does the same with the rows of the output distributed over flint_get_num_threads() threads. The reorder version writes the operands as , with real matrices and computes the product with real matrix multiplications by arb_mat_mul (one if both operands are real, two if one is, otherwise four, and ), which benefits from the block algorithm of arb_mat_mul_block.
acb_mat_mul uses the reorder version if the inner dimension and the number of columns of are at least 20, the midpoints have fewer than 8000 bits and these dimensions are at least , where is the smaller of prec and the largest midpoint size of the entries; otherwise the threaded version if several threads are available and the work is large enough, and the classical version otherwise.
The FLINT team, “acb_mat_mul_classical, acb_mat_mul_threaded, acb_mat_mul_reorder, acb_mat_mul (acb_mat.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/acb_mat/acb_mat_mul_classical.html (generated 2026-11-02).
@misc{flint-doc-acb-mat-acb-mat-mul-classical,
author = {{The FLINT team}},
title = {{acb\_mat\_mul\_classical, acb\_mat\_mul\_threaded, acb\_mat\_mul\_reorder, acb\_mat\_mul (acb\_mat.h)}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/acb_mat/acb_mat_mul_classical.html},
note = {Generated 2026-11-02}
}