Lines Matching +full:ulp +full:- +full:allow
2 * Single-precision vector erf(x) function.
5 * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
19 .max = V4 (3.9375), /* 4 - 8/128. */
21 .third = V4 (0x1.555556p-2f), /* 1/3. */
23 .tiny_bound = V4 (0x1p-62f),
24 .scale_minus_one = V4 (0x1.06eba8p-3f), /* scale - 1.0. */
51 /* Single-precision implementation of vector erf(x).
54 Let d = x - r, and scale = 2 / sqrt(pi) * exp(-r^2). For x near r,
56 erf(x) ~ erf(r) + scale * d * [1 - r * d - 1/3 * d^2]
61 Maximum error: 1.93 ULP
62 _ZGVnN4v_erff(0x1.c373e6p-9) got 0x1.fd686cp-9
63 want 0x1.fd6868p-9. */
69 /* |x| < 2^-62. */ in V_NAME_F1()
70 uint32x4_t cmp = vcaltq_f32 (x, dat->tiny_bound); in V_NAME_F1()
72 /* If any lanes are special, mask them with 1 and retain a copy of x to allow in V_NAME_F1()
80 uint32x4_t a_gt_max = vcgtq_f32 (a, dat->max); in V_NAME_F1()
84 float32x4_t shift = dat->shift; in V_NAME_F1()
94 /* erf(x) ~ erf(r) + scale * d * (1 - r * d - 1/3 * d^2). */ in V_NAME_F1()
97 float32x4_t y = vfmaq_f32 (r, dat->third, d); in V_NAME_F1()
108 return vbslq_f32 (cmp, vfmaq_f32 (xm, dat->scale_minus_one, xm), y); in V_NAME_F1()
113 PL_SIG (V, F, 1, erf, -4.0, 4.0)