xref: /freebsd-src/contrib/arm-optimized-routines/math/tools/erf.sollya (revision f3087bef11543b42e0d69b708f367097a4118d24)
1*f3087befSAndrew Turner// tables and constants for approximating erf(x).
2*f3087befSAndrew Turner//
3*f3087befSAndrew Turner// Copyright (c) 2023-2024, Arm Limited.
4*f3087befSAndrew Turner// SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
5*f3087befSAndrew Turner
6*f3087befSAndrew Turnerdisplay = hexadecimal;
7*f3087befSAndrew Turnerprec=128;
8*f3087befSAndrew Turner
9*f3087befSAndrew Turner// Tables
10*f3087befSAndrew Turnerprint("{ i, r, erf(r), 2/sqrt(pi) * exp(-r^2)}");
11*f3087befSAndrew Turnerfor i from 0 to 768 do {
12*f3087befSAndrew Turner  r = i / 128;
13*f3087befSAndrew Turner  t0 = double(erf(r));
14*f3087befSAndrew Turner  t1 = double(2/sqrt(pi) * exp(-r * r));
15*f3087befSAndrew Turner  print("{ " @ i @ ",\t" @ r @ ",\t" @ t0 @ ",\t" @ t1 @ " },");
16*f3087befSAndrew Turner};
17*f3087befSAndrew Turner
18*f3087befSAndrew Turner// Constants
19*f3087befSAndrew Turnerdouble(1/3);
20*f3087befSAndrew Turnerdouble(1/10);
21*f3087befSAndrew Turnerdouble(2/15);
22*f3087befSAndrew Turnerdouble(2/9);
23*f3087befSAndrew Turnerdouble(2/45);
24*f3087befSAndrew Turnerdouble(2/sqrt(pi));
25*f3087befSAndrew Turner
26