1*412f47f9SXin Li// polynomial for approximating erf(x). 2*412f47f9SXin Li// To generate coefficients for interval i (0 to 47) do: 3*412f47f9SXin Li// $ sollya v_erf.sollya $i 4*412f47f9SXin Li// 5*412f47f9SXin Li// Copyright (c) 2022-2023, Arm Limited. 6*412f47f9SXin Li// SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception 7*412f47f9SXin Li 8*412f47f9SXin Liscale = 1/8; 9*412f47f9SXin Lideg = 9; 10*412f47f9SXin Li 11*412f47f9SXin Liitv = parse(__argv[0]); 12*412f47f9SXin Liif (itv == 0) then { a = 0x1p-1022; } 13*412f47f9SXin Lielse { a = itv * scale; }; 14*412f47f9SXin Li 15*412f47f9SXin Liprec=256; 16*412f47f9SXin Li 17*412f47f9SXin Lipoly = fpminimax(erf(scale*x+a), deg, [|D ...|], [0; 1]); 18*412f47f9SXin Li 19*412f47f9SXin Lidisplay = hexadecimal; 20*412f47f9SXin Lifor i from 0 to deg do coeff(poly, i);