code wiki / _hdl_build / _pe_f64gamma_test.nx
_pe_f64gamma_test.nx source
↩ module page · 16 lines · 936 B
1// GENERATED invariant KATs for the Builder-authored gamma (GAMMA_STIRLING).
2import "_pe_f64gamma.nx"
3func gt_ulp(a: i64, b: i64) -> i64 { if a >= b { return a - b } return b - a }
4func main() -> i64 {
5 var bad: i64 = 0
6 if nx_f64_gamma(0x7FF8000000000000) != NX_F64_NAN_RAW { bad = bad + 1 }
7 if nx_f64_gamma(0xBFF0000000000000) != NX_F64_NAN_RAW { bad = bad + 1 }
8 if nx_f64_gamma(0x3FD0000000000000) != NX_F64_NAN_RAW { bad = bad + 1 }
9 if gt_ulp(nx_f64_gamma(0x4000000000000000), 0x3FF0000000000000) > 2 { bad = bad + 1 }
10 if gt_ulp(nx_f64_gamma(0x4008000000000000), 0x4000000000000000) > 2 { bad = bad + 1 }
11 if gt_ulp(nx_f64_gamma(0x4010000000000000), 0x4018000000000000) > 2 { bad = bad + 1 }
12 if gt_ulp(nx_f64_gamma(0x4014000000000000), 0x4038000000000000) > 2 { bad = bad + 1 }
13 if gt_ulp(nx_f64_gamma(0x4018000000000000), 0x405E000000000000) > 2 { bad = bad + 1 }
14 sys_exit(bad)
15 return bad
16}