1// tables and constants for approximating erfc(x). 2// 3// Copyright (c) 2023, Arm Limited. 4// SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception 5 6display = hexadecimal; 7prec=128; 8 9// Tables 10print("{ i, r, erfc(r), 2/sqrt(pi) * exp(-r^2) }"); 11for i from 0 to 3787 do { 12 r = 0.0 + i / 128; 13 t0 = double(erfc(r) * 2^128); 14 t1 = double(2/sqrt(pi) * exp(-r * r) * 2^128); 15 print("{ " @ t0 @ ",\t" @ t1 @ " },"); 16}; 17 18// Constants 19print("> 2/sqrt(pi)"); 20double(2/sqrt(pi)); 21 22print("> 1/3"); 23double(1/3); 24 25print("> P5"); 26double(2/15); 27double(1/10); 28double(2/9); 29double(2/45); 30 31print("> P6"); 32double(1/42); 33double(1/7); 34double(2/21); 35double(4/315); 36 37print("> Q"); 38double( 5.0 / 4.0); 39double( 6.0 / 5.0); 40double( 7.0 / 6.0); 41double( 8.0 / 7.0); 42double( 9.0 / 8.0); 43double(10.0 / 9.0); 44 45print("> R"); 46double(-2.0 * 4.0 / (5.0 * 6.0)); 47double(-2.0 * 5.0 / (6.0 * 7.0)); 48double(-2.0 * 6.0 / (7.0 * 8.0)); 49double(-2.0 * 7.0 / (8.0 * 9.0)); 50double(-2.0 * 8.0 / (9.0 * 10.0)); 51double(-2.0 * 9.0 / (10.0 * 11.0)); 52