acb_mat_lu_classical, acb_mat_lu_recursive, acb_mat_lu
#include <flint/acb_mat.h>Compute an LU decomposition PA = LU of an n \times n matrix A by Gaussian elimination with partial pivoting in ball arithmetic. Return nonzero if n pivots that do not contain zero are found, which proves that A is invertible; then L (unit lower triangular, without its diagonal) and U are stored in LU, and perm[i] is the row of A that became row i. Return zero, leaving perm and LU undefined, otherwise. LU may be the same object as A.
The pivot in each column is the entry not containing zero with the largest midpoint. The classical version eliminates row by row; the recursive version splits the columns in two halves, recursively decomposes the left half and updates the right half with a matrix product, so that it benefits from fast multiplication. The default uses the classical version if either dimension is below 8. In ball arithmetic the radii of the entries typically grow exponentially with n even for well-conditioned matrices, so this decomposition is mainly useful at high precision or for small matrices; see Solving linear systems with ball matrices.
The FLINT team, “acb_mat_lu_classical, acb_mat_lu_recursive, acb_mat_lu (acb_mat.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/acb_mat/acb_mat_lu_classical.html (generated 2026-10-20).
@misc{flint-doc-acb-mat-acb-mat-lu-classical,
author = {{The FLINT team}},
title = {{acb\_mat\_lu\_classical, acb\_mat\_lu\_recursive, acb\_mat\_lu (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_lu_classical.html},
note = {Generated 2026-10-20}
}