nx_av1_adst_gate.nx
buildroot/runtime/nx_av1_adst_gate.nx
about
nx_av1_adst_gate.nx -- proves the inverse ADST and its distinctness from DCT.
T1 is exact and needs no reference vectors: a basis-0 impulse of 4096 must
return the four SINPI constants themselves, in order --
[1321, 2482, 3344, 3803]. Any wrong constant, any mis-wired term, any wrong
rounding shift moves at least one of them.
T2 is the property that says WHY the ADST exists: its basis-0 output is a
RISING RAMP, where the DCT's is FLAT. The gate runs the same impulse through
both transforms and asserts the DCT gives four equal values while the ADST
gives four strictly increasing ones. Substituting one for the other decodes
without error and produces wrong gradients at block edges -- banding, not
corruption -- so proving they DISAGREE is the point.
T4 pins the per-axis transform-type selector. AV1 picks independently for
rows and columns; swapping the axes yields a transposed-looking error that
survives on square symmetric content and breaks everything else.
license_tier: ORIGINAL
dependencies 4 imports · 0 importers
imports: nx_syscalls.nxnx_av1_txfm.nxnx_av1_dct.nxnx_av1_adst.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| none |
functions
| 25 | func g_puts(s: *u8) -> i64 |
| 32 | func g_putn(v: i64) -> i64 |
| 46 | func absv(x: i64) -> i64 { if x < 0 { return 0 - x } return x } called by 1: main |
| 48 | func main() -> i64 |