/freebsd/contrib/arm-optimized-routines/math/ |
H A D | poly_generic.h | 19 const VTYPE *poly) in VWRAP() 22 VTYPE p01 = FMA (poly[1], x, poly[0]); in VWRAP() 23 VTYPE p23 = FMA (poly[3], x, poly[2]); in VWRAP() 28 const VTYPE *poly) in VWRAP() 30 VTYPE p03 = VWRAP (pairwise_poly_3) (x, x2, poly); in VWRAP() 31 return FMA (poly[4], x4, p03); in VWRAP() 34 const VTYPE *poly) in VWRAP() 36 VTYPE p03 = VWRAP (pairwise_poly_3) (x, x2, poly); in VWRAP() 37 VTYPE p45 = FMA (poly[5], x, poly[4]); in VWRAP() 41 const VTYPE *poly) in VWRAP() [all …]
|
/freebsd/contrib/arm-optimized-routines/math/aarch64/sve/ |
H A D | sv_poly_generic.h | 23 const STYPE *poly) in VWRAP() 26 VTYPE p01 = svmla_x (pg, DUP (poly[0]), x, poly[1]); in VWRAP() 27 VTYPE p23 = svmla_x (pg, DUP (poly[2]), x, poly[3]); in VWRAP() 32 const STYPE *poly) in VWRAP() 34 VTYPE p03 = VWRAP (pairwise_poly_3) (pg, x, x2, poly); in VWRAP() 35 return svmla_x (pg, p03, x4, poly[4]); in VWRAP() 38 const STYPE *poly) in VWRAP() 40 VTYPE p03 = VWRAP (pairwise_poly_3) (pg, x, x2, poly); in VWRAP() 41 VTYPE p45 = svmla_x (pg, DUP (poly[4]), x, poly[5]); in VWRAP() 45 const STYPE *poly) in VWRAP() [all …]
|
/freebsd/contrib/arm-optimized-routines/math/tools/ |
H A D | exp2.sollya | 7 deg = 3; // poly degree 13 //deg = 5; // poly degree 22 // return p that minimizes |f(x) - poly(x) - x^d*p(x)|/|f(x)| 23 approx = proc(poly,d) { 24 return remez(1 - poly(x)/f(x), deg-d, [a;b], x^d/f(x), 1e-10); 26 // return p that minimizes |f(x) - poly(x) - x^d*p(x)| 27 approx_abs = proc(poly,d) { 28 return remez(f(x) - poly(x), deg-d, [a;b], x^d, 1e-10); 32 poly = 1; 34 p = roundcoefficients(approx(poly,i), [|D ...|]); [all …]
|
H A D | exp10.sollya | 7 deg = 5; // poly degree 14 //deg = 4; // poly degree - bump to 5 for ~1 ULP 25 // return p that minimizes |f(x) - poly(x) - x^d*p(x)|/|f(x)| 26 approx = proc(poly,d) { 27 return remez(1 - poly(x)/f(x), deg-d, [a;b], x^d/f(x), 1e-10); 29 // return p that minimizes |f(x) - poly(x) - x^d*p(x)| 30 approx_abs = proc(poly,d) { 31 return remez(f(x) - poly(x), deg-d, [a;b], x^d, 1e-10); 35 poly = 1; 37 p = roundcoefficients(approx(poly,i), [|wp ...|]); [all …]
|
H A D | exp.sollya | 6 deg = 5; // poly degree 14 // return p that minimizes |exp(x) - poly(x) - x^d*p(x)| 15 approx = proc(poly,d) { 16 return remez(exp(x)-poly(x), deg-d, [a;b], x^d, 1e-10); 20 poly = 1 + x; 22 p = roundcoefficients(approx(poly,i), [|D ...|]); 23 poly = poly + x^i*coeff(p,0); 27 print("rel error:", accurateinfnorm(1-poly(x)/exp(x), [a;b], 30)); 28 print("abs error:", accurateinfnorm(exp(x)-poly(x), [a;b], 30)); 31 print("rel2 error:", accurateinfnorm(1-poly(x)/exp(x), [2*a;2*b], 30)); [all …]
|
H A D | v_exp.sollya | 6 deg = 4; // poly degree 13 // return p that minimizes |exp(x) - poly(x) - x^d*p(x)| 14 approx = proc(poly,d) { 15 return remez(exp(x)-poly(x), deg-d, [a;b], x^d, 1e-10); 19 poly = 1 + x; 21 p = roundcoefficients(approx(poly,i), [|D ...|]); 22 poly = poly + x^i*coeff(p,0); 26 print("rel error:", accurateinfnorm(1-poly(x)/exp(x), [a;b], 30)); 27 print("abs error:", accurateinfnorm(exp(x)-poly(x), [a;b], 30)); 30 for i from 0 to deg do coeff(poly,i);
|
H A D | v_log10.sollya | 6 deg = 6; // poly degree 18 // return p that minimizes |f(x) - poly(x) - x^d*p(x)|/|f(x)| 19 approx = proc(poly,d) { 20 return remez(1 - poly(x)/f(x), deg-d, [a;b], x^d/f(x), 1e-10); 24 poly = 1; 26 p = roundcoefficients(approx(poly,i), [|D ...|]); 27 poly = poly + x^i*coeff(p,0); 32 poly = poly/ln10; 35 print("rel error:", accurateinfnorm(1-poly(x)/f(x), [a;b], 30)); 38 for i from 0 to deg do double(coeff(poly,i));
|
H A D | asinf.sollya | 14 backward = proc(poly, d) { 15 return d + d ^ 3 * poly(d * d); 22 approx = proc(poly, d) { 23 return remez(1 - poly(x) / forward(f, x), deg - d, [a;b], x^d/forward(f, x), 1e-16); 26 poly = 0; 29 p = roundcoefficients(approx(poly,i), [|dtype ...|]); 30 poly = poly + x^i*coeff(p,0); 34 print("rel error:", accurateinfnorm(1-backward(poly, x)/f(x), [a;b], 30)); 36 for i from 0 to deg do print(coeff(poly, i));
|
H A D | cos.sollya | 14 // return p that minimizes |f(x) - poly(x) - x^d*p(x)| 15 approx = proc(poly,d) { 16 return remez(f(x)-poly(x), deg-d, [a;b], x^d, 1e-10); 20 poly = 1; 22 p = roundcoefficients(approx(poly,2*i), [|D ...|]); 23 poly = poly + x^(2*i)*coeff(p,0); 27 print("rel error:", accurateinfnorm(1-poly(x)/f(x), [a;b], 30)); 28 print("abs error:", accurateinfnorm(f(x)-poly(x), [a;b], 30)); 31 for i from 0 to deg do coeff(poly,i);
|
H A D | log_abs.sollya | 6 deg = 6; // poly degree 14 // return p that minimizes |f(x) - poly(x) - x^d*p(x)| 15 approx = proc(poly,d) { 16 return remez(f(x) - poly(x), deg-d, [a;b], x^d, 1e-10); 20 poly = x; 22 p = roundcoefficients(approx(poly,i), [|D ...|]); 23 poly = poly + x^i*coeff(p,0); 27 print("abs error:", accurateinfnorm(f(x)-poly(x), [a;b], 30)); 32 print("rel error:", accurateinfnorm(1-poly(x)/x/g(x), [a;b], 30)); 35 for i from 0 to deg do coeff(poly,i);
|
H A D | log2_abs.sollya | 6 deg = 7; // poly degree 18 // return p that minimizes |f(x) - poly(x) - x^d*p(x)| 19 approx = proc(poly,d) { 20 return remez(f(x) - poly(x), deg-d, [a;b], x^d, 1e-10); 24 poly = x*(invln2lo + invln2hi); 26 p = roundcoefficients(approx(poly,i), [|D ...|]); 27 poly = poly + x^i*coeff(p,0); 33 print("abs error:", accurateinfnorm(f(x)-poly(x), [a;b], 30)); 38 //print("rel error:", accurateinfnorm(1-(poly(x)/x)/g(x), [a;b], 30)); 41 for i from 0 to deg do coeff(poly,i);
|
H A D | sincosf.sollya | 16 // return p that minimizes |f(x) - poly(x) - x^d*p(x)| 17 approx = proc(poly,d) { 18 return remez(f(x)-poly(x), deg-d, [a;b], x^d, 1e-10); 22 poly = 1; 24 p = roundcoefficients(approx(poly,2*i), [|single ...|]); 25 poly = poly + x^(2*i)*coeff(p,0); 29 //print("rel error:", accurateinfnorm(1-poly(x)/f(x), [a;b], 30)); 30 //print("abs error:", accurateinfnorm(f(x)-poly(x), [a;b], 30)); 33 for i from 0 to deg do coeff(poly,i);
|
H A D | sin.sollya | 20 // return p that minimizes |f(x) - poly(x) - x^d*p(x)| 21 approx = proc(poly,d) { 22 return remez(f(x)-poly(x), deg-d, [a;b], x^d, 1e-10); 26 poly = 1; 28 p = roundcoefficients(approx(poly,2*i), [|D ...|]); 29 poly = poly + x^(2*i)*coeff(p,0); 33 print("rel error:", accurateinfnorm(1-poly(x)/f(x), [a;b], 30)); 34 print("abs error:", accurateinfnorm(sin(x)-x*poly(x), [a;b], 30)); 37 for i from 0 to deg do coeff(poly,i);
|
H A D | log.sollya | 6 deg = 12; // poly degree 19 // return p that minimizes |f(x) - poly(x) - x^d*p(x)|/|f(x)| 20 approx = proc(poly,d) { 21 return remez(1 - poly(x)/f(x), deg-d, [a;b], x^d/f(x), 1e-10); 25 poly = 1; 27 p = roundcoefficients(approx(poly,i), [|D ...|]); 28 poly = poly + x^i*coeff(p,0); 32 print("rel error:", accurateinfnorm(1-poly(x)/f(x), [a;b], 30)); 35 for i from 0 to deg do coeff(poly,i);
|
H A D | v_log.sollya | 6 deg = 6; // poly degree 18 // return p that minimizes |f(x) - poly(x) - x^d*p(x)|/|f(x)| 19 approx = proc(poly,d) { 20 return remez(1 - poly(x)/f(x), deg-d, [a;b], x^d/f(x), 1e-10); 24 poly = 1; 26 p = roundcoefficients(approx(poly,i), [|D ...|]); 27 poly = poly + x^i*coeff(p,0); 31 print("rel error:", accurateinfnorm(1-poly(x)/f(x), [a;b], 30)); 34 for i from 0 to deg do coeff(poly,i);
|
H A D | v_log2f.sollya | 6 deg = 9; // poly degree 22 // return p that minimizes |f(x) - poly(x) - x^d*p(x)|/|f(x)| 23 approx = proc(poly,d) { 24 return remez(1 - poly(x)/f(x), deg-d, [a;b], x^d/f(x), 1e-10); 28 poly = invln2; 30 p = roundcoefficients(approx(poly,i), [|SG ...|]); 31 poly = poly + x^i*coeff(p,0); 35 print("rel error:", accurateinfnorm(1-poly(x)/f(x), [a;b], 30)); 38 for i from 0 to deg do coeff(poly,i);
|
H A D | sincos.sollya | 16 // return p that minimizes |f(x) - poly(x) - x^d*p(x)| 17 approx = proc(poly,d) { 18 return remez(f(x)-poly(x), deg-d, [a;b], x^d, 1e-10); 22 poly = 1; 24 p = roundcoefficients(approx(poly,2*i), [|double ...|]); 25 poly = poly + x^(2*i)*coeff(p,0); 29 //print("rel error:", accurateinfnorm(1-poly(x)/f(x), [a;b], 30)); 30 //print("abs error:", accurateinfnorm(f(x)-poly(x), [a;b], 30)); 33 for i from 0 to deg do coeff(poly,i);
|
H A D | log10f.sollya | 8 deg = 4; // poly degree 21 // return p that minimizes |f(x) - poly(x) - x^d*p(x)|/|f(x)| 22 approx = proc(poly,d) { 23 return remez(1 - poly(x)/f(x), deg-d, [a;b], x^d/f(x), 1e-10); 27 poly = 1; 29 p = roundcoefficients(approx(poly,i), [|D ...|]); 30 poly = poly + x^i*coeff(p,0); 34 print("rel error:", accurateinfnorm(1-poly(x)/f(x), [a;b], 30)); 37 for i from 0 to deg do double(coeff(poly,i));
|
H A D | asinhf.sollya | 15 approx = proc(poly, d) { 16 return remez(1 - poly(x)/f(x), deg-d, [a;b], x^d/f(x), 1e-10); 19 poly = x; 21 p = roundcoefficients(approx(poly,i), [|SG ...|]); 22 poly = poly + x^i*coeff(p,0); 26 print("rel error:", accurateinfnorm(1-poly(x)/f(x), [a;b], 30)); 29 for i from 2 to deg do coeff(poly,i);
|
H A D | log2.sollya | 6 deg = 11; // poly degree 24 // return p that minimizes |f(x) - poly(x) - x^d*p(x)|/|f(x)| 25 approx = proc(poly,d) { 26 return remez(1 - poly(x)/f(x), deg-d, [a;b], x^d/f(x), 1e-10); 30 poly = invln2hi + invln2lo; 32 p = roundcoefficients(approx(poly,i), [|D ...|]); 33 poly = poly + x^i*coeff(p,0); 39 print("rel error:", accurateinfnorm(1-poly(x)/f(x), [a;b], 30)); 42 for i from 0 to deg do coeff(poly,i);
|
H A D | v_log10f.sollya | 6 deg = 9; // poly degree 26 // return p that minimizes |f(x) - poly(x) - x^d*p(x)|/|f(x)| 27 approx = proc(poly,d) { 28 return remez(1 - poly(x)/f(x), deg-d, [a;b], x^d/f(x), 1e-10); 32 poly = invln10; 34 p = roundcoefficients(approx(poly,i), [|SG ...|]); 35 poly = poly + x^i*coeff(p,0); 39 print("rel error:", accurateinfnorm(1-poly(x)/f(x), [a;b], 30)); 42 for i from 0 to deg do single(coeff(poly,i));
|
H A D | log10.sollya | 6 deg = 6; // poly degree 24 // return p that minimizes |f(x) - poly(x) - x^d*p(x)|/|f(x)| 25 approx = proc(poly,d) { 26 return remez(1 - poly(x)/f(x), deg-d, [a;b], x^d/f(x), 1e-10); 30 poly = invln10hi + invln10lo; 32 p = roundcoefficients(approx(poly,i), [|D ...|]); 33 poly = poly + x^i*coeff(p,0); 38 print("rel error:", accurateinfnorm(1-poly(x)/f(x), [a;b], 30)); 41 for i from 0 to deg do coeff(poly,i);
|
H A D | log1p.sollya | 15 approx = proc(poly, d) { 16 return remez(1 - poly(x)/f(x), deg-d, [a;b], x^d/f(x), 1e-10); 19 poly = x; 21 p = roundcoefficients(approx(poly,i), [|D ...|]); 22 poly = poly + x^i*coeff(p,0); 28 for i from 2 to deg do coeff(poly,i); 29 print("rel error:", accurateinfnorm(1-poly(x)/f(x), [a;b], 30));
|
H A D | v_sin.sollya | 20 // return p that minimizes |f(x) - poly(x) - x^d*p(x)| 21 approx = proc(poly,d) { 22 return remez(f(x)-poly(x), deg-d, [a;b], x^d, 1e-10); 26 poly = 1; 28 p = roundcoefficients(approx(poly,2*i), [|D ...|]); 29 poly = poly + x^(2*i)*coeff(p,0); 33 print("abs error:", accurateinfnorm(sin(x)-x*poly(x), [a;b], 30)); 36 for i from 0 to deg do coeff(poly,i);
|
H A D | sinpi.sollya | 17 // return p that minimizes |f(x) - poly(x) - x^d*p(x)| 18 approx = proc(poly,d) { 19 return remez(f(x)-poly(x), deg-d, [a;b], x^d, 1e-10); 23 poly = pi*x; 25 p = roundcoefficients(approx(poly,2*i+1), [|D ...|]); 26 poly = poly + x^(2*i+1)*coeff(p,0); 30 print("abs error:", accurateinfnorm(sin(pi*x)-poly(x), [a;b], 30)); 33 for i from 0 to deg do coeff(poly,i);
|