Lines Matching +full:ulp +full:- +full:allow
2 * Double-precision vector e^x function.
4 * Copyright (c) 2019-2024, Arm Limited.
5 * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
14 #define IndexMask (N - 1)
24 /* maxerr: 1.88 +0.5 ulp
25 rel error: 1.4337*2^-53
26 abs error: 1.4299*2^-53 in [ -ln2/256, ln2/256 ]. */
27 .poly = { V2 (0x1.ffffffffffd43p-2), V2 (0x1.55555c75adbb2p-3),
28 V2 (0x1.55555da646206p-5) },
34 .ln2_hi = V2 (0x1.62e42fefa39efp-8), /* ln2/N. */
35 .ln2_lo = V2 (0x1.abc9e3b39803f3p-63),
44 # define TinyBound v_u64 (0x2000000000000000) /* asuint64 (0x1p-511). */
46 # define SpecialBound v_u64 (0x2080000000000000) /* BigBound - TinyBound. */
61 # define SpecialBias2 v_u64 (0x3010000000000000) /* 0x1p-254. */
85 /* If any lanes are special, mask them with 1 and retain a copy of x to allow in V_NAME_D1()
102 /* r = x - n*ln2/N. */ in V_NAME_D1()
107 e = vshlq_n_u64 (u, 52 - V_EXP_TABLE_BITS); in V_NAME_D1()
109 /* y = exp(r) - 1 ~= r + C0 r^2 + C1 r^3 + C2 r^4. */ in V_NAME_D1()
129 TEST_SIG (V, D, 1, exp, -9.9, 9.9)
133 TEST_SYM_INTERVAL (V_NAME_D1 (exp), 0x1p-6, 0x1p6, 400000)