code wiki / (root) / nx_modinv_test.nx

nx_modinv_test.nx source

↩ module page · 18 lines · 809 B

1import "nx_syscalls.nx" 2import "nx_modinv.nx" 3 4func main() -> nx_int { 5 // 3 * 5 = 15 = 1 (mod 7) -> inv(3, 7) = 5 6 if nx_modinv(3, 7) != 5 { return __syscall(93, 1, 0, 0, 0, 0, 0) } 7 // 7 * 8 = 56 = 1 (mod 11) -> inv(7, 11) = 8 8 if nx_modinv(7, 11) != 8 { return __syscall(93, 2, 0, 0, 0, 0, 0) } 9 // 2 has no inverse mod 4 (gcd is 2) 10 if nx_modinv(2, 4) != 0 { return __syscall(93, 3, 0, 0, 0, 0, 0) } 11 // 5 * 9 = 45 = 1 (mod 11) actually 45 = 44 + 1 = 4*11+1, so inv(5,11)=9 12 if nx_modinv(5, 11) != 9 { return __syscall(93, 4, 0, 0, 0, 0, 0) } 13 // inv(1, m) = 1 for any m > 1 14 if nx_modinv(1, 13) != 1 { return __syscall(93, 5, 0, 0, 0, 0, 0) } 15 // m = 1 is degenerate 16 if nx_modinv(3, 1) != 0 { return __syscall(93, 6, 0, 0, 0, 0, 0) } 17 return 0 18}