eigh_vectors
std.linalg.eigh_vectors · Level L3The unit eigenvectors of a symmetric matrix, as columns in ascending order of eigenvalue, each signed so its largest component is positive.
Signature
eigh_vectors(A: f64[k, k]) → f64[k, k]
Structure
The function as NOVA stores it: one box per input, operation and output, and arrows that carry values. A double border marks another library function this one runs — called once, or by Scan once per element; select it to open that function.
- input
- operation
- constant
- call
- output
Verification
- Signature proven by NOVA’s shape solver, for every size.
- Agrees with the reference
np.linalg.eigh(A)[1], signs fixedto 80 digits (100-digit arithmetic), on all 40 test cases. - All 596 float64 results inside the running error bound; the closest uses 9% of it.
- Interpreter and NumPy backend return bit-identical results.
- correctly rounded (the float64 nearest the exact value)
- 12%
- bit-equal to the NumPy formula in float64
- 100%
- largest error, in units in the last place
- 1.3e+3
Large ulp counts appear where a result is zero or tiny next to the numbers it is computed from (after cancellation, for example), so one unit in the last place is tiny too; the absolute error is still inside the bound.
Note
An eigenvector is defined only up to sign, so NOVA fixes one. Its error bound grows as neighbouring eigenvalues approach each other, and a case where they are too close, or where the sign itself could flip, is refused rather than given a bound that would not hold.
Identity
sha256:759cc14b29b72c1037259d0c9af33e568201946cdb61ad5ccb6717633c5e9256The semantic hash of the graph. It changes when the program changes, and never when only its documentation does.