nx_u384_mul.nx
buildroot/runtime/nx_u384_mul.nx
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
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
| 27 | const NX_U384_WIDE_LIMBS: i64 = 24 |
| 28 | const NX_U384_WIDE_BYTES: i64 = 96 |
functions
| 30 | func u384_wide_alloc() -> *i64 |
| 43 | func u384_wide_free(p: *i64) -> i64 calls 1: sys_munmap |
| 51 | func u384_mul_wide(out_24: *i64, a: *i64, b: *i64) -> i64 |
| 76 | func u384_wide_cmp(a_24: *i64, b_24: *i64) -> i64 |
| 88 | func u384_wide_fits_in_384(a_24: *i64) -> i64 |
| 99 | func u384_wide_copy_low(out_12: *i64, src_24: *i64) -> i64 |
| 108 | func main() -> i64 |