qr_q

std.linalg.qr_q · Level L4

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

A = Q·R, QᵀQ = I

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.

Af64[n+k, n]QROrthogonalQQf64[n+k, n]
  • 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 fixed to 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.
Accuracy in detail
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

Calls
—
Called by
—
sha256:62bdb99d3ea3c7b0ee0f491b599d6315b2ff135777f990c27d9ebc6e08f718dc

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