code wiki / _hdl_build / nx_f64_log2_test.nx
nx_f64_log2_test.nx source
↩ module page · 21 lines · 1110 B
1// AUTHORED BY THE NISHI BUILDER (pattern: MATH_KERNEL / LOG2 test) -- KATs from algorithm invariants.
2import "nx_f64_log2.nx"
3import "nx_syscalls.nx"
4func main() -> i64 {
5 var bad: i64 = 0
6 if nx_f64_log2(4607182418800017408) != 0 { bad = bad + 1 }
7 if nx_f64_log2(0) != 0xFFF0000000000000 { bad = bad + 1 }
8 if nx_f64_log2(0x8000000000000000) != 0xFFF0000000000000 { bad = bad + 1 }
9 if nx_f64_log2(0xBFF0000000000000) != 0x7FF8000000000000 { bad = bad + 1 }
10 if nx_f64_log2(0x7FF0000000000000) != 0x7FF0000000000000 { bad = bad + 1 }
11 if nx_f64_log2(0x7FF8000000000000) != 0x7FF8000000000000 { bad = bad + 1 }
12 if nx_f64_log2(0x4000000000000000) != 0x3FF0000000000000 { bad = bad + 1 }
13 if nx_f64_log2(0x4010000000000000) != 0x4000000000000000 { bad = bad + 1 }
14 if nx_f64_log2(0x3FE0000000000000) != 0xBFF0000000000000 { bad = bad + 1 }
15 if bad == 0 { sys_write(1, "MATHKERNEL-LOG2-TEST GREEN" as *u8, 26) } else { sys_write(1, "MATHKERNEL-LOG2-TEST RED" as *u8, 24) }
16 let nl: *u8 = sys_mmap(4)
17 nl[0] = 10
18 sys_write(1, nl, 1)
19 sys_exit(bad)
20 return bad
21}