xref: /aosp_15_r20/external/arm-optimized-routines/pl/math/tools/erf.sollya (revision 412f47f9e737e10ed5cc46ec6a8d7fa2264f8a14)
1*412f47f9SXin Li// tables and constants for approximating erf(x).
2*412f47f9SXin Li//
3*412f47f9SXin Li// Copyright (c) 2023, Arm Limited.
4*412f47f9SXin Li// SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
5*412f47f9SXin Li
6*412f47f9SXin Lidisplay = hexadecimal;
7*412f47f9SXin Liprec=128;
8*412f47f9SXin Li
9*412f47f9SXin Li// Tables
10*412f47f9SXin Liprint("{ i, r, erf(r), 2/sqrt(pi) * exp(-r^2)}");
11*412f47f9SXin Lifor i from 0 to 768 do {
12*412f47f9SXin Li  r = i / 128;
13*412f47f9SXin Li  t0 = double(erf(r));
14*412f47f9SXin Li  t1 = double(2/sqrt(pi) * exp(-r * r));
15*412f47f9SXin Li  print("{ " @ i @ ",\t" @ r @ ",\t" @ t0 @ ",\t" @ t1 @ " },");
16*412f47f9SXin Li};
17*412f47f9SXin Li
18*412f47f9SXin Li// Constants
19*412f47f9SXin Lidouble(1/3);
20*412f47f9SXin Lidouble(1/10);
21*412f47f9SXin Lidouble(2/15);
22*412f47f9SXin Lidouble(2/9);
23*412f47f9SXin Lidouble(2/45);
24*412f47f9SXin Lidouble(2/sqrt(pi));
25*412f47f9SXin Li
26