gamma_quantile

std.stats.gamma_quantile · Level L5

The gamma distribution's quantile with shape a and rate b: P⁻¹(a, p)/b.

x = P⁻¹(a, p)/b

Signature

gamma_quantile(p: f64[n], shape: f64[], rate: f64[]) → f64[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.

pf64[n]shapef64[]ratef64[]GammaIncInvyDividexxf64[n]
  • input
  • operation
  • constant
  • call
  • output

Verification

  • Signature proven by NOVA’s shape solver, for every size.
  • Agrees with the reference the root of xᵃe⁻ˣ·₁F₁(1; a+1; x)/Γ(a+1) = p, divided by b to 80 digits (100-digit arithmetic), on all 40 test cases.
  • All 161 float64 results inside the running error bound; the closest uses 11% of it.
  • Interpreter and NumPy backend return bit-identical results.
Accuracy in detail
correctly rounded (the float64 nearest the exact value)
9%
bit-equal to the NumPy formula in float64
100%
largest error, in units in the last place
24

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

The reference solves Kummer's form of P(a, x), through the confluent hypergeometric function ₁F₁, for x.

Identity

Calls
—
Called by
—
sha256:cf73b7a9e18879278010b96f77c0c01173a1690f2e499fa8d43861271e71d584

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

Control handle

Symbol
Ω:std.stats.gamma_quantile · Ω:gamma_quantile
Pins
sha256:630fbab3ce732f288a12f537561e00958fa44a35caa3bb228c43121ea99388a4this graph alone
Evidence
sha256:95c57a23a3d1ecee654818394a4066c01692dcfdfa1f96dabbebc13a452ea76fthe 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.