mulhilo32
std.seq.mulhilo32 · Level L4The 64-bit product of two 32-bit words, as its high and low halves: [⌊a·b/2³²⌋, a·b mod 2³²]. Composed from 16-bit halves, so every intermediate stays below 2³⁴ and int64 holds it exactly; a·b itself would not fit.
Signature
mulhilo32(a: i64[n], b: i64[n]) → i64[2, 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.
- Equal to the reference
[(a*b) >> 32, (a*b) & 0xFFFFFFFF] on Python intsin exact rational arithmetic, on all 40 test cases. - All 292 int64 results are exact: the error is zero.
- Interpreter and NumPy backend return bit-identical results.
- correctly rounded (the int64 nearest the exact value)
- 100%
- bit-equal to the NumPy formula in int64
- 100%
- largest error, in units in the last place
- 0
Identity
sha256:7ed3bf9b5cb9095f83ca2d8c10f2a6ca6303ef8c8781f8ced677e50fb968a4ecThe semantic hash of the graph. It changes when the program changes, and never when only its documentation does.
Control handle
- Symbol
- Ω:std.seq.mulhilo32 · Ω:mulhilo32
- Pins
sha256:41f52129b121d7db9f8e721a15bebd9e2f482ece74ce99415f3ff10e3d193858this graph alone- Evidence
sha256:1830390600593f17550556700666b9c4cf2e049c230de0385d7733c1f68294a4the 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.