/freebsd/contrib/arm-optimized-routines/pl/math/ |
H A D | poly_generic.h | 22 VTYPE p01 = FMA (poly[1], x, poly[0]); in VWRAP() 23 VTYPE p23 = FMA (poly[3], x, poly[2]); in VWRAP() 37 VTYPE p45 = FMA (poly[5], x, poly[4]); in VWRAP() 44 VTYPE p45 = FMA (poly[5], x, poly[4]); in VWRAP() 63 VTYPE p89 = FMA (poly[9], x, poly[8]); in VWRAP() 69 VTYPE p89 = FMA (poly[9], x, poly[8]); in VWRAP() 130 VTYPE p = FMA (poly[2], x, poly[1]); in VWRAP() 135 VTYPE p = FMA (poly[3], x, poly[2]); in VWRAP() 142 VTYPE p = FMA (poly[4], x, poly[3]); in VWRAP() 183 VTYPE p01 = FMA (poly[1], x, poly[0]); in VWRAP() [all …]
|
H A D | poly_sve_generic.h | 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() 41 VTYPE p45 = svmla_x (pg, DUP (poly[4]), x, poly[5]); in VWRAP() 48 VTYPE p45 = svmla_x (pg, DUP (poly[4]), x, poly[5]); in VWRAP() 67 VTYPE p89 = svmla_x (pg, DUP (poly[8]), x, poly[9]); in VWRAP() 73 VTYPE p89 = svmla_x (pg, DUP (poly[8]), x, poly[9]); in VWRAP() 141 VTYPE p = svmla_x (pg, DUP (poly[2]), x, poly[3]); in VWRAP() 148 VTYPE p = svmla_x (pg, DUP (poly[3]), x, poly[4]); in VWRAP() 193 VTYPE p01 = svmla_x (pg, DUP (poly[0]), x, poly[1]); in VWRAP() 194 VTYPE p23 = svmla_x (pg, DUP (poly[2]), x, poly[3]); 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 23 approx = proc(poly,d) { 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 ...|]); 35 // p = roundcoefficients(approx_abs(poly,i), [|D ...|]); 36 poly = poly + x^i*coeff(p,0); [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)); 32 print("abs2 error:", accurateinfnorm(exp(x)-poly(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 | 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 | 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 | 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 | 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 | 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);
|
/freebsd/contrib/arm-optimized-routines/math/aarch64/ |
H A D | v_exp2f_1u.c | 28 specialcase (float32x4_t poly, float32x4_t n, uint32x4_t e, float32x4_t absn) in specialcase() argument 36 float32x4_t r0 = poly * s1 * s2; in specialcase() 44 float32x4_t n, r, scale, poly, absn; in _ZGVnN4v_exp2f_1u() local 63 poly = vfmaq_f32 (C1, C0, r); in _ZGVnN4v_exp2f_1u() 64 poly = vfmaq_f32 (C2, poly, r); in _ZGVnN4v_exp2f_1u() 65 poly = vfmaq_f32 (C3, poly, r); in _ZGVnN4v_exp2f_1u() 66 poly = vfmaq_f32 (C4, poly, r); in _ZGVnN4v_exp2f_1u() 67 poly = vfmaq_f32 (C5, poly, r); in _ZGVnN4v_exp2f_1u() 68 poly = vfmaq_f32 (v_f32 (1.0f), poly, r); in _ZGVnN4v_exp2f_1u() 70 return specialcase (poly, n, e, absn); in _ZGVnN4v_exp2f_1u() [all …]
|
H A D | v_expf_1u.c | 31 specialcase (float32x4_t poly, float32x4_t n, uint32x4_t e, float32x4_t absn) in specialcase() argument 39 float32x4_t r0 = poly * s1 * s2; in specialcase() 47 float32x4_t n, r, scale, poly, absn, z; in _ZGVnN4v_expf_1u() local 68 poly = vfmaq_f32 (C1, C0, r); in _ZGVnN4v_expf_1u() 69 poly = vfmaq_f32 (C2, poly, r); in _ZGVnN4v_expf_1u() 70 poly = vfmaq_f32 (C3, poly, r); in _ZGVnN4v_expf_1u() 71 poly = vfmaq_f32 (C4, poly, r); in _ZGVnN4v_expf_1u() 72 poly = vfmaq_f32 (v_f32 (1.0f), poly, r); in _ZGVnN4v_expf_1u() 73 poly = vfmaq_f32 (v_f32 (1.0f), poly, r); in _ZGVnN4v_expf_1u() 75 return specialcase (poly, n, e, absn); in _ZGVnN4v_expf_1u() [all …]
|
/freebsd/contrib/arm-optimized-routines/pl/math/tools/ |
H A D | exp10.sollya | 7 deg = 5; // poly degree 14 //deg = 4; // poly degree - bump to 5 for ~1 ULP 26 approx = proc(poly,d) { 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 ...|]); 38 // p = roundcoefficients(approx_abs(poly,i), [|wp ...|]); 39 poly = poly + x^i*coeff(p,0); [all …]
|
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 | 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 | 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 | 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 | 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 | 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_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);
|