FLINT3.7.0-dev

acb_mat_lu_classical, acb_mat_lu_recursive, acb_mat_lu

Synopsis#include <flint/acb_mat.h>
int acb_mat_lu_classical(slong * perm, acb_mat_t LU, const acb_mat_t A, slong prec)source
int acb_mat_lu_recursive(slong * perm, acb_mat_t LU, const acb_mat_t A, slong prec)source
int acb_mat_lu(slong * perm, acb_mat_t LU, const acb_mat_t A, slong prec)source

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.

Cite this page

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).