code wiki / (root) / nx_factorial.nx

nx_factorial.nx source

↩ module page · 29 lines · 817 B

1// nx_factorial.nx -- n! for nx_int. 2// 3// genealogy_id: kramp_1808_factorial_notation 4// lineage_id: combinatorics 5// license: public_domain 6// complexity: O(n) 7 8// nx_safety_envelope: 9// intended_use: AUTO_APPLIED -- primitive-specific tuning queued 10// sil_target: SIL1 11// evidence: [bulk_applied_2026-05-16, see-file-comment-for-detail] 12// verdict: NOT_YET_EVALUATED 13 14import "nx_syscalls.nx" 15import "nx_tier.nx" 16 17// 20! = 2,432,902,008,176,640,000 fits in i64; 21! overflows. 18// Returns 0 for negative or > 20 (overflow guard). 19func nx_factorial(n: nx_int) -> nx_int { 20 if n < 0 { return 0 } 21 if n > 20 { return 0 } 22 var result: nx_int = 1 23 var i: nx_int = 2 24 while i <= n { 25 result = result * i 26 i = i + 1 27 } 28 return result 29}