pairwise_dist

std.geometry.pairwise_dist · Level L1

Distances between every point of X and every point of Y. Calls pairwise_sqdist, and clamps at zero before the square root.

Dᵢⱼ = √max(0, ‖xᵢ‖² + ‖yⱼ‖² − 2·xᵢ·yⱼ)

Signature

pairwise_dist(X: f64[m, d], Y: f64[k, d]) → f64[m, 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.

Xf64[m, d]Yf64[k, d]0.0pairwise_sqdistD2MaximumsafeSqrtDDf64[m, k]
  • input
  • operation
  • constant
  • call
  • output

Verification

  • Signature proven by NOVA’s shape solver, for every size.
  • Agrees with the reference np.sqrt(((X[:, None, :] - Y[None, :, :]) ** 2).sum(-1)) to 80 digits (100-digit arithmetic), on all 40 test cases.
  • All 662 float64 results inside the running error bound; the closest uses 87% of it.
  • Interpreter and NumPy backend return bit-identical results.
Accuracy in detail
correctly rounded (the float64 nearest the exact value)
82%
bit-equal to the NumPy formula in float64
81%
largest error, in units in the last place
9.2e+3

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 expanded squared distance can come out slightly negative when two points nearly coincide; Maximum clamps it so the square root never sees a negative number.

Identity

Calls
Called by
—
sha256:5becc82817af1b6379c3d146e69db7af71d63e05ab29fabcf5cc29af2761839a

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

Control handle

Symbol
Ω:std.geometry.pairwise_dist · Ω:pairwise_dist
Pins
sha256:265d6f7f9c94f3791ff6c1df2f01c32fc830f9d91503fcbdfd337bc43d346fe7this graph and the 1 it reaches through calls
Evidence
sha256:351e0810a5301ea0128f36a986cef1abe143f32fdfdac4966070b6e9d2ec072athe 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.