The independent integer coefficient convolution normalizes to the existing schoolbook polynomial product.
Least radix-two transform capacity covering the ordinary product.
Equations
- left.nttLength right = (Hex.DensePoly.size left + Hex.DensePoly.size right - 1).nextPowerOfTwo
Instances For
Multiply through the fixed auxiliary NTT-prime catalogue and balanced batch CRT. Failure records catalogue exhaustion or a failed checked plan; callers that need a total operation can fall back to a Kronecker kernel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every successful auxiliary-prime NTT multiplication is the existing schoolbook integer polynomial product.
Equations
- Hex.ZPoly.instBEqMulKernel.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
- Hex.ZPoly.instReprMulKernel.repr Hex.ZPoly.MulKernel.ks1 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Hex.ZPoly.MulKernel.ks1")).group prec✝
- Hex.ZPoly.instReprMulKernel.repr Hex.ZPoly.MulKernel.ks2 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Hex.ZPoly.MulKernel.ks2")).group prec✝
- Hex.ZPoly.instReprMulKernel.repr Hex.ZPoly.MulKernel.ks3 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Hex.ZPoly.MulKernel.ks3")).group prec✝
- Hex.ZPoly.instReprMulKernel.repr Hex.ZPoly.MulKernel.ks4 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Hex.ZPoly.MulKernel.ks4")).group prec✝
- Hex.ZPoly.instReprMulKernel.repr Hex.ZPoly.MulKernel.crtNtt prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Hex.ZPoly.MulKernel.crtNtt")).group prec✝
Instances For
Equations
- Hex.ZPoly.instReprMulKernel = { reprPrec := Hex.ZPoly.instReprMulKernel.repr }
Stable JSON-facing name for an integer multiplication kernel.
Equations
- Hex.ZPoly.MulKernel.schoolbook.name = "schoolbook"
- Hex.ZPoly.MulKernel.ks1.name = "ks1"
- Hex.ZPoly.MulKernel.ks2.name = "ks2"
- Hex.ZPoly.MulKernel.ks3.name = "ks3"
- Hex.ZPoly.MulKernel.ks4.name = "ks4"
- Hex.ZPoly.MulKernel.crtNtt.name = "crt_ntt"
Instances For
Whether the measured integer table contains a winning CRT-NTT cell.
The balanced 64-bit sweep keeps KS1 roughly an order of magnitude ahead
through 16384 coefficients per operand, while wider coefficients exhaust
the present seven-prime catalogue. The forced CRT benchmark remains
available; a future expanded sweep can replace this empty table without
touching correctness.
Equations
- Hex.ZPoly.useCrtNtt _shorter _ratio _width = false
Instances For
Integer crossover policy, indexed by shorter size, operand ratio, and maximum coefficient width. The forced-kernel benchmarks can recalibrate these isolated boundaries without affecting any correctness theorem.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Total integer multiplication. A selected CRT-NTT capacity miss falls back to KS4; every other table cell names a total forced kernel directly.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Coefficient-owner multiplication plan for generic fast algorithms.
Equations
- One or more equations did not get rendered due to their size.