code wiki / (root) / nx_u384_mul.nx

nx_u384_mul.nx

buildroot/runtime/nx_u384_mul.nx

3122 B110 linesdepth 3pulls 3 transitivereach 544 importersview sourcekind tool
docsdependenciesstructsconstsfunctions

about

nx_u384_mul.nx -- 384x384 -> 768-bit schoolbook multiplication + wide-buffer helpers (alloc / cmp / fits_in_384 / copy_low). Mirror of nx_u256_mul.nx with 24-limb wide buffers in place of 16-limb. Foundation for nx_p384_field_mul. API: u384_wide_alloc() -> *i64 24-limb buffer (zeroed) u384_mul_wide(out_24, a, b) out_24 = a * b (no reduction) u384_wide_cmp(a_24, b_24) -> -1 | 0 | +1 u384_wide_fits_in_384(a_24) -> 0 | 1 u384_wide_copy_low(out_12, src_24) license_tier: INDEPENDENT_REDERIVE genealogy_id: international-research-sources/nist/fips_186_5 lineage_id: nishi_u384_mul_q10

dependencies 2 imports · 4 importers

nx_syscalls.nx nx_u384.nx nx_u384_mul.nx nx_p384_field_mul.nx nx_p384_field_mul_fast.nx nx_p384_field_mul_fast_gate.nx nx_p384_modn.nx

imports: nx_syscalls.nxnx_u384.nx

imported by: nx_p384_field_mul.nxnx_p384_field_mul_fast.nxnx_p384_field_mul_fast_gate.nxnx_p384_modn.nx

structs

none

consts

27const NX_U384_WIDE_LIMBS: i64 = 24
28const NX_U384_WIDE_BYTES: i64 = 96

functions

30func u384_wide_alloc() -> *i64
43func u384_wide_free(p: *i64) -> i64
calls 1: sys_munmap
51func u384_mul_wide(out_24: *i64, a: *i64, b: *i64) -> i64
76func u384_wide_cmp(a_24: *i64, b_24: *i64) -> i64
88func u384_wide_fits_in_384(a_24: *i64) -> i64
99func u384_wide_copy_low(out_12: *i64, src_24: *i64) -> i64
108func main() -> i64