code wiki / (root) / nx_math_basics_test.nx

nx_math_basics_test.nx source

↩ module page · 59 lines · 1772 B

1// nx_math_basics_test.nx -- smoke for the shared integer-math basics. 2// 3// expect_exit: 0 4// 5// license_tier: ORIGINAL 6 7import "nx_syscalls.nx" 8import "nx_types.nx" 9import "nx_tier.nx" 10import "nx_math_basics.nx" 11 12func main() -> nx_int { 13 // nx_iabs 14 if nx_iabs(0) != 0 { return 1 } 15 if nx_iabs(7) != 7 { return 2 } 16 if nx_iabs(-7) != 7 { return 3 } 17 if nx_iabs(-100) != 100 { return 4 } 18 19 // nx_imin / nx_imax 20 if nx_imin(3, 5) != 3 { return 10 } 21 if nx_imin(5, 3) != 3 { return 11 } 22 if nx_imin(-2, 0) != -2 { return 12 } 23 if nx_imax(3, 5) != 5 { return 13 } 24 if nx_imax(5, 3) != 5 { return 14 } 25 if nx_imax(-2, 0) != 0 { return 15 } 26 27 // nx_iclamp 28 if nx_iclamp(5, 0, 10) != 5 { return 20 } 29 if nx_iclamp(-3, 0, 10) != 0 { return 21 } 30 if nx_iclamp(15, 0, 10) != 10 { return 22 } 31 if nx_iclamp(7, 5, 5) != 5 { return 23 } 32 // defensive: lo > hi returns lo 33 if nx_iclamp(7, 10, 0) != 10 { return 24 } 34 35 // nx_isign 36 if nx_isign(0) != 0 { return 30 } 37 if nx_isign(42) != 1 { return 31 } 38 if nx_isign(-99) != -1 { return 32 } 39 40 // nx_ibool 41 if nx_ibool(0) != 0 { return 40 } 42 if nx_ibool(1) != 1 { return 41 } 43 if nx_ibool(99) != 1 { return 42 } 44 if nx_ibool(-1) != 1 { return 43 } 45 46 // nx_iand / nx_ior / nx_inot 47 if nx_iand(1, 1) != 1 { return 50 } 48 if nx_iand(1, 0) != 0 { return 51 } 49 if nx_iand(0, 1) != 0 { return 52 } 50 if nx_iand(0, 0) != 0 { return 53 } 51 if nx_ior(0, 0) != 0 { return 54 } 52 if nx_ior(1, 0) != 1 { return 55 } 53 if nx_ior(0, 1) != 1 { return 56 } 54 if nx_ior(1, 1) != 1 { return 57 } 55 if nx_inot(0) != 1 { return 58 } 56 if nx_inot(1) != 0 { return 59 } 57 58 return 0 59}