code wiki / _hdl_build / _pe_f64pow_test.nx

_pe_f64pow_test.nx source

↩ module page · 24 lines · 1251 B

1// AUTHORED BY THE NISHI BUILDER (pattern: MATH_KERNEL POW test) -- invariant KATs. 2import "_pe_f64pow.nx" 3import "nx_syscalls.nx" 4func main() -> i64 { 5 var bad: i64 = 0 6 let one: i64 = 4607182418800017408 7 if nx_f64_pow(0x7FF8000000000000, 0) != one { bad = bad + 1 } 8 if nx_f64_pow(one, 0x7FF8000000000000) != one { bad = bad + 1 } 9 if nx_f64_pow(0x7FF8000000000000, one) != 0x7FF8000000000000 { bad = bad + 1 } 10 if nx_f64_pow(0, 4613937818241073152) != 0 { bad = bad + 1 } 11 if nx_f64_pow(1 << 63, 4613937818241073152) != (1 << 63) { bad = bad + 1 } 12 if nx_f64_pow(0x7FF0000000000000, 4613937818241073152) != 0x7FF0000000000000 { bad = bad + 1 } 13 if nx_f64_pow(0xFFF0000000000000, 4613937818241073152) != 0xFFF0000000000000 { bad = bad + 1 } 14 let two: i64 = 4611686018427387904 15 if nx_f64_pow(two, two) != nx_f64_pow(nx_f64_pow(two, one), two) { bad = bad + 1 } 16 if nx_f64_pow(two, one) != two { bad = bad + 1 } 17 if nx_f64_pow(nx_f64_pow(two, two), 4602678819172646912) != two { bad = bad + 1 } 18 let nl: *u8 = sys_mmap(4) 19 nl[0] = 10 20 if bad == 0 { sys_write(1, "POW-TEST GREEN" as *u8, 14) } else { sys_write(1, "POW-TEST RED" as *u8, 12) } 21 sys_write(1, nl, 1) 22 sys_exit(bad) 23 return bad 24}