export declare function dot(a: number[], b: number[]): number; export declare function matVecMul(A: number[][], v: number[]): number[]; export declare function outer(v1: number[], v2: number[]): number[][]; export declare function norm2(v: number[]): number; /** * Returns v / ||v||, or null when ||v|| is (numerically) zero so callers * can handle degenerate vectors explicitly instead of propagating NaN. */ export declare function normalizeOrNull(v: number[]): number[] | null; /** * Returns v / ||v||. Throws on a zero (or non-finite) norm rather than * silently producing NaN entries. */ export declare function normalize(v: number[]): number[]; export interface SymmetricEigenOptions { maxIter?: number; tol?: number; seed?: number; } /** * Computes the top-k eigenpairs of a symmetric matrix via power iteration * with deflation. Compared to a naive power method it adds: * - seeded pseudo-random initialization (deterministic, but avoids the * all-ones vector stalling when (1, ..., 1) is an exact eigenvector); * - Gram-Schmidt re-orthogonalization against previously extracted vectors * on every iteration, so components stay orthogonal even for * near-degenerate spectra; * - a convergence criterion (vector change < tol, up to sign) with early * stopping instead of a fixed iteration count; * - zero-norm guards: when the deflated matrix annihilates the search space * the eigenvalue is reported as exactly 0 with a deterministic vector from * the orthogonal complement, never NaN. */ export declare function symmetricEigen(A: number[][], k: number, options?: SymmetricEigenOptions): { values: number[]; vectors: number[][]; };