residual_unconverged

std.linalg.residual_unconverged · Level L1

Whether x still misses A·x = b, with A given as its off-diagonal part R and diagonal d: ‖b − R·x − d⊙x‖² above 10⁻²⁰·‖b‖² (a relative residual of 10⁻¹⁰), as 1 or 0. The condition jacobi_solve loops on.

[ ‖b − R·x − d⊙x‖² > 10⁻²⁰·‖b‖² ]

Signature

residual_unconverged(x: f64[k], R: f64[k, k], b: f64[k], d: f64[k]) → f64[]

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.

xf64[k]Rf64[k, k]df64[k]bf64[k]ReshapexcMultiplydxMultiplybsqMatMulRxc1.000e-20ReduceSumbnReshapeRxMultiplylimAddAxSubtractrMultiplyrrReduceSumresGreatergogof64[]
  • input
  • operation
  • constant
  • call
  • output

Verification

  • Signature proven by NOVA’s shape solver, for every size.
  • Equal to the reference float(sum((b - (R @ x + d * x))**2) > 1e-20 * sum(b**2)) in exact rational arithmetic, on all 40 test cases.
  • All 40 float64 results are exact: the error is zero.
  • Interpreter and NumPy backend return bit-identical results.
Accuracy in detail
correctly rounded (the float64 nearest the exact value)
100%
bit-equal to the NumPy formula in float64
100%
largest error, in units in the last place
0

Identity

Calls
—
Called by
sha256:a23db14fdf78f6161052c75e5e90a4870d4f7b8be478d78dd2150b9f428f245a

The semantic hash of the graph. It changes when the program changes, and never when only its documentation does.