qr_q
std.linalg.qr_q · Level L4The orthonormal factor Q of A = Q·R, for a tall matrix of full column rank: its columns are an orthonormal basis of A's column space.
Signature
qr_q(A: f64[n+k, n]) → f64[n+k, n]
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.qr(A)[0], signs fixedto 80 digits (100-digit arithmetic), on all 40 test cases. - All 1,254 float64 results inside the running error bound; the closest uses 2% of it.
- Interpreter and NumPy backend return bit-identical results.
- correctly rounded (the float64 nearest the exact value)
- 35%
- bit-equal to the NumPy formula in float64
- 100%
- largest error, in units in the last place
- 60
Large ulp counts appear where a result is 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. Results within their own error of zero are not counted.
Note
R's diagonal is made positive, which makes the factorization unique. The reference is Householder QR; the exact check reaches the same factors through the Cholesky factor of AᵀA, so two different algorithms have to agree.
Identity
sha256:62bdb99d3ea3c7b0ee0f491b599d6315b2ff135777f990c27d9ebc6e08f718dcThe semantic hash of the graph. It changes when the program changes, and never when only its documentation does.
Control handle
- Symbol
- Ω:std.linalg.qr_q · Ω:qr_q
- Pins
sha256:b5e415aeda10d322a114519b59b74213166211de3bde3b1c94d11d15d5107a40this graph alone- Evidence
sha256:1d979dfafd04741dee203659d5444b938601580e3598d3b12feffeda0b247fbcthe hash of its verification record- Needs
- no capability: a pure function
Through NOVA’s control layer, the symbol launches this function only while the program still matches what it pins: a change to this graph, or to any graph it reaches, needs a migration first.