code wiki / _hdl_build / _pe_f64erfc.nx

_pe_f64erfc.nx source

↩ module page · 28 lines · 1044 B

1// AUTHORED BY THE NISHI BUILDER (pattern: MATH_KERNEL / ERFC_CF) -- no Claude core logic. 2// All constants from the SOVEREIGN bigfloat spec (nx_mathspec_erfc; 1/sqrt(pi) rail held). 3// Rung-2 domain 1.75..6: Laplace continued fraction (a_k=k/2, backward recurrence). 4import "nx_syscalls.nx" 5import "nx_f64.nx" 6import "nx_f64_div.nx" 7import "nx_f64_exp.nx" 8func nx_f64_erfc(x: i64) -> i64 { 9 let x2: i64 = nx_f64_mul(x, x) 10 let e: i64 = nx_f64_exp(nx_f64_neg(x2)) 11 let pref: i64 = nx_f64_mul(e, 4603256987541740397) 12 let n: i64 = 100 13 var nf: i64 = 0 14 var ci: i64 = 0 15 while ci < n { nf = nx_f64_add(nf, 4607182418800017408); ci = ci + 1 } 16 var ak: i64 = nx_f64_mul(nf, 4602678819172646912) 17 var t: i64 = 0 18 var k: i64 = n 19 while k >= 1 { 20 let den: i64 = nx_f64_add(x, t) 21 t = nx_f64_div(ak, den) 22 ak = nx_f64_sub(ak, 4602678819172646912) 23 k = k - 1 24 } 25 let den1: i64 = nx_f64_add(x, t) 26 let cf: i64 = nx_f64_div(4607182418800017408, den1) 27 return nx_f64_mul(pref, cf) 28}