aboutsummaryrefslogtreecommitdiff
path: root/pl/math/test/ulp_wrappers.h
diff options
context:
space:
mode:
authorJoe Ramsay <Joe.Ramsay@arm.com>2022-04-29 11:46:41 +0100
committerPierre Blanchard <pierre.blanchard@arm.com>2022-04-29 11:46:46 +0100
commit287e0c05f75986b4c6fdae171a37ca11344bb370 (patch)
treea4e4e561944ec21d5278900270b618190e020539 /pl/math/test/ulp_wrappers.h
parent5b61e12675c1e0f6b3b5af9be351caeb8d6116fd (diff)
downloadarm-optimized-routines-287e0c05f75986b4c6fdae171a37ca11344bb370.tar.gz
pl/math: Add Vector/Neon erfc
Neon erfc uses a helper, v_exp_tail, which is a vector variant of __exp_dd (as used by scalar erfc). Maximum measured error is 3.5ulp.
Diffstat (limited to 'pl/math/test/ulp_wrappers.h')
-rw-r--r--pl/math/test/ulp_wrappers.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/pl/math/test/ulp_wrappers.h b/pl/math/test/ulp_wrappers.h
index 1386fbd..5357852 100644
--- a/pl/math/test/ulp_wrappers.h
+++ b/pl/math/test/ulp_wrappers.h
@@ -25,12 +25,15 @@ static inline v_float argf(float x) { return (v_float){x,x,x,fv[secondcall]}; }
static inline v_double argd(double x) { return (v_double){x,dv[secondcall]}; }
static float v_log10f(float x) { return __v_log10f(argf(x))[0]; }
+static double v_erfc(double x) { return __v_erfc(argd(x))[0]; }
static double v_log10(double x) { return __v_log10(argd(x))[0]; }
#ifdef __vpcs
static float vn_log10f(float x) { return __vn_log10f(argf(x))[0]; }
+static double vn_erfc(double x) { return __vn_erfc(argd(x))[0]; }
static double vn_log10(double x) { return __vn_log10(argd(x))[0]; }
static float Z_log10f(float x) { return _ZGVnN4v_log10f(argf(x))[0]; }
+static double Z_erfc(double x) { return _ZGVnN2v_erfc(argd(x))[0]; }
static double Z_log10(double x) { return _ZGVnN2v_log10(argd(x))[0]; }
#endif
#endif