/** * Symmetric eigendecomposition via cyclic Jacobi rotations. * * @param {number[][]|Float64Array[]|{flat: ArrayLike, n: number}} input * Real symmetric matrix as a 2D array of rows, or `{ flat, n }` (row-major). * @param {object} [opts] * @param {number} [opts.tol=1e-15] Off-diagonal convergence threshold (relative * to the matrix scale) at which rotations stop. * @param {number} [opts.maxSweeps=100] Hard cap on Jacobi sweeps; exceeding it * throws rather than returning an unconverged result. * @returns {{ values: Float64Array, vectors: number[][] }} * `values` — eigenvalues in ascending order. * `vectors` — n×n array of rows where column k is the unit eigenvector for * `values[k]` (scipy's column convention). */ export function eigh(input: number[][] | Float64Array[] | { flat: ArrayLike; n: number; }, { tol, maxSweeps }?: { tol?: number; maxSweeps?: number; }): { values: Float64Array; vectors: number[][]; };