From patchwork Wed Nov 24 19:37:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sunil K Pandey X-Patchwork-Id: 48081 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id DB63D3858C60 for ; Wed, 24 Nov 2021 19:52:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DB63D3858C60 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1637783571; bh=KydW8xeVsJUL1bbauBnmIJxHTte/yNmH1SaxUW6Vt/0=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=IHSE0WXEHYDluuiOcFPvj49aNJ+FO2A16Hi2FVFSx7+qnlh5AP1EhFBkIHBv00FTM XRUJNWGfTnwUTdvh6esvPg0+3YcxQjpg1vGq/oJ6H6sZJnpqMjPkLrIo+ocmTOhmMC UXiS5hFlYc/I9j2TAtF56ufy1ftqbFIkK7w2hJ/o= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by sourceware.org (Postfix) with ESMTPS id 1B87D3858031 for ; Wed, 24 Nov 2021 19:38:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1B87D3858031 X-IronPort-AV: E=McAfee;i="6200,9189,10178"; a="298763423" X-IronPort-AV: E=Sophos;i="5.87,261,1631602800"; d="scan'208";a="298763423" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Nov 2021 11:38:10 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,261,1631602800"; d="scan'208";a="538745148" Received: from scymds02.sc.intel.com ([10.82.73.244]) by orsmga001.jf.intel.com with ESMTP; 24 Nov 2021 11:38:09 -0800 Received: from gskx-1.sc.intel.com (gskx-1.sc.intel.com [172.25.149.211]) by scymds02.sc.intel.com with ESMTP id 1AOJc7Wm021555; Wed, 24 Nov 2021 11:38:07 -0800 To: libc-alpha@sourceware.org Subject: [PATCH 01/42] x86-64: Add vector acos/acosf implementation to libmvec Date: Wed, 24 Nov 2021 11:37:26 -0800 Message-Id: <20211124193807.2093208-2-skpgkp2@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211124193807.2093208-1-skpgkp2@gmail.com> References: <20211124193807.2093208-1-skpgkp2@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, FORGED_GMAIL_RCVD, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, HK_RANDOM_ENVFROM, HK_RANDOM_FROM, KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_SHORT, KAM_STOCKGEN, LOTS_OF_MONEY, NML_ADSP_CUSTOM_MED, SPF_HELO_NONE, SPF_SOFTFAIL, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Sunil K Pandey via Libc-alpha From: Sunil K Pandey Reply-To: Sunil K Pandey Cc: andrey.kolesov@intel.com Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Implement vectorized acos/acosf containing SSE, AVX, AVX2 and AVX512 versions for libmvec as per vector ABI. It also contains accuracy and ABI tests for vector acos/acosf with regenerated ulps. --- bits/libm-simd-decl-stubs.h | 11 + math/bits/mathcalls.h | 2 +- .../unix/sysv/linux/x86_64/libmvec.abilist | 8 + sysdeps/x86/fpu/bits/math-vector.h | 4 + sysdeps/x86_64/fpu/Makeconfig | 1 + sysdeps/x86_64/fpu/Versions | 4 + sysdeps/x86_64/fpu/libm-test-ulps | 20 + .../fpu/multiarch/ifunc-mathvec-avx512-skx.h | 39 + .../fpu/multiarch/svml_d_acos2_core-sse2.S | 20 + .../x86_64/fpu/multiarch/svml_d_acos2_core.c | 27 + .../fpu/multiarch/svml_d_acos2_core_sse4.S | 2922 +++++++++++++++++ .../fpu/multiarch/svml_d_acos4_core-sse.S | 20 + .../x86_64/fpu/multiarch/svml_d_acos4_core.c | 27 + .../fpu/multiarch/svml_d_acos4_core_avx2.S | 2777 ++++++++++++++++ .../fpu/multiarch/svml_d_acos8_core-avx2.S | 20 + .../x86_64/fpu/multiarch/svml_d_acos8_core.c | 27 + .../fpu/multiarch/svml_d_acos8_core_avx512.S | 2608 +++++++++++++++ .../fpu/multiarch/svml_s_acosf16_core-avx2.S | 20 + .../fpu/multiarch/svml_s_acosf16_core.c | 28 + .../multiarch/svml_s_acosf16_core_avx512.S | 2260 +++++++++++++ .../fpu/multiarch/svml_s_acosf4_core-sse2.S | 20 + .../x86_64/fpu/multiarch/svml_s_acosf4_core.c | 28 + .../fpu/multiarch/svml_s_acosf4_core_sse4.S | 2812 ++++++++++++++++ .../fpu/multiarch/svml_s_acosf8_core-sse.S | 20 + .../x86_64/fpu/multiarch/svml_s_acosf8_core.c | 28 + .../fpu/multiarch/svml_s_acosf8_core_avx2.S | 2619 +++++++++++++++ sysdeps/x86_64/fpu/svml_d_acos2_core.S | 29 + sysdeps/x86_64/fpu/svml_d_acos4_core.S | 29 + sysdeps/x86_64/fpu/svml_d_acos4_core_avx.S | 25 + sysdeps/x86_64/fpu/svml_d_acos8_core.S | 25 + sysdeps/x86_64/fpu/svml_s_acosf16_core.S | 25 + sysdeps/x86_64/fpu/svml_s_acosf4_core.S | 29 + sysdeps/x86_64/fpu/svml_s_acosf8_core.S | 29 + sysdeps/x86_64/fpu/svml_s_acosf8_core_avx.S | 25 + .../x86_64/fpu/test-double-libmvec-acos-avx.c | 1 + .../fpu/test-double-libmvec-acos-avx2.c | 1 + .../fpu/test-double-libmvec-acos-avx512f.c | 1 + sysdeps/x86_64/fpu/test-double-libmvec-acos.c | 3 + .../x86_64/fpu/test-double-vlen2-wrappers.c | 1 + .../fpu/test-double-vlen4-avx2-wrappers.c | 1 + .../x86_64/fpu/test-double-vlen4-wrappers.c | 1 + .../x86_64/fpu/test-double-vlen8-wrappers.c | 1 + .../x86_64/fpu/test-float-libmvec-acosf-avx.c | 1 + .../fpu/test-float-libmvec-acosf-avx2.c | 1 + .../fpu/test-float-libmvec-acosf-avx512f.c | 1 + sysdeps/x86_64/fpu/test-float-libmvec-acosf.c | 3 + .../x86_64/fpu/test-float-vlen16-wrappers.c | 1 + .../x86_64/fpu/test-float-vlen4-wrappers.c | 1 + .../fpu/test-float-vlen8-avx2-wrappers.c | 1 + .../x86_64/fpu/test-float-vlen8-wrappers.c | 1 + 50 files changed, 16607 insertions(+), 1 deletion(-) create mode 100644 sysdeps/x86_64/fpu/multiarch/ifunc-mathvec-avx512-skx.h create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos2_core-sse2.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos2_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos2_core_sse4.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos4_core-sse.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos4_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos4_core_avx2.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos8_core-avx2.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos8_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos8_core_avx512.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf16_core-avx2.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf16_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf16_core_avx512.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf4_core-sse2.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf4_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf4_core_sse4.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf8_core-sse.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf8_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf8_core_avx2.S create mode 100644 sysdeps/x86_64/fpu/svml_d_acos2_core.S create mode 100644 sysdeps/x86_64/fpu/svml_d_acos4_core.S create mode 100644 sysdeps/x86_64/fpu/svml_d_acos4_core_avx.S create mode 100644 sysdeps/x86_64/fpu/svml_d_acos8_core.S create mode 100644 sysdeps/x86_64/fpu/svml_s_acosf16_core.S create mode 100644 sysdeps/x86_64/fpu/svml_s_acosf4_core.S create mode 100644 sysdeps/x86_64/fpu/svml_s_acosf8_core.S create mode 100644 sysdeps/x86_64/fpu/svml_s_acosf8_core_avx.S create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acos-avx.c create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acos-avx2.c create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acos-avx512f.c create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acos.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acosf-avx.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acosf-avx2.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acosf-avx512f.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acosf.c diff --git a/bits/libm-simd-decl-stubs.h b/bits/libm-simd-decl-stubs.h index b80ff332a0..2ccdd1fc53 100644 --- a/bits/libm-simd-decl-stubs.h +++ b/bits/libm-simd-decl-stubs.h @@ -98,4 +98,15 @@ #define __DECL_SIMD_powf32x #define __DECL_SIMD_powf64x #define __DECL_SIMD_powf128x + +#define __DECL_SIMD_acos +#define __DECL_SIMD_acosf +#define __DECL_SIMD_acosl +#define __DECL_SIMD_acosf16 +#define __DECL_SIMD_acosf32 +#define __DECL_SIMD_acosf64 +#define __DECL_SIMD_acosf128 +#define __DECL_SIMD_acosf32x +#define __DECL_SIMD_acosf64x +#define __DECL_SIMD_acosf128x #endif diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h index da4cf4e10c..2cc6654208 100644 --- a/math/bits/mathcalls.h +++ b/math/bits/mathcalls.h @@ -50,7 +50,7 @@ /* Trigonometric functions. */ /* Arc cosine of X. */ -__MATHCALL (acos,, (_Mdouble_ __x)); +__MATHCALL_VEC (acos,, (_Mdouble_ __x)); /* Arc sine of X. */ __MATHCALL (asin,, (_Mdouble_ __x)); /* Arc tangent of X. */ diff --git a/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist b/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist index 363d4ace1e..b37b55777e 100644 --- a/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist @@ -46,3 +46,11 @@ GLIBC_2.22 _ZGVeN8v_log F GLIBC_2.22 _ZGVeN8v_sin F GLIBC_2.22 _ZGVeN8vv_pow F GLIBC_2.22 _ZGVeN8vvv_sincos F +GLIBC_2.35 _ZGVbN2v_acos F +GLIBC_2.35 _ZGVbN4v_acosf F +GLIBC_2.35 _ZGVcN4v_acos F +GLIBC_2.35 _ZGVcN8v_acosf F +GLIBC_2.35 _ZGVdN4v_acos F +GLIBC_2.35 _ZGVdN8v_acosf F +GLIBC_2.35 _ZGVeN16v_acosf F +GLIBC_2.35 _ZGVeN8v_acos F diff --git a/sysdeps/x86/fpu/bits/math-vector.h b/sysdeps/x86/fpu/bits/math-vector.h index dc0bfb3705..dabb74cbb9 100644 --- a/sysdeps/x86/fpu/bits/math-vector.h +++ b/sysdeps/x86/fpu/bits/math-vector.h @@ -58,6 +58,10 @@ # define __DECL_SIMD_pow __DECL_SIMD_x86_64 # undef __DECL_SIMD_powf # define __DECL_SIMD_powf __DECL_SIMD_x86_64 +# undef __DECL_SIMD_acos +# define __DECL_SIMD_acos __DECL_SIMD_x86_64 +# undef __DECL_SIMD_acosf +# define __DECL_SIMD_acosf __DECL_SIMD_x86_64 # endif #endif diff --git a/sysdeps/x86_64/fpu/Makeconfig b/sysdeps/x86_64/fpu/Makeconfig index 503e9b5ffa..2d6f13246e 100644 --- a/sysdeps/x86_64/fpu/Makeconfig +++ b/sysdeps/x86_64/fpu/Makeconfig @@ -22,6 +22,7 @@ postclean-generated += libmvec.mk # Define for both math and mathvec directories. libmvec-funcs = \ + acos \ cos \ exp \ log \ diff --git a/sysdeps/x86_64/fpu/Versions b/sysdeps/x86_64/fpu/Versions index 08132045d6..8d337bf716 100644 --- a/sysdeps/x86_64/fpu/Versions +++ b/sysdeps/x86_64/fpu/Versions @@ -12,5 +12,9 @@ libmvec { _ZGVbN4v_expf; _ZGVcN8v_expf; _ZGVdN8v_expf; _ZGVeN16v_expf; _ZGVbN4vv_powf; _ZGVcN8vv_powf; _ZGVdN8vv_powf; _ZGVeN16vv_powf; _ZGVbN4vvv_sincosf; _ZGVcN8vvv_sincosf; _ZGVdN8vvv_sincosf; _ZGVeN16vvv_sincosf; +}, + GLIBC_2.35 { + _ZGVbN2v_acos; _ZGVcN4v_acos; _ZGVdN4v_acos; _ZGVeN8v_acos; + _ZGVbN4v_acosf; _ZGVcN8v_acosf; _ZGVdN8v_acosf; _ZGVeN16v_acosf; } } diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps index 312575f933..85a568ed29 100644 --- a/sysdeps/x86_64/fpu/libm-test-ulps +++ b/sysdeps/x86_64/fpu/libm-test-ulps @@ -25,6 +25,26 @@ float: 1 float128: 1 ldouble: 2 +Function: "acos_vlen16": +float: 1 + +Function: "acos_vlen2": +double: 1 + +Function: "acos_vlen4": +double: 1 +float: 2 + +Function: "acos_vlen4_avx2": +double: 1 + +Function: "acos_vlen8": +double: 1 +float: 2 + +Function: "acos_vlen8_avx2": +float: 1 + Function: "acosh": double: 2 float: 2 diff --git a/sysdeps/x86_64/fpu/multiarch/ifunc-mathvec-avx512-skx.h b/sysdeps/x86_64/fpu/multiarch/ifunc-mathvec-avx512-skx.h new file mode 100644 index 0000000000..3aed563dde --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/ifunc-mathvec-avx512-skx.h @@ -0,0 +1,39 @@ +/* Common definition for libmathvec ifunc selections optimized with + AVX512. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + +#undef PASTER2 +#define PASTER2(x,y) x##_##y + +extern void REDIRECT_NAME (void); +extern __typeof (REDIRECT_NAME) OPTIMIZE (avx2_wrapper) attribute_hidden; +extern __typeof (REDIRECT_NAME) OPTIMIZE (skx) attribute_hidden; + +static inline void * +IFUNC_SELECTOR (void) +{ + const struct cpu_features* cpu_features = __get_cpu_features (); + + if (!CPU_FEATURES_ARCH_P (cpu_features, MathVec_Prefer_No_AVX512) + && CPU_FEATURE_USABLE_P (cpu_features, AVX512DQ)) + return OPTIMIZE (skx); + + return OPTIMIZE (avx2_wrapper); +} diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acos2_core-sse2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acos2_core-sse2.S new file mode 100644 index 0000000000..25fb8d0cac --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acos2_core-sse2.S @@ -0,0 +1,20 @@ +/* SSE2 version of vectorized acos, vector length is 2. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define _ZGVbN2v_acos _ZGVbN2v_acos_sse2 +#include "../svml_d_acos2_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acos2_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_acos2_core.c new file mode 100644 index 0000000000..5ba5d6fac2 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acos2_core.c @@ -0,0 +1,27 @@ +/* Multiple versions of vectorized acos, vector length is 2. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define SYMBOL_NAME _ZGVbN2v_acos +#include "ifunc-mathvec-sse4_1.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVbN2v_acos, __GI__ZGVbN2v_acos, __redirect__ZGVbN2v_acos) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acos2_core_sse4.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acos2_core_sse4.S new file mode 100644 index 0000000000..900ddb92ed --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acos2_core_sse4.S @@ -0,0 +1,2922 @@ +/* Function acos vectorized with SSE4. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + https://www.gnu.org/licenses/. */ + +/* + * ALGORITHM DESCRIPTION: + * + * SelMask = (|x| >= 0.5) ? 1 : 0; + * R = SelMask ? sqrt(0.5 - 0.5*|x|) : |x| + * acos(|x|) = SelMask ? 2*Poly(R) : (Pi/2 - Poly(R)) + * acos(x) = sign(x) ? (Pi - acos(|x|)) : acos(|x|) + * + */ + +#include + + .text +ENTRY(_ZGVbN2v_acos_sse4) + pushq %rbp + cfi_def_cfa_offset(16) + movq %rsp, %rbp + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + andq $-64, %rsp + subq $256, %rsp + movups __svml_dacos_data_internal(%rip), %xmm3 + movups 64+__svml_dacos_data_internal(%rip), %xmm6 + +/* x = -|arg| */ + movaps %xmm3, %xmm2 + orps %xmm0, %xmm2 + +/* Y = 0.5 + 0.5*(-x) */ + movaps %xmm6, %xmm4 + mulpd %xmm2, %xmm4 + addpd %xmm4, %xmm6 + +/* S ~ 2*sqrt(Y) */ + cvtpd2ps %xmm6, %xmm7 + +/* NaN processed in special branch (so wind test passed) */ + movups 256+__svml_dacos_data_internal(%rip), %xmm1 + +/* x^2 */ + movaps %xmm2, %xmm5 + cmpnlepd %xmm2, %xmm1 + mulpd %xmm2, %xmm5 + movmskpd %xmm1, %edx + movlhps %xmm7, %xmm7 + andps %xmm0, %xmm3 + movups %xmm8, 112(%rsp) + rsqrtps %xmm7, %xmm1 + minpd %xmm6, %xmm5 + .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22 + cvtps2pd %xmm1, %xmm8 + movaps %xmm6, %xmm1 + movaps %xmm5, %xmm4 + cmpltpd 128+__svml_dacos_data_internal(%rip), %xmm1 + cmpnltpd %xmm6, %xmm4 + addpd %xmm6, %xmm6 + andnps %xmm8, %xmm1 + movups %xmm14, 160(%rsp) + .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22 + movaps %xmm1, %xmm14 + mulpd %xmm1, %xmm14 + mulpd %xmm6, %xmm1 + mulpd %xmm14, %xmm6 + subpd 384+__svml_dacos_data_internal(%rip), %xmm6 + movups %xmm15, 144(%rsp) + .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xff, 0xff, 0xff, 0x22 + movaps %xmm6, %xmm8 + movups 448+__svml_dacos_data_internal(%rip), %xmm15 + mulpd %xmm6, %xmm15 + mulpd %xmm1, %xmm8 + addpd 464+__svml_dacos_data_internal(%rip), %xmm15 + mulpd %xmm6, %xmm15 + addpd 480+__svml_dacos_data_internal(%rip), %xmm15 + mulpd %xmm15, %xmm6 + addpd 496+__svml_dacos_data_internal(%rip), %xmm6 + mulpd %xmm6, %xmm8 + +/* polynomial */ + movups 512+__svml_dacos_data_internal(%rip), %xmm6 + movaps %xmm5, %xmm15 + mulpd %xmm5, %xmm6 + mulpd %xmm5, %xmm15 + addpd 528+__svml_dacos_data_internal(%rip), %xmm6 + subpd %xmm8, %xmm1 + mulpd %xmm15, %xmm6 + movups 544+__svml_dacos_data_internal(%rip), %xmm14 + andps %xmm4, %xmm1 + mulpd %xmm5, %xmm14 + movups 576+__svml_dacos_data_internal(%rip), %xmm7 + mulpd %xmm5, %xmm7 + addpd 560+__svml_dacos_data_internal(%rip), %xmm14 + addpd 592+__svml_dacos_data_internal(%rip), %xmm7 + addpd %xmm6, %xmm14 + mulpd %xmm15, %xmm7 + movups 608+__svml_dacos_data_internal(%rip), %xmm8 + movaps %xmm15, %xmm6 + mulpd %xmm5, %xmm8 + mulpd %xmm15, %xmm6 + addpd 624+__svml_dacos_data_internal(%rip), %xmm8 + mulpd %xmm6, %xmm14 + addpd %xmm7, %xmm8 + movups 640+__svml_dacos_data_internal(%rip), %xmm7 + mulpd %xmm5, %xmm7 + addpd %xmm14, %xmm8 + addpd 656+__svml_dacos_data_internal(%rip), %xmm7 + mulpd %xmm15, %xmm8 + movups 672+__svml_dacos_data_internal(%rip), %xmm6 + +/* X. */ + +#define _ZGVdN4v_acos _ZGVdN4v_acos_sse_wrapper +#include "../svml_d_acos4_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acos4_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_acos4_core.c new file mode 100644 index 0000000000..6453e7ebe2 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acos4_core.c @@ -0,0 +1,27 @@ +/* Multiple versions of vectorized acos, vector length is 4. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define SYMBOL_NAME _ZGVdN4v_acos +#include "ifunc-mathvec-avx2.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVdN4v_acos, __GI__ZGVdN4v_acos, __redirect__ZGVdN4v_acos) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acos4_core_avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acos4_core_avx2.S new file mode 100644 index 0000000000..db716b690e --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acos4_core_avx2.S @@ -0,0 +1,2777 @@ +/* Function acos vectorized with AVX2. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + https://www.gnu.org/licenses/. */ + +/* + * ALGORITHM DESCRIPTION: + * + * SelMask = (|x| >= 0.5) ? 1 : 0; + * R = SelMask ? sqrt(0.5 - 0.5*|x|) : |x| + * acos(|x|) = SelMask ? 2*Poly(R) : (Pi/2 - Poly(R)) + * acos(x) = sign(x) ? (Pi - acos(|x|)) : acos(|x|) + * + */ + +#include + + .text +ENTRY(_ZGVdN4v_acos_avx2) + pushq %rbp + cfi_def_cfa_offset(16) + movq %rsp, %rbp + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + andq $-64, %rsp + subq $384, %rsp + vmovupd __svml_dacos_data_internal(%rip), %ymm6 + vmovupd 64+__svml_dacos_data_internal(%rip), %ymm7 + vmovups %ymm8, 32(%rsp) + vmovups %ymm10, 160(%rsp) + vmovups %ymm9, 96(%rsp) + vmovups %ymm11, 192(%rsp) + vmovups %ymm12, 224(%rsp) + vmovups %ymm13, 256(%rsp) + vmovups %ymm15, 320(%rsp) + vmovups %ymm14, 288(%rsp) + vmovapd %ymm0, %ymm5 + +/* x = -|arg| */ + vorpd %ymm5, %ymm6, %ymm4 + +/* Y = 0.5 + 0.5*(-x) */ + vfmadd231pd %ymm4, %ymm7, %ymm7 + +/* x^2 */ + vmulpd %ymm4, %ymm4, %ymm1 + +/* NaN processed in special branch (so wind test passed) */ + vcmpnge_uqpd 256+__svml_dacos_data_internal(%rip), %ymm4, %ymm0 + .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe0, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe1, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22 + +/* S ~ 2*sqrt(Y) */ + vcmplt_oqpd 128+__svml_dacos_data_internal(%rip), %ymm7, %ymm9 + vaddpd %ymm7, %ymm7, %ymm13 + vminpd %ymm7, %ymm1, %ymm2 + vandpd %ymm5, %ymm6, %ymm3 + vcvtpd2ps %ymm7, %xmm6 + vcmpnlt_uqpd %ymm7, %ymm2, %ymm1 + vmovupd 768+__svml_dacos_data_internal(%rip), %ymm7 + vrsqrtps %xmm6, %xmm8 + vmovupd 640+__svml_dacos_data_internal(%rip), %ymm6 + vfmadd213pd 800+__svml_dacos_data_internal(%rip), %ymm2, %ymm7 + vcvtps2pd %xmm8, %ymm10 + vfmadd213pd 672+__svml_dacos_data_internal(%rip), %ymm2, %ymm6 + vandnpd %ymm10, %ymm9, %ymm11 + vmulpd %ymm11, %ymm11, %ymm12 + vmulpd %ymm13, %ymm11, %ymm15 + vmovupd 704+__svml_dacos_data_internal(%rip), %ymm9 + vmulpd %ymm2, %ymm2, %ymm11 + vmovupd 832+__svml_dacos_data_internal(%rip), %ymm10 + vfmsub213pd 384+__svml_dacos_data_internal(%rip), %ymm12, %ymm13 + vmovupd 896+__svml_dacos_data_internal(%rip), %ymm12 + vfmadd213pd 736+__svml_dacos_data_internal(%rip), %ymm2, %ymm9 + vmulpd %ymm11, %ymm11, %ymm8 + vfmadd213pd 864+__svml_dacos_data_internal(%rip), %ymm2, %ymm10 + vmulpd %ymm13, %ymm15, %ymm14 + vfmadd213pd 928+__svml_dacos_data_internal(%rip), %ymm2, %ymm12 + vfmadd213pd %ymm7, %ymm11, %ymm9 + vmovmskpd %ymm0, %edx + vmovupd 448+__svml_dacos_data_internal(%rip), %ymm0 + vfmadd213pd 480+__svml_dacos_data_internal(%rip), %ymm13, %ymm0 + vfmadd213pd 512+__svml_dacos_data_internal(%rip), %ymm13, %ymm0 + vfmadd213pd 544+__svml_dacos_data_internal(%rip), %ymm13, %ymm0 + +/* polynomial */ + vmovupd 576+__svml_dacos_data_internal(%rip), %ymm13 + vfnmadd213pd %ymm15, %ymm14, %ymm0 + vfmadd213pd 608+__svml_dacos_data_internal(%rip), %ymm2, %ymm13 + vblendvpd %ymm1, %ymm0, %ymm4, %ymm4 + vfmadd213pd %ymm6, %ymm11, %ymm13 + +/* X. */ + +#define _ZGVeN8v_acos _ZGVeN8v_acos_avx2_wrapper +#include "../svml_d_acos8_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acos8_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_acos8_core.c new file mode 100644 index 0000000000..1e7d1865fb --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acos8_core.c @@ -0,0 +1,27 @@ +/* Multiple versions of vectorized acos, vector length is 8. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define SYMBOL_NAME _ZGVeN8v_acos +#include "ifunc-mathvec-avx512-skx.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVeN8v_acos, __GI__ZGVeN8v_acos, __redirect__ZGVeN8v_acos) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acos8_core_avx512.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acos8_core_avx512.S new file mode 100644 index 0000000000..6c7c8535b6 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acos8_core_avx512.S @@ -0,0 +1,2608 @@ +/* Function acos vectorized with AVX-512. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + https://www.gnu.org/licenses/. */ + +/* + * ALGORITHM DESCRIPTION: + * + * SelMask = (|x| >= 0.5) ? 1 : 0; + * R = SelMask ? sqrt(0.5 - 0.5*|x|) : |x| + * acos(|x|) = SelMask ? 2*Poly(R) : (Pi/2 - Poly(R)) + * acos(x) = sign(x) ? (Pi - acos(|x|)) : acos(|x|) + * + */ + +#include + + .text +ENTRY(_ZGVeN8v_acos_skx) + pushq %rbp + cfi_def_cfa_offset(16) + movq %rsp, %rbp + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + andq $-64, %rsp + subq $192, %rsp + vmovups __svml_dacos_data_internal(%rip), %zmm7 + vmovups 64+__svml_dacos_data_internal(%rip), %zmm8 + +/* S ~ 2*sqrt(Y) */ + vmovups 128+__svml_dacos_data_internal(%rip), %zmm11 + vmovups 384+__svml_dacos_data_internal(%rip), %zmm14 + vmovups 448+__svml_dacos_data_internal(%rip), %zmm15 + vmovups 512+__svml_dacos_data_internal(%rip), %zmm2 + vmovups 576+__svml_dacos_data_internal(%rip), %zmm1 + vmovups 256+__svml_dacos_data_internal(%rip), %zmm10 + vmovaps %zmm0, %zmm6 + +/* x = -|arg| */ + vorpd %zmm6, %zmm7, %zmm5 + vandpd %zmm6, %zmm7, %zmm4 + +/* Y = 0.5 + 0.5*(-x) */ + vfmadd231pd {rn-sae}, %zmm5, %zmm8, %zmm8 + +/* x^2 */ + vmulpd {rn-sae}, %zmm5, %zmm5, %zmm9 + vrsqrt14pd %zmm8, %zmm12 + vcmppd $17, {sae}, %zmm11, %zmm8, %k2 + vcmppd $17, {sae}, %zmm10, %zmm5, %k0 + vmovups 960+__svml_dacos_data_internal(%rip), %zmm10 + vmovups 1088+__svml_dacos_data_internal(%rip), %zmm11 + vminpd {sae}, %zmm8, %zmm9, %zmm3 + vmovups 832+__svml_dacos_data_internal(%rip), %zmm9 + vxorpd %zmm12, %zmm12, %zmm12{%k2} + vaddpd {rn-sae}, %zmm8, %zmm8, %zmm0 + vcmppd $21, {sae}, %zmm8, %zmm3, %k1 + +/* X. */ + +#define _ZGVeN16v_acosf _ZGVeN16v_acosf_avx2_wrapper +#include "../svml_s_acosf16_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acosf16_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_acosf16_core.c new file mode 100644 index 0000000000..fcf05782c5 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acosf16_core.c @@ -0,0 +1,28 @@ +/* Multiple versions of vectorized acosf, vector length is 16. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define SYMBOL_NAME _ZGVeN16v_acosf +#include "ifunc-mathvec-avx512-skx.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVeN16v_acosf, __GI__ZGVeN16v_acosf, + __redirect__ZGVeN16v_acosf) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acosf16_core_avx512.S b/sysdeps/x86_64/fpu/multiarch/svml_s_acosf16_core_avx512.S new file mode 100644 index 0000000000..65ae01451c --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acosf16_core_avx512.S @@ -0,0 +1,2260 @@ +/* Function acosf vectorized with AVX-512. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + https://www.gnu.org/licenses/. */ + +/* + * ALGORITHM DESCRIPTION: + * + * SelMask = (|x| >= 0.5) ? 1 : 0; + * R = SelMask ? sqrt(0.5 - 0.5*|x|) : |x| + * acos(|x|) = SelMask ? 2*Poly(R) : (Pi/2 - Poly(R)) + * acos(x) = sign(x) ? (Pi - acos(|x|)) : acos(|x|) + * + * + */ + +#include + + .text +ENTRY(_ZGVeN16v_acosf_skx) + pushq %rbp + cfi_def_cfa_offset(16) + movq %rsp, %rbp + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + andq $-64, %rsp + subq $192, %rsp + vmovups __svml_sacos_data_internal(%rip), %zmm5 + vmovups 64+__svml_sacos_data_internal(%rip), %zmm6 + +/* SQ ~ 2*sqrt(Y) */ + vmovups 192+__svml_sacos_data_internal(%rip), %zmm9 + vmovups 256+__svml_sacos_data_internal(%rip), %zmm8 + vmovups 448+__svml_sacos_data_internal(%rip), %zmm12 + vmovups 512+__svml_sacos_data_internal(%rip), %zmm13 + vmovaps %zmm0, %zmm4 + +/* x = -|arg| */ + vorps %zmm4, %zmm5, %zmm3 + vandps %zmm4, %zmm5, %zmm2 + vmovups 576+__svml_sacos_data_internal(%rip), %zmm0 + +/* Y = 0.5 + 0.5*(-x) */ + vfmadd231ps {rn-sae}, %zmm3, %zmm6, %zmm6 + +/* x^2 */ + vmulps {rn-sae}, %zmm3, %zmm3, %zmm7 + vrsqrt14ps %zmm6, %zmm10 + vcmpps $17, {sae}, %zmm9, %zmm6, %k2 + vcmpps $22, {sae}, %zmm3, %zmm8, %k0 + vmovups 832+__svml_sacos_data_internal(%rip), %zmm9 + vminps {sae}, %zmm6, %zmm7, %zmm1 + vmovups 768+__svml_sacos_data_internal(%rip), %zmm7 + vxorps %zmm10, %zmm10, %zmm10{%k2} + vaddps {rn-sae}, %zmm6, %zmm6, %zmm14 + vmulps {rn-sae}, %zmm1, %zmm1, %zmm8 + vmulps {rn-sae}, %zmm10, %zmm10, %zmm11 + vmulps {rn-sae}, %zmm10, %zmm14, %zmm5 + vcmpps $21, {sae}, %zmm6, %zmm1, %k1 + +/* X. */ + +#define _ZGVbN4v_acosf _ZGVbN4v_acosf_sse2 +#include "../svml_s_acosf4_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acosf4_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_acosf4_core.c new file mode 100644 index 0000000000..6f9a5c1082 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acosf4_core.c @@ -0,0 +1,28 @@ +/* Multiple versions of vectorized acosf, vector length is 4. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define SYMBOL_NAME _ZGVbN4v_acosf +#include "ifunc-mathvec-sse4_1.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVbN4v_acosf, __GI__ZGVbN4v_acosf, + __redirect__ZGVbN4v_acosf) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acosf4_core_sse4.S b/sysdeps/x86_64/fpu/multiarch/svml_s_acosf4_core_sse4.S new file mode 100644 index 0000000000..d7e2dd282b --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acosf4_core_sse4.S @@ -0,0 +1,2812 @@ +/* Function acosf vectorized with SSE4. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + https://www.gnu.org/licenses/. */ + +/* + * ALGORITHM DESCRIPTION: + * + * SelMask = (|x| >= 0.5) ? 1 : 0; + * R = SelMask ? sqrt(0.5 - 0.5*|x|) : |x| + * acos(|x|) = SelMask ? 2*Poly(R) : (Pi/2 - Poly(R)) + * acos(x) = sign(x) ? (Pi - acos(|x|)) : acos(|x|) + * + * + */ + +#include + + .text +ENTRY(_ZGVbN4v_acosf_sse4) + pushq %rbp + cfi_def_cfa_offset(16) + movq %rsp, %rbp + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + andq $-64, %rsp + subq $320, %rsp + movaps %xmm0, %xmm6 + +/* + * 2*sqrt(X) ~ Sh - Sl (to 24+ bits) + * SQ ~ 2*sqrt(X) + */ + movups __svml_sacos_data_internal(%rip), %xmm5 + movups 64+__svml_sacos_data_internal(%rip), %xmm0 + +/* x = -|arg| */ + movaps %xmm5, %xmm7 + orps %xmm6, %xmm7 + +/* Y = 0.5 + 0.5*(-x) */ + movaps %xmm0, %xmm2 + mulps %xmm7, %xmm2 + +/* x^2 */ + movaps %xmm7, %xmm3 + mulps %xmm7, %xmm3 + addps %xmm2, %xmm0 + movups 256+__svml_sacos_data_internal(%rip), %xmm4 + andps %xmm6, %xmm5 + cmpnleps %xmm7, %xmm4 + minps %xmm0, %xmm3 + +/* SQ ~ 2*sqrt(Y) */ + rsqrtps %xmm0, %xmm1 + movmskps %xmm4, %edx + movaps %xmm0, %xmm4 + movaps %xmm3, %xmm2 + movups %xmm8, 144(%rsp) + cmpltps 192+__svml_sacos_data_internal(%rip), %xmm4 + cmpnltps %xmm0, %xmm2 + addps %xmm0, %xmm0 + andnps %xmm1, %xmm4 + .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22 + movaps %xmm4, %xmm8 + mulps %xmm4, %xmm8 + mulps %xmm0, %xmm4 + mulps %xmm8, %xmm0 + movups 512+__svml_sacos_data_internal(%rip), %xmm1 + +/* polynomial */ + movups 576+__svml_sacos_data_internal(%rip), %xmm8 + mulps %xmm3, %xmm8 + subps 448+__svml_sacos_data_internal(%rip), %xmm0 + mulps %xmm0, %xmm1 + addps 592+__svml_sacos_data_internal(%rip), %xmm8 + mulps %xmm4, %xmm0 + addps 528+__svml_sacos_data_internal(%rip), %xmm1 + mulps %xmm0, %xmm1 + movaps %xmm3, %xmm0 + mulps %xmm3, %xmm0 + subps %xmm1, %xmm4 + mulps %xmm0, %xmm8 + movups 608+__svml_sacos_data_internal(%rip), %xmm1 + andps %xmm2, %xmm4 + mulps %xmm3, %xmm1 + movups 832+__svml_sacos_data_internal(%rip), %xmm0 + andps %xmm2, %xmm0 + addps 624+__svml_sacos_data_internal(%rip), %xmm1 + addps %xmm8, %xmm1 + +/* X. */ + +#define _ZGVdN8v_acosf _ZGVdN8v_acosf_sse_wrapper +#include "../svml_s_acosf8_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acosf8_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_acosf8_core.c new file mode 100644 index 0000000000..dd360a9479 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acosf8_core.c @@ -0,0 +1,28 @@ +/* Multiple versions of vectorized acosf, vector length is 8. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define SYMBOL_NAME _ZGVdN8v_acosf +#include "ifunc-mathvec-avx2.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVdN8v_acosf, __GI__ZGVdN8v_acosf, + __redirect__ZGVdN8v_acosf) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acosf8_core_avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_acosf8_core_avx2.S new file mode 100644 index 0000000000..9e2fcfa0c1 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acosf8_core_avx2.S @@ -0,0 +1,2619 @@ +/* Function acosf vectorized with AVX2. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + https://www.gnu.org/licenses/. */ + +/* + * ALGORITHM DESCRIPTION: + * + * SelMask = (|x| >= 0.5) ? 1 : 0; + * R = SelMask ? sqrt(0.5 - 0.5*|x|) : |x| + * acos(|x|) = SelMask ? 2*Poly(R) : (Pi/2 - Poly(R)) + * acos(x) = sign(x) ? (Pi - acos(|x|)) : acos(|x|) + * + * + */ + +#include + + .text +ENTRY(_ZGVdN8v_acosf_avx2) + pushq %rbp + cfi_def_cfa_offset(16) + movq %rsp, %rbp + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + andq $-64, %rsp + subq $384, %rsp + +/* + * 2*sqrt(X) ~ Sh - Sl (to 24+ bits) + * SQ ~ 2*sqrt(X) + */ + vmovups __svml_sacos_data_internal(%rip), %ymm6 + vmovups 64+__svml_sacos_data_internal(%rip), %ymm7 + vmovups %ymm8, 256(%rsp) + vmovups %ymm15, 320(%rsp) + vmovups %ymm9, 32(%rsp) + .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22 + vmovups 640+__svml_sacos_data_internal(%rip), %ymm15 + vmovups %ymm10, 96(%rsp) + vmovups %ymm11, 160(%rsp) + vmovups %ymm14, 288(%rsp) + vmovups %ymm13, 224(%rsp) + vmovups %ymm12, 192(%rsp) + vmovaps %ymm0, %ymm5 + +/* x = -|arg| */ + vorps %ymm5, %ymm6, %ymm4 + +/* Y = 0.5 + 0.5*(-x) */ + vfmadd231ps %ymm4, %ymm7, %ymm7 + +/* x^2 */ + vmulps %ymm4, %ymm4, %ymm1 + vcmpnge_uqps 256+__svml_sacos_data_internal(%rip), %ymm4, %ymm0 + .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe0, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe1, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22 + +/* SQ ~ 2*sqrt(Y) */ + vaddps %ymm7, %ymm7, %ymm11 + vminps %ymm7, %ymm1, %ymm2 + vrsqrtps %ymm7, %ymm8 + vfmadd213ps 672+__svml_sacos_data_internal(%rip), %ymm2, %ymm15 + vmulps %ymm2, %ymm2, %ymm14 + vcmpnlt_uqps %ymm7, %ymm2, %ymm1 + vandps %ymm5, %ymm6, %ymm3 + vcmplt_oqps 192+__svml_sacos_data_internal(%rip), %ymm7, %ymm6 + vandnps %ymm8, %ymm6, %ymm9 + +/* polynomial */ + vmovups 576+__svml_sacos_data_internal(%rip), %ymm6 + vmulps %ymm9, %ymm9, %ymm10 + vmulps %ymm11, %ymm9, %ymm13 + vfmadd213ps 608+__svml_sacos_data_internal(%rip), %ymm2, %ymm6 + vfmsub213ps 448+__svml_sacos_data_internal(%rip), %ymm10, %ymm11 + vfmadd213ps %ymm15, %ymm14, %ymm6 + vmulps %ymm11, %ymm13, %ymm12 + vfmadd213ps 704+__svml_sacos_data_internal(%rip), %ymm2, %ymm6 + vmovmskps %ymm0, %edx + vmovups 512+__svml_sacos_data_internal(%rip), %ymm0 + vmulps %ymm6, %ymm2, %ymm9 + +/* X. */ + +#include +#include "svml_d_wrapper_impl.h" + + .text +ENTRY (_ZGVbN2v_acos) +WRAPPER_IMPL_SSE2 acos +END (_ZGVbN2v_acos) + +#ifndef USE_MULTIARCH + libmvec_hidden_def (_ZGVbN2v_acos) +#endif diff --git a/sysdeps/x86_64/fpu/svml_d_acos4_core.S b/sysdeps/x86_64/fpu/svml_d_acos4_core.S new file mode 100644 index 0000000000..e99cb4ae78 --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_d_acos4_core.S @@ -0,0 +1,29 @@ +/* Function acos vectorized with AVX2, wrapper version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include "svml_d_wrapper_impl.h" + + .text +ENTRY (_ZGVdN4v_acos) +WRAPPER_IMPL_AVX _ZGVbN2v_acos +END (_ZGVdN4v_acos) + +#ifndef USE_MULTIARCH + libmvec_hidden_def (_ZGVdN4v_acos) +#endif diff --git a/sysdeps/x86_64/fpu/svml_d_acos4_core_avx.S b/sysdeps/x86_64/fpu/svml_d_acos4_core_avx.S new file mode 100644 index 0000000000..7cbcbc965c --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_d_acos4_core_avx.S @@ -0,0 +1,25 @@ +/* Function acos vectorized in AVX ISA as wrapper to SSE4 ISA version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include "svml_d_wrapper_impl.h" + + .text +ENTRY (_ZGVcN4v_acos) +WRAPPER_IMPL_AVX _ZGVbN2v_acos +END (_ZGVcN4v_acos) diff --git a/sysdeps/x86_64/fpu/svml_d_acos8_core.S b/sysdeps/x86_64/fpu/svml_d_acos8_core.S new file mode 100644 index 0000000000..e26b30d81a --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_d_acos8_core.S @@ -0,0 +1,25 @@ +/* Function acos vectorized with AVX-512, wrapper to AVX2. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include "svml_d_wrapper_impl.h" + + .text +ENTRY (_ZGVeN8v_acos) +WRAPPER_IMPL_AVX512 _ZGVdN4v_acos +END (_ZGVeN8v_acos) diff --git a/sysdeps/x86_64/fpu/svml_s_acosf16_core.S b/sysdeps/x86_64/fpu/svml_s_acosf16_core.S new file mode 100644 index 0000000000..70e046d492 --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_s_acosf16_core.S @@ -0,0 +1,25 @@ +/* Function acosf vectorized with AVX-512. Wrapper to AVX2 version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include "svml_s_wrapper_impl.h" + + .text +ENTRY (_ZGVeN16v_acosf) +WRAPPER_IMPL_AVX512 _ZGVdN8v_acosf +END (_ZGVeN16v_acosf) diff --git a/sysdeps/x86_64/fpu/svml_s_acosf4_core.S b/sysdeps/x86_64/fpu/svml_s_acosf4_core.S new file mode 100644 index 0000000000..36354b32b5 --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_s_acosf4_core.S @@ -0,0 +1,29 @@ +/* Function acosf vectorized with SSE2, wrapper version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include "svml_s_wrapper_impl.h" + + .text +ENTRY (_ZGVbN4v_acosf) +WRAPPER_IMPL_SSE2 acosf +END (_ZGVbN4v_acosf) + +#ifndef USE_MULTIARCH + libmvec_hidden_def (_ZGVbN4v_acosf) +#endif diff --git a/sysdeps/x86_64/fpu/svml_s_acosf8_core.S b/sysdeps/x86_64/fpu/svml_s_acosf8_core.S new file mode 100644 index 0000000000..f08864a511 --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_s_acosf8_core.S @@ -0,0 +1,29 @@ +/* Function acosf vectorized with AVX2, wrapper version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include "svml_s_wrapper_impl.h" + + .text +ENTRY (_ZGVdN8v_acosf) +WRAPPER_IMPL_AVX _ZGVbN4v_acosf +END (_ZGVdN8v_acosf) + +#ifndef USE_MULTIARCH + libmvec_hidden_def (_ZGVdN8v_acosf) +#endif diff --git a/sysdeps/x86_64/fpu/svml_s_acosf8_core_avx.S b/sysdeps/x86_64/fpu/svml_s_acosf8_core_avx.S new file mode 100644 index 0000000000..f3ed4d8e78 --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_s_acosf8_core_avx.S @@ -0,0 +1,25 @@ +/* Function acosf vectorized in AVX ISA as wrapper to SSE4 ISA version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include "svml_s_wrapper_impl.h" + + .text +ENTRY (_ZGVcN8v_acosf) +WRAPPER_IMPL_AVX _ZGVbN4v_acosf +END (_ZGVcN8v_acosf) diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-acos-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-acos-avx.c new file mode 100644 index 0000000000..4f74b4260a --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-acos-avx.c @@ -0,0 +1 @@ +#include "test-double-libmvec-acos.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-acos-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-acos-avx2.c new file mode 100644 index 0000000000..4f74b4260a --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-acos-avx2.c @@ -0,0 +1 @@ +#include "test-double-libmvec-acos.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-acos-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-acos-avx512f.c new file mode 100644 index 0000000000..4f74b4260a --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-acos-avx512f.c @@ -0,0 +1 @@ +#include "test-double-libmvec-acos.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-acos.c b/sysdeps/x86_64/fpu/test-double-libmvec-acos.c new file mode 100644 index 0000000000..e38b8ce821 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-acos.c @@ -0,0 +1,3 @@ +#define LIBMVEC_TYPE double +#define LIBMVEC_FUNC acos +#include "test-vector-abi-arg1.h" diff --git a/sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c b/sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c index ed932fc98d..0abc7d2021 100644 --- a/sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c +++ b/sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c @@ -27,6 +27,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (sin), _ZGVbN2v_sin) VECTOR_WRAPPER (WRAPPER_NAME (log), _ZGVbN2v_log) VECTOR_WRAPPER (WRAPPER_NAME (exp), _ZGVbN2v_exp) VECTOR_WRAPPER_ff (WRAPPER_NAME (pow), _ZGVbN2vv_pow) +VECTOR_WRAPPER (WRAPPER_NAME (acos), _ZGVbN2v_acos) #define VEC_INT_TYPE __m128i diff --git a/sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c b/sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c index 3a6e37044f..dda093b914 100644 --- a/sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c +++ b/sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c @@ -30,6 +30,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (sin), _ZGVdN4v_sin) VECTOR_WRAPPER (WRAPPER_NAME (log), _ZGVdN4v_log) VECTOR_WRAPPER (WRAPPER_NAME (exp), _ZGVdN4v_exp) VECTOR_WRAPPER_ff (WRAPPER_NAME (pow), _ZGVdN4vv_pow) +VECTOR_WRAPPER (WRAPPER_NAME (acos), _ZGVdN4v_acos) #ifndef __ILP32__ # define VEC_INT_TYPE __m256i diff --git a/sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c b/sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c index 99db4e7616..f3230463bb 100644 --- a/sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c +++ b/sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c @@ -27,6 +27,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (sin), _ZGVcN4v_sin) VECTOR_WRAPPER (WRAPPER_NAME (log), _ZGVcN4v_log) VECTOR_WRAPPER (WRAPPER_NAME (exp), _ZGVcN4v_exp) VECTOR_WRAPPER_ff (WRAPPER_NAME (pow), _ZGVcN4vv_pow) +VECTOR_WRAPPER (WRAPPER_NAME (acos), _ZGVcN4v_acos) #define VEC_INT_TYPE __m128i diff --git a/sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c b/sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c index 251d429ac0..cf9f52faf0 100644 --- a/sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c +++ b/sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c @@ -27,6 +27,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (sin), _ZGVeN8v_sin) VECTOR_WRAPPER (WRAPPER_NAME (log), _ZGVeN8v_log) VECTOR_WRAPPER (WRAPPER_NAME (exp), _ZGVeN8v_exp) VECTOR_WRAPPER_ff (WRAPPER_NAME (pow), _ZGVeN8vv_pow) +VECTOR_WRAPPER (WRAPPER_NAME (acos), _ZGVeN8v_acos) #ifndef __ILP32__ # define VEC_INT_TYPE __m512i diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-acosf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-acosf-avx.c new file mode 100644 index 0000000000..1e6474dfa2 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-acosf-avx.c @@ -0,0 +1 @@ +#include "test-float-libmvec-acosf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-acosf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-acosf-avx2.c new file mode 100644 index 0000000000..1e6474dfa2 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-acosf-avx2.c @@ -0,0 +1 @@ +#include "test-float-libmvec-acosf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-acosf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-acosf-avx512f.c new file mode 100644 index 0000000000..1e6474dfa2 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-acosf-avx512f.c @@ -0,0 +1 @@ +#include "test-float-libmvec-acosf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-acosf.c b/sysdeps/x86_64/fpu/test-float-libmvec-acosf.c new file mode 100644 index 0000000000..fb47f974fd --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-acosf.c @@ -0,0 +1,3 @@ +#define LIBMVEC_TYPE float +#define LIBMVEC_FUNC acosf +#include "test-vector-abi-arg1.h" diff --git a/sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c b/sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c index c1d14cd79e..abbd3ed870 100644 --- a/sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c +++ b/sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c @@ -27,6 +27,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (sinf), _ZGVeN16v_sinf) VECTOR_WRAPPER (WRAPPER_NAME (logf), _ZGVeN16v_logf) VECTOR_WRAPPER (WRAPPER_NAME (expf), _ZGVeN16v_expf) VECTOR_WRAPPER_ff (WRAPPER_NAME (powf), _ZGVeN16vv_powf) +VECTOR_WRAPPER (WRAPPER_NAME (acosf), _ZGVeN16v_acosf) #define VEC_INT_TYPE __m512i diff --git a/sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c b/sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c index d23c372060..8a24027952 100644 --- a/sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c +++ b/sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c @@ -27,6 +27,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (sinf), _ZGVbN4v_sinf) VECTOR_WRAPPER (WRAPPER_NAME (logf), _ZGVbN4v_logf) VECTOR_WRAPPER (WRAPPER_NAME (expf), _ZGVbN4v_expf) VECTOR_WRAPPER_ff (WRAPPER_NAME (powf), _ZGVbN4vv_powf) +VECTOR_WRAPPER (WRAPPER_NAME (acosf), _ZGVbN4v_acosf) #define VEC_INT_TYPE __m128i diff --git a/sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c b/sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c index 3152cffb0c..aff0442606 100644 --- a/sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c +++ b/sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c @@ -30,6 +30,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (sinf), _ZGVdN8v_sinf) VECTOR_WRAPPER (WRAPPER_NAME (logf), _ZGVdN8v_logf) VECTOR_WRAPPER (WRAPPER_NAME (expf), _ZGVdN8v_expf) VECTOR_WRAPPER_ff (WRAPPER_NAME (powf), _ZGVdN8vv_powf) +VECTOR_WRAPPER (WRAPPER_NAME (acosf), _ZGVdN8v_acosf) /* Redefinition of wrapper to be compatible with _ZGVdN8vvv_sincosf. */ #undef VECTOR_WRAPPER_fFF diff --git a/sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c b/sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c index a8492abfef..913584d111 100644 --- a/sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c +++ b/sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c @@ -27,6 +27,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (sinf), _ZGVcN8v_sinf) VECTOR_WRAPPER (WRAPPER_NAME (logf), _ZGVcN8v_logf) VECTOR_WRAPPER (WRAPPER_NAME (expf), _ZGVcN8v_expf) VECTOR_WRAPPER_ff (WRAPPER_NAME (powf), _ZGVcN8vv_powf) +VECTOR_WRAPPER (WRAPPER_NAME (acosf), _ZGVcN8v_acosf) #define VEC_INT_TYPE __m128i From patchwork Wed Nov 24 19:37:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sunil K Pandey X-Patchwork-Id: 48071 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6B3B1385801A for ; Wed, 24 Nov 2021 19:40:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6B3B1385801A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1637782823; bh=s7YVFe/hNzjNLiz5JWPzL8THGhp7fdArYOA22EWGBJ8=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=mZy5Pepc/OlN1vvjH9kX082v3aNhI17plaOsyYC20kSxbvqAW48XzimRczRXX7yq2 ypuW2hf4xTwlzJX0sUtUOJ+twJj6YU/h974Q7f7t/C6R5mUpCckfs33uSXYvJaFZ9f HVJ39075VxpiQWieAIHkeaNHejH4JzxX/ve2Nytk= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by sourceware.org (Postfix) with ESMTPS id 3373F3858430 for ; Wed, 24 Nov 2021 19:38:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3373F3858430 X-IronPort-AV: E=McAfee;i="6200,9189,10178"; a="232852720" X-IronPort-AV: E=Sophos;i="5.87,261,1631602800"; d="scan'208";a="232852720" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Nov 2021 11:38:08 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,261,1631602800"; d="scan'208";a="475399688" Received: from scymds02.sc.intel.com ([10.82.73.244]) by orsmga002.jf.intel.com with ESMTP; 24 Nov 2021 11:38:08 -0800 Received: from gskx-1.sc.intel.com (gskx-1.sc.intel.com [172.25.149.211]) by scymds02.sc.intel.com with ESMTP id 1AOJc7Wn021555; Wed, 24 Nov 2021 11:38:08 -0800 To: libc-alpha@sourceware.org Subject: [PATCH 02/42] x86-64: Add vector acos/acosf to libmvec microbenchmark Date: Wed, 24 Nov 2021 11:37:27 -0800 Message-Id: <20211124193807.2093208-3-skpgkp2@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211124193807.2093208-1-skpgkp2@gmail.com> References: <20211124193807.2093208-1-skpgkp2@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-8.5 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, FORGED_GMAIL_RCVD, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, HK_RANDOM_ENVFROM, HK_RANDOM_FROM, KAM_DMARC_NONE, KAM_DMARC_STATUS, NML_ADSP_CUSTOM_MED, SPF_HELO_NONE, SPF_SOFTFAIL, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Sunil K Pandey via Libc-alpha From: Sunil K Pandey Reply-To: Sunil K Pandey Cc: andrey.kolesov@intel.com Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Add vector acos/acosf and input files to libmvec microbenchmark. libmvec-acos-inputs: 90% Normal random distribution range: (-1.0, 1.0) mean: 0.0 sigma: 1.0 10% uniform random distribution in range (-1.0, 1.0) libmvec-acosf-inputs: 90% Normal random distribution range: (-1.0f, 1.0f) mean: 0.0f sigma: 1.0f 10% uniform random distribution in range (-1.0f, 1.0f) --- sysdeps/x86_64/fpu/Makeconfig | 1 + sysdeps/x86_64/fpu/libmvec-acos-inputs | 4100 +++++++++++++++++++++++ sysdeps/x86_64/fpu/libmvec-acosf-inputs | 4100 +++++++++++++++++++++++ 3 files changed, 8201 insertions(+) create mode 100644 sysdeps/x86_64/fpu/libmvec-acos-inputs create mode 100644 sysdeps/x86_64/fpu/libmvec-acosf-inputs diff --git a/sysdeps/x86_64/fpu/Makeconfig b/sysdeps/x86_64/fpu/Makeconfig index 2d6f13246e..bc781c45c7 100644 --- a/sysdeps/x86_64/fpu/Makeconfig +++ b/sysdeps/x86_64/fpu/Makeconfig @@ -32,6 +32,7 @@ libmvec-funcs = \ # Define libmvec function for benchtests directory. libmvec-bench-funcs = \ + acos \ bench-libmvec-double = \ $(addprefix double-vlen1-, $(libmvec-bench-funcs)) \ diff --git a/sysdeps/x86_64/fpu/libmvec-acos-inputs b/sysdeps/x86_64/fpu/libmvec-acos-inputs new file mode 100644 index 0000000000..fd9a35f7e9 --- /dev/null +++ b/sysdeps/x86_64/fpu/libmvec-acos-inputs @@ -0,0 +1,4100 @@ +## args: double +## ret: double +## includes: math.h +# Normally distributed random inputs in range (-1, 1), mean = 0, standard deviation = 1 +-0x1.11003707ad71cp-2 +-0x1.1f03ac14205d9p-1 +-0x1.5838c30ed6fc3p-1 +-0x1.4da85539de3b5p-1 +-0x1.c8504e37d86ddp-2 +-0x1.ea09e1c33d868p-1 +0x1.7280a3c0da21ep-3 +0x1.ab9c04900f4f5p-3 +-0x1.b43cda4d6705ep-3 +-0x1.6e4445cbd37d4p-1 +-0x1.da8bf72b700aep-1 +-0x1.0908b9d017ed2p-3 +-0x1.3227ed5b58471p-5 +-0x1.c10dd2b9255f4p-2 +-0x1.2bbc5f516e8d5p-2 +-0x1.b20d60c7a530ap-8 +0x1.1ee5aa3496dfdp-1 +-0x1.bae5630be8fa1p-2 +-0x1.044a9a182f9f8p-1 +-0x1.8d7e8be40c528p-3 +0x1.a4315405b11c5p-1 +0x1.b3fd5670ecd4ap-1 +0x1.d6772a99b9e6cp-1 +0x1.00828434dd2d8p-2 +0x1.1a0f2b4692737p-1 +0x1.6a3b90d8a2564p-2 +0x1.d6f5020515c26p-2 +0x1.6fbe4ba8d9446p-2 +-0x1.65602f611315cp-8 +-0x1.761797c2f616p-2 +0x1.7fbad97602089p-5 +0x1.cf4f8200615c7p-2 +-0x1.cdac598660c09p-2 +0x1.684600e9f3442p-3 +-0x1.3c18dfcd0f52cp-4 +0x1.e264029c179bdp-1 +-0x1.dae845c7c42b6p-2 +0x1.38ee2466d3ccep-1 +-0x1.1ba2e924596fp-7 +-0x1.e846c32ac146ap-1 +0x1.5ad90e7163024p-1 +0x1.635b913d56b61p-1 +0x1.407263f7072fap-1 +0x1.925071d48b0b3p-1 +0x1.f11f734377897p-1 +0x1.335461bd7b01dp-2 +0x1.36fb0d6a8de52p-1 +0x1.29598e8e6b2c2p-1 +0x1.99eacd8a58849p-3 +0x1.9be853d383652p-3 +0x1.d735c6f58fd54p-5 +0x1.a1e876e99cc25p-1 +0x1.1e0159be4e81ap-9 +0x1.cb814b7ce6be9p-1 +0x1.ef5984a81ededp-3 +0x1.4511a4ee5b844p-3 +0x1.c3236baf357dbp-3 +-0x1.b5663a8cd3b9ep-5 +0x1.f9775cb63303ap-1 +-0x1.fbe0031478fdap-1 +0x1.ec4068e7020c7p-4 +0x1.0af7c1486d593p-1 +-0x1.18e6b70f08559p-1 +0x1.2fc06a93c1a14p-2 +-0x1.0df60b2d5d5dcp-1 +-0x1.fd3eaf213d1e8p-1 +-0x1.f9bea93247eaap-4 +-0x1.a8a18bac42c3ep-4 +0x1.1e32df11779f8p-1 +0x1.8035aed7e3caap-4 +0x1.6e5336703809cp-1 +-0x1.6861d6c10a35ap-1 +-0x1.ead9531ceaba8p-2 +0x1.2fd210e98fe19p-1 +0x1.844b6aaf4a018p-1 +-0x1.be60b50cdda5bp-2 +0x1.6afc43a9ea6d4p-1 +0x1.7db1b789b8ae3p-3 +-0x1.8902483c892f9p-3 +-0x1.3d22023424ea9p-2 +-0x1.e94e3d53833bep-8 +-0x1.cddf65f662a4ep-1 +-0x1.f5d26520f4c51p-1 +-0x1.ea04b4cf878fbp-4 +0x1.29c33813f534dp-5 +-0x1.c2ee5e411a0abp-1 +0x1.97aca2b66caa5p-2 +0x1.6abe8d536e76cp-1 +0x1.df29a8a6cba7dp-1 +0x1.21ccb149e5916p-3 +0x1.9c79d91cd3abbp-1 +-0x1.253082fbb949cp-4 +-0x1.a401128cbd47p-2 +-0x1.7794302387928p-1 +0x1.77052a301b523p-2 +-0x1.2b1873ae6cd4p-4 +-0x1.f6f973d4846eep-1 +-0x1.0d40996ac67dep-1 +-0x1.4613a9aa74a1ep-4 +0x1.fb9105e7aec3fp-3 +-0x1.16fa49c45cebcp-2 +0x1.2c57f42e821ap-1 +0x1.130f2d64c0e04p-1 +-0x1.8b8cb3370be2bp-1 +-0x1.a9f6495b21f7ep-1 +0x1.88e06bd995039p-2 +0x1.750ec69bb3a04p-1 +-0x1.0dd8abfb7163fp-1 +-0x1.99309e84c1aa3p-2 +-0x1.08b1bb04fcb2fp-2 +0x1.3d9e1719d2eedp-4 +0x1.0a5b3dcd01fc6p-2 +0x1.a170f60a6ed18p-2 +-0x1.c5393001f2817p-2 +-0x1.8f8d41cd02deep-1 +-0x1.f49e6ed2ea59dp-3 +-0x1.7a129db836d66p-8 +-0x1.1ae76b7d889bbp-1 +0x1.087a59865458p-4 +0x1.6aff85979d2e4p-1 +-0x1.62fa8a2d852ep-2 +0x1.b66d4b202c901p-2 +0x1.b32cf8b59341dp-2 +-0x1.f16faac24958cp-2 +-0x1.ac60d9bcb0c1ep-1 +-0x1.fbdc48a31f484p-3 +0x1.ce8d89c689577p-2 +-0x1.f0575d582a6f9p-2 +0x1.e23bc0ab89368p-2 +0x1.cf7eeb6e0abc7p-2 +0x1.38160acb69ed3p-1 +-0x1.261fef79be8afp-1 +0x1.45cf87ff96e16p-5 +-0x1.d895eb2acfd26p-1 +0x1.3c7e0f26d9a5dp-1 +-0x1.bb2ef32c0e29bp-1 +-0x1.46be0cc7d69d2p-3 +0x1.3d225138898dep-2 +0x1.6bb15c61ca5f1p-1 +-0x1.1ace063e93befp-2 +-0x1.81d19c894bb91p-4 +0x1.3f8ac7be8ab6cp-2 +-0x1.e6965bce97654p-1 +-0x1.b57d146d9fecep-1 +-0x1.11d16c19c3bf8p-3 +-0x1.8f5e47361574p-2 +0x1.86781351ae4afp-2 +-0x1.d28fec264c5bbp-2 +0x1.f2d6b29ddd1fdp-4 +-0x1.4314fbc60688dp-3 +-0x1.3d2ddbf4fb65cp-1 +-0x1.91560bb9916ap-3 +-0x1.207899d59db57p-1 +-0x1.dc4ac967fabf9p-3 +0x1.ab49a65f38c0ep-2 +-0x1.eb130826e1895p-2 +-0x1.e7106b5cd09a4p-3 +0x1.696b3cb702757p-1 +0x1.ce3576497d7cp-1 +-0x1.8652cde59b041p-2 +-0x1.548a943d70c97p-2 +-0x1.f25d36c6dd90cp-3 +-0x1.d71921c74e86ap-2 +0x1.83b4a079a27e7p-1 +-0x1.1f373e6a1bcbap-3 +0x1.13306c72f0a09p-2 +0x1.61510c88f5508p-5 +-0x1.b37f3cbae82b2p-3 +0x1.59e1b120e78c1p-1 +0x1.4f8ea8f2b2961p-1 +-0x1.1c519eb7f0d69p-3 +0x1.3c58fc37889p-1 +0x1.c0e9d5de7777fp-1 +-0x1.45924349efd71p-1 +0x1.2cfb2503184b6p-6 +0x1.853c9a6a80e5fp-3 +-0x1.00b1d997f5fbep-5 +0x1.615230b0d5311p-1 +-0x1.0bf550e931a92p-1 +0x1.1bbe241b89cdap-1 +0x1.b815861fcf449p-1 +0x1.279ef16db5323p-2 +-0x1.90195a7f08b23p-2 +0x1.cc7c5104079d9p-6 +-0x1.548ec77748c92p-2 +0x1.bff54863bbb13p-1 +0x1.cbfa05a9ff372p-2 +0x1.501f90d4da71dp-1 +-0x1.3d8029781c0b5p-2 +-0x1.1185907f2891p-1 +0x1.2aa161a477366p-2 +0x1.e3c221a69c122p-1 +0x1.9d3e2c47eba7cp-1 +-0x1.2e21864f8979ap-3 +0x1.05d96678310bp-1 +-0x1.e5720f8e796fp-2 +-0x1.769eb387f45cfp-1 +0x1.96443428c83a4p-2 +0x1.3a316fc183cdbp-3 +0x1.b3009a6de004ep-3 +-0x1.ed8923480f39ap-3 +0x1.4ef2ff01ddc15p-2 +0x1.d4a29648b5b98p-1 +-0x1.8543db067585fp-2 +0x1.39c3eefea7c9fp-4 +-0x1.9d594484fb3e8p-2 +0x1.19f114c4cbe4fp-1 +-0x1.aced0f9aed0e9p-1 +0x1.65e234d9d723p-1 +0x1.81eea275987dcp-1 +-0x1.e09ae78c0f3d3p-2 +0x1.88cff5ac2b027p-2 +-0x1.968f240a875f7p-1 +0x1.b0dc5207eb04ap-2 +-0x1.949d08f8c29a8p-3 +-0x1.6216dec7445a1p-4 +0x1.02a4c5bc845a4p-8 +0x1.9d0d59339304dp-1 +-0x1.53b09fd56345fp-2 +-0x1.b239cdf03ac1ep-2 +-0x1.71a60561f2064p-4 +0x1.378dbd3e3a659p-2 +-0x1.28a53517f7768p-2 +-0x1.d4008c69c59adp-1 +-0x1.be0504a33b632p-5 +-0x1.5dabf200f756p-6 +-0x1.e6a4d3abe3088p-1 +0x1.f591180c51366p-1 +0x1.942c7148cde5ap-2 +-0x1.73fc05810249p-2 +-0x1.9185946d2b52ap-2 +-0x1.b7fb2cfe67b55p-2 +-0x1.4beef70ae865ep-2 +-0x1.9ce8c85734c31p-1 +-0x1.737e66f44a295p-3 +0x1.e33526ca99p-1 +-0x1.47b07cd872cc6p-1 +-0x1.a15cdae0069dp-3 +-0x1.ac6db2a5a8104p-2 +0x1.bb99adabb7695p-2 +-0x1.2993127a62fabp-3 +0x1.a0ae02a90565bp-2 +0x1.6c88688bf3d0ep-1 +0x1.b699a7f6a7a3ep-1 +0x1.5aac394582e8ap-1 +-0x1.2168cdb45a42cp-3 +0x1.2e485a8c6a78ap-4 +0x1.f078a16ddbf3cp-1 +-0x1.7304dc64e5d25p-1 +0x1.3c0eaf7233825p-2 +-0x1.af841b378367ap-3 +-0x1.e4bf2c89063edp-2 +0x1.97137406810c5p-6 +0x1.7b323cf745735p-2 +-0x1.684ab251b1ce1p-3 +0x1.e4b5302c127c3p-2 +-0x1.afe7254c2591ap-2 +0x1.d0065fe66e50cp-4 +0x1.826d13d890139p-1 +-0x1.3253d2afe1b8dp-1 +-0x1.7e5a943926cb6p-1 +-0x1.ba8b241fbebep-2 +-0x1.dce1bbf206014p-5 +-0x1.e1ee3cfd1f65ap-1 +0x1.8a59e5bc58019p-1 +0x1.72b319253eee7p-2 +-0x1.f0a78fd5454d7p-2 +-0x1.ec9f639a8510ep-2 +-0x1.ef4d44582ca63p-1 +-0x1.45030ba429744p-2 +0x1.a2a4ff4868a38p-2 +0x1.f291cfa1b465bp-2 +0x1.0c5e3ac756171p-1 +0x1.0b13ec95f71a5p-2 +0x1.5b22063d3f771p-1 +-0x1.c752f2d48be01p-3 +0x1.3d1510a4f8cdbp-1 +0x1.17da3098fa41dp-1 +-0x1.266a093459c2ap-1 +0x1.f81c0f099f2cep-1 +-0x1.347da4da856a7p-2 +-0x1.39b4ff032f74p-4 +0x1.b9a57659a198ep-1 +-0x1.7218160918b0bp-1 +-0x1.668931cb016d5p-2 +-0x1.863bf99b9a269p-2 +0x1.e559736ebfa14p-1 +0x1.11701ffaaed4bp-3 +-0x1.5340baefc13b2p-1 +0x1.b42cffb5695fcp-2 +0x1.a9ca39d6dd6d5p-1 +-0x1.5506bc6b3344fp-2 +0x1.7d3bab08c2e5dp-3 +0x1.ba237ef743cb1p-2 +-0x1.9d3fecf588cedp-1 +0x1.04414d215c2dcp-1 +-0x1.1ab065eb10c66p-1 +0x1.bb68097337c3dp-1 +-0x1.e284efe228a5bp-1 +-0x1.bcfc0ccd8bdb9p-4 +0x1.010d86d3def47p-2 +-0x1.7ff50886aa934p-2 +-0x1.714b7a435c98ap-1 +0x1.c81f219cb6323p-1 +0x1.acdd642170b2cp-2 +-0x1.8e537b09f6587p-2 +-0x1.28ed6f2f91617p-3 +0x1.16d3d6bb5bb5p-1 +0x1.36a936e3ebbd3p-1 +0x1.b548ae3c0fcedp-1 +-0x1.62ef4260938d8p-2 +0x1.ac459d085ef3cp-4 +-0x1.639dbbec184b2p-3 +0x1.da644b4ec0c1bp-1 +-0x1.e0024f1700b7ep-2 +0x1.5ce9feb3fec2ep-1 +0x1.caf30f2f2f5c5p-2 +-0x1.ad21817854b0ap-2 +0x1.03266ab853368p-1 +0x1.ff0c92e59680bp-3 +-0x1.2ee54faad1af5p-1 +0x1.ec9c2b38dbc5fp-3 +0x1.3552315701a58p-7 +-0x1.d3868f8655a01p-1 +-0x1.593af265b0f1cp-2 +-0x1.6fcb3685e1188p-1 +-0x1.dd79d7aa5a8f8p-1 +0x1.55402eb22877fp-6 +-0x1.7758f8ef73ce5p-1 +-0x1.129ed6c9fec09p-1 +0x1.47b15b059fa22p-2 +0x1.c37c3800e473fp-4 +-0x1.55e59b46e00fep-1 +0x1.15ab24a33c4afp-2 +0x1.0e450f3ea087bp-3 +0x1.8cb4a41e39bd7p-1 +0x1.c468190d6e81bp-3 +-0x1.189c5db00beabp-1 +0x1.12c705018ea08p-1 +0x1.568e8537fddafp-6 +-0x1.e01c8ad4d6716p-1 +0x1.60c16dbb9f8b4p-3 +0x1.821b65b56e9d4p-2 +0x1.49d4a47602299p-4 +-0x1.9536fd2b229e5p-3 +-0x1.e45f70770ffa6p-1 +0x1.f42e02754d539p-5 +-0x1.1447c8f7f0803p-2 +-0x1.3814c90a3de51p-1 +-0x1.b768bf096a393p-1 +-0x1.db96f4672c59fp-1 +0x1.b7e8d8652d20bp-1 +0x1.31f092f938cp-1 +-0x1.379037b079f64p-1 +0x1.e8d0615bb1b3ap-1 +-0x1.7e58d6afdb1b9p-2 +0x1.cc9f2aaf79d97p-1 +-0x1.c4cbe4c652089p-2 +0x1.2084693f36931p-1 +-0x1.8b59479c34dacp-3 +0x1.8a8b20b240b6fp-2 +0x1.ff5246459affp-3 +-0x1.e5886f2da10b1p-1 +-0x1.b143aad20aa5ap-2 +-0x1.838bc62cdfb8p-2 +0x1.df434c0fa8f6ap-3 +0x1.254967c3d947fp-3 +0x1.0efb15037e6dfp-1 +0x1.4d5cb9f362b26p-1 +-0x1.b1937baaf010bp-3 +0x1.cc6ca50f8a3efp-1 +0x1.4a1dae90d7411p-3 +0x1.55b3e6055d0e1p-5 +-0x1.1aa44da042bb6p-1 +-0x1.b0bd843ab6a4ap-1 +-0x1.f054c11c6fd4cp-5 +0x1.d0a0747739ef9p-3 +0x1.41625bb6bb69ep-9 +-0x1.40f225f19d807p-1 +0x1.68f2251556c42p-2 +-0x1.7b88d0971cb8fp-1 +0x1.9881037ac5d0cp-2 +-0x1.d7dcb5bf10201p-8 +-0x1.047d0738b0548p-1 +0x1.99fc73dff87f1p-2 +-0x1.1cc8ea88902bdp-2 +-0x1.3f006e8f475cdp-1 +0x1.616499a14aaecp-3 +-0x1.14f850c38af3ap-1 +0x1.152221a1e5ec1p-3 +-0x1.dda46f82ac25fp-2 +-0x1.ebd99dffbb2c1p-2 +0x1.fd966020d3d82p-1 +0x1.109c0a3406d9cp-2 +0x1.08c908be8c44dp-2 +-0x1.0e232850400eep-1 +-0x1.b9f7921fe5df1p-2 +-0x1.0db7cd63aa192p-2 +-0x1.5b2f8fe8e2d73p-1 +-0x1.31bd792341a6fp-1 +0x1.698de691c7e25p-1 +0x1.5916dba89ea0cp-1 +0x1.94f61b50158e4p-5 +-0x1.8478f81625835p-1 +0x1.85f2a22dbc78cp-3 +0x1.6ed2a7fc6ff22p-3 +-0x1.88231dca9889fp-4 +0x1.3b45876742c98p-1 +0x1.c568a632a54f1p-1 +0x1.3bcd8bbb91ce4p-1 +0x1.d1e3303547257p-1 +-0x1.6a87eb5d38a3dp-1 +-0x1.60d4fb529d061p-6 +-0x1.f4fc225d9bfd2p-1 +0x1.f9a2508505615p-3 +-0x1.ab8ce8c5036fdp-3 +0x1.99274d4947665p-3 +0x1.6ee10190d744bp-2 +0x1.865bcdfbfe84bp-1 +-0x1.036fe87d648a6p-1 +0x1.d33039a6687e5p-4 +0x1.681635f580025p-1 +0x1.f67006626433fp-1 +0x1.9b7f31d955738p-1 +-0x1.fea613e6a7e47p-6 +-0x1.adf07f99080b1p-1 +-0x1.c6ff784a5846dp-1 +-0x1.66360c4d84d4cp-1 +0x1.2d187fe4d9616p-1 +-0x1.a19827cb2b281p-1 +0x1.3a13a0ae983f5p-1 +-0x1.780cef3cd015cp-2 +0x1.6128b1ee4e238p-1 +0x1.bf9da80551537p-2 +0x1.0ae6ec582d27ap-1 +-0x1.519680b429656p-2 +0x1.07598173ad01ep-2 +0x1.178cad6720448p-5 +0x1.6b3713606e908p-3 +0x1.9b39f2eb74eb1p-1 +-0x1.d1b80e7c5af4fp-1 +-0x1.bf7de089ee40bp-1 +0x1.ea5ec156bac88p-1 +-0x1.8ae87a60df294p-1 +0x1.0c18504490a73p-1 +0x1.6455c177d0d72p-2 +-0x1.b4951c9daf538p-2 +0x1.220f603d1e01cp-1 +0x1.09e96024014f6p-1 +-0x1.b1165a43c5c1dp-1 +-0x1.26eaa37b73589p-1 +-0x1.9657b29aaf014p-2 +0x1.25d18013304f9p-1 +0x1.17f54ccdb1492p-2 +-0x1.3ebe73f75b15cp-1 +-0x1.2865ded9b709ap-3 +0x1.e5f60d67b72c9p-5 +0x1.074894afb4a68p-1 +-0x1.77bcac716d62cp-2 +-0x1.8ec86add9aeefp-4 +-0x1.f727374002d1dp-3 +0x1.219fdd9159794p-2 +0x1.5753bc1e8f686p-3 +-0x1.5c513c3aff73cp-8 +0x1.54c0aa8028eafp-1 +0x1.0aefb256acaa6p-1 +-0x1.4f42f362a07dbp-1 +0x1.7d3d03a0cd29cp-2 +0x1.52dc5518c03d1p-1 +0x1.152d96988dfcbp-1 +-0x1.b9362861efb2ap-1 +0x1.6f1701555f85fp-2 +0x1.247af4585a46fp-1 +-0x1.82e73ed18d53dp-2 +0x1.12f232801512cp-2 +0x1.2d4502ac51d3p-4 +0x1.ef4225e07b545p-2 +0x1.f80584e5fb2d6p-2 +0x1.f2ed8609d0483p-1 +-0x1.ec149381a56ep-3 +0x1.10f4e21b1dc18p-2 +-0x1.84c3d380eaf0ap-2 +0x1.6536d3822a5dbp-1 +0x1.838a198ed8cdbp-7 +0x1.32d80d3aac2f4p-2 +-0x1.9c26870369fe7p-1 +-0x1.307611302dc42p-2 +-0x1.189ae531d5c74p-2 +0x1.7dabb7015dbccp-3 +-0x1.46b15dd71b6a3p-1 +0x1.586a8ce67f2f6p-2 +-0x1.6145556b90223p-1 +-0x1.9271db76a9a42p-4 +-0x1.34681fafe2e6bp-4 +0x1.c4afdfb77bce6p-1 +-0x1.94f576076f3f6p-2 +0x1.3e406ebb0b494p-2 +-0x1.e5bd1f0c77475p-1 +-0x1.4826da1a6fb3bp-1 +-0x1.13ce40f99bf7bp-4 +-0x1.40cd7e5d60aecp-9 +-0x1.19a972728a2d8p-2 +0x1.dda92a62ee88fp-1 +0x1.84f46abbbd47bp-2 +-0x1.727f2b1502ce2p-2 +-0x1.b9a03fa812b65p-1 +-0x1.5b54a8be61f33p-3 +-0x1.a81c71fe36b8ep-2 +0x1.935030c4ba176p-1 +0x1.8103dbff05cedp-3 +-0x1.9c5866f93b68fp-1 +-0x1.1a268680e3411p-1 +-0x1.3ba3bee44776fp-1 +0x1.00cac957880d8p-4 +0x1.6e38c79a3a629p-2 +-0x1.11bd078b261d1p-1 +-0x1.a112b6d648e72p-1 +0x1.8fed914bb2cffp-3 +-0x1.0cae8b7cb7f28p-1 +-0x1.6150254008025p-1 +0x1.dc9001dd29cdp-2 +0x1.7f0cf0befbae9p-2 +-0x1.452b5b358d993p-2 +0x1.882dd6d58fb3p-1 +0x1.2e61f0ca33ep-4 +0x1.80f26ecd63442p-5 +-0x1.59db1552e1a15p-2 +-0x1.e10c40e71879bp-2 +-0x1.628050434b9fep-1 +0x1.f3e4c5419aafdp-1 +-0x1.da90ccfcca91fp-2 +-0x1.2ce42a5c335a8p-2 +-0x1.19b0494251d83p-3 +0x1.4bdca09b25806p-2 +-0x1.b4551f48e5e14p-1 +-0x1.c3e7b0cda300ap-1 +-0x1.851b7aa9f2e58p-2 +-0x1.394900efd90a5p-4 +-0x1.c0df639b1f95bp-1 +0x1.b57ef080526a1p-1 +0x1.6e593e63048dp-1 +-0x1.b3b2e53f25ff4p-1 +0x1.20b8481ed33p-3 +-0x1.e40dbf90af69fp-2 +-0x1.85c872b5fe48p-3 +0x1.daba6fbce7222p-1 +-0x1.1c90b64eade2dp-1 +-0x1.0cee4cade79eap-3 +0x1.9d18d9c89b6d5p-2 +0x1.24a594ec3955bp-2 +-0x1.1386072cb5767p-1 +-0x1.4f44b083f6f77p-3 +0x1.ce504b8600805p-1 +-0x1.096d3f1f86262p-1 +0x1.58e5a7a15838dp-1 +-0x1.c0f158c0b386ep-1 +0x1.7bec591bcb9f1p-1 +0x1.acf4457026889p-3 +-0x1.081e4b193da3p-1 +-0x1.af18d2905362dp-4 +-0x1.816382b888e2ap-2 +0x1.cada85eca0269p-1 +-0x1.857e75135f75ap-3 +-0x1.e6e3ddc7b99dp-1 +-0x1.e91d19d11a9e3p-1 +0x1.8fdd59da7273p-2 +0x1.4b6786c836facp-1 +-0x1.b9fc6897f58cfp-1 +-0x1.47c5e44db5cfdp-1 +-0x1.79047a2057605p-3 +0x1.2acbeee069b98p-3 +-0x1.1005032e784bap-1 +-0x1.98ba1addf270ep-2 +-0x1.33782a6e11156p-2 +0x1.a805bfbe7435ep-2 +-0x1.6baefbf516dc7p-1 +-0x1.21c30a32cda9ap-1 +0x1.62072a0760112p-6 +-0x1.39b197eda3b67p-1 +0x1.7f04c21a59f65p-2 +-0x1.39f94c59356c8p-1 +0x1.3ddeeff0904dp-5 +-0x1.1ee2ce778752ep-5 +-0x1.6899a578aa20fp-1 +0x1.dc1aa30ec4db2p-3 +-0x1.b601c472fde84p-3 +0x1.a8462321fb8p-2 +-0x1.33c518cb111f3p-1 +0x1.a6798664f5c9p-1 +-0x1.6077f66d571e5p-1 +-0x1.16a5451e26682p-1 +-0x1.5e37dd26ac9dap-3 +0x1.cdd5a0cabf976p-2 +-0x1.bfefec036a01p-1 +-0x1.618704dd2237ep-1 +-0x1.17cefc37ce9e6p-2 +-0x1.4c77e02f9c4b2p-1 +0x1.6f3eebec64ab6p-3 +-0x1.52b944245b838p-2 +-0x1.5cc46dbfcb373p-3 +-0x1.208c44c5508cbp-1 +0x1.81c26d68ec56p-2 +-0x1.a20602060a734p-1 +0x1.17946adcb0123p-4 +0x1.ebae791dc0e76p-2 +0x1.1156ce1170e2ep-2 +-0x1.8f8275af8013ap-1 +0x1.1ddf12ae2e858p-2 +0x1.e2158a0dbcab6p-2 +-0x1.daaed0c01f5aap-1 +0x1.f60184bdc9d7dp-3 +0x1.7304797757b6dp-4 +-0x1.1b0870e4b2ddfp-2 +-0x1.8030c09dc94dap-2 +-0x1.1eaf484d16af4p-2 +0x1.5f4fcdf057914p-1 +-0x1.07f92ebdf0646p-2 +0x1.8976c0c835b33p-1 +0x1.97525efa2886bp-2 +0x1.22d4d3404221ap-1 +-0x1.39b1efce626c6p-1 +0x1.53b1b5e962d6fp-1 +-0x1.0fbae3676fcf6p-1 +-0x1.fbd592bfe26a7p-1 +-0x1.2bcc972227b6p-2 +-0x1.74dc0b082c1dbp-2 +-0x1.ff7f930fd5e04p-2 +-0x1.8c8db066a8634p-2 +0x1.2e4de69b3172fp-1 +0x1.d16f60be25e2p-1 +0x1.58f0deb360e7p-3 +0x1.0e3bd98783ebp-3 +-0x1.c56b26cd3b0e1p-2 +0x1.7131b1eae0801p-1 +-0x1.64f178d84bd9ap-1 +0x1.23e878698dbd8p-1 +-0x1.aec4fa9e8ba9cp-3 +-0x1.88ad447acc67fp-3 +-0x1.ce6f1619037b1p-1 +0x1.2220e8d088964p-3 +0x1.5eedc05f9aa27p-2 +-0x1.e5c615bc4bffp-3 +-0x1.dd82938144e22p-1 +-0x1.29bfc266ae7abp-5 +0x1.5fafe5b5edad1p-1 +-0x1.22b3574e65c91p-1 +0x1.6651c618cf3f4p-7 +0x1.e17a669700255p-1 +0x1.d3c68b80f60d5p-2 +-0x1.56483d0667741p-4 +0x1.f538f451b9fdp-3 +-0x1.d04bfc083145dp-4 +-0x1.3883f7b6f31edp-2 +0x1.c91f37757fd7ep-3 +0x1.84bc463b503aap-4 +-0x1.fb2979688c18dp-1 +0x1.f4b9e2ad91dap-4 +0x1.1f839c02aea09p-3 +0x1.796b8f1d9cd6p-4 +0x1.632f413730eecp-5 +-0x1.8e656348d3b5bp-3 +-0x1.283e2b9962ba7p-5 +-0x1.6757876dcae7ap-3 +0x1.01319694076e6p-1 +0x1.cd2e9a67a077ap-5 +0x1.bbe7756c878aep-1 +-0x1.01f5185a530a2p-1 +-0x1.8fc528ee4a816p-1 +0x1.7e09d6394726bp-1 +0x1.b3ec39d73b7b1p-4 +-0x1.982cae8330074p-1 +0x1.68e118ffda33p-1 +0x1.428b724b52cd1p-1 +-0x1.d2f639ca66964p-3 +-0x1.d183a5109a288p-4 +-0x1.549fc168d98a7p-2 +-0x1.d3ba9491d2209p-1 +-0x1.54198cd76ee49p-7 +0x1.3010effb2a9d8p-3 +-0x1.607ea18e94ccep-6 +-0x1.85076cea8dee2p-1 +0x1.10b0ca3231d11p-1 +0x1.29b29933c5641p-1 +-0x1.84dcdbd7cb5b2p-4 +0x1.f93c4c1ff8b2p-1 +0x1.efae6a4345834p-1 +-0x1.904df897d65a6p-4 +-0x1.a7399e357df9dp-5 +-0x1.3469c823bafdbp-7 +0x1.b1cb35b097958p-2 +0x1.0c8065025cd4ap-2 +0x1.53f72f16765c3p-1 +-0x1.863f60a9005cbp-2 +-0x1.270593c7223d4p-2 +0x1.b3360925278c1p-1 +-0x1.53f3f9eefbb21p-3 +0x1.2acbf9ebe9e7fp-2 +-0x1.8d57deab6dd4p-3 +-0x1.83f7facbfd2e6p-1 +-0x1.c4a5e400f4127p-2 +0x1.f788581eb9328p-1 +-0x1.0d62b38790e8ap-5 +-0x1.ca6d3ff5e4bbbp-1 +-0x1.f53175fd5fbf4p-3 +0x1.89261e938134dp-3 +-0x1.b95099cbd7fd6p-2 +-0x1.d4f5e9efe61ecp-2 +-0x1.02511aab89695p-1 +-0x1.cb4adcc5751bcp-4 +0x1.761ab7c02496fp-3 +0x1.a95893cb28a3dp-11 +-0x1.5f79ac46c6e44p-2 +-0x1.8ce90041d4696p-1 +-0x1.a5d9801ae6e41p-2 +0x1.6bf1cedfb1b7ep-3 +-0x1.242a94d890b57p-3 +-0x1.06b2a88ee90ddp-1 +-0x1.11ed7d554db1bp-2 +-0x1.2ce92f55d7889p-2 +0x1.4d78bb6b7dd17p-2 +0x1.cca3d043c0994p-1 +0x1.0efcb883841f4p-1 +0x1.19ac5755658f6p-1 +0x1.c7101bf613de6p-2 +-0x1.84c9147b7a425p-2 +-0x1.81cc4aa7636c6p-11 +-0x1.8c1b09da4e0a5p-2 +-0x1.454e049d56536p-4 +-0x1.203ea7655130ap-5 +0x1.0b62ff735d823p-1 +0x1.0a3696500908p-2 +0x1.b69cbdbd83417p-5 +0x1.e4a2a0310a0dp-2 +-0x1.fc1de8ce9ccbbp-4 +0x1.9c5f0ca6d5bcdp-1 +-0x1.c662e4a9e2b4fp-3 +0x1.cb7759ff98897p-2 +-0x1.61d9a3955f9e8p-2 +-0x1.412e522a016d3p-2 +-0x1.6b1d72f508db9p-4 +0x1.3617f9adebb76p-1 +0x1.fa2252d878efap-1 +-0x1.8d1c9d5a80b31p-1 +-0x1.b34548a43067p-1 +0x1.b4c7033fa0d99p-1 +-0x1.5975cf7aecb88p-2 +0x1.689c1081133dfp-4 +-0x1.e322c79333de6p-2 +-0x1.11322e6dd5efp-1 +-0x1.45a283fca3a17p-5 +0x1.958df26b61271p-1 +0x1.199ecc3fd30b8p-4 +0x1.61feda8a1b167p-2 +0x1.2dbc586fbc512p-1 +-0x1.4b524db6de106p-3 +-0x1.321ac45903b65p-6 +0x1.7e83448fdfaefp-3 +-0x1.ba9872b529493p-1 +0x1.da35d735316e7p-1 +-0x1.3a327d6e93215p-4 +-0x1.7050bdd8e3b12p-2 +0x1.212d80b57dbap-1 +-0x1.c0bdc3f5eb2e8p-1 +0x1.1695d07763352p-2 +0x1.0454b477b93dbp-1 +0x1.4ccce934eb87fp-2 +-0x1.1db5faa1216e6p-4 +-0x1.2510e26139c57p-1 +0x1.4f6fe74404b98p-1 +-0x1.d20a797212608p-1 +-0x1.99dd5f0dc1be9p-2 +0x1.e5340b83aa563p-1 +-0x1.2736081315feep-2 +0x1.6928713c96dd3p-3 +0x1.f3716a8668576p-1 +-0x1.11c75e3eb7aa4p-2 +0x1.2d817a7181f61p-6 +-0x1.16f81ded0728ep-1 +-0x1.1d377adc1dbadp-1 +0x1.f17c08fe08923p-1 +-0x1.ab3f92eb6cbd1p-1 +0x1.74ea2fdcafe54p-2 +0x1.aecb4e3294ba2p-3 +0x1.afa7d625147a4p-1 +0x1.e4688e6465297p-2 +0x1.a5c71090e684fp-1 +-0x1.27cf3ce6802e3p-2 +0x1.445e414758d3dp-2 +-0x1.d98d83ed5e8bcp-3 +-0x1.9dcba31296e9p-2 +0x1.004326e1f1688p-1 +0x1.8bedb6ec2f595p-1 +0x1.d525c85d209ccp-1 +-0x1.cf0b1030d66a1p-1 +0x1.3a6ab8b7b614ap-1 +0x1.129a34c4d9706p-2 +0x1.577f4c5e05628p-1 +0x1.1631b9dba5f7dp-4 +-0x1.26ea1e7ac0b88p-1 +-0x1.b93729fdd8f22p-2 +0x1.4eed19e584721p-1 +0x1.d4f66c0c3e037p-7 +0x1.ab22813a799a7p-1 +-0x1.9a3f9f1494d26p-1 +0x1.fa2aa3fca4b25p-4 +0x1.49b417fd5ec53p-1 +-0x1.72778cc408968p-2 +-0x1.c049b5b81bf84p-6 +-0x1.fec4921b7b307p-2 +-0x1.7f3bf35c7a58bp-2 +-0x1.3821e065c24a1p-1 +0x1.e44732bd2e43ap-3 +0x1.be2f00af19dadp-2 +-0x1.b38e3282251f1p-2 +0x1.37d12d6b65381p-1 +0x1.59cbe7e583c3cp-2 +0x1.16769cc7854c4p-1 +-0x1.85f9db7ad83c5p-1 +-0x1.da9c686237432p-1 +0x1.a17e49e89617cp-6 +0x1.72945e1f52228p-1 +0x1.a01a6ed4ee6ap-1 +0x1.b254af39ac1ecp-4 +0x1.e48b990422d5cp-1 +0x1.d225c2f94ab9dp-3 +0x1.21c16635ce30cp-2 +0x1.235af779a7eecp-1 +-0x1.1b58b94905d77p-1 +-0x1.58b5e5e5e17d8p-2 +-0x1.73b8d4aac7e64p-6 +-0x1.bab2f3ff684ap-1 +0x1.ec3f2b4e3eae3p-2 +-0x1.8305cbc8c1a8p-2 +-0x1.2a58c0545c6eep-2 +0x1.b69e0a9970a11p-2 +0x1.c1c852f430c4fp-2 +-0x1.32d97bf64a7a5p-2 +0x1.5c66efc5457fcp-4 +-0x1.e6885d3c0425dp-1 +0x1.cb287d7e944a9p-1 +0x1.8cbafccfc1f45p-1 +0x1.afd89ba2db15fp-3 +-0x1.29809ec5a8b95p-1 +0x1.5f3cc882f0ce7p-1 +0x1.a88dc2ba797acp-2 +0x1.207bc67429ddfp-3 +-0x1.fe6d08f681db5p-1 +0x1.1a69746b81fc4p-1 +0x1.d70e4ab377134p-1 +0x1.8af8aac380a6dp-1 +0x1.aa1fa24208717p-1 +0x1.8aaa0f3b9c80dp-1 +-0x1.749505e44c7bp-1 +-0x1.a2358ede7d995p-2 +-0x1.61c6682a4d466p-5 +0x1.a74e21d7029e3p-2 +-0x1.25ccba68e7a7ep-1 +-0x1.8303cbe673d4fp-1 +0x1.7d3ed50ce274ap-1 +-0x1.e87dd9747919bp-1 +-0x1.9ed7a29a9c834p-1 +-0x1.df4279685765dp-1 +0x1.7a610748aa408p-1 +-0x1.cd544b866b613p-2 +-0x1.f6c969d2369aap-2 +-0x1.a9e9020d9602p-4 +-0x1.8301f683ac6dbp-1 +0x1.14ef608119895p-2 +-0x1.0a88bf1598296p-1 +0x1.a4af830fdd814p-5 +0x1.bc3728d82d6d7p-1 +-0x1.0326e0867440ap-1 +0x1.3dbaa26960115p-2 +0x1.c7e527bc02a67p-3 +0x1.5e1d8eaca6c95p-7 +-0x1.d7ebf650cc9b9p-1 +0x1.9097b662a59eep-1 +0x1.b565a157284cep-5 +-0x1.fd2e4f7bf87bfp-4 +0x1.af69fc75d4ad8p-2 +0x1.d68badce5fad4p-6 +0x1.d5fbd9a4099ap-1 +0x1.8059ff0272cbfp-1 +-0x1.ce2d245fe3a35p-1 +-0x1.afd83a33b6376p-3 +0x1.40d0694ce0278p-1 +0x1.e5e55589cb872p-2 +0x1.cf19a800cecdfp-1 +-0x1.342553521d555p-2 +-0x1.c9b073026de3dp-2 +0x1.873755755adcfp-7 +0x1.2830d7242734bp-1 +0x1.a8ecb20875e96p-3 +0x1.7f09c3abb2cf8p-5 +-0x1.a964f00912f74p-2 +0x1.c6c843e32c486p-1 +0x1.e96bb5de91cabp-3 +-0x1.d248afe7e9b74p-4 +-0x1.4b9104f6c1ab4p-3 +0x1.bdf1ed32d83afp-2 +-0x1.ef824bbbbdc2cp-4 +0x1.259cef635a7c8p-3 +0x1.771fcc609328p-1 +0x1.19a7b2a6759c3p-1 +0x1.2e1651d1f03a8p-1 +-0x1.fec49907b5513p-1 +0x1.09d26f11c4854p-2 +-0x1.0e6e3dd04d3fep-1 +-0x1.3db789c763c1cp-1 +0x1.d00d6363bea5fp-3 +-0x1.ce9d3329d71c6p-2 +0x1.a9d84b66901d9p-1 +0x1.042e6609033a5p-1 +0x1.7ae4d671414d6p-3 +0x1.e9eb1e748b222p-5 +-0x1.19c4f69ebc23ep-3 +0x1.c9382b078162ap-2 +-0x1.5b2ed8c81d9aep-2 +-0x1.e8e2661822d76p-5 +0x1.28e69858a70dbp-1 +0x1.3c991c941a69ap-1 +-0x1.8af2033b78097p-1 +0x1.0f261d3bf0c2dp-4 +-0x1.7afbed9a57201p-1 +0x1.b0c4237bd40dep-2 +0x1.6ecb46f059fb6p-4 +0x1.5472d0ca8751bp-2 +-0x1.2c76e4e00044bp-4 +0x1.549e9b6eee872p-1 +0x1.88639a9d97768p-2 +-0x1.029b549308401p-1 +-0x1.8db027e9223a6p-7 +-0x1.ebefd3680974ep-1 +0x1.f98d9eed2ccd4p-3 +-0x1.cc9b5568dc31p-2 +0x1.aa3480c5fb174p-1 +0x1.6b2fa201f75eap-2 +0x1.d13377c3aa005p-1 +0x1.e795f969d96ddp-1 +-0x1.443c98b0560cbp-1 +-0x1.eeb87ebb65fa6p-1 +0x1.b87f5b7ff32ecp-1 +0x1.3af59df8ae1c2p-1 +-0x1.d1ca3725ac41cp-2 +0x1.7cbcf34dd1223p-2 +0x1.ca9f1a077856ep-1 +-0x1.9ce86cf3aa2cdp-2 +-0x1.f536eeac3900bp-4 +-0x1.c0551c9c239ecp-4 +-0x1.b1170a960b5afp-3 +-0x1.cc7f4e662776ap-1 +-0x1.792ec52d353ep-2 +0x1.ab17df6ea1f03p-4 +0x1.4bd66c73cbe2ep-4 +0x1.fdb30fb9fc04fp-2 +0x1.692c15d54165ap-5 +-0x1.ac9ca33028e24p-1 +-0x1.a9fda3741502ap-1 +-0x1.1e5c6f22efec1p-1 +-0x1.0cc97c80d87ddp-1 +-0x1.201c3df5ee694p-1 +0x1.df82b0e4c13fdp-1 +0x1.395d76dbb0bf2p-3 +-0x1.350bdcfe192b9p-1 +0x1.dbdb799211d3ep-1 +-0x1.a8309607f0817p-2 +0x1.f4b33b0f7911fp-2 +-0x1.0ab2490acbe8bp-3 +-0x1.ab8ade8a39005p-3 +-0x1.3fcc06512facfp-1 +-0x1.4079894eb34dfp-2 +-0x1.13a34b80b3a43p-2 +0x1.17a1212bd39b8p-1 +-0x1.acf1d85e04444p-1 +0x1.9c6787407a9d5p-2 +-0x1.39bbd90a02bf2p-3 +0x1.ded9cf337a46bp-6 +0x1.638e3d22fbbbep-1 +0x1.781bb0831f334p-1 +-0x1.99867339dde4ap-1 +-0x1.1c66ecd143209p-2 +0x1.254d34443b4f5p-2 +-0x1.8231536ef91a2p-7 +-0x1.134b7981fe3eap-1 +-0x1.4545232bbdfc6p-3 +0x1.8ec7b0a28eee7p-3 +0x1.365a79a1b0125p-4 +-0x1.9ef78cc82b667p-1 +0x1.827dd95ed480ap-2 +-0x1.5772f20afa4a2p-4 +0x1.539028f1831d5p-2 +-0x1.bc1a284f5c0ccp-1 +0x1.640cf26bfbb62p-3 +-0x1.245e4c501736ep-6 +-0x1.4448c69d892cbp-1 +0x1.1ed2e9dbee9d8p-1 +0x1.dbcd02e24aceep-2 +-0x1.ceb76ac6dc36p-2 +-0x1.b8c88907a6f0cp-5 +-0x1.cd8996d89a7e6p-1 +-0x1.c73193f75f0c3p-1 +0x1.987076bd1eeaep-2 +-0x1.a68fc08dfec19p-1 +-0x1.8db732619013dp-3 +-0x1.d27f7ae0200f1p-3 +0x1.47dd95ec4fc7ep-1 +0x1.b70af224952c4p-1 +0x1.ada51da40aafap-2 +0x1.c0bd9cb418533p-1 +0x1.f0aa9a98fbaddp-2 +0x1.840fdd601197ep-2 +-0x1.b58f8dba9a0e6p-3 +-0x1.117970cd4a35bp-2 +-0x1.fb4ad68db196fp-2 +-0x1.02d2ef4c0747ep-1 +-0x1.00d2d9006315dp-2 +0x1.e16d9c43fecacp-3 +-0x1.4915bbf40d86fp-5 +0x1.6beb9b08962b9p-1 +0x1.57a911eb1ad5fp-2 +-0x1.12d0505a7c635p-3 +0x1.89ea2ae702fcp-2 +-0x1.5632cdad9c323p-2 +-0x1.d4c06be24be8cp-1 +-0x1.4f1954f19cfa9p-2 +0x1.3db72f9579379p-1 +-0x1.d8db14a91be06p-2 +0x1.98df14da2cd37p-1 +0x1.14ed3aaba1e13p-2 +0x1.152fd86c0f4d9p-2 +-0x1.eb0c41597dcfdp-3 +0x1.c34ee9c0b662p-1 +-0x1.0275d8ca571e3p-1 +-0x1.0fcdda4fc16b8p-1 +-0x1.9f96a6f3cef22p-3 +0x1.e85928dbfb41ap-2 +0x1.2daf5c8646983p-1 +0x1.5b16355b23c86p-1 +0x1.5c549458b4ea9p-1 +0x1.969e895e32515p-5 +0x1.1999725932bep-1 +-0x1.02d76d08f5bc2p-2 +0x1.9a7c4f0a7e413p-1 +0x1.0a2acd025d09ap-3 +-0x1.156c99320c37ap-2 +0x1.dba802953c236p-1 +0x1.bfb5e70a7d17dp-2 +0x1.47ecc564d1871p-1 +0x1.c8b54130361efp-1 +0x1.83bb476615988p-3 +-0x1.239a535074d3ap-1 +0x1.540a152d6ba85p-3 +-0x1.86594acba7333p-1 +-0x1.b4bbbc86fcad3p-4 +0x1.c50ed86412c9fp-2 +0x1.0cefbb2716ba3p-4 +0x1.d3535fb22705ep-4 +-0x1.e4f6e6ffe6b48p-4 +-0x1.bdd0faf1291c3p-5 +0x1.fa53bd1575516p-1 +-0x1.76edd365a8352p-4 +-0x1.b11f810d9ae1ap-2 +-0x1.8b4aa06b5acdep-2 +-0x1.4a9160586351bp-1 +-0x1.08292da57ac22p-2 +-0x1.9fb55e7c25027p-1 +0x1.0cca47e013bebp-1 +0x1.76984b005dcdbp-1 +0x1.0dc2f1273843ap-2 +0x1.2bbb5a05c8d8dp-1 +-0x1.6b8cb6e3a0369p-4 +0x1.1ba645fd0328ap-2 +0x1.aac2ad78f6723p-1 +-0x1.b7afb44981288p-2 +-0x1.7d0b6931be49fp-4 +-0x1.c54a5305cb2d2p-2 +-0x1.4c2d729be6727p-1 +0x1.1404bbd8abed7p-1 +-0x1.2743a11ce3daap-1 +0x1.4c16c24675605p-2 +-0x1.035d74bcbe027p-5 +-0x1.5967711870325p-2 +-0x1.b92a1f5fd1985p-3 +0x1.74816de64b4f4p-5 +-0x1.0a9e3acc0772dp-2 +-0x1.92ac4cd11f24bp-1 +-0x1.7c42c921d8a5fp-3 +-0x1.e760e297d84ep-3 +-0x1.2cc53c3940ec9p-4 +0x1.6d460d7b2822dp-1 +0x1.ebe34e2403669p-1 +0x1.832eb42d2f49dp-1 +0x1.bf2c07a2986e2p-2 +-0x1.e4f663269bd0bp-4 +-0x1.25f042ec14257p-5 +-0x1.ace724cce544ap-1 +0x1.9ba4a9526c73bp-1 +0x1.074063e7d592ap-3 +-0x1.67967e59d6d4cp-1 +0x1.87ee80f33f74fp-2 +0x1.8ba4c111436ep-3 +-0x1.a8aa7773154bcp-7 +0x1.0324b348be4ddp-3 +-0x1.60822bcd82f07p-1 +0x1.f84d1f6a91123p-4 +0x1.4296ce4e36ddp-1 +-0x1.3165a336819eep-4 +-0x1.427f6cb99f9b3p-1 +-0x1.ce4026dce326fp-1 +0x1.29bb67860f656p-2 +0x1.8e3b17334f8eep-2 +0x1.5ebc0081f7e1ep-2 +-0x1.f5736e16a2562p-1 +0x1.54380d7d21c4dp-8 +-0x1.105c290a40666p-2 +-0x1.97cf5d3c3b208p-1 +0x1.6c7ac66632487p-1 +0x1.6206cdc2d497ap-1 +-0x1.d46dc31dfa5b6p-1 +-0x1.3433174dfdec7p-1 +-0x1.d53832d3bed9dp-1 +0x1.b8dd7040d692fp-2 +0x1.4874b97365b26p-2 +-0x1.7c8b8f05382bp-1 +0x1.abc31e7e7ac18p-2 +-0x1.6dc25ff2273b2p-2 +-0x1.99df301c8d7aep-1 +0x1.beb2018ce5ef9p-1 +-0x1.cf8768a66ee09p-1 +0x1.3509d066274a2p-3 +0x1.8dabe1a2eca3ap-2 +0x1.89563e1a7abc4p-2 +0x1.41e1ccabff7ap-2 +-0x1.bb2d1c4e64f42p-1 +0x1.acc1e3b315928p-2 +-0x1.09f05005573ap-3 +0x1.0b0db0e5c3918p-4 +-0x1.3ec40bf159df3p-2 +0x1.d08b68c695d2ep-1 +-0x1.3d096a9d70e32p-6 +-0x1.32ef4766f71d1p-2 +0x1.a506ae382d772p-3 +-0x1.711fe7fe834fp-5 +-0x1.030fbbf154a1p-2 +0x1.5b92180ef4744p-1 +-0x1.64a523f14f449p-1 +-0x1.cedee0fcbaed5p-1 +0x1.58473104886c9p-5 +-0x1.a794c4e443013p-1 +-0x1.befe91dcf8bcbp-2 +0x1.183f8e9c5dbc4p-2 +0x1.702f9efb00858p-1 +-0x1.5b4a8e1b95312p-1 +-0x1.a287826e25cc7p-1 +-0x1.6a13d125c1d2dp-1 +0x1.bf6545614f2aap-3 +0x1.0073b49702568p-4 +-0x1.deccb44d69f3dp-1 +0x1.b5063bf37758ap-2 +-0x1.ac535788aebe7p-3 +-0x1.d0c8862b187d2p-3 +0x1.510a164ec336ep-6 +-0x1.089693f21559ep-2 +0x1.b1c1ca0c008d8p-4 +-0x1.21983af2f66adp-2 +-0x1.fcebaafb4ecb6p-1 +0x1.b7819a2b6aba5p-3 +0x1.c4abced09ea7ep-1 +0x1.a28e436231ee3p-3 +-0x1.625d30f6bd861p-2 +0x1.e79b2aeeaee05p-2 +-0x1.801f4a0d34096p-1 +0x1.4451ef2e536ap-1 +-0x1.6c0f712692246p-6 +0x1.6c6fccae9544p-1 +0x1.1b806d6e0741fp-1 +0x1.19bf5d3340461p-1 +-0x1.cb282348cbbc1p-1 +-0x1.2405359c89578p-1 +0x1.04395dae324d7p-2 +-0x1.2c10856e55e18p-1 +-0x1.1a6464066acfcp-1 +0x1.8f5974602f8c2p-1 +0x1.9c6d231ed6d73p-2 +0x1.2c51a80da54edp-2 +0x1.3926d73719095p-3 +0x1.43939e5464cfdp-1 +0x1.2b5fdf773334p-1 +0x1.0914a589cbd41p-2 +0x1.87eb5f6a9b577p-2 +0x1.5534f85bb78cdp-3 +0x1.78175b45bbf5cp-2 +0x1.80945deaed343p-3 +-0x1.a8cdaa343f1c3p-1 +0x1.f5b0caff27af8p-1 +-0x1.e7061a420527ep-1 +-0x1.323af1ffac813p-2 +0x1.8d033a8dd7ddap-1 +-0x1.a1a07454f8a1dp-1 +0x1.50cc41f57d39ap-4 +-0x1.f56e5e9fada02p-1 +0x1.3859d96750defp-1 +0x1.73203bf383085p-1 +-0x1.8adde5f8f1df4p-1 +-0x1.d557ae14c19b7p-4 +0x1.36e46dc9e2dddp-3 +-0x1.82625d75c1235p-1 +0x1.27b77812c8d7bp-5 +-0x1.3d6d9449f0b2cp-1 +-0x1.11e906c2545bep-1 +-0x1.1272d2af44448p-1 +-0x1.a2085892bee91p-3 +0x1.d7b7b3a470295p-1 +0x1.026db3b4b4cf8p-3 +-0x1.4415ddc3b0da7p-3 +-0x1.6bd5fe48b7f85p-1 +-0x1.3eeddb26ca1cp-1 +0x1.ef4876bb9373dp-2 +-0x1.a8f258b714257p-4 +0x1.cf31d3fe2579dp-1 +0x1.93610bd369b1dp-2 +0x1.aa1f659f18cc7p-1 +0x1.9f23a1ee4856p-1 +-0x1.b36abe66a0c9ap-1 +0x1.f213b8342646bp-1 +-0x1.a1dee7da2bf6cp-6 +0x1.398ba033f91a6p-2 +0x1.00b7aedf9c7d2p-1 +0x1.9f3cfddc61df4p-2 +0x1.f42e1016fa88ap-1 +0x1.b164e917a32f8p-3 +0x1.180e691bdf7cp-6 +0x1.f5a13f7117784p-1 +-0x1.71d1ab1ee8722p-1 +0x1.f91f22387ef09p-1 +0x1.2605d5ef330cbp-1 +0x1.b6c86ac16d4e6p-5 +0x1.e4a268fcc1f87p-1 +-0x1.2988d714911b8p-1 +-0x1.35c038462ef2ep-1 +-0x1.a13d00969d8ep-6 +-0x1.ecfbad8fe4dedp-6 +0x1.312e6130fd6a3p-3 +0x1.2539568af3e8cp-11 +0x1.9f22e23bc0f6p-2 +-0x1.c073ca76d48a1p-3 +0x1.1633b247d7e01p-1 +0x1.63fde035cd946p-2 +0x1.3bf3ffdc65e09p-3 +-0x1.2429280322e3bp-2 +0x1.b44f60e7247e4p-1 +0x1.35ef8ef818f27p-1 +0x1.9fb5c82bfe287p-2 +0x1.01263efdae1d3p-3 +-0x1.8721f6846f2bdp-4 +0x1.ebb985d83890fp-1 +0x1.835790bf41807p-9 +-0x1.3b002ac772cc3p-1 +-0x1.a9d384a6c2d99p-1 +0x1.dee23f044c63p-3 +-0x1.bcc2fd8836b41p-2 +0x1.e780e1baf0f88p-1 +-0x1.59a9d7ec437a8p-1 +0x1.c8e7c062c555dp-1 +-0x1.971e8a341d1dep-1 +-0x1.3e7c006d83097p-2 +0x1.690544da0f238p-1 +-0x1.907803aedb8e8p-1 +-0x1.035bbbe289713p-3 +-0x1.77b7e19fd5e4dp-2 +0x1.960253952bb79p-1 +0x1.c92d5dd3ac391p-1 +0x1.778b93f26b5f1p-2 +-0x1.1e135dc07fde5p-3 +0x1.05222e2d2d4aep-4 +-0x1.0de9b356183bap-1 +-0x1.34708145893a2p-1 +-0x1.5385f2e7b1ee6p-2 +-0x1.51c38ded07a3bp-1 +-0x1.4d56bf0790c5dp-5 +-0x1.42e7c5793554cp-3 +-0x1.84187fc2ce992p-1 +0x1.aec9e5f625d0ap-6 +0x1.2f83ca988cc67p-3 +0x1.e70aedebd4b1fp-2 +-0x1.5a1c975911dbfp-1 +-0x1.ed119034e6a4bp-1 +-0x1.792fd2b9e456dp-3 +0x1.4880715dad285p-1 +-0x1.e435be704689ep-2 +-0x1.e5248c755c768p-1 +0x1.2ea91c7e4606fp-1 +-0x1.e1e721f0c2bcdp-3 +-0x1.ecafb9abb4aa8p-1 +0x1.470b1593b7ac4p-4 +0x1.b2deff6f8c746p-1 +0x1.55c7e8a496065p-1 +0x1.15b1c7e7be41p-2 +0x1.40862963abacbp-4 +0x1.779c55a07923ap-2 +0x1.a50c3aec8c6a7p-5 +0x1.69e271f1f8fa2p-2 +-0x1.45019d2ee0fb3p-4 +-0x1.83711525f6461p-2 +0x1.ce6a228515532p-1 +0x1.e60fc4f8bc76ap-3 +-0x1.ba4f23e166ab6p-1 +0x1.bef6acf8e5265p-2 +-0x1.f08f31b874a0cp-3 +-0x1.827eef84b9c14p-2 +-0x1.81451763c7fcbp-1 +0x1.929f7c4873464p-2 +-0x1.2e62ca652df96p-3 +0x1.5346b2d408d4ep-1 +-0x1.c2ed3436ec8e9p-1 +-0x1.57d97cc4a9a55p-1 +0x1.10a0b61383922p-1 +-0x1.a6b60bba02dd7p-1 +-0x1.4227d84188d2fp-2 +0x1.dd2db827ca39cp-2 +0x1.8056fe9e57d2bp-2 +0x1.37607ca478be3p-1 +0x1.19088bffae15fp-4 +0x1.38787f2f558e3p-3 +-0x1.eb8fd7475f10ap-3 +-0x1.bb9c349cb3eb1p-1 +-0x1.2d2827d68f5acp-1 +-0x1.570e653a678c7p-1 +0x1.c9fd3d80e944ep-3 +0x1.0c8e265b37258p-2 +-0x1.edacf96f47cc9p-2 +-0x1.5610aa4044766p-1 +0x1.fe6076c713d87p-2 +-0x1.d4a8e212ea722p-1 +0x1.758646587835ep-1 +0x1.4976171087c3cp-1 +0x1.16fa723f3f61bp-1 +-0x1.68cf93cb7cd7fp-1 +0x1.dd48e7ba75559p-1 +0x1.a3e3cdba9529fp-3 +-0x1.9f8c44779095ep-3 +0x1.18f890d48457cp-1 +-0x1.cffd5e27783d4p-1 +-0x1.7670974959c8cp-2 +-0x1.90330297e2b29p-3 +-0x1.82e4435aea0c6p-3 +0x1.a057ce1ffe405p-2 +-0x1.e66cffcd6b794p-1 +-0x1.682f24da6017ap-1 +-0x1.766988e0109f8p-2 +-0x1.acae669682c33p-3 +-0x1.4769868b0dc04p-2 +0x1.491d9fd4410cbp-3 +-0x1.81506f246d1acp-4 +-0x1.b466f99debfbbp-1 +0x1.ac55e0fbe0d38p-1 +-0x1.0c3b900555af8p-2 +0x1.a5e5b3473e91fp-2 +-0x1.0565e7ab26f9ap-1 +0x1.6da23867e6d97p-3 +0x1.d03644ffd5d24p-1 +-0x1.8801d5721b75fp-4 +-0x1.cbb29dedb7859p-2 +0x1.09dc7087753f5p-1 +0x1.3fb3c89ab96cbp-1 +0x1.d2e5c462d6fe6p-10 +0x1.334c7ccbd2a92p-2 +-0x1.de456d9229bfap-7 +-0x1.8672e0fb442e8p-1 +0x1.613f900966008p-5 +-0x1.171fea35bf973p-3 +0x1.dd5d3e2c4082bp-1 +-0x1.ddd8a48f86d3ep-1 +0x1.2a88e302902afp-2 +-0x1.ea24d92a2d6dfp-4 +0x1.4c6a13bba4e4ap-3 +-0x1.77183cb13c809p-4 +0x1.56d510daccc47p-1 +0x1.2e8bca4275bb5p-1 +0x1.7c2a16c2964e7p-2 +-0x1.c3f2462543705p-2 +0x1.396a3cea4d309p-1 +0x1.98d18ec653e29p-1 +-0x1.8617ecc9db13ep-1 +-0x1.22c6965a2ca34p-2 +-0x1.91ecf0f1395fp-3 +-0x1.40d1fde2a3dc4p-1 +-0x1.9f48558885f81p-1 +0x1.cc14eb8fb23eap-1 +0x1.82a1bfe92ea29p-1 +0x1.5eaff998e776dp-4 +-0x1.242f7a3e92be2p-2 +-0x1.4b33f9eba0d61p-3 +0x1.40013144dc83dp-2 +0x1.6bfb33c8e9d68p-1 +0x1.3f6eac0423531p-1 +0x1.932adb0ca85d4p-2 +-0x1.0280595397c7p-2 +-0x1.e179cafc97091p-4 +-0x1.9c15e1ffa19bdp-1 +0x1.934bba3dce8c2p-1 +-0x1.8f4b3043baa19p-3 +0x1.1b5cd5da6d993p-2 +-0x1.815aa67cad1a1p-1 +-0x1.0a49385eb30c6p-4 +-0x1.17224de585ba1p-3 +0x1.7396b7f0ac763p-2 +-0x1.cd1761a045fa5p-1 +0x1.1339996278cb1p-2 +0x1.09b2218776c76p-4 +0x1.0ad203c10df6ep-3 +-0x1.e96f930781a01p-3 +-0x1.21e5d8eb57dd9p-1 +0x1.3a96fce479ab5p-1 +-0x1.fea527443ca72p-8 +-0x1.93dc6ac05f8f3p-2 +0x1.0090cb112c6a6p-1 +-0x1.e54f07a60f95fp-3 +0x1.93680d91a538ap-2 +-0x1.220a5ffef9135p-2 +-0x1.5ef9eb9552a3bp-2 +0x1.71cdb61a203c4p-1 +-0x1.0e43930a7e9cfp-3 +0x1.0b150ca347058p-1 +0x1.d86000d9a7707p-3 +-0x1.e6a3193c6903bp-1 +-0x1.824a66470bc5bp-2 +0x1.1e75da86fb093p-4 +-0x1.a497dc2b271ap-1 +-0x1.df678e05329f3p-1 +-0x1.3c85356e7e1c5p-1 +0x1.da0740cf5ed85p-1 +-0x1.0ff5d61e9b253p-6 +-0x1.be0fe188262cap-4 +0x1.f4742b5564d8fp-1 +-0x1.d22bd1d43a0f4p-1 +0x1.a5a752c75334p-2 +0x1.5be0998b99833p-1 +-0x1.d20e79c1a01d7p-1 +0x1.403e757d27d45p-1 +0x1.104161c484cbcp-1 +-0x1.abe650018080dp-1 +-0x1.39dd9137af427p-2 +-0x1.69653a2a1374bp-1 +0x1.65c3ece57a586p-1 +-0x1.6c4d7799d4989p-3 +0x1.a5fa1adb8dbd9p-3 +-0x1.4db59708d01c8p-7 +0x1.2fb3213846339p-5 +-0x1.6216ce96bac8ep-3 +0x1.f64fe01db8306p-1 +-0x1.b906b7e750bffp-1 +-0x1.2bec9a3b04009p-1 +0x1.e6ec082b13217p-4 +0x1.7d2cd344c007cp-3 +-0x1.e5d9a3c241a81p-3 +0x1.0b7493e17eeb2p-6 +0x1.fb9f853d97b97p-2 +-0x1.3174c5166188cp-2 +0x1.fcc562065f594p-3 +0x1.0522022d23754p-4 +-0x1.b6f2a2f42be92p-2 +0x1.e0390498dd2b9p-4 +0x1.8822d03dad10fp-4 +-0x1.3ca64ba244d8ep-4 +0x1.cf36e6df9093bp-1 +-0x1.63b0552562be5p-1 +0x1.b4e0038a61d51p-2 +-0x1.85ff25d81efaep-4 +-0x1.7d722e7d5d2eep-2 +0x1.d86dbcd9e9471p-1 +0x1.3a52dc6a593f6p-1 +-0x1.21833aadf92f7p-2 +0x1.4e1963fd716bbp-3 +0x1.a93094e125a22p-2 +-0x1.1026fefab4092p-1 +0x1.2b11802d5672cp-4 +-0x1.1663b10191896p-2 +0x1.64f32aa7f17c9p-2 +-0x1.a6decb9b36ebfp-1 +-0x1.67ce64946b73fp-3 +-0x1.23403f1ec517fp-5 +-0x1.1ef83a883d0bep-1 +0x1.99a3945503585p-4 +-0x1.9efbd0e62852ep-2 +0x1.e0996a6d71608p-1 +-0x1.e6e4a37283ccfp-1 +-0x1.0b67a463409bcp-9 +-0x1.a8496a3e739d3p-1 +-0x1.8d426075714abp-2 +0x1.2fee8d8fad0ccp-1 +0x1.2784b3c87544ap-1 +-0x1.fa3b208cc16eap-3 +0x1.5f32ab56a81c4p-2 +-0x1.d1bb10de8809bp-1 +-0x1.b9e65c992b6c7p-3 +-0x1.ccdc52631a2e2p-1 +-0x1.6dbe7021dcdc3p-3 +0x1.833ffd9c93715p-7 +0x1.c0d5052fbc47fp-2 +-0x1.06c04889a6666p-3 +0x1.b0c5321868886p-9 +-0x1.ee5ba6815b544p-2 +-0x1.6697864d13621p-1 +0x1.6c783403e4e6ep-1 +-0x1.3b4d8ae62a974p-1 +0x1.f9fb84ebafdcp-1 +0x1.3b1e328a34351p-2 +-0x1.18f583ce4c08bp-1 +0x1.24c60a23649adp-2 +-0x1.ae3cc9fb0c74bp-2 +-0x1.413f556fc1b8dp-1 +-0x1.918bbf987a7ap-5 +-0x1.d2fc44a4a7de7p-1 +0x1.8e35dfe978176p-1 +0x1.8f68fd71f9b15p-1 +0x1.869b0f971e7fcp-2 +-0x1.3e027e2b77067p-1 +-0x1.113a09f81fc81p-1 +-0x1.d382c87c16dfap-1 +0x1.7880f4f8ccd14p-2 +-0x1.9719c92834c47p-3 +0x1.ea1f6d15e40f3p-4 +-0x1.967b8412b0748p-3 +-0x1.7cfb5c082da3p-4 +0x1.c80843bf8e32ep-2 +-0x1.a72e4554b493ep-2 +-0x1.6ef64ba5996c6p-2 +0x1.1f6f5adebccafp-3 +-0x1.52cf3636ba4c8p-4 +0x1.081ab8e481571p-2 +0x1.9154e8e27119dp-1 +0x1.ac4639daa3fc1p-1 +-0x1.035bf209ab685p-3 +0x1.65041b91e3aefp-3 +-0x1.e37863b5158e2p-3 +-0x1.16998c5aeea67p-2 +-0x1.e547c246dbd7fp-1 +0x1.1ed26a33ee2eap-3 +-0x1.23c3d97f70e31p-1 +-0x1.4c64c57d69067p-1 +-0x1.d6a0b3f708445p-2 +0x1.22d2d85c8671ep-3 +-0x1.4c8e625976fadp-1 +-0x1.e7c0963ca07e6p-1 +-0x1.a6a27e8d0383fp-2 +0x1.e445269dec118p-1 +0x1.c0264fa5c7ecfp-1 +-0x1.49c2929ed8bcep-1 +-0x1.3f3e20e4b159dp-4 +0x1.08e6a287d0368p-2 +0x1.dbb2a899770eep-3 +0x1.86b46131b2bb7p-3 +-0x1.59edd0fd7a02bp-6 +0x1.4b4d1a28acebep-3 +-0x1.80e5e238cf92ap-1 +0x1.e3505559390ecp-1 +-0x1.ce34047bc919dp-2 +0x1.f916efb553ab6p-3 +-0x1.e1bb82cad4ff9p-1 +0x1.ea0ff46f317d1p-5 +0x1.923c71788ea04p-4 +0x1.bb144bbd7dd0bp-1 +-0x1.f4855fd66f1cbp-2 +0x1.d4caf0529ba63p-2 +0x1.5638675db228ep-1 +-0x1.b712ca3109ea6p-3 +0x1.1f2cd3235346cp-3 +0x1.ed4bdf659996fp-4 +-0x1.a29e188bf5bfbp-5 +0x1.ef3d4884fda55p-2 +-0x1.8052972077a48p-2 +-0x1.917ca02a22d06p-2 +0x1.3c41847bdc082p-1 +-0x1.6938458ab627ap-1 +-0x1.2fb6b643562d7p-5 +-0x1.59853df8c173cp-1 +0x1.611128c147c72p-2 +-0x1.18f7cde09775cp-3 +0x1.351d757602a36p-1 +-0x1.43c3be9da80e9p-1 +0x1.4c8bb10fa0acep-1 +0x1.84bcbe79f1b16p-2 +0x1.36e69d8ea3e36p-1 +-0x1.fff16484f17e1p-6 +0x1.640ff6386eddbp-1 +-0x1.c1eb62021f88bp-5 +-0x1.bd350368ccd79p-3 +-0x1.653e8816c8a17p-1 +-0x1.7eba16aa58b13p-4 +-0x1.8089ea0f1c7f1p-3 +-0x1.c3a18f041a8f6p-2 +0x1.70dfb423fbafp-1 +0x1.38adb9e6ddb33p-3 +-0x1.06c1ed283b8afp-3 +-0x1.195a4044fb86dp-2 +0x1.1f8a58934ecadp-2 +-0x1.954db81f6f7bep-2 +0x1.2acab0fcc58dfp-1 +0x1.838bdc6ec7946p-2 +0x1.28b1d151076b1p-5 +-0x1.97e0cdb2e1c29p-1 +-0x1.83a85f0b9e19dp-1 +-0x1.d6da1aa9e9d6p-3 +0x1.8089f00069a02p-2 +-0x1.9d9401c1444b9p-5 +-0x1.67bef0d5e2905p-1 +0x1.ba7cff5a21287p-3 +0x1.6f2d89e4377d4p-2 +-0x1.4e682d49ff477p-1 +-0x1.866033fc47c63p-4 +-0x1.a8b234d4fa494p-1 +0x1.ad9e503e3644dp-1 +0x1.af3ba6224781dp-3 +-0x1.fcf444ef4a508p-1 +-0x1.0e8779651418dp-2 +0x1.734c78ecf572fp-1 +-0x1.cf1bfe276cd87p-1 +0x1.7dd1d6f80b258p-1 +-0x1.9bc7256c883d5p-1 +-0x1.1fb62da1a3d4bp-3 +-0x1.472b8059a0985p-3 +-0x1.203150860089p-3 +0x1.12db7f14a0901p-1 +0x1.67076a642db53p-1 +0x1.cc8250fbe9a5p-2 +0x1.abc4a2f7184f3p-4 +-0x1.76773ac36009ep-3 +0x1.6e30cc6161691p-2 +-0x1.28162cae6334fp-1 +0x1.8ba3eacd60e5ap-3 +0x1.3f45a59449c16p-1 +-0x1.ea412ccdd31dap-1 +-0x1.9167e078dba76p-1 +-0x1.32a483ea9c069p-2 +0x1.8ca0d3713df7ep-3 +-0x1.70c6f55bcdb7ap-3 +0x1.b8b6fd4665d2ap-1 +0x1.fcdccfc909346p-2 +0x1.8b66e9ea13fdcp-2 +-0x1.a56e6e2d62bcep-1 +0x1.91a18769939a2p-1 +0x1.3c5eab47291b4p-2 +0x1.9d2081ebd1b15p-2 +-0x1.505e1dad5b469p-1 +0x1.add1e9f1c6cddp-4 +-0x1.3c19b3000d4cp-4 +-0x1.bfe59d4cb01f1p-3 +-0x1.091167151f2b2p-2 +-0x1.1bc38e13c4ff2p-1 +0x1.46b330f251836p-4 +-0x1.95dc20f6b81b1p-5 +-0x1.fb3325a724a99p-3 +-0x1.d185f66c21c09p-1 +-0x1.c869c9e37ec6cp-1 +-0x1.e53b7d6fe8dbbp-1 +0x1.f839c7b5f27a8p-1 +0x1.6f2fce3ff172cp-1 +-0x1.00b57a155c308p-1 +-0x1.e7e88aad85528p-6 +-0x1.27dfb980a318dp-2 +0x1.3878b72cd03bap-8 +0x1.edc937194b17ep-1 +0x1.b6424596c6206p-4 +-0x1.f5fca9c73aa49p-3 +0x1.ea6d8e8582b49p-1 +-0x1.e4fa9d2d35a6cp-4 +0x1.c3a329a19b4c6p-1 +-0x1.892060d285801p-1 +-0x1.b55afecf8a89fp-3 +-0x1.7c2907ac402f2p-1 +-0x1.6cbe97f9de2cp-3 +-0x1.6538d07abff71p-2 +-0x1.f0a1b605e3c12p-1 +-0x1.487e82721bdc2p-1 +0x1.3a04b839c000bp-2 +0x1.8a60648166336p-3 +0x1.a5ae930ad74f5p-1 +-0x1.edd53f3ede6dbp-3 +0x1.5d5d25d6e1df5p-1 +0x1.bde419125c33bp-1 +0x1.6afdfa12ade46p-5 +0x1.9bf9a5551f05dp-2 +0x1.fdd15d3264bdbp-1 +-0x1.c96813e2516bbp-1 +0x1.1084618b77decp-1 +0x1.aa35d4ca8cb64p-1 +-0x1.93b554033355p-2 +0x1.4e87d429e00c6p-3 +0x1.d8c21cecf6a5fp-1 +-0x1.58120f497a57fp-1 +0x1.70b79bca29c7ep-1 +0x1.0e317b310742fp-4 +0x1.7edad483a722ep-1 +-0x1.46dc0be558c71p-1 +-0x1.a9daf273b6a36p-3 +0x1.ab4d2f397818ap-1 +-0x1.0d69b2fae6d74p-2 +0x1.921c36baeedbfp-1 +0x1.7f549b139921bp-1 +-0x1.ad16834c297f7p-2 +0x1.04d87064f45a9p-3 +0x1.4175f42ac6a6bp-1 +-0x1.b02c6dcdd3b68p-2 +0x1.34764b64b2d2fp-1 +0x1.2118854e7299fp-4 +-0x1.4238733ceb673p-2 +-0x1.4a6c29779e9acp-1 +0x1.fee6fbe15ae28p-1 +-0x1.8be5fd698032p-1 +-0x1.936aea3920d71p-1 +-0x1.dabe9688f81fp-2 +-0x1.42dc805d7da19p-5 +-0x1.e3ff006448c3bp-1 +0x1.f88cd33fea75ep-5 +-0x1.28b76faedb227p-1 +-0x1.269185dec9facp-2 +-0x1.969f37ec7e03bp-1 +-0x1.211d6ae70e179p-3 +0x1.c8beaea874c75p-3 +0x1.fa362518a47bep-1 +-0x1.8f086926c9caep-1 +0x1.f36eeef1681fep-2 +0x1.4fc9cbea1c7c2p-1 +0x1.74203647abbafp-1 +0x1.e226f848c0d18p-1 +-0x1.2a62899d3444ep-1 +-0x1.ecf65cc6cfa57p-3 +0x1.62cada4da3588p-3 +-0x1.06112ee96ed42p-1 +0x1.991d772a8d2fbp-1 +0x1.7e78b07ec4838p-2 +0x1.d48d7f43eb707p-3 +0x1.3894ec2f62c8fp-2 +-0x1.7b85d94cb40dcp-1 +-0x1.1d42d52087b22p-1 +0x1.42df245ddf4cp-4 +0x1.d957b39f1b5bcp-1 +0x1.5da970f455cep-4 +0x1.39ded466635bap-1 +0x1.8de0da820f6dfp-1 +0x1.6d4a0236d78fcp-1 +-0x1.4d8d449f2b435p-1 +-0x1.b0a64e2e5c84ap-5 +0x1.533eec8e7df3fp-2 +0x1.eb2611c85af75p-2 +-0x1.b4668069c2fa6p-2 +0x1.6aa1e6008f9efp-3 +0x1.10b6023dd5a51p-3 +0x1.56a3db00dfb09p-4 +0x1.f010c517a2d28p-1 +-0x1.18296d17dc06ep-3 +-0x1.3d588b118722dp-3 +-0x1.d6ad6c24b742dp-2 +0x1.258971b533d55p-2 +-0x1.c7ee50b19472cp-2 +0x1.1c1917f6ab6abp-1 +-0x1.ceb3d209defafp-2 +0x1.cfcc562931b3ap-4 +0x1.e1760284e900ap-1 +0x1.e5afa46e90a22p-1 +0x1.7fb1744c7e9b9p-2 +0x1.a8514afcf6c49p-1 +-0x1.4fe372759a689p-2 +-0x1.25bc60506fdbep-2 +-0x1.e8715cea6be56p-1 +-0x1.a59091efe7995p-2 +0x1.2641c9b9a248p-1 +0x1.3f51ed7ba8d8p-1 +0x1.d3a85f6de7a9p-5 +0x1.39f04e6d281aep-2 +-0x1.e6487fdf4e5e4p-3 +0x1.fdab353d31fc2p-4 +0x1.d1236f695756dp-2 +0x1.6718ed72e9789p-1 +-0x1.119026c4bfb24p-1 +0x1.76ff3b9c98f2cp-2 +-0x1.f781f8887fdp-3 +-0x1.3a0381516fe6cp-4 +0x1.7f800df187fbap-1 +0x1.783d0bae7ce4bp-1 +0x1.539460c52065ep-2 +-0x1.987720ade20e1p-1 +-0x1.fb7a09b91bc0dp-2 +0x1.04c55d99d221dp-2 +0x1.73c68097fc1c8p-2 +-0x1.18c6042c259bep-1 +-0x1.f9e446149f343p-2 +-0x1.93e5d1509b1fbp-2 +0x1.4357f95694abbp-1 +-0x1.4f73dff8a219dp-2 +0x1.0662a9283dfcap-3 +-0x1.9aefc240221ep-1 +0x1.824eb4bd04f71p-1 +0x1.56029089ad8a3p-1 +0x1.9a130b4adb103p-4 +-0x1.10bb606db7998p-2 +0x1.3f1d4d617dc3ap-5 +0x1.698d34ef002bap-1 +0x1.3dfe18d23dabdp-1 +-0x1.bcdb63873a2fap-1 +-0x1.584ccd03d4493p-3 +-0x1.6dc27f225b846p-2 +0x1.eb303cb53998cp-1 +-0x1.016d02f024be3p-5 +-0x1.29eb778b5f1f5p-2 +-0x1.0abdf0f18390bp-1 +0x1.629ee3be466d8p-2 +0x1.60b55672a22ap-2 +0x1.76938f72c472ap-3 +0x1.3eeea53201ebcp-5 +-0x1.40c599d79e1d6p-1 +0x1.7eef295e0e837p-1 +0x1.dd0da6510da01p-2 +0x1.823730a5bc82ep-1 +-0x1.2150615463ab5p-1 +0x1.101aadca06418p-1 +-0x1.c3f5694f8dfdep-1 +0x1.06315b137b1f5p-1 +-0x1.f7737ba23a3cdp-5 +0x1.095e792cb90d4p-6 +0x1.785b347459adfp-4 +0x1.abab90fd161bfp-4 +-0x1.1e1a082d8c9dbp-3 +0x1.40ed048dfc93fp-1 +-0x1.4126d117b65fp-2 +-0x1.3c323e678cdf9p-1 +0x1.c07c799fbda76p-1 +0x1.fa59284b45a11p-1 +-0x1.0709792a199bep-4 +-0x1.c893adaac049ep-3 +0x1.43efc95cd578cp-3 +0x1.c5e459adbc2b7p-2 +0x1.6b683d06b51b2p-2 +-0x1.e899f99981ffdp-2 +0x1.6abac947a4568p-5 +0x1.2a36804c285a7p-1 +0x1.fb1c5ca47ce1dp-2 +0x1.45948ab1a6b7ap-4 +0x1.188cd6a241b6p-3 +-0x1.a6f2f2538edf2p-7 +-0x1.2bfef29b4173bp-1 +-0x1.076554cde63e2p-1 +-0x1.4afc23f1f6081p-1 +0x1.41eade8b4c6b3p-1 +-0x1.c263bbd4bd059p-1 +-0x1.3aac7f16c7b5dp-3 +0x1.2c4326c2f281cp-2 +0x1.761eb4f22c80fp-2 +0x1.6984f6dd8a05ap-2 +-0x1.c6582ef591777p-3 +-0x1.96d2948eff429p-1 +-0x1.a093b132f6131p-1 +-0x1.7c76fb04d0531p-2 +-0x1.2e06ecece2c27p-2 +-0x1.55762693b425ep-1 +-0x1.98972442e4aafp-1 +0x1.0688508c93a04p-1 +0x1.6af4646cd2647p-1 +0x1.1aed4a10c2fbdp-2 +-0x1.5018e76a96f7dp-2 +0x1.b20e9d81a0492p-4 +0x1.226cf4eab304fp-1 +-0x1.b523f4f0ee9ap-1 +-0x1.497826d737528p-1 +-0x1.722170835be43p-1 +0x1.c6fd6bb5af388p-1 +-0x1.2e4bc1d86bf24p-1 +0x1.3d567596af448p-3 +0x1.0966bf6e26b7fp-4 +0x1.f544faca3378bp-2 +-0x1.0b150c476fadcp-1 +-0x1.d654181f71b43p-2 +0x1.7e29ca78db54cp-3 +0x1.8c2adf481de87p-1 +0x1.7f474ae0728c2p-1 +-0x1.2e67b400216ap-2 +-0x1.dd913b8c81c38p-2 +-0x1.fdc1ddde8980ep-1 +0x1.d6aee46b89338p-2 +-0x1.a29b79a4dabdep-2 +-0x1.8ffce82a1511bp-1 +-0x1.585b46676ad27p-3 +-0x1.efd218255d539p-1 +-0x1.be9657b9387bcp-6 +0x1.7ae99656c24c7p-1 +0x1.aeaaf4dc24616p-4 +0x1.6d3ab7668e9c7p-1 +0x1.9741fcf23ca84p-1 +-0x1.9d3c86fb8e7ep-1 +0x1.014789d4d5b91p-4 +0x1.4c924fe0eff3bp-1 +0x1.bb245eceee70cp-1 +-0x1.aefa6a42f92d2p-1 +-0x1.dc463168f601ep-1 +-0x1.862040f804f72p-1 +-0x1.7db4a17a2566bp-3 +0x1.5ad30ada010edp-2 +0x1.03104f22f96c3p-3 +0x1.5e4225f74a17dp-5 +-0x1.2c24ba980caccp-1 +-0x1.ac2c6d05084c6p-2 +0x1.54107a1363fccp-2 +-0x1.0a294f6b2e37dp-1 +-0x1.99e7e44058227p-1 +-0x1.585871bab9e03p-2 +-0x1.c6fb0ba237bdap-1 +-0x1.bbd30311345ebp-1 +0x1.692925c1296e1p-1 +0x1.a623ad0818d59p-4 +-0x1.080955c97a89fp-2 +0x1.1ecc81b72872cp-3 +0x1.6195fb0594eb3p-2 +0x1.2a2b8da734211p-1 +-0x1.b2d0b5b75004bp-2 +0x1.cdac5a8b6809dp-5 +0x1.e46d681a118c8p-2 +-0x1.269721653ce5ap-2 +-0x1.8b090c9767e1ep-2 +0x1.730522684b1d9p-1 +0x1.84b301a1ec3d5p-1 +0x1.22d6af8a6633dp-4 +-0x1.9108faadd1115p-1 +0x1.fe48626444ba7p-2 +-0x1.04ffeff608392p-2 +-0x1.d641c76db1ed5p-6 +-0x1.f9d3d67006a29p-3 +-0x1.ee62951aa7adap-3 +-0x1.94a685436df4fp-2 +0x1.a7c51685d902ap-1 +0x1.7528e0b8e65c8p-2 +0x1.86dca3bd4a44dp-3 +0x1.38018c0f0dd66p-1 +0x1.ca8ee71718ed7p-2 +0x1.23183337b561dp-1 +-0x1.dcdfa1bbaca2dp-1 +-0x1.ad60e5659217p-2 +0x1.f0ef80ba50badp-3 +0x1.02dfb10f2376dp-1 +-0x1.f4b12dad2c6bap-1 +-0x1.c8731904ec173p-1 +-0x1.4127a995c695p-7 +0x1.d15713fdf7f32p-1 +0x1.6c4854ce2170dp-3 +-0x1.0eaf5a8c2b582p-2 +0x1.3295391e3ccc8p-2 +-0x1.e298a4b310a7dp-3 +0x1.cc723844fe461p-4 +-0x1.0944042fcdae5p-2 +0x1.11645985610c2p-2 +0x1.fbafb2c408d9bp-2 +-0x1.55bb2c471333cp-1 +0x1.8a5b49dc6775ap-1 +-0x1.aa1fd4783c5dfp-2 +0x1.ad6deb99f13f5p-1 +-0x1.3cbf20ccfa12ep-3 +0x1.d8a72a7582604p-3 +-0x1.2ad9c98cb731ep-1 +0x1.cb2c20b529bd2p-1 +0x1.4eab5e2b883f3p-10 +0x1.312250f314a52p-1 +-0x1.fdac8059d637ap-4 +0x1.8a861f847ffd1p-1 +0x1.b0afa829ef788p-7 +-0x1.696bf8241502bp-2 +-0x1.34a82cdbb2bddp-1 +0x1.43480b2d09d2ap-2 +-0x1.1279ca51f09ep-1 +-0x1.cc733e81510dep-1 +0x1.5b96b59bd4a81p-1 +-0x1.012392749431fp-2 +-0x1.0a1a69c4119ep-1 +-0x1.aa7e138c9014cp-1 +-0x1.7d721e0c67188p-2 +-0x1.bdbb38fb4a865p-3 +0x1.89118773885b4p-4 +-0x1.0bbad712682adp-4 +-0x1.28f5c5d5d3463p-5 +0x1.8a425b8ba6b8ap-2 +0x1.04b6c0f1f3358p-2 +-0x1.ef7e3aa60e5c7p-1 +-0x1.6d7c6259830bap-2 +-0x1.f66591882ddd8p-2 +0x1.b74e314b16568p-3 +-0x1.40021a647131p-1 +-0x1.83b5e37123499p-2 +0x1.6371b31f059f7p-1 +-0x1.9f4dc59eee9a1p-1 +-0x1.0ce498d843fcap-3 +0x1.1b058254df45fp-2 +0x1.bac48ca6cdc9p-4 +-0x1.c0d9c8afc95fp-4 +0x1.0feff196d7a4bp-3 +-0x1.d50a271db9ca6p-1 +0x1.e9e4d5fa81a2cp-4 +-0x1.541629397c642p-2 +-0x1.fc6601fdf66dbp-1 +-0x1.d61d59e663c4ep-1 +-0x1.7dfbd69c84161p-1 +-0x1.f2ad11c17907dp-6 +-0x1.b49d68c036a54p-1 +-0x1.e90b1aed4219bp-1 +-0x1.a6fa422911babp-1 +-0x1.45452675327bap-1 +0x1.ffca9b7cb5f03p-4 +0x1.5afe8ae2ed933p-2 +-0x1.54094b3d1d351p-1 +0x1.8124ccdc8b1dep-1 +0x1.80e3387dbf33ep-4 +-0x1.45ae5838cae14p-5 +-0x1.44c5524e9199fp-1 +0x1.9542f3a4aad91p-2 +-0x1.6e1d568eaed31p-2 +0x1.5135031e3d378p-1 +-0x1.e190cef90b975p-3 +0x1.a9a24a9583efep-1 +0x1.2a101fa45a0e7p-8 +-0x1.b7907135cf16cp-1 +-0x1.488aeec168574p-1 +0x1.e138c8aecc876p-3 +0x1.e699ff5488432p-1 +0x1.54f552b9607bbp-2 +0x1.e600b80e8144bp-1 +-0x1.acf8a111b6719p-2 +0x1.5d2db9637e1a6p-1 +0x1.8c4cfa3fcb05fp-2 +0x1.90c4c2e5b26edp-1 +-0x1.a8b47004f8cddp-1 +0x1.ac19b05feb01cp-1 +0x1.3290013a62282p-2 +-0x1.a3b5812aa323bp-1 +0x1.db9ff93d0cbe7p-1 +0x1.424e8beab53edp-4 +-0x1.255d464262766p-5 +-0x1.26b960ac0c35p-4 +0x1.e7fd5cded754cp-2 +0x1.b17e69ae8c5c7p-3 +0x1.cdd90e580cb64p-4 +0x1.dd3db00a3ab54p-1 +-0x1.a1c03e85e08e7p-1 +-0x1.8777d294a4417p-3 +0x1.3683c7f7a18d9p-3 +0x1.18abee9edaa09p-1 +-0x1.6a2fb5cdd4f1cp-1 +0x1.9c9940c028163p-2 +-0x1.dd0cd1cbf4055p-1 +-0x1.d4cb601ad903bp-2 +0x1.aca3c5b49b51fp-1 +-0x1.6d0c6ee038aa8p-1 +0x1.77f5896bfaf1p-4 +0x1.1a429138cb95ap-1 +-0x1.3af6c2d75d189p-2 +0x1.a5f5e16f171d8p-1 +0x1.606b66d295891p-1 +-0x1.d480710e94e67p-2 +0x1.2bd4fb5c7d6e4p-1 +-0x1.8a5677109eb3ep-2 +-0x1.5ab8006d54d0ep-1 +-0x1.babac1d6658b9p-3 +0x1.26d7b544813f8p-5 +0x1.76144c7f3e9c9p-1 +-0x1.b63ffd72bbbe9p-4 +-0x1.4fbc6dd06a89dp-1 +-0x1.c9fb28901d517p-7 +0x1.6ddf6892b72cap-4 +0x1.ff5b86f5f418dp-4 +0x1.d316aed1c285ep-4 +0x1.430bf232c207ap-7 +-0x1.858ca479da09dp-2 +0x1.fc36937c38254p-1 +-0x1.1d770d6a2cf96p-2 +-0x1.032dc815610bbp-2 +-0x1.7b041fd969e89p-4 +-0x1.6584df2c6a83p-2 +0x1.1dfed4759bebfp-3 +-0x1.ba50d2f6110b5p-2 +0x1.e29c9b31d6da9p-1 +0x1.92f14e8f3825dp-2 +-0x1.39170d6424af2p-2 +-0x1.8693d0848429p-1 +-0x1.15fa81e3464dcp-2 +0x1.350d7839f7f2dp-6 +-0x1.e2708c5d89902p-2 +-0x1.5070451065217p-1 +0x1.41e9cf1736a6dp-2 +0x1.f12d2e6b6209bp-6 +-0x1.d56cf5fb29992p-2 +-0x1.285071363c39dp-2 +0x1.0539b90ce036ap-5 +-0x1.2c7dcbecb517cp-4 +0x1.3988e26de320cp-1 +-0x1.8d67eb32ca1dep-2 +0x1.9a32e17b6b67ap-4 +0x1.8104464fd1697p-2 +-0x1.271f4b5fe7d3fp-1 +-0x1.de4e40a256dd8p-2 +-0x1.139b0f0231c45p-1 +0x1.8deb51fc025a2p-1 +0x1.d9242a57ec73fp-4 +-0x1.c44d82fc80782p-2 +0x1.5d55ae6cc0f17p-1 +-0x1.48d04b70bdd15p-3 +0x1.1fa8f83f85f7bp-2 +0x1.c9e901ebf5e59p-2 +0x1.d2a2249179892p-3 +0x1.e404493e20088p-2 +0x1.f8b7c45db0cfdp-2 +0x1.84b45249bc8p-3 +0x1.0b6f2199f585dp-1 +-0x1.7938bbec3eab9p-1 +0x1.a79e904e6f7a6p-2 +-0x1.0eb5225e65041p-2 +0x1.eaccf88238f54p-1 +0x1.390430d8c61c1p-1 +-0x1.511bb5b7e9e99p-1 +0x1.32dee3febf14p-2 +0x1.3b00a9f677e95p-1 +0x1.6e4fd7e40b128p-1 +-0x1.97dfc2cfab84cp-3 +-0x1.51aca94a7dadbp-3 +0x1.2ae800ff7859ep-4 +-0x1.a4ebb42664509p-1 +0x1.334a7b3b9079p-1 +0x1.93059e45e2b6dp-1 +-0x1.2767c0f5a260ep-5 +-0x1.08178d1cc56adp-1 +0x1.f5bd79662971cp-5 +-0x1.fe54f0c1b200ep-4 +0x1.4a0bc895c512cp-3 +-0x1.48c1ad2bba5cfp-2 +-0x1.60dae68516f36p-2 +0x1.e70663a7a9653p-1 +-0x1.e5afbcc46f105p-1 +-0x1.7e4222c6c973p-1 +-0x1.6b5f6879ec61fp-2 +-0x1.116521d4a3d8cp-1 +0x1.a468ebf0357cbp-5 +-0x1.4413d5ee9f75cp-4 +0x1.b61754ae0c6dbp-1 +-0x1.b947e094d55dep-2 +0x1.977b767ab2815p-2 +-0x1.8b6dca686933fp-3 +0x1.991f4bed593b8p-1 +0x1.012dd5417ebabp-1 +-0x1.8af3b7aac61cfp-2 +0x1.9b817a66f1ep-3 +0x1.094b6e6f48d65p-1 +-0x1.a4ad2f1d303ebp-1 +0x1.e40b96b32e14cp-4 +-0x1.e0c79226aa222p-2 +0x1.971a6eb6018aep-2 +-0x1.9cdffccabc0efp-2 +-0x1.7f64dd7243975p-4 +-0x1.bc3d0d490c944p-1 +-0x1.5fc30d17c6d7p-1 +-0x1.394386750109cp-1 +0x1.9697c6ba07269p-1 +-0x1.e3f9c8732e0b1p-6 +-0x1.f1f8430ec2bc5p-3 +-0x1.dea8cfcd209e8p-3 +0x1.32a8cc0d08ac5p-1 +-0x1.085623bdd141dp-2 +-0x1.40cc2d2b49247p-1 +0x1.979e582fffa19p-1 +0x1.22277b094be9p-1 +-0x1.88ea7e13e710ep-1 +0x1.e6c3afea56211p-3 +0x1.a29236a2732fep-5 +-0x1.0c3141d2aed7cp-6 +0x1.5c4d26be8c375p-1 +0x1.bb92e9a234e99p-1 +0x1.fae36351584c7p-4 +-0x1.d8c9381b36e3p-5 +0x1.769c090d856c9p-2 +-0x1.666600121a512p-1 +0x1.53c883aed37dp-3 +0x1.7081dd700aec3p-1 +-0x1.b75cd69eb7542p-3 +0x1.c6c62f42465bcp-2 +0x1.9550b24d48119p-2 +0x1.d576a67439797p-1 +0x1.68731a7f66afcp-2 +0x1.1782432d3e0fcp-1 +-0x1.936702f764919p-6 +-0x1.324f3175f50bep-2 +-0x1.44c8d837b29a1p-1 +-0x1.13235abe51859p-2 +-0x1.3590ff9fb0307p-3 +0x1.7f7ee35916c4bp-3 +-0x1.56a414516dfd8p-5 +-0x1.b28e106776d08p-4 +-0x1.56b4b7e525f8p-1 +0x1.269a29679b878p-2 +0x1.5c25b7a3b86c2p-2 +-0x1.52467ca5a2a59p-2 +0x1.a9781388cb2afp-1 +-0x1.6ad65c0b2c245p-2 +-0x1.8b3d6bf9c738p-2 +-0x1.42b03fb911a6dp-2 +-0x1.7c9dfd892282cp-1 +-0x1.4cfbf80963feep-1 +0x1.01cf97de8cb3fp-1 +-0x1.4580a4f7cd1bp-1 +0x1.f863ad7b8b45fp-2 +-0x1.276971410e109p-2 +-0x1.b80c5e6a003fep-1 +-0x1.1d73ed291042cp-2 +0x1.b31d0ef3c7a3dp-2 +0x1.8216509d06f1dp-3 +-0x1.e62d7e4f2ca86p-1 +-0x1.7fafc9ff671f2p-3 +-0x1.b10432fe8a26ap-1 +0x1.5d39b979b9a6fp-6 +-0x1.814adcb6d08c6p-1 +0x1.007b53c1185c4p-1 +-0x1.d7f8b998ae332p-3 +0x1.1e4003db8fb25p-1 +0x1.cf7be185bcb6ep-3 +-0x1.edec2941d3352p-1 +0x1.2787ee2e37515p-1 +-0x1.e0ce1f0eea52bp-2 +0x1.9603cd92dae3cp-5 +-0x1.91869e5b58505p-1 +0x1.ed10f7051185fp-2 +0x1.982de6c7f4d8p-3 +-0x1.10e77e4a622b9p-2 +-0x1.b1b6a899c6a79p-1 +0x1.192082aae86c5p-2 +0x1.57a1574b63bd2p-2 +-0x1.3ccdaf13ed278p-1 +0x1.6f2f0bf02902ep-5 +0x1.afcdaf9fd9ac8p-1 +0x1.630dac7b68b4dp-4 +0x1.970d4fd8df16cp-2 +-0x1.2c42111ba3878p-1 +0x1.f58ab54620487p-2 +0x1.d318cc564819ap-2 +0x1.bdd0ab433e808p-2 +-0x1.7839b96617161p-1 +-0x1.b0f20f3d48bp-2 +-0x1.426bb9e8b8d57p-1 +0x1.27fc8053f6d7ap-1 +-0x1.d9ecd6d73af88p-2 +0x1.f6fd3737e2095p-2 +-0x1.c6376075267ap-2 +0x1.5d9d619500a72p-1 +0x1.985deed076b0ap-1 +-0x1.0b836aa598b3bp-1 +-0x1.15fb076c76e54p-1 +-0x1.4f571fde7a502p-1 +-0x1.c17998c8e3353p-1 +-0x1.8259681e6bf3bp-1 +-0x1.2dfec1f21f17dp-2 +0x1.86b9d349f1f7ap-1 +0x1.31593a6fcda34p-3 +-0x1.cdb44cb109cbfp-1 +-0x1.40301ef2451e8p-4 +-0x1.6cb2e1d010d6cp-2 +-0x1.625cce8b1d24ep-1 +-0x1.c039bc7976072p-1 +-0x1.fab4a3e3913d1p-2 +-0x1.6b0ae4ccc749p-2 +-0x1.32bdc28a0df19p-2 +-0x1.d95bf17c22d4ep-1 +0x1.7093254da59aap-2 +0x1.ac93a15eac938p-2 +0x1.742a051f8d64ep-1 +-0x1.6cc9bff839cb7p-2 +0x1.a12496fcd7d16p-2 +0x1.6a11291b7887cp-1 +0x1.bfd70fa6c9fd2p-2 +0x1.be81aae59b7aap-3 +0x1.0966e6a0d73dap-4 +-0x1.b4c843ccf15d4p-2 +0x1.241202d617097p-1 +0x1.ad5c7a7406aebp-1 +-0x1.d2e133d994841p-1 +-0x1.65d80c954f8dfp-2 +-0x1.2d790bf71cdf5p-1 +-0x1.72e499d922a73p-1 +-0x1.3e615f76b8d66p-1 +-0x1.4d1eac5d5b8f2p-3 +-0x1.cf9ff27bf2c0cp-1 +-0x1.1205fb4b89fcep-1 +-0x1.6705acf7017acp-1 +-0x1.049f01c2818aap-1 +0x1.079cffcadd19dp-2 +0x1.3c0b01902f4fbp-2 +-0x1.6f31aa0dc4b51p-1 +0x1.52f99de5b809p-3 +0x1.008423352f85cp-4 +-0x1.1e1136975b5dep-4 +0x1.b536f06311f25p-1 +0x1.fcf3a51d97202p-2 +-0x1.6ff71534123ddp-1 +0x1.42050005933d9p-1 +0x1.98e072b8f299ap-7 +-0x1.69191f678ad4cp-3 +0x1.40a784ab1744cp-3 +-0x1.63757ec40cb2ep-3 +-0x1.cfa6fa09e37cfp-5 +0x1.025cfddaf743cp-1 +0x1.dc329dc41076ap-4 +-0x1.80455f6bc69bcp-1 +-0x1.f7adf7d8ae9e8p-1 +0x1.f8472c0d8233fp-2 +0x1.a4ef60e8d4b68p-2 +-0x1.81239f23394e7p-1 +0x1.5387fc6c4af86p-1 +-0x1.80dc1ca4a928bp-1 +0x1.50ab5ca3ea361p-2 +0x1.7ca938069d897p-3 +-0x1.524fd49a02b4dp-3 +0x1.44580cdfe28b4p-1 +0x1.bcf5e5773b864p-1 +-0x1.ec2f51ca5af3bp-1 +-0x1.d881ce2ed8b85p-4 +0x1.b8cf6de8cd133p-2 +0x1.5e4d8deac9d24p-4 +-0x1.544a1988b1237p-2 +0x1.e67a48747bf31p-3 +0x1.c4edfa9cbff3ap-1 +0x1.6b2dda97a7f3ap-3 +-0x1.a8b95ed78f2f1p-2 +-0x1.83ff63ccd829dp-1 +0x1.de453ec5656f7p-3 +-0x1.70b985d772324p-1 +-0x1.a138ff48e7066p-4 +0x1.83719c6502f7bp-1 +-0x1.a4349c6c28813p-1 +-0x1.ed06da667efe6p-4 +-0x1.414837338660ap-3 +0x1.fd17be8702e5dp-1 +0x1.0fdaa028af235p-2 +0x1.8bdbe25c8524p-4 +0x1.9a65a34f42815p-1 +-0x1.7f250f8677549p-2 +-0x1.3b1f20fce5035p-1 +-0x1.345fb24859892p-2 +-0x1.75771df423c34p-2 +-0x1.11c84083469b2p-1 +-0x1.ec1425f94a20ep-3 +0x1.0dcb3cd4ced58p-1 +-0x1.01df0e2e1370ap-1 +-0x1.5583c6f4bc694p-2 +-0x1.7534bc75be26cp-2 +0x1.65f932877f2c9p-1 +0x1.650ac355b1fbp-3 +0x1.f4a996d8aa54cp-1 +-0x1.b65fbc20a3a98p-1 +-0x1.ed015bb0f1a04p-2 +0x1.530258a63ca0ap-2 +0x1.244d37a4b88fp-1 +0x1.a5d93b108ac8bp-1 +-0x1.f3cdd95209908p-1 +0x1.e19df575548e9p-1 +-0x1.05c686cf8aa9p-1 +0x1.27d0aec5930a7p-4 +-0x1.a02df7e27602dp-3 +-0x1.fdcf44623d089p-4 +-0x1.dc0e3b5fc7529p-5 +0x1.8d0733930aeaap-7 +-0x1.a57da927cfc94p-2 +0x1.11731cbe222f2p-3 +0x1.8eb29b03763abp-1 +0x1.1de421fc65cf7p-3 +0x1.5b00a9eb14f05p-2 +0x1.f487b542e453bp-7 +-0x1.782853be7a173p-6 +-0x1.8cd0667537f74p-4 +0x1.13114d2764ab5p-2 +0x1.5fd92c29e14d1p-1 +0x1.d9bb67a751c9bp-3 +0x1.000b24dc60bbfp-2 +0x1.5a9c8cc505145p-1 +0x1.1272a3e76653fp-1 +-0x1.35b3bc55aa792p-2 +-0x1.4226dd3ae5d08p-1 +-0x1.77c05af17058p-5 +-0x1.cb7f65f4cdf11p-2 +0x1.444f8ab014a2ap-3 +-0x1.e456e5dbd3fb4p-3 +-0x1.5078bb9f2659p-3 +0x1.478f2e3411d6dp-1 +-0x1.e4a03ced5aed3p-2 +0x1.c9f989e20e2c5p-1 +0x1.4c1cb0dfce0fap-1 +-0x1.8efcdfe9227bfp-2 +0x1.e82ca02a095f5p-1 +-0x1.50327d1d01e1cp-1 +0x1.5e3d5ca372cd8p-1 +-0x1.34843c6dbc634p-6 +0x1.74a869f6dbf51p-1 +-0x1.9f4a8b2460634p-3 +-0x1.c4cda7aa49b34p-2 +0x1.0649ddcd7b7a6p-1 +-0x1.4ff7f4c523d9dp-2 +-0x1.25e0936f71a7p-1 +0x1.9a100c69fd855p-3 +-0x1.3e09735051e1bp-1 +0x1.12f8710d6cbf8p-2 +-0x1.3c2e2f2e0049fp-6 +-0x1.1303f20ce2ddep-2 +0x1.73c6412270476p-4 +0x1.87c68be809854p-1 +0x1.d69c54d0ae8efp-1 +-0x1.726e5386cbf5ep-1 +0x1.4db07670f6b3ap-1 +-0x1.6196e059b8ff2p-1 +-0x1.253e4af538e5ep-8 +-0x1.c149882d4462fp-1 +-0x1.0c63051c5fb7ap-2 +0x1.24900fa2d83bbp-2 +0x1.0b59f0be1d50ap-2 +-0x1.51998f4724bcfp-1 +-0x1.5a031d6a41d77p-1 +0x1.e7b494d60d128p-2 +0x1.0c48212f9d7d5p-6 +-0x1.165632366a642p-5 +0x1.f02bc2261e6p-3 +0x1.35c695c54324cp-1 +0x1.da738a1ef263ap-4 +0x1.8e148329ce957p-1 +-0x1.6cb9d13339973p-2 +0x1.d4056b95aeccep-7 +0x1.de8772d37ca95p-3 +0x1.d3b5e3a89f62dp-2 +-0x1.d8d5792880182p-1 +-0x1.b993494c289a7p-3 +-0x1.b84750ff20e86p-1 +0x1.48c177c8aca89p-1 +0x1.3a66b9a23bd17p-2 +-0x1.fa27ac4b53133p-2 +-0x1.a5a1745ef634cp-3 +-0x1.4a664bb33259ap-2 +0x1.6ee76694ec5d6p-1 +-0x1.afc05ac01c8acp-3 +0x1.ea1e561e42038p-3 +0x1.8dcce3fc465dp-1 +-0x1.0a396cc90132fp-3 +0x1.4b760b4195016p-1 +0x1.eeaab28f3cc9bp-4 +-0x1.e5cf22a4e0704p-1 +-0x1.6a6b3667ecb32p-2 +-0x1.0033cbb59798bp-2 +0x1.5d2b01826975fp-2 +0x1.8053b0fcd2ab5p-1 +0x1.289d0339edb06p-1 +0x1.d796055b34876p-2 +-0x1.1ae939761bc6fp-1 +-0x1.3216d3376dc3ep-1 +-0x1.6d72c573c240ap-1 +0x1.bbf7f991509bp-1 +0x1.82e235c879fcap-8 +0x1.2d96702365145p-1 +0x1.215bea1d8d972p-1 +0x1.c7bea18c7d6b8p-4 +0x1.e87f010895ff8p-2 +-0x1.0ed4d3c156fc9p-2 +0x1.08d6671deaeadp-1 +-0x1.df82330efc0c1p-3 +0x1.0ca319407cc5dp-1 +-0x1.afa2251ae4712p-3 +0x1.4e30ff3c01273p-2 +0x1.9da612424a4a7p-1 +0x1.56cd31f370209p-2 +0x1.78507db603478p-2 +0x1.5fdd6ff3a3c16p-2 +-0x1.a40adcf265112p-1 +-0x1.9a4965d24107ap-2 +-0x1.0087030c13e29p-3 +-0x1.9050f6f41c4ddp-2 +0x1.9010a2e637bc7p-1 +0x1.113376a83e2c6p-1 +0x1.4a4de4a4f3f5p-1 +-0x1.51fcce431742p-1 +-0x1.9c2d8e376b37dp-5 +0x1.c44d680df0d2p-5 +-0x1.358e7d9acbd29p-1 +-0x1.acda53bcc594ap-2 +-0x1.df8aec5ab3b8cp-2 +-0x1.3b617f40989f6p-2 +-0x1.d35c076e911bp-3 +0x1.c611ff262acf8p-1 +0x1.2c63a0d55602bp-1 +0x1.ff52828b187e8p-4 +-0x1.27ad28fb498b1p-9 +-0x1.43fe26caa94e4p-1 +-0x1.e41d4190bc4p-5 +0x1.4195690e1cf21p-1 +0x1.c9b73cff0310ep-2 +-0x1.c801293111172p-1 +-0x1.2c1e6a83defe7p-5 +-0x1.fd5e6cb8f767bp-2 +0x1.90c3f7fee8f65p-1 +0x1.7d91fa800e21fp-2 +-0x1.13ae63d5081bdp-1 +0x1.c8a557e518029p-1 +0x1.a6e45f4e9a6b6p-3 +-0x1.29d98c3d009e9p-1 +-0x1.f21ac89dc068cp-1 +0x1.4cbf19dc5b9bfp-1 +-0x1.3a429e885e077p-4 +-0x1.ce2241020a565p-1 +-0x1.df6dddddfb031p-2 +-0x1.1a0e884ca5e7ep-1 +0x1.320570a070578p-2 +-0x1.b4cdb39547973p-4 +-0x1.ed74867a6604dp-2 +0x1.6e2504b1018cep-2 +0x1.5b1e28d808043p-2 +-0x1.e16a7594bfd91p-1 +0x1.7ba9478a5fc1ep-1 +-0x1.37e81213f4e0fp-2 +-0x1.5a43d413f83bap-1 +-0x1.314f136d93effp-2 +-0x1.c4746d32411c8p-1 +0x1.caa9958a03f63p-2 +-0x1.8abcbb8919c3ap-3 +0x1.0e8a8f6a2f9ffp-3 +-0x1.2abbd0baf081cp-2 +-0x1.03e7d6d004b27p-1 +-0x1.6d9f5a8430a7p-1 +0x1.88090d68e9bf2p-5 +-0x1.adf2db48aa4bcp-4 +-0x1.afae6b5b46062p-5 +0x1.82c66e4c5ffd4p-1 +0x1.76212d58b40c7p-3 +0x1.1e35a985b8e18p-2 +-0x1.2d2b34d13b5f9p-2 +-0x1.74477a02ec0bdp-2 +-0x1.da68da140e825p-1 +0x1.429f6834ec34bp-5 +-0x1.7077cc9441a48p-1 +0x1.814d36ac07302p-1 +0x1.1d1dbc833ad22p-1 +0x1.b4bc73f74859ap-1 +0x1.fdb265566f7bbp-1 +-0x1.e217b64982b81p-2 +0x1.7d0b6b6ad16bdp-5 +0x1.a7dc653255db1p-1 +0x1.3501846c6881fp-3 +-0x1.0e739a1cb6914p-1 +0x1.dcf0eca530e4p-1 +0x1.71154680533eap-1 +-0x1.a71018021042bp-3 +-0x1.3613199c0d3b5p-1 +-0x1.b1d92ec8199ap-4 +0x1.1a1680e0d48f8p-2 +0x1.fb5d100257bd6p-10 +0x1.801e5a27f68b9p-1 +-0x1.c0fb2f73df48fp-2 +-0x1.c4e0a59ec8ebp-4 +-0x1.a688e18352387p-1 +0x1.b6c954e7491aap-1 +0x1.6db21943c5ea5p-1 +0x1.5860f23c4db45p-1 +-0x1.361ab3437a041p-3 +0x1.ed5bc38d3b8e3p-3 +-0x1.08eff43d8ee44p-2 +-0x1.409854b4af796p-1 +0x1.4ad435a929e1fp-4 +0x1.760fca29627f8p-2 +0x1.6165d2706a035p-1 +0x1.b1a2eb38ef6dep-1 +0x1.59aeb5208e1b3p-1 +0x1.3e0b667f5842ep-1 +-0x1.36aa071aeee3ap-4 +-0x1.7caf6d8ba4423p-3 +0x1.52874ff294ab8p-2 +0x1.708585ed461c7p-2 +0x1.b81519abfe448p-1 +0x1.960ca3aca2da9p-4 +0x1.9570944645b83p-1 +0x1.1d4dca9abb546p-1 +-0x1.5d5790632cd87p-1 +0x1.8d8712602a95bp-1 +0x1.1782407a9b254p-1 +0x1.d5753e3e8f083p-2 +0x1.a561d6e254c0ap-1 +-0x1.0929799d921e2p-5 +0x1.bc58ccf3d9c82p-2 +0x1.cf7dbd153242p-1 +-0x1.2bfa1f27e0b51p-1 +0x1.71d9c44bd06c3p-1 +-0x1.78931e76da172p-2 +-0x1.3bffaf540e3f7p-2 +0x1.136d33bdd8d5cp-2 +0x1.bd27aa0397bc9p-4 +-0x1.d97617c64ac54p-1 +0x1.f8279ff8d44e8p-1 +0x1.10a960acbb03ep-2 +0x1.058270b943164p-1 +0x1.27ca95f032cf8p-3 +-0x1.002a759a2c1e1p-1 +0x1.0fe87e39796d4p-1 +0x1.9757956c215b8p-1 +-0x1.bd8d2c8008f1fp-1 +-0x1.d754674b230f9p-1 +-0x1.0df93392ed5dbp-3 +0x1.cf78b8b43a304p-4 +-0x1.ac4cae5c8a0e1p-6 +0x1.b3389a7d7531ep-1 +0x1.3db3786b871ffp-2 +-0x1.93fbc2d3d6065p-2 +0x1.61b4044ca5525p-1 +-0x1.859fc80ce8dd2p-5 +0x1.99ce895446293p-2 +0x1.6aec3909bde3bp-2 +0x1.e9dd4a1211665p-1 +-0x1.b9dbeacbb4ad4p-1 +0x1.2c1cdcd2ea989p-4 +-0x1.5bfccde0a525p-4 +0x1.ad2c339b6833ap-1 +-0x1.2cc2168c7a187p-2 +-0x1.598eaaa5d6729p-4 +-0x1.9d42880d363dap-2 +-0x1.4f40c81ad56fap-1 +0x1.4d5147db880e4p-1 +0x1.bfddf2f5dd9c9p-2 +-0x1.343e0be99de54p-7 +-0x1.0461c2da75ca5p-1 +-0x1.c31b2ce23198ap-1 +0x1.51c0fa684649p-1 +-0x1.15a3f961b391ap-3 +0x1.67eb9adebcf6fp-2 +0x1.c5dd61a2272aep-2 +-0x1.0eee3a434ef08p-1 +0x1.ef12f8cc3b26fp-2 +0x1.8cf8ad702da21p-2 +-0x1.e0ecf5f96c90dp-2 +-0x1.95cf66af5f15dp-2 +-0x1.7b9b7272aa8c4p-2 +-0x1.4ec5527bb6b1p-2 +-0x1.489c9c3257ffbp-4 +-0x1.8605a7ea9f68ep-1 +0x1.0b9704fd80065p-3 +0x1.9fda0279608a6p-1 +0x1.1a3fd319de2d8p-1 +-0x1.4e094ad593c7ep-1 +0x1.ab276d926a2bdp-6 +0x1.bdbf97dc2183bp-1 +0x1.c487e4f0d9a5p-4 +-0x1.df6aac5448968p-1 +-0x1.ff6dff9e98f3bp-2 +-0x1.a6d1a236e9fe9p-3 +0x1.19c34861443ddp-1 +-0x1.38178bca9e3d1p-1 +-0x1.c0cc257c366a5p-1 +0x1.063f27e68cf88p-1 +0x1.c6aa871d1ca16p-1 +-0x1.32c87d251d18ep-2 +0x1.ffaddddffd222p-1 +-0x1.05ffa8595a494p-1 +-0x1.8a040ec30673ep-1 +0x1.3a9c500a0fd76p-1 +0x1.7ec5df88476ddp-1 +0x1.37444d56dfa27p-2 +0x1.22850f2f3ff3ap-1 +0x1.ce3f44cae826dp-1 +0x1.35badc4b94a55p-1 +-0x1.41c6e08eb1268p-1 +-0x1.6c41cc8ea8281p-1 +-0x1.7565fa3d9a79dp-4 +0x1.fd92ca712f54fp-2 +-0x1.37986b9e76a3cp-3 +0x1.d57e7be542dbcp-5 +0x1.991d55be4e526p-1 +0x1.c0f4d81e67683p-1 +-0x1.af78092a0a64cp-1 +-0x1.91f063cd15e4ap-3 +0x1.846351a6dd0cbp-1 +0x1.19f85a9224171p-2 +-0x1.a43a833f8a75cp-4 +-0x1.864d0783cde65p-3 +-0x1.93569e7bd99ecp-1 +0x1.0cb556f0e2e6p-1 +-0x1.7754bfaab4c5ep-1 +0x1.82de4a767021p-2 +0x1.8c543f7174207p-2 +0x1.ee36f04662ab3p-1 +0x1.1297b95aa2c1fp-1 +-0x1.47d746031436bp-2 +0x1.3aadbc8ef7e29p-1 +-0x1.bd927f299a5bp-1 +-0x1.b135183e076fp-3 +0x1.9ee1502eccb25p-4 +0x1.2b7cd87d8575fp-1 +-0x1.1941fd7777dc3p-1 +0x1.c80c676ba1bb6p-1 +0x1.b281c98df2671p-2 +-0x1.ef3af6c6c31b3p-1 +0x1.d979ea278f4bp-1 +0x1.25e01e4440cd7p-3 +0x1.fa0fc1692310ep-1 +0x1.0869ca83a0ac7p-4 +-0x1.d6aa5970ba8b8p-2 +-0x1.7b13e32ea485bp-1 +0x1.b66e3aa220ca7p-3 +-0x1.9327541d9796bp-2 +0x1.30f30c4cdabecp-5 +-0x1.2f304d380c7abp-4 +-0x1.4713a4b30b6c4p-2 +-0x1.f94357e8a02e3p-2 +-0x1.a4235360225a7p-1 +-0x1.bb27698ece002p-1 +-0x1.a0214f47a11b1p-1 +-0x1.6a97a2a03ba8fp-1 +-0x1.d17a3ebe29d94p-1 +0x1.2f362f19ff5ebp-1 +0x1.32a8ea7125589p-1 +-0x1.c9957373fafdep-2 +-0x1.1757ef7fa3c96p-1 +-0x1.62cb58844a0abp-1 +-0x1.16410da05e864p-2 +0x1.17a89dddeb115p-1 +0x1.f5385e107aee5p-2 +-0x1.a2d1d2c2387d4p-1 +0x1.aac75465c6fdcp-1 +0x1.930bc47bb8188p-1 +0x1.12566c6d7fae2p-1 +-0x1.11f7a629494a4p-3 +0x1.affc0a40e4b03p-3 +0x1.f2be0a10bd434p-3 +0x1.4a4c52737001ap-1 +0x1.0b3c195c20e8bp-3 +-0x1.8c5f16b22855ep-1 +0x1.2690271da9e56p-2 +0x1.4fcd5f676c506p-1 +0x1.e0721ee1cf4d2p-2 +-0x1.e29a437562d99p-1 +-0x1.cb80f8f1873e2p-2 +0x1.2c92a9fd17667p-4 +-0x1.5e774a8943ae7p-2 +-0x1.b0789f1a65acap-1 +0x1.5d71d2afc84b8p-1 +-0x1.f2c1319c2ef97p-1 +0x1.f78189ad92a99p-1 +-0x1.3860512005dcp-3 +0x1.cea1225096b12p-1 +0x1.c33f8b1338b5dp-3 +-0x1.79e05f7832612p-1 +0x1.cc09cbd14a6a3p-3 +0x1.e0b9f9d321f3cp-4 +0x1.6fbea0aff0685p-2 +0x1.715cab373d909p-3 +0x1.a2bc9dcd1e467p-3 +-0x1.997e2c20a9b4p-3 +-0x1.7b7513154fd58p-3 +0x1.2718ebc53a28fp-1 +0x1.8065368a8c428p-1 +0x1.9579f6463b22bp-1 +0x1.3648ffafc92c3p-2 +0x1.a0c47a5fc93c6p-8 +-0x1.098030e3bdc44p-1 +0x1.84fb0df3d135ep-1 +0x1.944694c9d91aap-3 +-0x1.08e3527bdf7d8p-2 +-0x1.2c4f393cd4117p-1 +0x1.4904fb6cadfabp-1 +-0x1.d03ef14f9974dp-8 +-0x1.8e288e1a61ee3p-1 +0x1.c2aa6042cc4f2p-3 +0x1.ff0a0b216808dp-1 +-0x1.ddb1ebaddda37p-2 +-0x1.f82692afa89ebp-3 +0x1.9197f0d053534p-1 +0x1.f12d869443df1p-1 +0x1.bc2f090259a63p-3 +-0x1.725fc7b07202dp-1 +0x1.6377407d53bc4p-2 +0x1.9da177186889ep-2 +-0x1.74fb4afaa9d53p-2 +0x1.ac5c33b15f2f5p-3 +-0x1.995882a16d9e8p-1 +-0x1.7448d52d5a8c1p-1 +-0x1.633504a015bbbp-2 +0x1.c9f1cc0441dbcp-4 +0x1.28782cc397ffap-1 +0x1.9fa8f29748837p-2 +-0x1.2bf5c3273459cp-1 +-0x1.0b75a703206b5p-4 +0x1.6725ab67e4eccp-3 +0x1.77981e69716c6p-3 +-0x1.f701b74210786p-3 +-0x1.bca62ceedc24cp-2 +0x1.8ec04b88e9299p-1 +0x1.bbf63740f394ap-1 +-0x1.a3fa37a2e2b1p-2 +-0x1.1af036b14ba26p-2 +0x1.22f5cd1fca077p-1 +0x1.d770c85e8f6e9p-3 +-0x1.42a6adcfb4b0fp-6 +-0x1.27cb5126ebb8p-7 +-0x1.f49ffa4217a6fp-2 +-0x1.0d3d3f0b52229p-1 +0x1.5b1d55529c492p-3 +-0x1.dd3e929b61fc4p-5 +0x1.d5d6b1b257addp-6 +-0x1.bd0e3a05c7368p-1 +0x1.a6ffb58cb5985p-6 +0x1.e6a5d11bab93fp-8 +-0x1.69a5af5d507a9p-4 +0x1.1757b437ff188p-2 +0x1.6b8edf583259ap-3 +-0x1.0809daeebad5cp-1 +0x1.1981bb5c459ddp-2 +0x1.ae3274518c3f1p-1 +-0x1.acc7c26f9439ep-1 +-0x1.8ed5eae8fc502p-1 +-0x1.9a2218c92353bp-1 +0x1.a060e95bce3d5p-2 +-0x1.3a59a40c2908ap-3 +-0x1.697f9db42a65bp-2 +-0x1.0d641a16a5775p-2 +-0x1.85cba1f04a7e7p-2 +-0x1.d786b2a3eb564p-2 +0x1.d47af0a008b86p-1 +0x1.12b882be237a6p-1 +-0x1.ee07e3a21fde7p-6 +0x1.c0f58777181f4p-2 +-0x1.7a9e3b6970f85p-1 +0x1.dd7e575a9d08ap-2 +0x1.f828d7a3d7bf5p-5 +-0x1.53bf26bf39cf9p-1 +-0x1.268cbac90ee5ep-2 +-0x1.53064ee7f801dp-1 +0x1.4ce7868e88fb3p-3 +-0x1.815ecd04a992p-4 +-0x1.f902455eb6758p-1 +0x1.802ce535a4c7ap-2 +0x1.8bb20a6ca6af9p-2 +-0x1.946c7f8f7a61ap-1 +0x1.4f8e10a8337a8p-3 +0x1.6732539f8ac94p-2 +-0x1.98da12057e07cp-2 +-0x1.83eef65f60d0fp-3 +-0x1.5be26e4af96a7p-1 +0x1.5e6c49c167deap-6 +0x1.6486d45e0d9cfp-1 +-0x1.79675e3b63614p-6 +-0x1.f90ed38c8dfcfp-1 +0x1.1dbb45313c71ep-3 +0x1.50ccd4300d861p-1 +-0x1.7c796be9a971p-3 +0x1.2f5dbcf57f00ep-1 +-0x1.10218e57c676bp-1 +-0x1.86e44c8435dcdp-2 +0x1.58fe4a325accfp-1 +0x1.0d92d84a8c417p-1 +-0x1.1f6c54d65f837p-1 +-0x1.b5c6edc9a4bd3p-2 +0x1.81b8ac69a4f7ap-3 +0x1.94b35db8418bfp-4 +0x1.1b785b9ae6c65p-2 +0x1.99ab902d747c7p-2 +-0x1.dd3e7ccde95fdp-1 +0x1.00c3274ec2061p-1 +-0x1.06b80839acdc7p-3 +0x1.0081ce3c861a3p-1 +0x1.0a5854c849154p-2 +0x1.7002df31e4271p-1 +-0x1.9ef987b128d32p-3 +0x1.f040f23280888p-1 +-0x1.dce42446fa208p-1 +-0x1.2b698b53d3ed1p-1 +-0x1.604c22ae85ba8p-1 +-0x1.9ead7fd515e8dp-3 +-0x1.7f25d213409b4p-1 +-0x1.3ecb54cf217f1p-2 +-0x1.42bd8c75ca1a1p-1 +-0x1.b58710cc55024p-2 +-0x1.0bcbe03f9178bp-1 +0x1.ad2f3bf77e92ap-1 +-0x1.c4a3496909752p-1 +0x1.f1b6a315666ecp-1 +-0x1.ccb270059777ep-1 +0x1.be840d57a7d3dp-2 +0x1.abfd0ae117d33p-1 +0x1.73307b0afc1cp-4 +0x1.ed77212a1bbfdp-1 +0x1.cc4adc85133a8p-1 +-0x1.d46c12433e3bcp-3 +0x1.b84221fddc0b9p-1 +-0x1.14347e5a53e76p-1 +0x1.94eaaa70f4ddfp-1 +0x1.45921dfac538ep-1 +0x1.af247c811412fp-5 +0x1.468842c0a7ec9p-1 +0x1.4bfdcd3107724p-2 +0x1.dc22ae55517cep-2 +0x1.3ec043d4c77b1p-1 +-0x1.38e88f94af01ep-3 +0x1.7f31352b6571p-4 +-0x1.d8e5cf250ba5dp-1 +0x1.ba7a57d6e6144p-3 +-0x1.0c70aabc69e89p-2 +-0x1.ec3c46a39a274p-1 +-0x1.f6ca0bd88e38fp-3 +-0x1.45c57fd1010d9p-3 +-0x1.c3de1d196e1b6p-5 +0x1.e727d990df347p-2 +0x1.abe66fcda83c4p-2 +0x1.6d54710478a63p-1 +0x1.9842aa62b4e19p-2 +-0x1.fc30311fefdaep-1 +-0x1.986eb01cd9683p-1 +0x1.153a17f3deff6p-1 +-0x1.8b71affd301adp-2 +0x1.e5599a8b8cd1ep-4 +-0x1.ea8cb0cedba39p-1 +0x1.f39e28961b26fp-1 +-0x1.15c3131754788p-6 +-0x1.c518dcf18236bp-1 +-0x1.73992aff0a5d1p-3 +-0x1.1f0d5f073e032p-2 +-0x1.3bfd7a839ba64p-3 +0x1.6e04148170658p-2 +0x1.b2bde0872ee3ep-1 +0x1.5c3469ab6a2c8p-6 +0x1.abee20dd08c78p-2 +-0x1.01d77ee7be2edp-1 +0x1.48755de7cd6f1p-1 +-0x1.9a52b339c19cfp-2 +0x1.fdafb2ce6f503p-1 +-0x1.3d9a4e10ced1fp-3 +-0x1.6755aa83fd126p-1 +-0x1.f8795032529aap-1 +0x1.ed03d324a113ep-3 +0x1.a353a72d4549bp-1 +-0x1.6dc442bb8d8b8p-2 +-0x1.cfbacda1bf4eap-3 +-0x1.8ccbba2b44e2bp-1 +0x1.7a186fbd1e357p-1 +0x1.da45a3b11c52bp-2 +0x1.7875e9b03e508p-1 +-0x1.383464a69474cp-2 +-0x1.0fb0489686577p-1 +-0x1.20affbc5d49b2p-1 +0x1.948236048ddb1p-1 +-0x1.5298e40efd77ap-4 +0x1.61acf74e469c4p-7 +0x1.72168e15129acp-2 +-0x1.fad951936d185p-2 +-0x1.d3401a99664afp-2 +0x1.1d3854a4dd63cp-1 +-0x1.bfc83ba0d3005p-3 +-0x1.3c511e40dab1cp-2 +0x1.da9aad045d77fp-2 +0x1.04347d3cc06adp-2 +0x1.494daff822574p-1 +0x1.e802695f1d30ep-1 +0x1.af76a1c52b28cp-3 +-0x1.9c0b5679318b7p-1 +-0x1.16cd889ab0c83p-1 +-0x1.3ac82571ecf4cp-1 +0x1.68323ff37cddep-2 +-0x1.9671335bacbf8p-2 +-0x1.ab725fd9451e6p-3 +-0x1.eca38a0590deap-4 +0x1.aba0c4d6681b1p-2 +0x1.0819cbd663ef5p-1 +-0x1.a5ea36b58086fp-1 +0x1.ecbf212febd3fp-1 +0x1.7380074607c0ap-4 +-0x1.9000bfef0398ap-2 +-0x1.478cbedd2f581p-1 +0x1.8966a75eeb4f6p-4 +0x1.8b66c88f70115p-1 +-0x1.440ac7df7534ap-1 +0x1.7c27eb3b8aa8dp-3 +-0x1.bf9b0d31fd77p-1 +0x1.657f4c07274eap-3 +0x1.c9b359e465457p-1 +0x1.a7c2ef6c1b216p-2 +-0x1.fca2d9f91ccap-7 +-0x1.80889d10f00c5p-4 +-0x1.692e50e627293p-4 +-0x1.87bd20aebe54ap-2 +-0x1.f459228934486p-2 +0x1.472382401a8f2p-1 +-0x1.3486642f00127p-2 +-0x1.8ca43405e2f53p-4 +0x1.27d6404eb2592p-1 +0x1.3167e123afdcep-9 +0x1.07b746cd12982p-1 +-0x1.2f7bf058a7195p-1 +0x1.f9f935fca78dfp-1 +0x1.ba524f226d8d5p-3 +0x1.0f32a7327a5f1p-1 +-0x1.4f203928b0bb4p-4 +-0x1.0ffdf80d90d07p-1 +-0x1.c65760470e8d6p-1 +-0x1.b2896d2a008dap-5 +0x1.574f6ae904203p-3 +-0x1.ce69199533b98p-4 +0x1.6278ff4a4752cp-1 +-0x1.30c4bd14b4924p-1 +-0x1.62648bf0bdc43p-2 +-0x1.1ac083c7f7b77p-3 +-0x1.bb56e2ec80623p-1 +0x1.ad3f74f660f3bp-3 +0x1.442a2410a734cp-1 +0x1.93fc4b6fcb397p-3 +-0x1.b963da759ef3ep-2 +-0x1.f13afb141844bp-2 +-0x1.0b4ad8e4aa729p-1 +-0x1.57e198befd26cp-3 +-0x1.0cfed51a5447p-5 +-0x1.4de6ec08a741ep-1 +0x1.51a0623691ca1p-1 +0x1.150623e621affp-3 +-0x1.e4d8afb8d5886p-1 +-0x1.5e75b6f76de37p-1 +0x1.7cc65731e3109p-1 +-0x1.47986af22f7e1p-1 +-0x1.ee6a09a960f7ap-2 +0x1.ae4e20db47b7bp-1 +-0x1.7ee782b20db47p-2 +-0x1.6eef80fc11dccp-1 +0x1.0f2c7c40bccb6p-1 +-0x1.0c604bf09f425p-2 +-0x1.d0cb2adb3e9a5p-4 +0x1.c6d45190f87cdp-1 +-0x1.213f621d457ccp-1 +-0x1.16bd00d48ddb6p-1 +-0x1.24e6e38986cap-2 +0x1.17855c5ffed5p-3 +-0x1.aca3ba588f3e2p-1 +-0x1.3a2dadf01ecd3p-1 +-0x1.4b8214e9db47ep-2 +-0x1.411949c78fdcep-1 +0x1.a37e5c826c84cp-2 +-0x1.93d3c81e27227p-2 +0x1.636292e9e6c7dp-1 +-0x1.554623015d74dp-1 +-0x1.0f8ceaafa745ap-1 +-0x1.aceccc0783c4cp-2 +0x1.7df32b260eecp-6 +-0x1.255a1aa91ef91p-1 +-0x1.a2bbbe7dac89cp-2 +-0x1.56d82280ca20ap-1 +-0x1.0dbeb9ef97955p-1 +-0x1.b94eb5428765bp-1 +-0x1.a9bf86e4ac70dp-3 +-0x1.0855827c83f4cp-2 +0x1.022d027737673p-3 +0x1.f018e571dd12ap-2 +0x1.a8bb437fc66aap-4 +-0x1.8e9e7d9406ba2p-2 +-0x1.664c29b1db939p-5 +-0x1.b5e40f88452abp-1 +-0x1.68c7d14330b2ap-3 +0x1.7ffc77ca165dcp-4 +0x1.137d2c346f084p-11 +0x1.6540a44493836p-4 +0x1.74d16190b2d1dp-3 +0x1.098f5594b51e2p-1 +0x1.a59a8190cce0bp-2 +0x1.2921251358e01p-1 +0x1.4331942342e8ep-3 +-0x1.9119112705f0ep-4 +-0x1.c19fa70ce104ap-4 +0x1.282c0d8843656p-1 +0x1.2e83ef4ac8dd2p-7 +-0x1.e1a4876dd3166p-4 +-0x1.95bdb29008dc8p-3 +0x1.dfd2e018c50eep-2 +0x1.ec2147bffae36p-1 +0x1.3a15047787fa1p-1 +-0x1.5b8e2cf6a6cdcp-1 +-0x1.bdcd2fbd20f8dp-1 +-0x1.079a10dce17eep-1 +0x1.5007a75c698e1p-1 +0x1.a0908aa30e4b1p-1 +-0x1.19e1718e6114cp-1 +0x1.a9bfcf61ab5aap-3 +0x1.7ffbcf941d617p-1 +-0x1.60433564bde97p-2 +0x1.1c31cc5deb6ebp-3 +0x1.0ac26b5b6b26ap-3 +0x1.6ae5f2e1e0169p-1 +0x1.121bef1e9c846p-1 +0x1.9158f6de9e39bp-2 +0x1.9374bf288ae5cp-1 +-0x1.8b177a2c186fbp-8 +0x1.cfe3e01671c6p-1 +0x1.f9f83415242ddp-4 +0x1.9757166028a0bp-2 +0x1.54625bf0bc424p-3 +-0x1.d84021a53664cp-1 +-0x1.61a5dc39b927ap-2 +0x1.8a6d09a954988p-1 +0x1.79d6d1cf413e3p-2 +-0x1.b5d0f4e5854c2p-3 +-0x1.6c1508a245409p-3 +-0x1.cee6ebe8cfb3dp-2 +0x1.26dd9f8c943ddp-1 +-0x1.80891a4291f81p-1 +0x1.b383e5d3bf694p-1 +0x1.5da5ec4458468p-1 +-0x1.ae05752dce3bep-1 +0x1.4f48d390d74f4p-1 +-0x1.880168a9d8bf5p-3 +-0x1.608e46d526407p-1 +0x1.1a00356a73c2fp-1 +-0x1.d6b7b9378a573p-2 +0x1.9050bc3639134p-2 +0x1.b6e1f8f39ab6ep-3 +-0x1.3fd6b936ca715p-2 +0x1.a2e96cc6c8febp-3 +0x1.1895dd39e7ec8p-2 +0x1.b3f4da279db55p-3 +-0x1.cd855b8fe86fdp-2 +0x1.ccea5a54d87efp-2 +0x1.558402d1b1d97p-1 +-0x1.2369a864ccf9dp-2 +-0x1.d10b2f726dbdap-1 +0x1.1ecb4a504032cp-5 +0x1.80854384fd533p-1 +0x1.2a89ddee85669p-2 +-0x1.4125a5cbf1a1p-4 +0x1.271f9882c450bp-5 +-0x1.7e754ffee3f88p-9 +-0x1.0d9c23d4f6af1p-1 +0x1.2509eb20bfd81p-3 +0x1.7a11f69b6a7d4p-1 +-0x1.ce345c782f5b6p-6 +0x1.543b1a19d4357p-1 +-0x1.0dabcc426576fp-1 +-0x1.807585bcde922p-2 +0x1.d015436e1f1abp-2 +-0x1.23630c4a57b68p-3 +0x1.f8baf1c0ea3dep-4 +0x1.2c45a3635366ap-2 +-0x1.e7a83ce77ed2dp-2 +0x1.1b546e77d849ep-2 +0x1.64958e232d848p-2 +-0x1.17889f2dd3092p-3 +-0x1.7c7736249e11ep-1 +-0x1.86a542ec152ccp-1 +-0x1.699836692af2ep-1 +-0x1.370579624a655p-1 +-0x1.abe9296a5210fp-3 +0x1.94d0b6d33cf65p-1 +0x1.d7d5af97552c8p-2 +-0x1.b42382bf7521cp-2 +-0x1.60be748cc1763p-1 +0x1.035ceb7539913p-1 +0x1.7f99fcedf4bb1p-2 +-0x1.995295f414597p-3 +0x1.5ff6692a79d7cp-2 +-0x1.d4180122b91cap-1 +-0x1.aec89be2e9096p-1 +0x1.3cda114e2349fp-1 +0x1.8f57beafe5f09p-1 +0x1.0cf5b0f2a2138p-2 +0x1.c8875e0830ebcp-2 +0x1.ab8b9500ece11p-1 +0x1.1f3b7c468aaa2p-3 +-0x1.541dc9652df83p-2 +-0x1.9ef1e1252722bp-1 +-0x1.f1bdb2a9535d4p-7 +0x1.7df5acaa32cddp-1 +0x1.6eb4e78ecc57cp-3 +0x1.efb1a3c921182p-1 +-0x1.72bc14f4003cdp-1 +-0x1.ba82f56bf29eep-2 +-0x1.ea55d72bbb566p-3 +0x1.2921186ff6363p-1 +0x1.5e311cd145f0bp-1 +-0x1.9bf96669701b8p-4 +0x1.cd24b3b1ef227p-2 +0x1.88f71a896832fp-2 +-0x1.0e428a379b193p-4 +-0x1.9a536e9c8e83ap-2 +-0x1.f8c907f8f58dap-1 +0x1.40c9a200f618p-6 +0x1.e18d80ae0ed9cp-1 +0x1.108fb9613203ep-1 +-0x1.4fcec1dc7716ep-6 +-0x1.080d994d95b7fp-1 +0x1.fc551bebe4738p-1 +0x1.9bb61c8a9f0ebp-4 +-0x1.4168bf2694eaep-2 +0x1.c799e88ae2ec6p-1 +-0x1.0c4a5ab926c2p-2 +0x1.ebf3cba24943ep-1 +-0x1.be1b555a6abb3p-1 +-0x1.88a11a5b91b63p-1 +-0x1.8ecffbb6046bp-1 +0x1.c55182371899cp-2 +0x1.d3d14150490fep-3 +0x1.39252b348cb0ap-2 +0x1.654ff78b61a52p-2 +-0x1.750bd8259b8b5p-3 +-0x1.69df3ea0120aep-2 +0x1.bba0cfeff36c5p-1 +-0x1.28c5f1f986bc8p-2 +0x1.321f6a0b81c7cp-1 +-0x1.eb40419561accp-2 +0x1.95913fd4025acp-1 +-0x1.f11da7515b7f9p-3 +0x1.cb7c723c6758ap-1 +0x1.63b18d445a38ap-2 +-0x1.9f6c01dad6e3bp-1 +-0x1.8ab8bb23a9723p-5 +0x1.7b590e7b6f08fp-4 +-0x1.5df52196c97b8p-1 +-0x1.68ff190f3a699p-9 +-0x1.540a2527a3721p-2 +-0x1.e70f7ac0dd117p-1 +-0x1.443a2175d89ddp-1 +-0x1.298bfd95b618cp-3 +-0x1.86b305e2145efp-3 +0x1.1e2ab2a20dec6p-1 +-0x1.23a5753b9b995p-1 +-0x1.24f1448e6220bp-1 +-0x1.4b31f7fd15c83p-3 +0x1.16c554c0c7c7bp-1 +0x1.0d1d3d81a6956p-3 +-0x1.d95ce95177636p-4 +0x1.b35c3401e16b8p-1 +0x1.d53301c5ecc3p-1 +-0x1.bd7b10a5de2c4p-2 +0x1.7aacde04175ccp-4 +-0x1.4d08cb9de8ce3p-3 +0x1.1bf0fb4447a74p-2 +0x1.dfb86134722fp-1 +0x1.b15fcc6fe94p-2 +-0x1.0acc9bdcf0caep-2 +-0x1.3eabea96b0b8cp-1 +0x1.29a66abac59cbp-4 +-0x1.389b1e111241ap-6 +0x1.a4ee6a1521bb5p-3 +0x1.77f64713df0a4p-3 +0x1.baf354be79b6ap-1 +0x1.8bd0c285b316cp-5 +0x1.0381b0f4d007bp-1 +0x1.371fdccff429ap-1 +0x1.1e4186576b5c9p-5 +0x1.3612e926cd538p-1 +0x1.4122c616c3d2fp-1 +-0x1.b1def10e5c117p-1 +-0x1.d3b6c84872eb7p-3 +-0x1.b8dcb700f34fap-1 +-0x1.f1d34678088fbp-1 +0x1.bb5df44df4c5ep-2 +-0x1.87d1b19d5a614p-3 +-0x1.6b1c1cfb6cefep-1 +-0x1.835d9005963f9p-2 +0x1.a110724ef7df1p-1 +-0x1.0fdc2f5a6fb78p-3 +-0x1.b23939aa670ccp-6 +0x1.64c874c7ff99p-2 +0x1.49503ccbcc2bep-1 +0x1.d3a51c5a8e22bp-3 +-0x1.b9e8887e91e36p-1 +-0x1.1ff29111d91ecp-1 +0x1.a38aedddb3d5ep-5 +0x1.43a670f17ebcbp-2 +0x1.010fb0b7c700ap-1 +0x1.92a2c6af53c28p-3 +-0x1.2ee1ffbbee042p-3 +-0x1.181a87f87dc57p-2 +-0x1.80ed37d6ffe4p-2 +-0x1.a2625f8f1fb84p-1 +0x1.102470181ab84p-3 +0x1.312399130f17p-2 +-0x1.9a988ba091854p-1 +0x1.2a95ded25c83fp-2 +0x1.0a60159cf5cc1p-1 +0x1.dba780a36ec17p-3 +-0x1.499e9e756fed2p-3 +-0x1.a5bf1e1b1fd6bp-1 +-0x1.e737e1881484bp-2 +-0x1.4d185228bfb82p-5 +0x1.b4a3f08b24e7fp-5 +0x1.baa423457a5cap-1 +0x1.50b7dcf9975bap-2 +0x1.a0ae4e50204b9p-1 +0x1.03c44f5b094cdp-1 +-0x1.6a1a446399e02p-3 +-0x1.aa74850b23e53p-3 +0x1.4b4bee93e037cp-1 +-0x1.d24a0b9652cddp-1 +0x1.94e16cde09b57p-2 +0x1.c0a628e80493cp-1 +0x1.5012206994989p-3 +-0x1.f7107a00c61edp-4 +-0x1.70312dc81fc8bp-1 +0x1.a2b6ac7d2f5bep-3 +0x1.7932e6cf908c2p-1 +-0x1.338cff9a99878p-3 +0x1.902b6e1848763p-5 +-0x1.599ebe319c4p-1 +-0x1.e81a96b222088p-3 +0x1.35b765795bd88p-2 +0x1.0bfdf9e1ae617p-1 +-0x1.48bb9a343d453p-2 +-0x1.9d1a8fde2c575p-1 +0x1.4ef9a3b2749bap-4 +0x1.8fe10203411d2p-2 +0x1.b8d37e8772d2dp-2 +0x1.2498c7f6acfc9p-1 +0x1.383d52d0a077fp-1 +-0x1.9653c535d523fp-1 +0x1.f9562233ede6p-1 +0x1.e2e2d553dd48ap-2 +-0x1.b28b23846e307p-2 +-0x1.52914c62cc83bp-2 +-0x1.7ce9c25bfa33ap-1 +-0x1.263a37dbc8666p-1 +-0x1.b7340b07c647p-2 +-0x1.adc26b01e6ca7p-2 +-0x1.9cfa8153cb373p-2 +0x1.699ead43d545p-1 +0x1.7b4b302fd158cp-6 +-0x1.b59d0ef3da9cap-3 +-0x1.5eb8eb5e912bcp-2 +-0x1.cec0f84a930e9p-1 +0x1.572db1d83f818p-1 +0x1.6ad772581cc7fp-4 +-0x1.49ca7a5df6f72p-1 +0x1.1b2b61acfa0bbp-4 +0x1.36d5edb8d6561p-2 +0x1.ba65475867d4ep-1 +-0x1.2ab6564fc9d42p-1 +-0x1.72fe00bee0654p-1 +-0x1.bde63c4aa8ab7p-5 +0x1.490045cb71583p-1 +0x1.3f4e939281b6dp-2 +-0x1.087772e560dc3p-1 +0x1.68a22cb7794e9p-4 +-0x1.2647a7cf1b435p-1 +0x1.0e5d175120654p-1 +-0x1.2de1214d22ae2p-1 +-0x1.91b2e59283778p-1 +0x1.4fee783d2fa6bp-2 +-0x1.8c8514fa89229p-5 +-0x1.09e92b3431089p-3 +0x1.cb404292fdf66p-4 +0x1.9726dde5cb13ap-3 +0x1.8c68e460554cbp-1 +0x1.3a6c8da250a28p-1 +-0x1.eb80130ac35e3p-3 +-0x1.704e460c952b9p-4 +0x1.385b92525ebafp-1 +-0x1.4792eb2392716p-1 +0x1.c73c8a8632e66p-1 +-0x1.ca2cb7387081dp-1 +0x1.99bca77168e25p-1 +0x1.4607971658ffcp-2 +0x1.f1babe9ca6f94p-1 +0x1.f523f87bf049cp-2 +-0x1.b932d6ae2451bp-2 +0x1.9d14a92d16a6cp-1 +-0x1.0cdf9f5c52108p-6 +-0x1.f031808e2c094p-3 +0x1.1648fddf3bcdep-1 +-0x1.c87dca08e343bp-3 +0x1.8f196401e1c8ep-3 +-0x1.c96f95910c946p-5 +0x1.b4f6a27780f1p-3 +-0x1.2ad0e45ed3d5ap-2 +0x1.e42a9e9994386p-2 +-0x1.06403d81e1c61p-3 +-0x1.837efabc8e889p-1 +0x1.2984ef2e85996p-4 +-0x1.c66f3f33074a6p-1 +-0x1.778abdb63bb8ep-1 +-0x1.a4c7bb0aba9c8p-2 +0x1.2f2cb187585f8p-3 +0x1.bd18482092674p-4 +0x1.e20ab37575bep-1 +-0x1.f7f61135c529ap-3 +-0x1.c2764627a5243p-2 +0x1.d14ba0b1c89b6p-4 +-0x1.0987f73f2d758p-1 +-0x1.19f55d737b984p-1 +-0x1.75c0e390e28ccp-2 +-0x1.b1c836088072cp-1 +0x1.e988d2429d686p-1 +0x1.7b67d7802211p-1 +0x1.21f2a81c1e373p-1 +0x1.b96e795cd841dp-4 +0x1.ad9c940b7d60fp-1 +0x1.5652e0bf3b0a4p-3 +-0x1.6429861815c2cp-1 +0x1.fb3c1c35bfef5p-1 +-0x1.f525eb25f85f8p-1 +-0x1.6e9a76ca22defp-1 +-0x1.71836e53d2be3p-5 +0x1.e461bb25087c5p-3 +0x1.88ba44669d52bp-1 +-0x1.179be71b1f6bbp-5 +-0x1.0ed4ccc100643p-2 +0x1.33bc219c236c2p-1 +0x1.29bd2aa79734dp-1 +-0x1.fdab5258cfc83p-1 +-0x1.59a6e383c075bp-2 +-0x1.da4e4a7bdb7e1p-1 +-0x1.f2da575a31693p-1 +0x1.fb6d49feb319dp-3 +0x1.b745f3d6cd9cbp-1 +0x1.ef6f4edd9d46ap-2 +-0x1.23e1553a365dp-7 +0x1.7a4d5df7e63ddp-1 +0x1.e7c0b39999dcdp-1 +0x1.477914c8d2ec2p-3 +0x1.ca8a92d73d0abp-1 +-0x1.10599bc1cc44bp-2 +-0x1.19b6e36b34273p-1 +-0x1.3f8ed5871abe1p-1 +0x1.e8bee4114b5dep-2 +0x1.6d466a82bc48p-1 +0x1.92188084246bep-1 +0x1.ec515332bcc11p-1 +-0x1.e8df5b8b9c5a1p-2 +-0x1.68825f92ab4f4p-1 +0x1.7e6c4f3e738c2p-4 +-0x1.40a5912c3a68p-1 +-0x1.248f5bf0c8ddfp-3 +-0x1.02653f82857d3p-1 +-0x1.a2367586fba89p-1 +0x1.646a502cf0d7ap-1 +-0x1.d81a4f2ad78d9p-5 +-0x1.a56694be35b93p-3 +-0x1.331a8a5cd43ap-2 +0x1.a5b3c94353c34p-2 +0x1.66f044f79f7c7p-2 +0x1.23e1190f7c3b5p-2 +0x1.cfcd9120c960bp-2 +-0x1.7ebb100db599ep-1 +-0x1.cea03acdfd65fp-4 +0x1.acbdeac214243p-1 +0x1.8803ef06c95c8p-1 +-0x1.3f809ad0f15c2p-1 +-0x1.4812727844bddp-5 +0x1.223c3095c1dd7p-1 +0x1.c4d30c88a73fbp-1 +-0x1.42a26cafc00eap-2 +-0x1.3eac08bbda515p-1 +-0x1.a5d925c2ef50dp-3 +-0x1.b1d15c541370dp-1 +-0x1.c79b0e887e633p-1 +0x1.f167f95578ef2p-2 +0x1.7aacde55a2ef8p-2 +-0x1.3a97b601bf0dp-1 +0x1.aec646d679083p-3 +-0x1.edd2fa06f3687p-1 +0x1.89da3c8843f1ap-4 +-0x1.22f61628633d6p-2 +-0x1.500a41c0144bfp-1 +0x1.b79c03556fc03p-2 +-0x1.090f9a170a217p-1 +0x1.424677fc337dap-2 +-0x1.a4b4d63f97032p-3 +0x1.421ead9bcd086p-1 +-0x1.08ed3a1b5cf22p-2 +-0x1.1bd239c2ae23cp-1 +0x1.7cedb2be72e6bp-4 +-0x1.1f95fe163c5a9p-1 +0x1.4610a360f2e7ep-1 +-0x1.249fdd7b444fbp-3 +-0x1.4516dafcb2d03p-5 +-0x1.b54fb6c5901bfp-1 +0x1.da0c9afd8dcdep-1 +0x1.db0ec861909c3p-1 +-0x1.c782e3b01e6bap-2 +0x1.85af5358632bp-2 +-0x1.aade6aeac866bp-3 +-0x1.547b9110f4378p-4 +-0x1.8a25efa8e3703p-5 +0x1.6fcb83d4320d3p-1 +0x1.2daf518013bcp-3 +0x1.0794e83715e8cp-2 +0x1.9ff3ff2fe1fe6p-1 +-0x1.fc24758f79e6bp-2 +-0x1.210c7ac811f88p-1 +0x1.f22ea99b44ce5p-1 +-0x1.a25f9a3f5c385p-1 +0x1.c656d93951756p-1 +0x1.d412fce258a86p-4 +0x1.c899ce6b08a2cp-2 +0x1.852dc6c7efd16p-5 +-0x1.fada82a2f4b7fp-1 +0x1.7fe5295f1a5dbp-1 +0x1.a31d0f8f558bcp-2 +-0x1.d8f9e9667bee5p-2 +0x1.a38b92c0825c9p-2 +-0x1.a000bf504e6c1p-3 +0x1.9bfe2dad05023p-1 +0x1.b7077efb45019p-3 +-0x1.a00d2f7e637acp-2 +0x1.a988d7b1161ffp-2 +0x1.7cf18834378c7p-1 +0x1.7305bab7c22ffp-1 +0x1.e2e037d144f8ap-2 +0x1.b5b562e720d6dp-4 +-0x1.52e3f979e0fb9p-1 +0x1.f8518fde47e75p-1 +-0x1.7fab4fb0279a8p-1 +0x1.5dfaeb77fc14cp-3 +0x1.6c5da688f2e5cp-1 +-0x1.5bbd4aebc5846p-1 +-0x1.88bbec366374ap-3 +0x1.d16ee268fcc7bp-1 +-0x1.07130430ab2a4p-1 +-0x1.8be6b923f63c4p-1 +0x1.27cf39932fb1ap-1 +-0x1.08f87d13fb533p-1 +-0x1.c5d5a669eb082p-3 +-0x1.592717a22d4ep-1 +-0x1.6789d04262d19p-2 +0x1.a3b27c103d23p-8 +0x1.2cdc53cf144c9p-1 +-0x1.aa7de06d13b1p-3 +0x1.8062f03582d56p-1 +0x1.b64136d487dacp-3 +0x1.6f95488301b7fp-1 +-0x1.8300b31d47c43p-6 +-0x1.87e00889cbadp-5 +0x1.51fad77f100d8p-1 +-0x1.caa1a98b088d8p-7 +0x1.d5a40eb2005d4p-4 +-0x1.6ac5d1fa2efccp-3 +-0x1.9db40e6c88088p-1 +0x1.41aee853cb14dp-3 +0x1.f8ae18629051ep-3 +-0x1.d45c63f361dd7p-1 +0x1.541fea2230f7cp-1 +-0x1.9cd0d2296645dp-1 +0x1.2ae9e95ddf157p-5 +0x1.e584efe8b59cdp-3 +0x1.4c43bc5af28bap-1 +0x1.d71a7a836ea51p-2 +0x1.b29d25126e71cp-6 +-0x1.3c87f4d6f30c8p-3 +-0x1.fad37625c551p-5 +-0x1.2afbccc190dadp-1 +-0x1.c13422e476d79p-4 +0x1.80a34ae32ca83p-1 +-0x1.1b9319f8f460cp-1 +-0x1.e582a56766511p-1 +-0x1.d0214d17729bap-1 +-0x1.bf5116a4a9bb1p-1 +0x1.80cdb623d17d2p-2 +-0x1.bdd19da730feap-1 +0x1.c616ae662d6b5p-1 +-0x1.ff865a382dcfbp-1 +-0x1.b94ab44c00a18p-1 +0x1.b63c04e8f0854p-1 +-0x1.699607cc9cbdp-6 +0x1.9adb05e932ae7p-1 +-0x1.462730ef50725p-3 +-0x1.fb70f61b55bd6p-3 +-0x1.72e71d193b64ap-3 +-0x1.a9282b1c3a92ap-6 +0x1.8bfa74799fc89p-4 +-0x1.a0e0e1884ec97p-1 +-0x1.3d6d57dcb972cp-2 +0x1.89c75e39c0263p-2 +-0x1.241f1b7f58f79p-1 +-0x1.2bc5673f7cfccp-1 +0x1.e60e4c7160eb2p-1 +0x1.40105ca97007fp-3 +-0x1.2ef564af9616fp-1 +-0x1.07bf42236f25bp-2 +-0x1.049d3415692e2p-1 +-0x1.45f5522d13caep-2 +-0x1.1997c397e0e45p-4 +-0x1.8de3646adb742p-2 +-0x1.05bb605702e3ep-1 +-0x1.342b53aca73bep-1 +-0x1.89b84d1a50e19p-2 +-0x1.3f7bcefa48f28p-1 +0x1.1445c017ac5aap-6 +0x1.bda7899c88481p-1 +-0x1.854a97639dd82p-1 +0x1.5de8d1ffbb7f4p-1 +0x1.fb15328e09512p-3 +-0x1.c9dbdbab75f6cp-4 +-0x1.028ce79401086p-2 +0x1.8733ded13b63ap-1 +-0x1.245a56e256b22p-3 +0x1.06a560ecf6dbfp-5 +-0x1.0bf4a0068aafdp-1 +-0x1.b581e153f833bp-1 +-0x1.c2e7f4b0913e1p-2 +-0x1.276d42b4ab6b2p-1 +-0x1.061c5c75e2715p-4 +-0x1.32289f2b0607cp-2 +0x1.2a67e181659b6p-2 +-0x1.809258a5b0a06p-1 +-0x1.44c4e0453a59cp-2 +-0x1.4bdcc9b22cc99p-2 +0x1.faeaf43d605d4p-1 +0x1.53cd25d3a3ad5p-3 +0x1.aabe65dbd6bc4p-2 +-0x1.09a500dea9bddp-1 +-0x1.4463133207523p-3 +-0x1.e0af61321a7f2p-3 +-0x1.cc18188e176cap-2 +-0x1.3f3c5a44a5f4cp-1 +-0x1.eaede6b729abcp-5 +0x1.95010cf633536p-2 +0x1.61f82c5e03b22p-2 +0x1.53d1158b79fafp-1 +0x1.788303870786dp-1 +0x1.1881378f8a1c6p-2 +0x1.0c942521be93fp-1 +0x1.f8fd582fea04cp-1 +0x1.4a5cd671c7733p-4 +-0x1.36678832f0d9fp-3 +-0x1.37d8cc8c358e4p-1 +0x1.0b29b33a75431p-1 +-0x1.c96cf230d0a65p-1 +-0x1.01c425ca9e9dap-5 +0x1.d80d3b73ec2dbp-1 +-0x1.2c482f85b6fe9p-1 +-0x1.fb19c3062b2c9p-2 +0x1.9019532e8667ep-1 +0x1.91bb102207ffdp-2 +0x1.8f2fbd311ce1p-2 +-0x1.7b79da824a84fp-2 +-0x1.6b2689ceac726p-4 +0x1.af11260cce2dbp-2 +-0x1.c37a23a902833p-1 +0x1.8dc0093bae59p-1 +0x1.63d1c730d3e27p-1 +0x1.926eb312dc37cp-6 +0x1.235de7f7c1fd6p-1 +0x1.e42528fed0943p-2 +-0x1.572c381eca49ep-3 +0x1.0c63896149836p-3 +0x1.88a23be051993p-1 +0x1.71ac798bacfb3p-2 +0x1.acfa586ac6826p-3 +-0x1.8db6ebe7f7c4dp-3 +0x1.fa8b992374579p-4 +0x1.d12fef53f6d76p-1 +-0x1.b6ec8b28a55b9p-5 +-0x1.ba0901eeeb3ffp-1 +0x1.ddb47a9b1f0a6p-3 +0x1.73982d1c3a878p-1 +-0x1.6449613bee7aep-1 +-0x1.f50629a7ccea8p-6 +-0x1.52bfb5b0734d5p-2 +0x1.faf4ecb1ca745p-4 +0x1.a05c3770d3502p-2 +0x1.afc80b3b9d3fap-2 +-0x1.0c96d44fc9c92p-4 +-0x1.eb6171750179fp-1 +-0x1.4d7473af08898p-1 +0x1.97f4b7cd5b3f8p-2 +0x1.b431c827cf6eep-3 +-0x1.0eb48b837f07dp-2 +0x1.88649d0cee365p-2 +-0x1.fc0fd6dc01c7dp-2 +-0x1.0052d690fc256p-3 +-0x1.04dbde177abccp-1 +0x1.ece166aacd558p-5 +0x1.c9d729ffca191p-1 +0x1.df2ae1da50842p-2 +-0x1.12b503fdd48a6p-1 +-0x1.b4c8e97a7d2c8p-4 +-0x1.bbb53ef41bc54p-1 +0x1.e63fd06ab1044p-1 +0x1.ea8b02829fa68p-1 +-0x1.0d8c0c6d61ddp-1 +-0x1.4e124480e7a28p-2 +0x1.7f6a4e197766fp-2 +-0x1.37faae0f55578p-2 +0x1.b813863fa920bp-5 +-0x1.fcccf8c3e559cp-1 +0x1.d5fbd0dc8ad31p-2 +-0x1.6c946abf6ea6cp-1 +-0x1.1b352ba8af0bbp-1 +0x1.c11581b662f82p-2 +0x1.990019776616p-1 +0x1.0dc7c5e269a1dp-1 +0x1.8fddb332e738ep-1 +0x1.499c582da2381p-1 +-0x1.59c653d073515p-2 +0x1.5eab24e1d03bfp-1 +-0x1.b85a6ab8e17b3p-1 +-0x1.30a6daa38c351p-1 +-0x1.932a5503268b4p-3 +-0x1.dea320714bb8p-2 +0x1.ff3e96529748ep-5 +-0x1.4c617f5747532p-1 +-0x1.84e5a0ad07939p-1 +0x1.7abe060402b05p-2 +-0x1.c7ed9a40bb9cap-2 +0x1.19b9a88ddb3e5p-3 +0x1.ec5dcf79a942cp-1 +-0x1.719e667303d97p-1 +-0x1.9c222e047ccf5p-1 +0x1.ad9e514283006p-2 +-0x1.b91d5d5e6af16p-1 +0x1.2f1a9daf8dcd3p-1 +-0x1.fa2f55430a39fp-1 +-0x1.f21f10a38d97bp-1 +-0x1.95f9eba52e6d5p-1 +0x1.f29af78fe25afp-3 +0x1.6fb0ab96df582p-2 +-0x1.3c294e345294cp-1 +0x1.8c641d011c40bp-2 +-0x1.9ab2bb5b25bcbp-2 +-0x1.351b0eeda749p-5 +-0x1.91b3606ebc3efp-1 +0x1.6b0cfb04f8d54p-1 +0x1.387baa2fde50dp-5 +0x1.ab2eb21671a7fp-1 +-0x1.93eda96ded5a8p-1 +0x1.d085daf8b28b3p-2 +0x1.2d8229be0c4fp-2 +0x1.ac9ee37cd8368p-1 +-0x1.3c5d22b389487p-4 +-0x1.9448c4107de8cp-2 +0x1.b402d7eec5ba6p-1 +-0x1.b89d82d2203f3p-4 +-0x1.3bee35afcccdap-2 +-0x1.bb481b2005749p-4 +-0x1.a497f6bfe462cp-1 +0x1.8c0e631a8eefbp-1 +-0x1.c28ef46efc1c9p-1 +0x1.979655c0056c9p-3 +-0x1.ac4f7c4141c58p-1 +-0x1.0b9d2fb8a6a73p-1 +0x1.6dea1163641eap-2 +0x1.043b4c164286dp-1 +0x1.235683086ad17p-1 +-0x1.d35da13550a44p-3 +-0x1.755cb812af596p-1 +0x1.744130837703fp-2 +0x1.d833cd13992fap-1 +-0x1.95d77a8f762a2p-1 +0x1.fefb2ec6512b4p-2 +0x1.403c3377b2135p-1 +0x1.3dedbb7f474bep-1 +-0x1.6a9174b67702fp-1 +0x1.abcb4c0afc268p-8 +-0x1.fe3e1aae8c063p-1 +0x1.aed45e264883fp-3 +0x1.fca5b10ea86bap-2 +-0x1.5aec2b902ae63p-5 +-0x1.78b2a8628beep-1 +-0x1.2247965168f43p-3 +0x1.bdd2c28447e21p-1 +0x1.17da741a6da6bp-4 +0x1.120b4bc563793p-1 +0x1.4e1d52adae5c5p-1 +0x1.16e1effd7e79ap-2 +-0x1.01c2b65887fbap-2 +-0x1.c352eb3772fep-3 +0x1.35108e0bcfca5p-1 +-0x1.a04352625fbb8p-6 +0x1.d0d83103412dep-2 +-0x1.be71c357017d8p-1 +0x1.53b13ccc2542ap-1 +0x1.7d916a95bb413p-3 +-0x1.a281bc7d7a902p-3 +-0x1.04209635c875bp-1 +-0x1.449426743eb5ep-3 +0x1.bf3b79f08cd42p-2 +0x1.1d432ac8ac5f1p-2 +-0x1.e77d80b14fb27p-6 +-0x1.046d5df5c4e19p-1 +-0x1.d704d62ce5023p-1 +-0x1.23961777d4cddp-1 +-0x1.35ca83c7d5475p-2 +-0x1.be45caeae1874p-1 +-0x1.9839e60f05e7fp-3 +-0x1.0e269a688400ep-1 +0x1.055fce5be2f7cp-1 +-0x1.c41bb92d4f3c8p-3 +-0x1.85e71fe25220fp-2 +-0x1.76fa5bc203067p-2 +-0x1.0d2e12b95e198p-1 +0x1.38c6a93d859d5p-1 +-0x1.187b2bcc4e046p-2 +0x1.878a38a3616edp-2 +0x1.0967826603f1bp-1 +-0x1.3a3c82c1860ffp-1 +0x1.5f46ee74e5351p-2 +-0x1.8f991687d774bp-2 +0x1.4e239b39d8128p-2 +0x1.1db18b60194adp-1 +-0x1.47e9fab1fbe69p-3 +-0x1.d3de9ecf17cd6p-1 +0x1.9057d2ea15d44p-7 +0x1.426d9323e3cb9p-1 +0x1.6e8a0cf831d6p-1 +0x1.72474bb6e6f37p-6 +-0x1.2d2caaac8b76ap-1 +-0x1.ee3071e2b801p-1 +0x1.dee28ab3681f8p-2 +0x1.1b89fd873f03p-1 +-0x1.29a05169dbed5p-2 +-0x1.31163c95c0828p-2 +-0x1.d4be134fe235cp-1 +0x1.45e8470fd8a4ep-1 +-0x1.d264da345ccdbp-2 +-0x1.6c2b72ee8d29dp-2 +0x1.9872a5de2cca6p-2 +-0x1.51bd08b7f9495p-1 +0x1.514b00cbf0cf7p-1 +-0x1.e085fe73ea48ep-1 +0x1.53008f53549bfp-1 +-0x1.6934b0799c2b9p-1 +-0x1.e60096cdedb7p-1 +-0x1.7167d2f69b6e1p-1 +0x1.c3d12444ccabfp-7 +0x1.595b7ae1038d8p-1 +-0x1.4786d471d2415p-2 +0x1.60ab09a0a5c07p-3 +0x1.ab65469dd866bp-4 +-0x1.4ce38a48ac74ap-7 +0x1.4c4201f036083p-3 +0x1.edd0e6e4f454fp-1 +0x1.e82ea08cd9c54p-1 +-0x1.878eda2565c7p-6 +0x1.b8c5d04fecd91p-1 +-0x1.758052a6e63f3p-1 +0x1.6beddc9025b6ep-1 +-0x1.5d2019d1900eap-1 +-0x1.4106ea52a248cp-1 +-0x1.ed26c427a6bacp-1 +0x1.40b2acff3937bp-3 +0x1.1dc00aa8d2e12p-1 +-0x1.9a92799011d01p-1 +0x1.02bdcde50a92p-2 +0x1.23c3678149b2dp-1 +0x1.11b786df26d46p-1 +0x1.b864c86950f68p-3 +0x1.217d76f1ca7b6p-1 +0x1.d1bcb049ad128p-1 +0x1.2b141b4761a37p-3 +-0x1.62ef4fb141d9ep-2 +0x1.94ea8a1718ba4p-4 +0x1.0a74a81d8d6efp-2 +0x1.e0bdcafd21d07p-2 +-0x1.e80fbbed562e4p-2 +0x1.65ca5f662e258p-1 +0x1.0e00b52607abcp-2 +0x1.3f76022141aa5p-1 +-0x1.34ee60fc1232p-1 +-0x1.51a328eeefa73p-2 +0x1.97f7f27db3c11p-1 +0x1.b1adfd2e34a21p-1 +-0x1.5a6d864296aaep-1 +0x1.784ca8dd487f6p-1 +0x1.2d0945665f066p-2 +-0x1.594df56a6cfc4p-1 +0x1.0650bd92b1d25p-2 +0x1.a261722c795f2p-7 +0x1.a61d1fc80bb37p-3 +-0x1.afb4c89c89499p-4 +-0x1.159c2b70f92bdp-1 +0x1.d6bf199e2e279p-2 +0x1.5159ae3813851p-1 +-0x1.efc4f4ccf106ap-2 +-0x1.16670ca2fa326p-2 +0x1.20517cc0f555ap-2 +0x1.46cc935bcd6cdp-1 +0x1.ab47743c79f44p-5 +0x1.20e1a1801e982p-1 +-0x1.bc357217cf113p-1 +-0x1.c5e44797000bcp-2 +0x1.68bbd57521e47p-4 +0x1.16ba846c1599dp-1 +0x1.270e1dd5875cap-3 +-0x1.c4a8765caf6b4p-1 +-0x1.9b60e9cfc5925p-8 +0x1.ba1ce66a8d92ap-1 +0x1.2c2b5140420e4p-1 +-0x1.7e2b3a125b644p-2 +-0x1.ac19238c4d149p-3 +0x1.120eed9857a23p-2 +0x1.df96480c45f8p-3 +0x1.819cf5f42e6b6p-2 +-0x1.baf79a6ba005ap-2 +-0x1.3c652d117ddb2p-1 +-0x1.304961e6c082bp-1 +-0x1.6ee21bfb2f796p-2 +0x1.96f7edd19996ep-5 +0x1.aa7712dca393fp-1 +-0x1.779cfeed52431p-4 +0x1.a2b0025fc9e22p-1 +0x1.e15e9dc380461p-1 +0x1.c59179cbef3f3p-1 +-0x1.eab4708675f25p-1 +0x1.564d5a1bf176p-1 +-0x1.068dde50bfec5p-3 +0x1.11b2977df6197p-1 +0x1.c54947df5338p-3 +0x1.08008df908497p-3 +0x1.ccad7b6656d49p-4 +0x1.0d9a74aa17489p-2 +0x1.b121854f6e447p-3 +0x1.9a0be422d60a7p-1 +-0x1.58ffc7edf5a97p-4 +0x1.802e2907883d1p-2 +0x1.40d8d639fa998p-3 +-0x1.97040897f1d8ep-1 +-0x1.930bcfe8e37f9p-1 +-0x1.dc2a2fd4d417bp-3 +-0x1.a5109839a867ep-3 +-0x1.bca5e9b583fbcp-4 +-0x1.4c97f14bd3895p-3 +0x1.9ec0468e15b24p-2 +-0x1.bf8f7bc830b1bp-2 +0x1.f27b9d151dd0ap-2 +-0x1.26f5da58a105cp-2 +-0x1.bf469a1cfac47p-6 +0x1.9105e07e5365bp-1 +-0x1.1069e97f84c28p-1 +0x1.925da592a3feap-4 +-0x1.bf3118d58b9c2p-1 +-0x1.21704cba25979p-1 +-0x1.128c481f78577p-3 +0x1.df6d9d4fe9635p-2 +-0x1.1d8da2a4f4214p-1 +-0x1.898b68607c4b3p-1 +0x1.4f261b15a15bfp-1 +0x1.e516ae146ee2ap-5 +0x1.00755c8db875p-2 +-0x1.f4599013a50b6p-2 +0x1.2f7f5aa833b28p-2 +-0x1.ea5f191b8c16ep-1 +-0x1.d8ac8cb0dced8p-6 +-0x1.84a67c42a27fdp-1 +0x1.dcd747b8856a3p-1 +-0x1.32bc9f4f129e7p-4 +0x1.a9a2796292334p-4 +-0x1.9d5db794e6d32p-1 +0x1.e345807654ed1p-1 +0x1.e8d24ead76c7ap-6 +-0x1.63966a2386c2ap-2 +-0x1.79e9cbc31f78dp-2 +-0x1.650481d93daa9p-1 +0x1.6a2b6ef383b4ep-5 +0x1.206bb80e03038p-1 +-0x1.d6fe3419a08acp-2 +0x1.2bcbbbcf34da6p-1 +0x1.7eaad638a6deap-1 +-0x1.fb997e40e0cccp-1 +0x1.180e499eaf229p-4 +-0x1.7895abd150b61p-2 +0x1.c4b296298081cp-1 +0x1.de5a8c528d058p-1 +0x1.cee87fd226fdcp-2 +0x1.560695169afc6p-3 +-0x1.eae7c8d0694a4p-2 +0x1.ee5de5862f945p-1 +-0x1.69d7d6e4fe65ap-4 +-0x1.1ec2ca33417d5p-4 +-0x1.b7d8d4959d7b9p-2 +0x1.e2a8b23ad294dp-1 +0x1.576682c2b5923p-1 +-0x1.21dda576606d2p-3 +0x1.d396d8df887cbp-4 +-0x1.0d8291cce96a8p-2 +0x1.7ed8239e07d2dp-9 +-0x1.91626d7e29e18p-1 +0x1.76d8afb648166p-1 +0x1.e398839ed47f6p-1 +0x1.a135f5afec45p-1 +-0x1.3d069d81c874ep-1 +0x1.2c11c3e1b3744p-1 +0x1.7900ded1edff4p-1 +0x1.0ae9e210973c6p-4 +-0x1.13b89305557f1p-1 +-0x1.5cb68766ed717p-7 +0x1.91ec847d63b25p-2 +0x1.694dde0ad6bebp-6 +-0x1.398eef0eaede6p-1 +-0x1.8886ddccd5ec2p-1 +-0x1.eca37ae64b3c6p-6 +-0x1.5aab5c02b9cf5p-7 +-0x1.013773ce6f211p-1 +0x1.8bcb3f3aaa274p-1 +0x1.b6c0da9e6ac37p-2 +0x1.db71f0b468d43p-3 +0x1.f802eb1985ed5p-1 +-0x1.a89dd1cc92f9ap-1 +0x1.a65da10f74608p-3 +-0x1.cc22cc8e3e80cp-8 +0x1.fd110759087c3p-5 +0x1.7eb01ccb545d8p-2 +0x1.cb91d6161a51ep-3 +0x1.e7fa4b4e7fcc9p-1 +0x1.38e93ed129131p-3 +0x1.d0d9732d78fbbp-3 +-0x1.c6686610ad37cp-2 +0x1.c626947ec012bp-1 +-0x1.ac41f4ce39c7ap-4 +0x1.177ee4b13fb6ap-1 +-0x1.4fadb547da8e4p-2 +-0x1.d9a11a46224b2p-5 +-0x1.6a8e739fb3a4p-1 +0x1.8793a78c7cb82p-4 +0x1.69242805bcbe8p-2 +-0x1.eb4540f1f5eedp-1 +-0x1.446fbe9c4ea41p-2 +-0x1.05c5eb9bb8931p-3 +-0x1.9b0ebfbfb5311p-2 +0x1.f6acbea5dfc26p-1 +-0x1.3479a16cc71ep-1 +-0x1.21730add38fa1p-3 +0x1.5acbb4fe0acf8p-6 +-0x1.8fddce373bef5p-2 +0x1.1d3cb04600b5ap-1 +-0x1.da389133e1e96p-1 +0x1.021e30a02d1dcp-2 +-0x1.4668691973df6p-4 +0x1.0673ab0879bfdp-3 +-0x1.db8681ae24de3p-3 +0x1.deb208904bbe3p-3 +0x1.357605a5cafffp-4 +-0x1.a56c97660374cp-6 +0x1.b5f89d3a2fc2p-1 +-0x1.8c17cad70974ep-3 +-0x1.65d8d8d9678ddp-3 +0x1.9222eb7c162eap-3 +0x1.2e4afb607803bp-3 +0x1.6b705b41a4117p-1 +0x1.bbf77d317f81cp-6 +-0x1.8adbc6ec0fd96p-2 +0x1.433f696c13617p-2 +-0x1.d6ae5739bf4bp-1 +0x1.67bc667a7db01p-2 +-0x1.242ca24a423b7p-1 +0x1.f1131e9a7c0cfp-1 +0x1.aed728ac5e234p-1 +0x1.daa8d5b6b14c7p-8 +0x1.b9a9b37a3ad9ap-5 +0x1.d80ae1461e16ep-1 +0x1.4d5611cbfb79p-2 +-0x1.c7440c1db0b09p-1 +0x1.575c7f0d01ee2p-1 +0x1.ab0997138289ep-3 +0x1.1ab0619a7c401p-2 +0x1.2e36407ef693cp-3 +-0x1.1a0c56c614439p-1 +0x1.4d4cd2974c134p-3 +0x1.6802fa3c0e018p-1 +0x1.4574cf8a803d3p-1 +-0x1.a79d784c836dp-2 +0x1.00924b1a6c7cdp-1 +-0x1.b1bce37e4d873p-1 +-0x1.2a255ec0f20d7p-2 +0x1.8daa09b90a35fp-2 +0x1.1d2de0de93383p-1 +-0x1.ee847cf4f7ad4p-1 +0x1.966612514d812p-2 +-0x1.677cc3a6bd936p-4 +0x1.ab8bb45c95492p-5 +0x1.52db69ddb97b5p-1 +0x1.61c880bdc2a6bp-2 +-0x1.e251287016886p-1 +0x1.dbc62d9f046c1p-3 +0x1.8b0d0a8967dddp-1 +0x1.6d10f4ced4362p-1 +-0x1.a572bc2e7ace8p-2 +0x1.46902ef952767p-4 +0x1.9f2472dcc1a9dp-3 +-0x1.58301726d8bfbp-2 +0x1.2e16e9bfbc556p-3 +-0x1.eb2c5d765dc08p-1 +-0x1.5b97fa1b0a2c1p-1 +0x1.e09b712fb03bbp-2 +0x1.8508a6b21b3e5p-3 +-0x1.87b252848a16dp-9 +0x1.36c3f35773088p-1 +-0x1.20a06eb44b6ffp-4 +-0x1.0314850dc2b0bp-2 +0x1.ddfb9779da195p-2 +0x1.1cb62b71e2be6p-2 +-0x1.3bac38565591ep-2 +-0x1.a150a7ead7728p-3 +0x1.08933dfe301e3p-1 +-0x1.77306970f201ep-1 +-0x1.2a7a5cebb46f2p-2 +0x1.4a0fbf76e9c9ap-1 +0x1.71facd60c8a7ep-4 +0x1.f651dcc15b0e9p-1 +0x1.4b9d9549629c7p-1 +0x1.615c778895c17p-1 +0x1.5d41ffc6efa9cp-3 +-0x1.44fae2d25af5dp-1 +0x1.88e8ee4d82bb3p-1 +-0x1.171285eb593ddp-7 +0x1.4ee89cd965bbbp-3 diff --git a/sysdeps/x86_64/fpu/libmvec-acosf-inputs b/sysdeps/x86_64/fpu/libmvec-acosf-inputs new file mode 100644 index 0000000000..e1a56943d8 --- /dev/null +++ b/sysdeps/x86_64/fpu/libmvec-acosf-inputs @@ -0,0 +1,4100 @@ +## args: float +## ret: float +## includes: math.h +# Normally distributed random inputs in range (-1, 1), mean = 0, standard deviation = 1 +-0x1.110038p-2 +-0x1.1f03acp-1 +-0x1.5838c4p-1 +-0x1.4da856p-1 +-0x1.c8504ep-2 +-0x1.ea09e2p-1 +0x1.7280a4p-3 +0x1.ab9c04p-3 +-0x1.b43cdap-3 +-0x1.6e4446p-1 +-0x1.da8bf8p-1 +-0x1.0908bap-3 +-0x1.3227eep-5 +-0x1.c10dd2p-2 +-0x1.2bbc6p-2 +-0x1.b20d6p-8 +0x1.1ee5aap-1 +-0x1.bae564p-2 +-0x1.044a9ap-1 +-0x1.8d7e8cp-3 +0x1.a43154p-1 +0x1.b3fd56p-1 +0x1.d6772ap-1 +0x1.008284p-2 +0x1.1a0f2cp-1 +0x1.6a3b9p-2 +0x1.d6f502p-2 +0x1.6fbe4cp-2 +-0x1.65603p-8 +-0x1.761798p-2 +0x1.7fbadap-5 +0x1.cf4f82p-2 +-0x1.cdac5ap-2 +0x1.6846p-3 +-0x1.3c18ep-4 +0x1.e26402p-1 +-0x1.dae846p-2 +0x1.38ee24p-1 +-0x1.1ba2eap-7 +-0x1.e846c4p-1 +0x1.5ad90ep-1 +0x1.635b92p-1 +0x1.407264p-1 +0x1.925072p-1 +0x1.f11f74p-1 +0x1.335462p-2 +0x1.36fb0ep-1 +0x1.29598ep-1 +0x1.99eacep-3 +0x1.9be854p-3 +0x1.d735c6p-5 +0x1.a1e876p-1 +0x1.1e015ap-9 +0x1.cb814cp-1 +0x1.ef5984p-3 +0x1.4511a4p-3 +0x1.c3236cp-3 +-0x1.b5663ap-5 +0x1.f9775cp-1 +-0x1.fbe004p-1 +0x1.ec4068p-4 +0x1.0af7c2p-1 +-0x1.18e6b8p-1 +0x1.2fc06ap-2 +-0x1.0df60cp-1 +-0x1.fd3ebp-1 +-0x1.f9beaap-4 +-0x1.a8a18cp-4 +0x1.1e32ep-1 +0x1.8035aep-4 +0x1.6e5336p-1 +-0x1.6861d6p-1 +-0x1.ead954p-2 +0x1.2fd21p-1 +0x1.844b6ap-1 +-0x1.be60b6p-2 +0x1.6afc44p-1 +0x1.7db1b8p-3 +-0x1.890248p-3 +-0x1.3d2202p-2 +-0x1.e94e3ep-8 +-0x1.cddf66p-1 +-0x1.f5d266p-1 +-0x1.ea04b4p-4 +0x1.29c338p-5 +-0x1.c2ee5ep-1 +0x1.97aca2p-2 +0x1.6abe8ep-1 +0x1.df29a8p-1 +0x1.21ccb2p-3 +0x1.9c79dap-1 +-0x1.253082p-4 +-0x1.a40112p-2 +-0x1.77943p-1 +0x1.77052ap-2 +-0x1.2b1874p-4 +-0x1.f6f974p-1 +-0x1.0d409ap-1 +-0x1.4613aap-4 +0x1.fb9106p-3 +-0x1.16fa4ap-2 +0x1.2c57f4p-1 +0x1.130f2ep-1 +-0x1.8b8cb4p-1 +-0x1.a9f64ap-1 +0x1.88e06cp-2 +0x1.750ec6p-1 +-0x1.0dd8acp-1 +-0x1.99309ep-2 +-0x1.08b1bcp-2 +0x1.3d9e18p-4 +0x1.0a5b3ep-2 +0x1.a170f6p-2 +-0x1.c5393p-2 +-0x1.8f8d42p-1 +-0x1.f49e6ep-3 +-0x1.7a129ep-8 +-0x1.1ae76cp-1 +0x1.087a5ap-4 +0x1.6aff86p-1 +-0x1.62fa8ap-2 +0x1.b66d4cp-2 +0x1.b32cf8p-2 +-0x1.f16faap-2 +-0x1.ac60dap-1 +-0x1.fbdc48p-3 +0x1.ce8d8ap-2 +-0x1.f0575ep-2 +0x1.e23bcp-2 +0x1.cf7eecp-2 +0x1.38160ap-1 +-0x1.261ffp-1 +0x1.45cf88p-5 +-0x1.d895ecp-1 +0x1.3c7e1p-1 +-0x1.bb2ef4p-1 +-0x1.46be0cp-3 +0x1.3d2252p-2 +0x1.6bb15cp-1 +-0x1.1ace06p-2 +-0x1.81d19cp-4 +0x1.3f8ac8p-2 +-0x1.e6965cp-1 +-0x1.b57d14p-1 +-0x1.11d16cp-3 +-0x1.8f5e48p-2 +0x1.867814p-2 +-0x1.d28fecp-2 +0x1.f2d6b2p-4 +-0x1.4314fcp-3 +-0x1.3d2ddcp-1 +-0x1.91560cp-3 +-0x1.20789ap-1 +-0x1.dc4acap-3 +0x1.ab49a6p-2 +-0x1.eb1308p-2 +-0x1.e7106cp-3 +0x1.696b3cp-1 +0x1.ce3576p-1 +-0x1.8652cep-2 +-0x1.548a94p-2 +-0x1.f25d36p-3 +-0x1.d71922p-2 +0x1.83b4ap-1 +-0x1.1f373ep-3 +0x1.13306cp-2 +0x1.61510cp-5 +-0x1.b37f3cp-3 +0x1.59e1b2p-1 +0x1.4f8ea8p-1 +-0x1.1c519ep-3 +0x1.3c58fcp-1 +0x1.c0e9d6p-1 +-0x1.459244p-1 +0x1.2cfb26p-6 +0x1.853c9ap-3 +-0x1.00b1dap-5 +0x1.61523p-1 +-0x1.0bf55p-1 +0x1.1bbe24p-1 +0x1.b81586p-1 +0x1.279ef2p-2 +-0x1.90195ap-2 +0x1.cc7c52p-6 +-0x1.548ec8p-2 +0x1.bff548p-1 +0x1.cbfa06p-2 +0x1.501f9p-1 +-0x1.3d802ap-2 +-0x1.11859p-1 +0x1.2aa162p-2 +0x1.e3c222p-1 +0x1.9d3e2cp-1 +-0x1.2e2186p-3 +0x1.05d966p-1 +-0x1.e5721p-2 +-0x1.769eb4p-1 +0x1.964434p-2 +0x1.3a317p-3 +0x1.b3009ap-3 +-0x1.ed8924p-3 +0x1.4ef3p-2 +0x1.d4a296p-1 +-0x1.8543dcp-2 +0x1.39c3eep-4 +-0x1.9d5944p-2 +0x1.19f114p-1 +-0x1.aced1p-1 +0x1.65e234p-1 +0x1.81eea2p-1 +-0x1.e09ae8p-2 +0x1.88cff6p-2 +-0x1.968f24p-1 +0x1.b0dc52p-2 +-0x1.949d08p-3 +-0x1.6216dep-4 +0x1.02a4c6p-8 +0x1.9d0d5ap-1 +-0x1.53b0ap-2 +-0x1.b239cep-2 +-0x1.71a606p-4 +0x1.378dbep-2 +-0x1.28a536p-2 +-0x1.d4008cp-1 +-0x1.be0504p-5 +-0x1.5dabf2p-6 +-0x1.e6a4d4p-1 +0x1.f59118p-1 +0x1.942c72p-2 +-0x1.73fc06p-2 +-0x1.918594p-2 +-0x1.b7fb2cp-2 +-0x1.4beef8p-2 +-0x1.9ce8c8p-1 +-0x1.737e66p-3 +0x1.e33526p-1 +-0x1.47b07cp-1 +-0x1.a15cdap-3 +-0x1.ac6db2p-2 +0x1.bb99aep-2 +-0x1.299312p-3 +0x1.a0ae02p-2 +0x1.6c8868p-1 +0x1.b699a8p-1 +0x1.5aac3ap-1 +-0x1.2168cep-3 +0x1.2e485ap-4 +0x1.f078a2p-1 +-0x1.7304dcp-1 +0x1.3c0ebp-2 +-0x1.af841cp-3 +-0x1.e4bf2cp-2 +0x1.971374p-6 +0x1.7b323cp-2 +-0x1.684ab2p-3 +0x1.e4b53p-2 +-0x1.afe726p-2 +0x1.d0066p-4 +0x1.826d14p-1 +-0x1.3253d2p-1 +-0x1.7e5a94p-1 +-0x1.ba8b24p-2 +-0x1.dce1bcp-5 +-0x1.e1ee3cp-1 +0x1.8a59e6p-1 +0x1.72b31ap-2 +-0x1.f0a79p-2 +-0x1.ec9f64p-2 +-0x1.ef4d44p-1 +-0x1.45030cp-2 +0x1.a2a5p-2 +0x1.f291dp-2 +0x1.0c5e3ap-1 +0x1.0b13ecp-2 +0x1.5b2206p-1 +-0x1.c752f2p-3 +0x1.3d151p-1 +0x1.17da3p-1 +-0x1.266a0ap-1 +0x1.f81c1p-1 +-0x1.347da4p-2 +-0x1.39b5p-4 +0x1.b9a576p-1 +-0x1.721816p-1 +-0x1.668932p-2 +-0x1.863bfap-2 +0x1.e55974p-1 +0x1.11702p-3 +-0x1.5340bap-1 +0x1.b42dp-2 +0x1.a9ca3ap-1 +-0x1.5506bcp-2 +0x1.7d3bacp-3 +0x1.ba237ep-2 +-0x1.9d3fecp-1 +0x1.04414ep-1 +-0x1.1ab066p-1 +0x1.bb680ap-1 +-0x1.e284fp-1 +-0x1.bcfc0cp-4 +0x1.010d86p-2 +-0x1.7ff508p-2 +-0x1.714b7ap-1 +0x1.c81f22p-1 +0x1.acdd64p-2 +-0x1.8e537cp-2 +-0x1.28ed7p-3 +0x1.16d3d6p-1 +0x1.36a936p-1 +0x1.b548aep-1 +-0x1.62ef42p-2 +0x1.ac459ep-4 +-0x1.639dbcp-3 +0x1.da644cp-1 +-0x1.e0025p-2 +0x1.5ce9fep-1 +0x1.caf31p-2 +-0x1.ad2182p-2 +0x1.03266ap-1 +0x1.ff0c92p-3 +-0x1.2ee55p-1 +0x1.ec9c2cp-3 +0x1.355232p-7 +-0x1.d3869p-1 +-0x1.593af2p-2 +-0x1.6fcb36p-1 +-0x1.dd79d8p-1 +0x1.55402ep-6 +-0x1.7758f8p-1 +-0x1.129ed6p-1 +0x1.47b15cp-2 +0x1.c37c38p-4 +-0x1.55e59cp-1 +0x1.15ab24p-2 +0x1.0e451p-3 +0x1.8cb4a4p-1 +0x1.c4681ap-3 +-0x1.189c5ep-1 +0x1.12c706p-1 +0x1.568e86p-6 +-0x1.e01c8ap-1 +0x1.60c16ep-3 +0x1.821b66p-2 +0x1.49d4a4p-4 +-0x1.9536fep-3 +-0x1.e45f7p-1 +0x1.f42e02p-5 +-0x1.1447c8p-2 +-0x1.3814cap-1 +-0x1.b768cp-1 +-0x1.db96f4p-1 +0x1.b7e8d8p-1 +0x1.31f092p-1 +-0x1.379038p-1 +0x1.e8d062p-1 +-0x1.7e58d6p-2 +0x1.cc9f2ap-1 +-0x1.c4cbe4p-2 +0x1.20846ap-1 +-0x1.8b5948p-3 +0x1.8a8b2p-2 +0x1.ff5246p-3 +-0x1.e5887p-1 +-0x1.b143aap-2 +-0x1.838bc6p-2 +0x1.df434cp-3 +0x1.254968p-3 +0x1.0efb16p-1 +0x1.4d5cbap-1 +-0x1.b1937cp-3 +0x1.cc6ca6p-1 +0x1.4a1daep-3 +0x1.55b3e6p-5 +-0x1.1aa44ep-1 +-0x1.b0bd84p-1 +-0x1.f054c2p-5 +0x1.d0a074p-3 +0x1.41625cp-9 +-0x1.40f226p-1 +0x1.68f226p-2 +-0x1.7b88dp-1 +0x1.988104p-2 +-0x1.d7dcb6p-8 +-0x1.047d08p-1 +0x1.99fc74p-2 +-0x1.1cc8eap-2 +-0x1.3f006ep-1 +0x1.61649ap-3 +-0x1.14f85p-1 +0x1.152222p-3 +-0x1.dda47p-2 +-0x1.ebd99ep-2 +0x1.fd966p-1 +0x1.109c0ap-2 +0x1.08c908p-2 +-0x1.0e2328p-1 +-0x1.b9f792p-2 +-0x1.0db7cep-2 +-0x1.5b2f9p-1 +-0x1.31bd7ap-1 +0x1.698de6p-1 +0x1.5916dcp-1 +0x1.94f61cp-5 +-0x1.8478f8p-1 +0x1.85f2a2p-3 +0x1.6ed2a8p-3 +-0x1.88231ep-4 +0x1.3b4588p-1 +0x1.c568a6p-1 +0x1.3bcd8cp-1 +0x1.d1e33p-1 +-0x1.6a87ecp-1 +-0x1.60d4fcp-6 +-0x1.f4fc22p-1 +0x1.f9a25p-3 +-0x1.ab8ce8p-3 +0x1.99274ep-3 +0x1.6ee102p-2 +0x1.865bcep-1 +-0x1.036fe8p-1 +0x1.d3303ap-4 +0x1.681636p-1 +0x1.f67006p-1 +0x1.9b7f32p-1 +-0x1.fea614p-6 +-0x1.adf08p-1 +-0x1.c6ff78p-1 +-0x1.66360cp-1 +0x1.2d188p-1 +-0x1.a19828p-1 +0x1.3a13ap-1 +-0x1.780cfp-2 +0x1.6128b2p-1 +0x1.bf9da8p-2 +0x1.0ae6ecp-1 +-0x1.51968p-2 +0x1.075982p-2 +0x1.178caep-5 +0x1.6b3714p-3 +0x1.9b39f2p-1 +-0x1.d1b80ep-1 +-0x1.bf7dep-1 +0x1.ea5ec2p-1 +-0x1.8ae87ap-1 +0x1.0c185p-1 +0x1.6455c2p-2 +-0x1.b4951cp-2 +0x1.220f6p-1 +0x1.09e96p-1 +-0x1.b1165ap-1 +-0x1.26eaa4p-1 +-0x1.9657b2p-2 +0x1.25d18p-1 +0x1.17f54cp-2 +-0x1.3ebe74p-1 +-0x1.2865dep-3 +0x1.e5f60ep-5 +0x1.074894p-1 +-0x1.77bcacp-2 +-0x1.8ec86ap-4 +-0x1.f72738p-3 +0x1.219fdep-2 +0x1.5753bcp-3 +-0x1.5c513cp-8 +0x1.54c0aap-1 +0x1.0aefb2p-1 +-0x1.4f42f4p-1 +0x1.7d3d04p-2 +0x1.52dc56p-1 +0x1.152d96p-1 +-0x1.b93628p-1 +0x1.6f1702p-2 +0x1.247af4p-1 +-0x1.82e73ep-2 +0x1.12f232p-2 +0x1.2d4502p-4 +0x1.ef4226p-2 +0x1.f80584p-2 +0x1.f2ed86p-1 +-0x1.ec1494p-3 +0x1.10f4e2p-2 +-0x1.84c3d4p-2 +0x1.6536d4p-1 +0x1.838a1ap-7 +0x1.32d80ep-2 +-0x1.9c2688p-1 +-0x1.307612p-2 +-0x1.189ae6p-2 +0x1.7dabb8p-3 +-0x1.46b15ep-1 +0x1.586a8cp-2 +-0x1.614556p-1 +-0x1.9271dcp-4 +-0x1.34682p-4 +0x1.c4afep-1 +-0x1.94f576p-2 +0x1.3e406ep-2 +-0x1.e5bd2p-1 +-0x1.4826dap-1 +-0x1.13ce4p-4 +-0x1.40cd7ep-9 +-0x1.19a972p-2 +0x1.dda92ap-1 +0x1.84f46ap-2 +-0x1.727f2cp-2 +-0x1.b9a04p-1 +-0x1.5b54a8p-3 +-0x1.a81c72p-2 +0x1.93503p-1 +0x1.8103dcp-3 +-0x1.9c5866p-1 +-0x1.1a2686p-1 +-0x1.3ba3bep-1 +0x1.00cacap-4 +0x1.6e38c8p-2 +-0x1.11bd08p-1 +-0x1.a112b6p-1 +0x1.8fed92p-3 +-0x1.0cae8cp-1 +-0x1.615026p-1 +0x1.dc9002p-2 +0x1.7f0cfp-2 +-0x1.452b5cp-2 +0x1.882dd6p-1 +0x1.2e61fp-4 +0x1.80f26ep-5 +-0x1.59db16p-2 +-0x1.e10c4p-2 +-0x1.62805p-1 +0x1.f3e4c6p-1 +-0x1.da90ccp-2 +-0x1.2ce42ap-2 +-0x1.19b04ap-3 +0x1.4bdcap-2 +-0x1.b4552p-1 +-0x1.c3e7bp-1 +-0x1.851b7ap-2 +-0x1.3949p-4 +-0x1.c0df64p-1 +0x1.b57efp-1 +0x1.6e593ep-1 +-0x1.b3b2e6p-1 +0x1.20b848p-3 +-0x1.e40dcp-2 +-0x1.85c872p-3 +0x1.daba7p-1 +-0x1.1c90b6p-1 +-0x1.0cee4cp-3 +0x1.9d18dap-2 +0x1.24a594p-2 +-0x1.138608p-1 +-0x1.4f44bp-3 +0x1.ce504cp-1 +-0x1.096d4p-1 +0x1.58e5a8p-1 +-0x1.c0f158p-1 +0x1.7bec5ap-1 +0x1.acf446p-3 +-0x1.081e4cp-1 +-0x1.af18d2p-4 +-0x1.816382p-2 +0x1.cada86p-1 +-0x1.857e76p-3 +-0x1.e6e3dep-1 +-0x1.e91d1ap-1 +0x1.8fdd5ap-2 +0x1.4b6786p-1 +-0x1.b9fc68p-1 +-0x1.47c5e4p-1 +-0x1.79047ap-3 +0x1.2acbeep-3 +-0x1.100504p-1 +-0x1.98ba1ap-2 +-0x1.33782ap-2 +0x1.a805cp-2 +-0x1.6baefcp-1 +-0x1.21c30ap-1 +0x1.62072ap-6 +-0x1.39b198p-1 +0x1.7f04c2p-2 +-0x1.39f94cp-1 +0x1.3ddefp-5 +-0x1.1ee2cep-5 +-0x1.6899a6p-1 +0x1.dc1aa4p-3 +-0x1.b601c4p-3 +0x1.a84624p-2 +-0x1.33c518p-1 +0x1.a67986p-1 +-0x1.6077f6p-1 +-0x1.16a546p-1 +-0x1.5e37dep-3 +0x1.cdd5ap-2 +-0x1.bfefecp-1 +-0x1.618704p-1 +-0x1.17cefcp-2 +-0x1.4c77ep-1 +0x1.6f3eecp-3 +-0x1.52b944p-2 +-0x1.5cc46ep-3 +-0x1.208c44p-1 +0x1.81c26ep-2 +-0x1.a20602p-1 +0x1.17946ap-4 +0x1.ebae7ap-2 +0x1.1156cep-2 +-0x1.8f8276p-1 +0x1.1ddf12p-2 +0x1.e2158ap-2 +-0x1.daaedp-1 +0x1.f60184p-3 +0x1.73047ap-4 +-0x1.1b087p-2 +-0x1.8030cp-2 +-0x1.1eaf48p-2 +0x1.5f4fcep-1 +-0x1.07f92ep-2 +0x1.8976cp-1 +0x1.97525ep-2 +0x1.22d4d4p-1 +-0x1.39b1fp-1 +0x1.53b1b6p-1 +-0x1.0fbae4p-1 +-0x1.fbd592p-1 +-0x1.2bcc98p-2 +-0x1.74dc0cp-2 +-0x1.ff7f94p-2 +-0x1.8c8dbp-2 +0x1.2e4de6p-1 +0x1.d16f6p-1 +0x1.58f0dep-3 +0x1.0e3bdap-3 +-0x1.c56b26p-2 +0x1.7131b2p-1 +-0x1.64f178p-1 +0x1.23e878p-1 +-0x1.aec4fap-3 +-0x1.88ad44p-3 +-0x1.ce6f16p-1 +0x1.2220e8p-3 +0x1.5eedcp-2 +-0x1.e5c616p-3 +-0x1.dd8294p-1 +-0x1.29bfc2p-5 +0x1.5fafe6p-1 +-0x1.22b358p-1 +0x1.6651c6p-7 +0x1.e17a66p-1 +0x1.d3c68cp-2 +-0x1.56483ep-4 +0x1.f538f4p-3 +-0x1.d04bfcp-4 +-0x1.3883f8p-2 +0x1.c91f38p-3 +0x1.84bc46p-4 +-0x1.fb297ap-1 +0x1.f4b9e2p-4 +0x1.1f839cp-3 +0x1.796b9p-4 +0x1.632f42p-5 +-0x1.8e6564p-3 +-0x1.283e2cp-5 +-0x1.675788p-3 +0x1.013196p-1 +0x1.cd2e9ap-5 +0x1.bbe776p-1 +-0x1.01f518p-1 +-0x1.8fc528p-1 +0x1.7e09d6p-1 +0x1.b3ec3ap-4 +-0x1.982caep-1 +0x1.68e118p-1 +0x1.428b72p-1 +-0x1.d2f63ap-3 +-0x1.d183a6p-4 +-0x1.549fc2p-2 +-0x1.d3ba94p-1 +-0x1.54198cp-7 +0x1.3010fp-3 +-0x1.607ea2p-6 +-0x1.85076cp-1 +0x1.10b0cap-1 +0x1.29b29ap-1 +-0x1.84dcdcp-4 +0x1.f93c4cp-1 +0x1.efae6ap-1 +-0x1.904df8p-4 +-0x1.a7399ep-5 +-0x1.3469c8p-7 +0x1.b1cb36p-2 +0x1.0c8066p-2 +0x1.53f73p-1 +-0x1.863f6p-2 +-0x1.270594p-2 +0x1.b3360ap-1 +-0x1.53f3fap-3 +0x1.2acbfap-2 +-0x1.8d57dep-3 +-0x1.83f7fap-1 +-0x1.c4a5e4p-2 +0x1.f78858p-1 +-0x1.0d62b4p-5 +-0x1.ca6d4p-1 +-0x1.f53176p-3 +0x1.89261ep-3 +-0x1.b9509ap-2 +-0x1.d4f5eap-2 +-0x1.02511ap-1 +-0x1.cb4adcp-4 +0x1.761ab8p-3 +0x1.a95894p-11 +-0x1.5f79acp-2 +-0x1.8ce9p-1 +-0x1.a5d98p-2 +0x1.6bf1cep-3 +-0x1.242a94p-3 +-0x1.06b2a8p-1 +-0x1.11ed7ep-2 +-0x1.2ce93p-2 +0x1.4d78bcp-2 +0x1.cca3dp-1 +0x1.0efcb8p-1 +0x1.19ac58p-1 +0x1.c7101cp-2 +-0x1.84c914p-2 +-0x1.81cc4ap-11 +-0x1.8c1b0ap-2 +-0x1.454e04p-4 +-0x1.203ea8p-5 +0x1.0b63p-1 +0x1.0a3696p-2 +0x1.b69cbep-5 +0x1.e4a2ap-2 +-0x1.fc1de8p-4 +0x1.9c5f0cp-1 +-0x1.c662e4p-3 +0x1.cb775ap-2 +-0x1.61d9a4p-2 +-0x1.412e52p-2 +-0x1.6b1d72p-4 +0x1.3617fap-1 +0x1.fa2252p-1 +-0x1.8d1c9ep-1 +-0x1.b34548p-1 +0x1.b4c704p-1 +-0x1.5975dp-2 +0x1.689c1p-4 +-0x1.e322c8p-2 +-0x1.11322ep-1 +-0x1.45a284p-5 +0x1.958df2p-1 +0x1.199eccp-4 +0x1.61fedap-2 +0x1.2dbc58p-1 +-0x1.4b524ep-3 +-0x1.321ac4p-6 +0x1.7e8344p-3 +-0x1.ba9872p-1 +0x1.da35d8p-1 +-0x1.3a327ep-4 +-0x1.7050bep-2 +0x1.212d8p-1 +-0x1.c0bdc4p-1 +0x1.1695dp-2 +0x1.0454b4p-1 +0x1.4ccceap-2 +-0x1.1db5fap-4 +-0x1.2510e2p-1 +0x1.4f6fe8p-1 +-0x1.d20a7ap-1 +-0x1.99dd6p-2 +0x1.e5340cp-1 +-0x1.273608p-2 +0x1.692872p-3 +0x1.f3716ap-1 +-0x1.11c75ep-2 +0x1.2d817ap-6 +-0x1.16f81ep-1 +-0x1.1d377ap-1 +0x1.f17c08p-1 +-0x1.ab3f92p-1 +0x1.74ea3p-2 +0x1.aecb4ep-3 +0x1.afa7d6p-1 +0x1.e4688ep-2 +0x1.a5c71p-1 +-0x1.27cf3cp-2 +0x1.445e42p-2 +-0x1.d98d84p-3 +-0x1.9dcba4p-2 +0x1.004326p-1 +0x1.8bedb6p-1 +0x1.d525c8p-1 +-0x1.cf0b1p-1 +0x1.3a6ab8p-1 +0x1.129a34p-2 +0x1.577f4cp-1 +0x1.1631bap-4 +-0x1.26ea1ep-1 +-0x1.b9372ap-2 +0x1.4eed1ap-1 +0x1.d4f66cp-7 +0x1.ab2282p-1 +-0x1.9a3fap-1 +0x1.fa2aa4p-4 +0x1.49b418p-1 +-0x1.72778cp-2 +-0x1.c049b6p-6 +-0x1.fec492p-2 +-0x1.7f3bf4p-2 +-0x1.3821ep-1 +0x1.e44732p-3 +0x1.be2fp-2 +-0x1.b38e32p-2 +0x1.37d12ep-1 +0x1.59cbe8p-2 +0x1.16769cp-1 +-0x1.85f9dcp-1 +-0x1.da9c68p-1 +0x1.a17e4ap-6 +0x1.72945ep-1 +0x1.a01a6ep-1 +0x1.b254bp-4 +0x1.e48b9ap-1 +0x1.d225c2p-3 +0x1.21c166p-2 +0x1.235af8p-1 +-0x1.1b58bap-1 +-0x1.58b5e6p-2 +-0x1.73b8d4p-6 +-0x1.bab2f4p-1 +0x1.ec3f2cp-2 +-0x1.8305ccp-2 +-0x1.2a58cp-2 +0x1.b69e0ap-2 +0x1.c1c852p-2 +-0x1.32d97cp-2 +0x1.5c66fp-4 +-0x1.e6885ep-1 +0x1.cb287ep-1 +0x1.8cbafcp-1 +0x1.afd89cp-3 +-0x1.29809ep-1 +0x1.5f3cc8p-1 +0x1.a88dc2p-2 +0x1.207bc6p-3 +-0x1.fe6d08p-1 +0x1.1a6974p-1 +0x1.d70e4ap-1 +0x1.8af8aap-1 +0x1.aa1fa2p-1 +0x1.8aaa1p-1 +-0x1.749506p-1 +-0x1.a2358ep-2 +-0x1.61c668p-5 +0x1.a74e22p-2 +-0x1.25ccbap-1 +-0x1.8303ccp-1 +0x1.7d3ed6p-1 +-0x1.e87ddap-1 +-0x1.9ed7a2p-1 +-0x1.df427ap-1 +0x1.7a6108p-1 +-0x1.cd544cp-2 +-0x1.f6c96ap-2 +-0x1.a9e902p-4 +-0x1.8301f6p-1 +0x1.14ef6p-2 +-0x1.0a88cp-1 +0x1.a4af84p-5 +0x1.bc3728p-1 +-0x1.0326ep-1 +0x1.3dbaa2p-2 +0x1.c7e528p-3 +0x1.5e1d8ep-7 +-0x1.d7ebf6p-1 +0x1.9097b6p-1 +0x1.b565a2p-5 +-0x1.fd2e5p-4 +0x1.af69fcp-2 +0x1.d68baep-6 +0x1.d5fbdap-1 +0x1.805ap-1 +-0x1.ce2d24p-1 +-0x1.afd83ap-3 +0x1.40d06ap-1 +0x1.e5e556p-2 +0x1.cf19a8p-1 +-0x1.342554p-2 +-0x1.c9b074p-2 +0x1.873756p-7 +0x1.2830d8p-1 +0x1.a8ecb2p-3 +0x1.7f09c4p-5 +-0x1.a964fp-2 +0x1.c6c844p-1 +0x1.e96bb6p-3 +-0x1.d248bp-4 +-0x1.4b9104p-3 +0x1.bdf1eep-2 +-0x1.ef824cp-4 +0x1.259cfp-3 +0x1.771fccp-1 +0x1.19a7b2p-1 +0x1.2e1652p-1 +-0x1.fec49ap-1 +0x1.09d27p-2 +-0x1.0e6e3ep-1 +-0x1.3db78ap-1 +0x1.d00d64p-3 +-0x1.ce9d34p-2 +0x1.a9d84cp-1 +0x1.042e66p-1 +0x1.7ae4d6p-3 +0x1.e9eb1ep-5 +-0x1.19c4f6p-3 +0x1.c9382cp-2 +-0x1.5b2ed8p-2 +-0x1.e8e266p-5 +0x1.28e698p-1 +0x1.3c991cp-1 +-0x1.8af204p-1 +0x1.0f261ep-4 +-0x1.7afbeep-1 +0x1.b0c424p-2 +0x1.6ecb46p-4 +0x1.5472dp-2 +-0x1.2c76e4p-4 +0x1.549e9cp-1 +0x1.88639ap-2 +-0x1.029b54p-1 +-0x1.8db028p-7 +-0x1.ebefd4p-1 +0x1.f98d9ep-3 +-0x1.cc9b56p-2 +0x1.aa348p-1 +0x1.6b2fa2p-2 +0x1.d13378p-1 +0x1.e795fap-1 +-0x1.443c98p-1 +-0x1.eeb87ep-1 +0x1.b87f5cp-1 +0x1.3af59ep-1 +-0x1.d1ca38p-2 +0x1.7cbcf4p-2 +0x1.ca9f1ap-1 +-0x1.9ce86cp-2 +-0x1.f536eep-4 +-0x1.c0551cp-4 +-0x1.b1170ap-3 +-0x1.cc7f4ep-1 +-0x1.792ec6p-2 +0x1.ab17ep-4 +0x1.4bd66cp-4 +0x1.fdb31p-2 +0x1.692c16p-5 +-0x1.ac9ca4p-1 +-0x1.a9fda4p-1 +-0x1.1e5c7p-1 +-0x1.0cc97cp-1 +-0x1.201c3ep-1 +0x1.df82bp-1 +0x1.395d76p-3 +-0x1.350bdcp-1 +0x1.dbdb7ap-1 +-0x1.a83096p-2 +0x1.f4b33cp-2 +-0x1.0ab24ap-3 +-0x1.ab8adep-3 +-0x1.3fcc06p-1 +-0x1.40798ap-2 +-0x1.13a34cp-2 +0x1.17a122p-1 +-0x1.acf1d8p-1 +0x1.9c6788p-2 +-0x1.39bbdap-3 +0x1.ded9dp-6 +0x1.638e3ep-1 +0x1.781bbp-1 +-0x1.998674p-1 +-0x1.1c66ecp-2 +0x1.254d34p-2 +-0x1.823154p-7 +-0x1.134b7ap-1 +-0x1.454524p-3 +0x1.8ec7bp-3 +0x1.365a7ap-4 +-0x1.9ef78cp-1 +0x1.827ddap-2 +-0x1.5772f2p-4 +0x1.539028p-2 +-0x1.bc1a28p-1 +0x1.640cf2p-3 +-0x1.245e4cp-6 +-0x1.4448c6p-1 +0x1.1ed2eap-1 +0x1.dbcd02p-2 +-0x1.ceb76ap-2 +-0x1.b8c88ap-5 +-0x1.cd8996p-1 +-0x1.c73194p-1 +0x1.987076p-2 +-0x1.a68fcp-1 +-0x1.8db732p-3 +-0x1.d27f7ap-3 +0x1.47dd96p-1 +0x1.b70af2p-1 +0x1.ada51ep-2 +0x1.c0bd9cp-1 +0x1.f0aa9ap-2 +0x1.840fdep-2 +-0x1.b58f8ep-3 +-0x1.11797p-2 +-0x1.fb4ad6p-2 +-0x1.02d2fp-1 +-0x1.00d2dap-2 +0x1.e16d9cp-3 +-0x1.4915bcp-5 +0x1.6beb9cp-1 +0x1.57a912p-2 +-0x1.12d05p-3 +0x1.89ea2ap-2 +-0x1.5632cep-2 +-0x1.d4c06cp-1 +-0x1.4f1954p-2 +0x1.3db73p-1 +-0x1.d8db14p-2 +0x1.98df14p-1 +0x1.14ed3ap-2 +0x1.152fd8p-2 +-0x1.eb0c42p-3 +0x1.c34eeap-1 +-0x1.0275d8p-1 +-0x1.0fcddap-1 +-0x1.9f96a6p-3 +0x1.e85928p-2 +0x1.2daf5cp-1 +0x1.5b1636p-1 +0x1.5c5494p-1 +0x1.969e8ap-5 +0x1.199972p-1 +-0x1.02d76ep-2 +0x1.9a7c5p-1 +0x1.0a2acep-3 +-0x1.156c9ap-2 +0x1.dba802p-1 +0x1.bfb5e8p-2 +0x1.47ecc6p-1 +0x1.c8b542p-1 +0x1.83bb48p-3 +-0x1.239a54p-1 +0x1.540a16p-3 +-0x1.86594ap-1 +-0x1.b4bbbcp-4 +0x1.c50ed8p-2 +0x1.0cefbcp-4 +0x1.d3536p-4 +-0x1.e4f6e6p-4 +-0x1.bdd0fap-5 +0x1.fa53bep-1 +-0x1.76edd4p-4 +-0x1.b11f82p-2 +-0x1.8b4aap-2 +-0x1.4a916p-1 +-0x1.08292ep-2 +-0x1.9fb55ep-1 +0x1.0cca48p-1 +0x1.76984cp-1 +0x1.0dc2f2p-2 +0x1.2bbb5ap-1 +-0x1.6b8cb6p-4 +0x1.1ba646p-2 +0x1.aac2aep-1 +-0x1.b7afb4p-2 +-0x1.7d0b6ap-4 +-0x1.c54a54p-2 +-0x1.4c2d72p-1 +0x1.1404bcp-1 +-0x1.2743a2p-1 +0x1.4c16c2p-2 +-0x1.035d74p-5 +-0x1.596772p-2 +-0x1.b92a2p-3 +0x1.74816ep-5 +-0x1.0a9e3ap-2 +-0x1.92ac4cp-1 +-0x1.7c42cap-3 +-0x1.e760e2p-3 +-0x1.2cc53cp-4 +0x1.6d460ep-1 +0x1.ebe34ep-1 +0x1.832eb4p-1 +0x1.bf2c08p-2 +-0x1.e4f664p-4 +-0x1.25f042p-5 +-0x1.ace724p-1 +0x1.9ba4aap-1 +0x1.074064p-3 +-0x1.67967ep-1 +0x1.87ee8p-2 +0x1.8ba4c2p-3 +-0x1.a8aa78p-7 +0x1.0324b4p-3 +-0x1.60822cp-1 +0x1.f84d2p-4 +0x1.4296cep-1 +-0x1.3165a4p-4 +-0x1.427f6cp-1 +-0x1.ce4026p-1 +0x1.29bb68p-2 +0x1.8e3b18p-2 +0x1.5ebcp-2 +-0x1.f5736ep-1 +0x1.54380ep-8 +-0x1.105c2ap-2 +-0x1.97cf5ep-1 +0x1.6c7ac6p-1 +0x1.6206cep-1 +-0x1.d46dc4p-1 +-0x1.343318p-1 +-0x1.d53832p-1 +0x1.b8dd7p-2 +0x1.4874bap-2 +-0x1.7c8b9p-1 +0x1.abc31ep-2 +-0x1.6dc26p-2 +-0x1.99df3p-1 +0x1.beb202p-1 +-0x1.cf8768p-1 +0x1.3509dp-3 +0x1.8dabe2p-2 +0x1.89563ep-2 +0x1.41e1ccp-2 +-0x1.bb2d1cp-1 +0x1.acc1e4p-2 +-0x1.09f05p-3 +0x1.0b0dbp-4 +-0x1.3ec40cp-2 +0x1.d08b68p-1 +-0x1.3d096ap-6 +-0x1.32ef48p-2 +0x1.a506aep-3 +-0x1.711fe8p-5 +-0x1.030fbcp-2 +0x1.5b9218p-1 +-0x1.64a524p-1 +-0x1.cedeep-1 +0x1.584732p-5 +-0x1.a794c4p-1 +-0x1.befe92p-2 +0x1.183f8ep-2 +0x1.702f9ep-1 +-0x1.5b4a8ep-1 +-0x1.a28782p-1 +-0x1.6a13d2p-1 +0x1.bf6546p-3 +0x1.0073b4p-4 +-0x1.deccb4p-1 +0x1.b5063cp-2 +-0x1.ac5358p-3 +-0x1.d0c886p-3 +0x1.510a16p-6 +-0x1.089694p-2 +0x1.b1c1cap-4 +-0x1.21983ap-2 +-0x1.fcebaap-1 +0x1.b7819ap-3 +0x1.c4abcep-1 +0x1.a28e44p-3 +-0x1.625d3p-2 +0x1.e79b2ap-2 +-0x1.801f4ap-1 +0x1.4451fp-1 +-0x1.6c0f72p-6 +0x1.6c6fccp-1 +0x1.1b806ep-1 +0x1.19bf5ep-1 +-0x1.cb2824p-1 +-0x1.240536p-1 +0x1.04395ep-2 +-0x1.2c1086p-1 +-0x1.1a6464p-1 +0x1.8f5974p-1 +0x1.9c6d24p-2 +0x1.2c51a8p-2 +0x1.3926d8p-3 +0x1.43939ep-1 +0x1.2b5fep-1 +0x1.0914a6p-2 +0x1.87eb6p-2 +0x1.5534f8p-3 +0x1.78175cp-2 +0x1.80945ep-3 +-0x1.a8cdaap-1 +0x1.f5b0cap-1 +-0x1.e7061ap-1 +-0x1.323af2p-2 +0x1.8d033ap-1 +-0x1.a1a074p-1 +0x1.50cc42p-4 +-0x1.f56e5ep-1 +0x1.3859dap-1 +0x1.73203cp-1 +-0x1.8adde6p-1 +-0x1.d557aep-4 +0x1.36e46ep-3 +-0x1.82625ep-1 +0x1.27b778p-5 +-0x1.3d6d94p-1 +-0x1.11e906p-1 +-0x1.1272d2p-1 +-0x1.a20858p-3 +0x1.d7b7b4p-1 +0x1.026db4p-3 +-0x1.4415dep-3 +-0x1.6bd5fep-1 +-0x1.3eeddcp-1 +0x1.ef4876p-2 +-0x1.a8f258p-4 +0x1.cf31d4p-1 +0x1.93610cp-2 +0x1.aa1f66p-1 +0x1.9f23a2p-1 +-0x1.b36abep-1 +0x1.f213b8p-1 +-0x1.a1dee8p-6 +0x1.398bap-2 +0x1.00b7aep-1 +0x1.9f3cfep-2 +0x1.f42e1p-1 +0x1.b164eap-3 +0x1.180e6ap-6 +0x1.f5a14p-1 +-0x1.71d1acp-1 +0x1.f91f22p-1 +0x1.2605d6p-1 +0x1.b6c86ap-5 +0x1.e4a268p-1 +-0x1.2988d8p-1 +-0x1.35c038p-1 +-0x1.a13dp-6 +-0x1.ecfbaep-6 +0x1.312e62p-3 +0x1.253956p-11 +0x1.9f22e2p-2 +-0x1.c073cap-3 +0x1.1633b2p-1 +0x1.63fdep-2 +0x1.3bf4p-3 +-0x1.242928p-2 +0x1.b44f6p-1 +0x1.35ef8ep-1 +0x1.9fb5c8p-2 +0x1.01263ep-3 +-0x1.8721f6p-4 +0x1.ebb986p-1 +0x1.83579p-9 +-0x1.3b002ap-1 +-0x1.a9d384p-1 +0x1.dee24p-3 +-0x1.bcc2fep-2 +0x1.e780e2p-1 +-0x1.59a9d8p-1 +0x1.c8e7cp-1 +-0x1.971e8ap-1 +-0x1.3e7cp-2 +0x1.690544p-1 +-0x1.907804p-1 +-0x1.035bbcp-3 +-0x1.77b7e2p-2 +0x1.960254p-1 +0x1.c92d5ep-1 +0x1.778b94p-2 +-0x1.1e135ep-3 +0x1.05222ep-4 +-0x1.0de9b4p-1 +-0x1.347082p-1 +-0x1.5385f2p-2 +-0x1.51c38ep-1 +-0x1.4d56cp-5 +-0x1.42e7c6p-3 +-0x1.84188p-1 +0x1.aec9e6p-6 +0x1.2f83cap-3 +0x1.e70aeep-2 +-0x1.5a1c98p-1 +-0x1.ed119p-1 +-0x1.792fd2p-3 +0x1.488072p-1 +-0x1.e435bep-2 +-0x1.e5248cp-1 +0x1.2ea91cp-1 +-0x1.e1e722p-3 +-0x1.ecafbap-1 +0x1.470b16p-4 +0x1.b2dfp-1 +0x1.55c7e8p-1 +0x1.15b1c8p-2 +0x1.40862ap-4 +0x1.779c56p-2 +0x1.a50c3ap-5 +0x1.69e272p-2 +-0x1.45019ep-4 +-0x1.837116p-2 +0x1.ce6a22p-1 +0x1.e60fc4p-3 +-0x1.ba4f24p-1 +0x1.bef6acp-2 +-0x1.f08f32p-3 +-0x1.827efp-2 +-0x1.814518p-1 +0x1.929f7cp-2 +-0x1.2e62cap-3 +0x1.5346b2p-1 +-0x1.c2ed34p-1 +-0x1.57d97cp-1 +0x1.10a0b6p-1 +-0x1.a6b60cp-1 +-0x1.4227d8p-2 +0x1.dd2db8p-2 +0x1.8056fep-2 +0x1.37607cp-1 +0x1.19088cp-4 +0x1.38788p-3 +-0x1.eb8fd8p-3 +-0x1.bb9c34p-1 +-0x1.2d2828p-1 +-0x1.570e66p-1 +0x1.c9fd3ep-3 +0x1.0c8e26p-2 +-0x1.edacfap-2 +-0x1.5610aap-1 +0x1.fe6076p-2 +-0x1.d4a8e2p-1 +0x1.758646p-1 +0x1.497618p-1 +0x1.16fa72p-1 +-0x1.68cf94p-1 +0x1.dd48e8p-1 +0x1.a3e3cep-3 +-0x1.9f8c44p-3 +0x1.18f89p-1 +-0x1.cffd5ep-1 +-0x1.767098p-2 +-0x1.903302p-3 +-0x1.82e444p-3 +0x1.a057cep-2 +-0x1.e66dp-1 +-0x1.682f24p-1 +-0x1.766988p-2 +-0x1.acae66p-3 +-0x1.476986p-2 +0x1.491dap-3 +-0x1.81507p-4 +-0x1.b466fap-1 +0x1.ac55ep-1 +-0x1.0c3b9p-2 +0x1.a5e5b4p-2 +-0x1.0565e8p-1 +0x1.6da238p-3 +0x1.d03644p-1 +-0x1.8801d6p-4 +-0x1.cbb29ep-2 +0x1.09dc7p-1 +0x1.3fb3c8p-1 +0x1.d2e5c4p-10 +0x1.334c7cp-2 +-0x1.de456ep-7 +-0x1.8672ep-1 +0x1.613f9p-5 +-0x1.171feap-3 +0x1.dd5d3ep-1 +-0x1.ddd8a4p-1 +0x1.2a88e4p-2 +-0x1.ea24dap-4 +0x1.4c6a14p-3 +-0x1.77183cp-4 +0x1.56d51p-1 +0x1.2e8bcap-1 +0x1.7c2a16p-2 +-0x1.c3f246p-2 +0x1.396a3cp-1 +0x1.98d18ep-1 +-0x1.8617ecp-1 +-0x1.22c696p-2 +-0x1.91ecfp-3 +-0x1.40d1fep-1 +-0x1.9f4856p-1 +0x1.cc14ecp-1 +0x1.82a1cp-1 +0x1.5eaffap-4 +-0x1.242f7ap-2 +-0x1.4b33fap-3 +0x1.400132p-2 +0x1.6bfb34p-1 +0x1.3f6eacp-1 +0x1.932adcp-2 +-0x1.02805ap-2 +-0x1.e179cap-4 +-0x1.9c15e2p-1 +0x1.934bbap-1 +-0x1.8f4b3p-3 +0x1.1b5cd6p-2 +-0x1.815aa6p-1 +-0x1.0a4938p-4 +-0x1.17224ep-3 +0x1.7396b8p-2 +-0x1.cd1762p-1 +0x1.13399ap-2 +0x1.09b222p-4 +0x1.0ad204p-3 +-0x1.e96f94p-3 +-0x1.21e5d8p-1 +0x1.3a96fcp-1 +-0x1.fea528p-8 +-0x1.93dc6ap-2 +0x1.0090ccp-1 +-0x1.e54f08p-3 +0x1.93680ep-2 +-0x1.220a6p-2 +-0x1.5ef9ecp-2 +0x1.71cdb6p-1 +-0x1.0e4394p-3 +0x1.0b150cp-1 +0x1.d86p-3 +-0x1.e6a31ap-1 +-0x1.824a66p-2 +0x1.1e75dap-4 +-0x1.a497dcp-1 +-0x1.df678ep-1 +-0x1.3c8536p-1 +0x1.da074p-1 +-0x1.0ff5d6p-6 +-0x1.be0fe2p-4 +0x1.f4742cp-1 +-0x1.d22bd2p-1 +0x1.a5a752p-2 +0x1.5be09ap-1 +-0x1.d20e7ap-1 +0x1.403e76p-1 +0x1.104162p-1 +-0x1.abe65p-1 +-0x1.39dd92p-2 +-0x1.69653ap-1 +0x1.65c3ecp-1 +-0x1.6c4d78p-3 +0x1.a5fa1ap-3 +-0x1.4db598p-7 +0x1.2fb322p-5 +-0x1.6216cep-3 +0x1.f64fep-1 +-0x1.b906b8p-1 +-0x1.2bec9ap-1 +0x1.e6ec08p-4 +0x1.7d2cd4p-3 +-0x1.e5d9a4p-3 +0x1.0b7494p-6 +0x1.fb9f86p-2 +-0x1.3174c6p-2 +0x1.fcc562p-3 +0x1.052202p-4 +-0x1.b6f2a2p-2 +0x1.e03904p-4 +0x1.8822dp-4 +-0x1.3ca64cp-4 +0x1.cf36e6p-1 +-0x1.63b056p-1 +0x1.b4e004p-2 +-0x1.85ff26p-4 +-0x1.7d722ep-2 +0x1.d86dbcp-1 +0x1.3a52dcp-1 +-0x1.21833ap-2 +0x1.4e1964p-3 +0x1.a93094p-2 +-0x1.1026fep-1 +0x1.2b118p-4 +-0x1.1663b2p-2 +0x1.64f32ap-2 +-0x1.a6deccp-1 +-0x1.67ce64p-3 +-0x1.23404p-5 +-0x1.1ef83ap-1 +0x1.99a394p-4 +-0x1.9efbdp-2 +0x1.e0996ap-1 +-0x1.e6e4a4p-1 +-0x1.0b67a4p-9 +-0x1.a8496ap-1 +-0x1.8d426p-2 +0x1.2fee8ep-1 +0x1.2784b4p-1 +-0x1.fa3b2p-3 +0x1.5f32acp-2 +-0x1.d1bb1p-1 +-0x1.b9e65cp-3 +-0x1.ccdc52p-1 +-0x1.6dbe7p-3 +0x1.833ffep-7 +0x1.c0d506p-2 +-0x1.06c048p-3 +0x1.b0c532p-9 +-0x1.ee5ba6p-2 +-0x1.669786p-1 +0x1.6c7834p-1 +-0x1.3b4d8ap-1 +0x1.f9fb84p-1 +0x1.3b1e32p-2 +-0x1.18f584p-1 +0x1.24c60ap-2 +-0x1.ae3ccap-2 +-0x1.413f56p-1 +-0x1.918bcp-5 +-0x1.d2fc44p-1 +0x1.8e35ep-1 +0x1.8f68fep-1 +0x1.869b1p-2 +-0x1.3e027ep-1 +-0x1.113a0ap-1 +-0x1.d382c8p-1 +0x1.7880f4p-2 +-0x1.9719cap-3 +0x1.ea1f6ep-4 +-0x1.967b84p-3 +-0x1.7cfb5cp-4 +0x1.c80844p-2 +-0x1.a72e46p-2 +-0x1.6ef64cp-2 +0x1.1f6f5ap-3 +-0x1.52cf36p-4 +0x1.081ab8p-2 +0x1.9154e8p-1 +0x1.ac463ap-1 +-0x1.035bf2p-3 +0x1.65041cp-3 +-0x1.e37864p-3 +-0x1.16998cp-2 +-0x1.e547c2p-1 +0x1.1ed26ap-3 +-0x1.23c3dap-1 +-0x1.4c64c6p-1 +-0x1.d6a0b4p-2 +0x1.22d2d8p-3 +-0x1.4c8e62p-1 +-0x1.e7c096p-1 +-0x1.a6a27ep-2 +0x1.e44526p-1 +0x1.c0265p-1 +-0x1.49c292p-1 +-0x1.3f3e2p-4 +0x1.08e6a2p-2 +0x1.dbb2a8p-3 +0x1.86b462p-3 +-0x1.59eddp-6 +0x1.4b4d1ap-3 +-0x1.80e5e2p-1 +0x1.e35056p-1 +-0x1.ce3404p-2 +0x1.f916fp-3 +-0x1.e1bb82p-1 +0x1.ea0ff4p-5 +0x1.923c72p-4 +0x1.bb144cp-1 +-0x1.f4856p-2 +0x1.d4cafp-2 +0x1.563868p-1 +-0x1.b712cap-3 +0x1.1f2cd4p-3 +0x1.ed4bep-4 +-0x1.a29e18p-5 +0x1.ef3d48p-2 +-0x1.805298p-2 +-0x1.917cap-2 +0x1.3c4184p-1 +-0x1.693846p-1 +-0x1.2fb6b6p-5 +-0x1.59853ep-1 +0x1.611128p-2 +-0x1.18f7cep-3 +0x1.351d76p-1 +-0x1.43c3bep-1 +0x1.4c8bb2p-1 +0x1.84bcbep-2 +0x1.36e69ep-1 +-0x1.fff164p-6 +0x1.640ff6p-1 +-0x1.c1eb62p-5 +-0x1.bd3504p-3 +-0x1.653e88p-1 +-0x1.7eba16p-4 +-0x1.8089eap-3 +-0x1.c3a19p-2 +0x1.70dfb4p-1 +0x1.38adbap-3 +-0x1.06c1eep-3 +-0x1.195a4p-2 +0x1.1f8a58p-2 +-0x1.954db8p-2 +0x1.2acabp-1 +0x1.838bdcp-2 +0x1.28b1d2p-5 +-0x1.97e0cep-1 +-0x1.83a86p-1 +-0x1.d6da1ap-3 +0x1.8089fp-2 +-0x1.9d9402p-5 +-0x1.67befp-1 +0x1.ba7dp-3 +0x1.6f2d8ap-2 +-0x1.4e682ep-1 +-0x1.866034p-4 +-0x1.a8b234p-1 +0x1.ad9e5p-1 +0x1.af3ba6p-3 +-0x1.fcf444p-1 +-0x1.0e877ap-2 +0x1.734c78p-1 +-0x1.cf1bfep-1 +0x1.7dd1d6p-1 +-0x1.9bc726p-1 +-0x1.1fb62ep-3 +-0x1.472b8p-3 +-0x1.20315p-3 +0x1.12db8p-1 +0x1.67076ap-1 +0x1.cc825p-2 +0x1.abc4a2p-4 +-0x1.76773ap-3 +0x1.6e30ccp-2 +-0x1.28162cp-1 +0x1.8ba3eap-3 +0x1.3f45a6p-1 +-0x1.ea412cp-1 +-0x1.9167ep-1 +-0x1.32a484p-2 +0x1.8ca0d4p-3 +-0x1.70c6f6p-3 +0x1.b8b6fep-1 +0x1.fcdcdp-2 +0x1.8b66eap-2 +-0x1.a56e6ep-1 +0x1.91a188p-1 +0x1.3c5eacp-2 +0x1.9d2082p-2 +-0x1.505e1ep-1 +0x1.add1eap-4 +-0x1.3c19b4p-4 +-0x1.bfe59ep-3 +-0x1.091168p-2 +-0x1.1bc38ep-1 +0x1.46b33p-4 +-0x1.95dc2p-5 +-0x1.fb3326p-3 +-0x1.d185f6p-1 +-0x1.c869cap-1 +-0x1.e53b7ep-1 +0x1.f839c8p-1 +0x1.6f2fcep-1 +-0x1.00b57ap-1 +-0x1.e7e88ap-6 +-0x1.27dfbap-2 +0x1.3878b8p-8 +0x1.edc938p-1 +0x1.b64246p-4 +-0x1.f5fcaap-3 +0x1.ea6d8ep-1 +-0x1.e4fa9ep-4 +0x1.c3a32ap-1 +-0x1.89206p-1 +-0x1.b55afep-3 +-0x1.7c2908p-1 +-0x1.6cbe98p-3 +-0x1.6538dp-2 +-0x1.f0a1b6p-1 +-0x1.487e82p-1 +0x1.3a04b8p-2 +0x1.8a6064p-3 +0x1.a5ae94p-1 +-0x1.edd54p-3 +0x1.5d5d26p-1 +0x1.bde41ap-1 +0x1.6afdfap-5 +0x1.9bf9a6p-2 +0x1.fdd15ep-1 +-0x1.c96814p-1 +0x1.108462p-1 +0x1.aa35d4p-1 +-0x1.93b554p-2 +0x1.4e87d4p-3 +0x1.d8c21cp-1 +-0x1.58121p-1 +0x1.70b79cp-1 +0x1.0e317cp-4 +0x1.7edad4p-1 +-0x1.46dc0cp-1 +-0x1.a9daf2p-3 +0x1.ab4d3p-1 +-0x1.0d69b2p-2 +0x1.921c36p-1 +0x1.7f549cp-1 +-0x1.ad1684p-2 +0x1.04d87p-3 +0x1.4175f4p-1 +-0x1.b02c6ep-2 +0x1.34764cp-1 +0x1.211886p-4 +-0x1.423874p-2 +-0x1.4a6c2ap-1 +0x1.fee6fcp-1 +-0x1.8be5fep-1 +-0x1.936aeap-1 +-0x1.dabe96p-2 +-0x1.42dc8p-5 +-0x1.e3ffp-1 +0x1.f88cd4p-5 +-0x1.28b77p-1 +-0x1.269186p-2 +-0x1.969f38p-1 +-0x1.211d6ap-3 +0x1.c8beaep-3 +0x1.fa3626p-1 +-0x1.8f086ap-1 +0x1.f36eeep-2 +0x1.4fc9ccp-1 +0x1.742036p-1 +0x1.e226f8p-1 +-0x1.2a628ap-1 +-0x1.ecf65cp-3 +0x1.62cadap-3 +-0x1.06112ep-1 +0x1.991d78p-1 +0x1.7e78bp-2 +0x1.d48d8p-3 +0x1.3894ecp-2 +-0x1.7b85dap-1 +-0x1.1d42d6p-1 +0x1.42df24p-4 +0x1.d957b4p-1 +0x1.5da97p-4 +0x1.39ded4p-1 +0x1.8de0dap-1 +0x1.6d4a02p-1 +-0x1.4d8d44p-1 +-0x1.b0a64ep-5 +0x1.533eecp-2 +0x1.eb2612p-2 +-0x1.b4668p-2 +0x1.6aa1e6p-3 +0x1.10b602p-3 +0x1.56a3dcp-4 +0x1.f010c6p-1 +-0x1.18296ep-3 +-0x1.3d588cp-3 +-0x1.d6ad6cp-2 +0x1.258972p-2 +-0x1.c7ee5p-2 +0x1.1c1918p-1 +-0x1.ceb3d2p-2 +0x1.cfcc56p-4 +0x1.e17602p-1 +0x1.e5afa4p-1 +0x1.7fb174p-2 +0x1.a8514ap-1 +-0x1.4fe372p-2 +-0x1.25bc6p-2 +-0x1.e8715cp-1 +-0x1.a59092p-2 +0x1.2641cap-1 +0x1.3f51eep-1 +0x1.d3a86p-5 +0x1.39f04ep-2 +-0x1.e6488p-3 +0x1.fdab36p-4 +0x1.d1237p-2 +0x1.6718eep-1 +-0x1.119026p-1 +0x1.76ff3cp-2 +-0x1.f781f8p-3 +-0x1.3a0382p-4 +0x1.7f800ep-1 +0x1.783d0cp-1 +0x1.53946p-2 +-0x1.98772p-1 +-0x1.fb7a0ap-2 +0x1.04c55ep-2 +0x1.73c68p-2 +-0x1.18c604p-1 +-0x1.f9e446p-2 +-0x1.93e5d2p-2 +0x1.4357fap-1 +-0x1.4f73ep-2 +0x1.0662aap-3 +-0x1.9aefc2p-1 +0x1.824eb4p-1 +0x1.56029p-1 +0x1.9a130cp-4 +-0x1.10bb6p-2 +0x1.3f1d4ep-5 +0x1.698d34p-1 +0x1.3dfe18p-1 +-0x1.bcdb64p-1 +-0x1.584ccep-3 +-0x1.6dc28p-2 +0x1.eb303cp-1 +-0x1.016d02p-5 +-0x1.29eb78p-2 +-0x1.0abdfp-1 +0x1.629ee4p-2 +0x1.60b556p-2 +0x1.76939p-3 +0x1.3eeea6p-5 +-0x1.40c59ap-1 +0x1.7eef2ap-1 +0x1.dd0da6p-2 +0x1.82373p-1 +-0x1.215062p-1 +0x1.101aaep-1 +-0x1.c3f56ap-1 +0x1.06315cp-1 +-0x1.f7737cp-5 +0x1.095e7ap-6 +0x1.785b34p-4 +0x1.abab9p-4 +-0x1.1e1a08p-3 +0x1.40ed04p-1 +-0x1.4126d2p-2 +-0x1.3c323ep-1 +0x1.c07c7ap-1 +0x1.fa5928p-1 +-0x1.07097ap-4 +-0x1.c893aep-3 +0x1.43efcap-3 +0x1.c5e45ap-2 +0x1.6b683ep-2 +-0x1.e899fap-2 +0x1.6abacap-5 +0x1.2a368p-1 +0x1.fb1c5cp-2 +0x1.45948ap-4 +0x1.188cd6p-3 +-0x1.a6f2f2p-7 +-0x1.2bfef2p-1 +-0x1.076554p-1 +-0x1.4afc24p-1 +0x1.41eadep-1 +-0x1.c263bcp-1 +-0x1.3aac8p-3 +0x1.2c4326p-2 +0x1.761eb4p-2 +0x1.6984f6p-2 +-0x1.c6582ep-3 +-0x1.96d294p-1 +-0x1.a093b2p-1 +-0x1.7c76fcp-2 +-0x1.2e06ecp-2 +-0x1.557626p-1 +-0x1.989724p-1 +0x1.06885p-1 +0x1.6af464p-1 +0x1.1aed4ap-2 +-0x1.5018e8p-2 +0x1.b20e9ep-4 +0x1.226cf4p-1 +-0x1.b523f4p-1 +-0x1.497826p-1 +-0x1.72217p-1 +0x1.c6fd6cp-1 +-0x1.2e4bc2p-1 +0x1.3d5676p-3 +0x1.0966cp-4 +0x1.f544fap-2 +-0x1.0b150cp-1 +-0x1.d65418p-2 +0x1.7e29cap-3 +0x1.8c2aep-1 +0x1.7f474ap-1 +-0x1.2e67b4p-2 +-0x1.dd913cp-2 +-0x1.fdc1dep-1 +0x1.d6aee4p-2 +-0x1.a29b7ap-2 +-0x1.8ffce8p-1 +-0x1.585b46p-3 +-0x1.efd218p-1 +-0x1.be9658p-6 +0x1.7ae996p-1 +0x1.aeaaf4p-4 +0x1.6d3ab8p-1 +0x1.9741fcp-1 +-0x1.9d3c86p-1 +0x1.01478ap-4 +0x1.4c925p-1 +0x1.bb245ep-1 +-0x1.aefa6ap-1 +-0x1.dc4632p-1 +-0x1.86204p-1 +-0x1.7db4a2p-3 +0x1.5ad30ap-2 +0x1.03105p-3 +0x1.5e4226p-5 +-0x1.2c24bap-1 +-0x1.ac2c6ep-2 +0x1.54107ap-2 +-0x1.0a295p-1 +-0x1.99e7e4p-1 +-0x1.585872p-2 +-0x1.c6fb0cp-1 +-0x1.bbd304p-1 +0x1.692926p-1 +0x1.a623aep-4 +-0x1.080956p-2 +0x1.1ecc82p-3 +0x1.6195fcp-2 +0x1.2a2b8ep-1 +-0x1.b2d0b6p-2 +0x1.cdac5ap-5 +0x1.e46d68p-2 +-0x1.269722p-2 +-0x1.8b090cp-2 +0x1.730522p-1 +0x1.84b302p-1 +0x1.22d6bp-4 +-0x1.9108fap-1 +0x1.fe4862p-2 +-0x1.04fffp-2 +-0x1.d641c8p-6 +-0x1.f9d3d6p-3 +-0x1.ee6296p-3 +-0x1.94a686p-2 +0x1.a7c516p-1 +0x1.7528ep-2 +0x1.86dca4p-3 +0x1.38018cp-1 +0x1.ca8ee8p-2 +0x1.231834p-1 +-0x1.dcdfa2p-1 +-0x1.ad60e6p-2 +0x1.f0ef8p-3 +0x1.02dfb2p-1 +-0x1.f4b12ep-1 +-0x1.c8731ap-1 +-0x1.4127aap-7 +0x1.d15714p-1 +0x1.6c4854p-3 +-0x1.0eaf5ap-2 +0x1.32953ap-2 +-0x1.e298a4p-3 +0x1.cc7238p-4 +-0x1.094404p-2 +0x1.11645ap-2 +0x1.fbafb2p-2 +-0x1.55bb2cp-1 +0x1.8a5b4ap-1 +-0x1.aa1fd4p-2 +0x1.ad6decp-1 +-0x1.3cbf2p-3 +0x1.d8a72ap-3 +-0x1.2ad9cap-1 +0x1.cb2c2p-1 +0x1.4eab5ep-10 +0x1.31225p-1 +-0x1.fdac8p-4 +0x1.8a862p-1 +0x1.b0afa8p-7 +-0x1.696bf8p-2 +-0x1.34a82cp-1 +0x1.43480cp-2 +-0x1.1279cap-1 +-0x1.cc733ep-1 +0x1.5b96b6p-1 +-0x1.012392p-2 +-0x1.0a1a6ap-1 +-0x1.aa7e14p-1 +-0x1.7d721ep-2 +-0x1.bdbb38p-3 +0x1.891188p-4 +-0x1.0bbad8p-4 +-0x1.28f5c6p-5 +0x1.8a425cp-2 +0x1.04b6cp-2 +-0x1.ef7e3ap-1 +-0x1.6d7c62p-2 +-0x1.f66592p-2 +0x1.b74e32p-3 +-0x1.40021ap-1 +-0x1.83b5e4p-2 +0x1.6371b4p-1 +-0x1.9f4dc6p-1 +-0x1.0ce498p-3 +0x1.1b0582p-2 +0x1.bac48cp-4 +-0x1.c0d9c8p-4 +0x1.0feff2p-3 +-0x1.d50a28p-1 +0x1.e9e4d6p-4 +-0x1.54162ap-2 +-0x1.fc6602p-1 +-0x1.d61d5ap-1 +-0x1.7dfbd6p-1 +-0x1.f2ad12p-6 +-0x1.b49d68p-1 +-0x1.e90b1ap-1 +-0x1.a6fa42p-1 +-0x1.454526p-1 +0x1.ffca9cp-4 +0x1.5afe8ap-2 +-0x1.54094cp-1 +0x1.8124ccp-1 +0x1.80e338p-4 +-0x1.45ae58p-5 +-0x1.44c552p-1 +0x1.9542f4p-2 +-0x1.6e1d56p-2 +0x1.513504p-1 +-0x1.e190cep-3 +0x1.a9a24ap-1 +0x1.2a102p-8 +-0x1.b79072p-1 +-0x1.488aeep-1 +0x1.e138c8p-3 +0x1.e69ap-1 +0x1.54f552p-2 +0x1.e600b8p-1 +-0x1.acf8a2p-2 +0x1.5d2dbap-1 +0x1.8c4cfap-2 +0x1.90c4c2p-1 +-0x1.a8b47p-1 +0x1.ac19bp-1 +0x1.329002p-2 +-0x1.a3b582p-1 +0x1.db9ffap-1 +0x1.424e8cp-4 +-0x1.255d46p-5 +-0x1.26b96p-4 +0x1.e7fd5cp-2 +0x1.b17e6ap-3 +0x1.cdd90ep-4 +0x1.dd3dbp-1 +-0x1.a1c03ep-1 +-0x1.8777d2p-3 +0x1.3683c8p-3 +0x1.18abeep-1 +-0x1.6a2fb6p-1 +0x1.9c994p-2 +-0x1.dd0cd2p-1 +-0x1.d4cb6p-2 +0x1.aca3c6p-1 +-0x1.6d0c6ep-1 +0x1.77f58ap-4 +0x1.1a4292p-1 +-0x1.3af6c2p-2 +0x1.a5f5e2p-1 +0x1.606b66p-1 +-0x1.d48072p-2 +0x1.2bd4fcp-1 +-0x1.8a5678p-2 +-0x1.5ab8p-1 +-0x1.babac2p-3 +0x1.26d7b6p-5 +0x1.76144cp-1 +-0x1.b63ffep-4 +-0x1.4fbc6ep-1 +-0x1.c9fb28p-7 +0x1.6ddf68p-4 +0x1.ff5b86p-4 +0x1.d316aep-4 +0x1.430bf2p-7 +-0x1.858ca4p-2 +0x1.fc3694p-1 +-0x1.1d770ep-2 +-0x1.032dc8p-2 +-0x1.7b042p-4 +-0x1.6584ep-2 +0x1.1dfed4p-3 +-0x1.ba50d2p-2 +0x1.e29c9cp-1 +0x1.92f14ep-2 +-0x1.39170ep-2 +-0x1.8693dp-1 +-0x1.15fa82p-2 +0x1.350d78p-6 +-0x1.e2708cp-2 +-0x1.507046p-1 +0x1.41e9dp-2 +0x1.f12d2ep-6 +-0x1.d56cf6p-2 +-0x1.285072p-2 +0x1.0539bap-5 +-0x1.2c7dccp-4 +0x1.3988e2p-1 +-0x1.8d67ecp-2 +0x1.9a32e2p-4 +0x1.810446p-2 +-0x1.271f4cp-1 +-0x1.de4e4p-2 +-0x1.139b1p-1 +0x1.8deb52p-1 +0x1.d9242ap-4 +-0x1.c44d82p-2 +0x1.5d55aep-1 +-0x1.48d04cp-3 +0x1.1fa8f8p-2 +0x1.c9e902p-2 +0x1.d2a224p-3 +0x1.e4044ap-2 +0x1.f8b7c4p-2 +0x1.84b452p-3 +0x1.0b6f22p-1 +-0x1.7938bcp-1 +0x1.a79e9p-2 +-0x1.0eb522p-2 +0x1.eaccf8p-1 +0x1.39043p-1 +-0x1.511bb6p-1 +0x1.32dee4p-2 +0x1.3b00aap-1 +0x1.6e4fd8p-1 +-0x1.97dfc2p-3 +-0x1.51acaap-3 +0x1.2ae8p-4 +-0x1.a4ebb4p-1 +0x1.334a7cp-1 +0x1.93059ep-1 +-0x1.2767cp-5 +-0x1.08178ep-1 +0x1.f5bd7ap-5 +-0x1.fe54fp-4 +0x1.4a0bc8p-3 +-0x1.48c1aep-2 +-0x1.60dae6p-2 +0x1.e70664p-1 +-0x1.e5afbcp-1 +-0x1.7e4222p-1 +-0x1.6b5f68p-2 +-0x1.116522p-1 +0x1.a468ecp-5 +-0x1.4413d6p-4 +0x1.b61754p-1 +-0x1.b947ep-2 +0x1.977b76p-2 +-0x1.8b6dcap-3 +0x1.991f4cp-1 +0x1.012dd6p-1 +-0x1.8af3b8p-2 +0x1.9b817ap-3 +0x1.094b6ep-1 +-0x1.a4ad3p-1 +0x1.e40b96p-4 +-0x1.e0c792p-2 +0x1.971a6ep-2 +-0x1.9cdffcp-2 +-0x1.7f64dep-4 +-0x1.bc3d0ep-1 +-0x1.5fc30ep-1 +-0x1.394386p-1 +0x1.9697c6p-1 +-0x1.e3f9c8p-6 +-0x1.f1f844p-3 +-0x1.dea8dp-3 +0x1.32a8ccp-1 +-0x1.085624p-2 +-0x1.40cc2ep-1 +0x1.979e58p-1 +0x1.22277cp-1 +-0x1.88ea7ep-1 +0x1.e6c3bp-3 +0x1.a29236p-5 +-0x1.0c3142p-6 +0x1.5c4d26p-1 +0x1.bb92eap-1 +0x1.fae364p-4 +-0x1.d8c938p-5 +0x1.769c0ap-2 +-0x1.6666p-1 +0x1.53c884p-3 +0x1.7081dep-1 +-0x1.b75cd6p-3 +0x1.c6c63p-2 +0x1.9550b2p-2 +0x1.d576a6p-1 +0x1.68731ap-2 +0x1.178244p-1 +-0x1.936702p-6 +-0x1.324f32p-2 +-0x1.44c8d8p-1 +-0x1.13235ap-2 +-0x1.3591p-3 +0x1.7f7ee4p-3 +-0x1.56a414p-5 +-0x1.b28e1p-4 +-0x1.56b4b8p-1 +0x1.269a2ap-2 +0x1.5c25b8p-2 +-0x1.52467cp-2 +0x1.a97814p-1 +-0x1.6ad65cp-2 +-0x1.8b3d6cp-2 +-0x1.42b04p-2 +-0x1.7c9dfep-1 +-0x1.4cfbf8p-1 +0x1.01cf98p-1 +-0x1.4580a4p-1 +0x1.f863aep-2 +-0x1.276972p-2 +-0x1.b80c5ep-1 +-0x1.1d73eep-2 +0x1.b31d0ep-2 +0x1.82165p-3 +-0x1.e62d7ep-1 +-0x1.7fafcap-3 +-0x1.b10432p-1 +0x1.5d39bap-6 +-0x1.814adcp-1 +0x1.007b54p-1 +-0x1.d7f8bap-3 +0x1.1e4004p-1 +0x1.cf7be2p-3 +-0x1.edec2ap-1 +0x1.2787eep-1 +-0x1.e0ce2p-2 +0x1.9603cep-5 +-0x1.91869ep-1 +0x1.ed10f8p-2 +0x1.982de6p-3 +-0x1.10e77ep-2 +-0x1.b1b6a8p-1 +0x1.192082p-2 +0x1.57a158p-2 +-0x1.3ccdbp-1 +0x1.6f2f0cp-5 +0x1.afcdbp-1 +0x1.630dacp-4 +0x1.970d5p-2 +-0x1.2c4212p-1 +0x1.f58ab6p-2 +0x1.d318ccp-2 +0x1.bdd0acp-2 +-0x1.7839bap-1 +-0x1.b0f21p-2 +-0x1.426bbap-1 +0x1.27fc8p-1 +-0x1.d9ecd6p-2 +0x1.f6fd38p-2 +-0x1.c6376p-2 +0x1.5d9d62p-1 +0x1.985deep-1 +-0x1.0b836ap-1 +-0x1.15fb08p-1 +-0x1.4f572p-1 +-0x1.c17998p-1 +-0x1.825968p-1 +-0x1.2dfec2p-2 +0x1.86b9d4p-1 +0x1.31593ap-3 +-0x1.cdb44cp-1 +-0x1.40301ep-4 +-0x1.6cb2e2p-2 +-0x1.625ccep-1 +-0x1.c039bcp-1 +-0x1.fab4a4p-2 +-0x1.6b0ae4p-2 +-0x1.32bdc2p-2 +-0x1.d95bf2p-1 +0x1.709326p-2 +0x1.ac93a2p-2 +0x1.742a06p-1 +-0x1.6cc9cp-2 +0x1.a12496p-2 +0x1.6a112ap-1 +0x1.bfd71p-2 +0x1.be81aap-3 +0x1.0966e6p-4 +-0x1.b4c844p-2 +0x1.241202p-1 +0x1.ad5c7ap-1 +-0x1.d2e134p-1 +-0x1.65d80cp-2 +-0x1.2d790cp-1 +-0x1.72e49ap-1 +-0x1.3e616p-1 +-0x1.4d1eacp-3 +-0x1.cf9ff2p-1 +-0x1.1205fcp-1 +-0x1.6705acp-1 +-0x1.049f02p-1 +0x1.079dp-2 +0x1.3c0b02p-2 +-0x1.6f31aap-1 +0x1.52f99ep-3 +0x1.008424p-4 +-0x1.1e1136p-4 +0x1.b536fp-1 +0x1.fcf3a6p-2 +-0x1.6ff716p-1 +0x1.4205p-1 +0x1.98e072p-7 +-0x1.69192p-3 +0x1.40a784p-3 +-0x1.63757ep-3 +-0x1.cfa6fap-5 +0x1.025cfep-1 +0x1.dc329ep-4 +-0x1.80456p-1 +-0x1.f7adf8p-1 +0x1.f8472cp-2 +0x1.a4ef6p-2 +-0x1.8123ap-1 +0x1.5387fcp-1 +-0x1.80dc1cp-1 +0x1.50ab5cp-2 +0x1.7ca938p-3 +-0x1.524fd4p-3 +0x1.44580cp-1 +0x1.bcf5e6p-1 +-0x1.ec2f52p-1 +-0x1.d881cep-4 +0x1.b8cf6ep-2 +0x1.5e4d8ep-4 +-0x1.544a1ap-2 +0x1.e67a48p-3 +0x1.c4edfap-1 +0x1.6b2ddap-3 +-0x1.a8b95ep-2 +-0x1.83ff64p-1 +0x1.de453ep-3 +-0x1.70b986p-1 +-0x1.a139p-4 +0x1.83719cp-1 +-0x1.a4349cp-1 +-0x1.ed06dap-4 +-0x1.414838p-3 +0x1.fd17bep-1 +0x1.0fdaap-2 +0x1.8bdbe2p-4 +0x1.9a65a4p-1 +-0x1.7f251p-2 +-0x1.3b1f2p-1 +-0x1.345fb2p-2 +-0x1.75771ep-2 +-0x1.11c84p-1 +-0x1.ec1426p-3 +0x1.0dcb3cp-1 +-0x1.01df0ep-1 +-0x1.5583c6p-2 +-0x1.7534bcp-2 +0x1.65f932p-1 +0x1.650ac4p-3 +0x1.f4a996p-1 +-0x1.b65fbcp-1 +-0x1.ed015cp-2 +0x1.530258p-2 +0x1.244d38p-1 +0x1.a5d93cp-1 +-0x1.f3cddap-1 +0x1.e19df6p-1 +-0x1.05c686p-1 +0x1.27d0aep-4 +-0x1.a02df8p-3 +-0x1.fdcf44p-4 +-0x1.dc0e3cp-5 +0x1.8d0734p-7 +-0x1.a57daap-2 +0x1.11731cp-3 +0x1.8eb29cp-1 +0x1.1de422p-3 +0x1.5b00aap-2 +0x1.f487b6p-7 +-0x1.782854p-6 +-0x1.8cd066p-4 +0x1.13114ep-2 +0x1.5fd92cp-1 +0x1.d9bb68p-3 +0x1.000b24p-2 +0x1.5a9c8cp-1 +0x1.1272a4p-1 +-0x1.35b3bcp-2 +-0x1.4226dep-1 +-0x1.77c05ap-5 +-0x1.cb7f66p-2 +0x1.444f8ap-3 +-0x1.e456e6p-3 +-0x1.5078bcp-3 +0x1.478f2ep-1 +-0x1.e4a03cp-2 +0x1.c9f98ap-1 +0x1.4c1cbp-1 +-0x1.8efcep-2 +0x1.e82cap-1 +-0x1.50327ep-1 +0x1.5e3d5cp-1 +-0x1.34843cp-6 +0x1.74a86ap-1 +-0x1.9f4a8cp-3 +-0x1.c4cda8p-2 +0x1.0649dep-1 +-0x1.4ff7f4p-2 +-0x1.25e094p-1 +0x1.9a100cp-3 +-0x1.3e0974p-1 +0x1.12f872p-2 +-0x1.3c2e3p-6 +-0x1.1303f2p-2 +0x1.73c642p-4 +0x1.87c68cp-1 +0x1.d69c54p-1 +-0x1.726e54p-1 +0x1.4db076p-1 +-0x1.6196ep-1 +-0x1.253e4ap-8 +-0x1.c14988p-1 +-0x1.0c6306p-2 +0x1.24901p-2 +0x1.0b59fp-2 +-0x1.51999p-1 +-0x1.5a031ep-1 +0x1.e7b494p-2 +0x1.0c4822p-6 +-0x1.165632p-5 +0x1.f02bc2p-3 +0x1.35c696p-1 +0x1.da738ap-4 +0x1.8e1484p-1 +-0x1.6cb9d2p-2 +0x1.d4056cp-7 +0x1.de8772p-3 +0x1.d3b5e4p-2 +-0x1.d8d57ap-1 +-0x1.b9934ap-3 +-0x1.b8475p-1 +0x1.48c178p-1 +0x1.3a66bap-2 +-0x1.fa27acp-2 +-0x1.a5a174p-3 +-0x1.4a664cp-2 +0x1.6ee766p-1 +-0x1.afc05ap-3 +0x1.ea1e56p-3 +0x1.8dcce4p-1 +-0x1.0a396cp-3 +0x1.4b760cp-1 +0x1.eeaab2p-4 +-0x1.e5cf22p-1 +-0x1.6a6b36p-2 +-0x1.0033ccp-2 +0x1.5d2b02p-2 +0x1.8053bp-1 +0x1.289d04p-1 +0x1.d79606p-2 +-0x1.1ae93ap-1 +-0x1.3216d4p-1 +-0x1.6d72c6p-1 +0x1.bbf7fap-1 +0x1.82e236p-8 +0x1.2d967p-1 +0x1.215beap-1 +0x1.c7bea2p-4 +0x1.e87f02p-2 +-0x1.0ed4d4p-2 +0x1.08d668p-1 +-0x1.df8234p-3 +0x1.0ca31ap-1 +-0x1.afa226p-3 +0x1.4e31p-2 +0x1.9da612p-1 +0x1.56cd32p-2 +0x1.78507ep-2 +0x1.5fdd7p-2 +-0x1.a40adcp-1 +-0x1.9a4966p-2 +-0x1.008704p-3 +-0x1.9050f6p-2 +0x1.9010a2p-1 +0x1.113376p-1 +0x1.4a4de4p-1 +-0x1.51fccep-1 +-0x1.9c2d8ep-5 +0x1.c44d68p-5 +-0x1.358e7ep-1 +-0x1.acda54p-2 +-0x1.df8aecp-2 +-0x1.3b618p-2 +-0x1.d35c08p-3 +0x1.c612p-1 +0x1.2c63ap-1 +0x1.ff5282p-4 +-0x1.27ad28p-9 +-0x1.43fe26p-1 +-0x1.e41d42p-5 +0x1.41956ap-1 +0x1.c9b73cp-2 +-0x1.c8012ap-1 +-0x1.2c1e6ap-5 +-0x1.fd5e6cp-2 +0x1.90c3f8p-1 +0x1.7d91fap-2 +-0x1.13ae64p-1 +0x1.c8a558p-1 +0x1.a6e46p-3 +-0x1.29d98cp-1 +-0x1.f21ac8p-1 +0x1.4cbf1ap-1 +-0x1.3a429ep-4 +-0x1.ce2242p-1 +-0x1.df6ddep-2 +-0x1.1a0e88p-1 +0x1.32057p-2 +-0x1.b4cdb4p-4 +-0x1.ed7486p-2 +0x1.6e2504p-2 +0x1.5b1e28p-2 +-0x1.e16a76p-1 +0x1.7ba948p-1 +-0x1.37e812p-2 +-0x1.5a43d4p-1 +-0x1.314f14p-2 +-0x1.c4746ep-1 +0x1.caa996p-2 +-0x1.8abcbcp-3 +0x1.0e8a9p-3 +-0x1.2abbdp-2 +-0x1.03e7d6p-1 +-0x1.6d9f5ap-1 +0x1.88090ep-5 +-0x1.adf2dcp-4 +-0x1.afae6cp-5 +0x1.82c66ep-1 +0x1.76212ep-3 +0x1.1e35aap-2 +-0x1.2d2b34p-2 +-0x1.74477ap-2 +-0x1.da68dap-1 +0x1.429f68p-5 +-0x1.7077ccp-1 +0x1.814d36p-1 +0x1.1d1dbcp-1 +0x1.b4bc74p-1 +0x1.fdb266p-1 +-0x1.e217b6p-2 +0x1.7d0b6cp-5 +0x1.a7dc66p-1 +0x1.350184p-3 +-0x1.0e739ap-1 +0x1.dcf0ecp-1 +0x1.711546p-1 +-0x1.a71018p-3 +-0x1.36131ap-1 +-0x1.b1d92ep-4 +0x1.1a168p-2 +0x1.fb5d1p-10 +0x1.801e5ap-1 +-0x1.c0fb3p-2 +-0x1.c4e0a6p-4 +-0x1.a688e2p-1 +0x1.b6c954p-1 +0x1.6db21ap-1 +0x1.5860f2p-1 +-0x1.361ab4p-3 +0x1.ed5bc4p-3 +-0x1.08eff4p-2 +-0x1.409854p-1 +0x1.4ad436p-4 +0x1.760fcap-2 +0x1.6165d2p-1 +0x1.b1a2ecp-1 +0x1.59aeb6p-1 +0x1.3e0b66p-1 +-0x1.36aa08p-4 +-0x1.7caf6ep-3 +0x1.52875p-2 +0x1.708586p-2 +0x1.b8151ap-1 +0x1.960ca4p-4 +0x1.957094p-1 +0x1.1d4dcap-1 +-0x1.5d579p-1 +0x1.8d8712p-1 +0x1.17824p-1 +0x1.d5753ep-2 +0x1.a561d6p-1 +-0x1.09297ap-5 +0x1.bc58ccp-2 +0x1.cf7dbep-1 +-0x1.2bfa2p-1 +0x1.71d9c4p-1 +-0x1.78931ep-2 +-0x1.3bffbp-2 +0x1.136d34p-2 +0x1.bd27aap-4 +-0x1.d97618p-1 +0x1.f827ap-1 +0x1.10a96p-2 +0x1.05827p-1 +0x1.27ca96p-3 +-0x1.002a76p-1 +0x1.0fe87ep-1 +0x1.975796p-1 +-0x1.bd8d2cp-1 +-0x1.d75468p-1 +-0x1.0df934p-3 +0x1.cf78b8p-4 +-0x1.ac4caep-6 +0x1.b3389ap-1 +0x1.3db378p-2 +-0x1.93fbc2p-2 +0x1.61b404p-1 +-0x1.859fc8p-5 +0x1.99ce8ap-2 +0x1.6aec3ap-2 +0x1.e9dd4ap-1 +-0x1.b9dbeap-1 +0x1.2c1cdcp-4 +-0x1.5bfccep-4 +0x1.ad2c34p-1 +-0x1.2cc216p-2 +-0x1.598eaap-4 +-0x1.9d4288p-2 +-0x1.4f40c8p-1 +0x1.4d5148p-1 +0x1.bfddf2p-2 +-0x1.343e0cp-7 +-0x1.0461c2p-1 +-0x1.c31b2cp-1 +0x1.51c0fap-1 +-0x1.15a3fap-3 +0x1.67eb9ap-2 +0x1.c5dd62p-2 +-0x1.0eee3ap-1 +0x1.ef12f8p-2 +0x1.8cf8aep-2 +-0x1.e0ecf6p-2 +-0x1.95cf66p-2 +-0x1.7b9b72p-2 +-0x1.4ec552p-2 +-0x1.489c9cp-4 +-0x1.8605a8p-1 +0x1.0b9704p-3 +0x1.9fda02p-1 +0x1.1a3fd4p-1 +-0x1.4e094ap-1 +0x1.ab276ep-6 +0x1.bdbf98p-1 +0x1.c487e4p-4 +-0x1.df6aacp-1 +-0x1.ff6ep-2 +-0x1.a6d1a2p-3 +0x1.19c348p-1 +-0x1.38178cp-1 +-0x1.c0cc26p-1 +0x1.063f28p-1 +0x1.c6aa88p-1 +-0x1.32c87ep-2 +0x1.ffaddep-1 +-0x1.05ffa8p-1 +-0x1.8a040ep-1 +0x1.3a9c5p-1 +0x1.7ec5ep-1 +0x1.37444ep-2 +0x1.22851p-1 +0x1.ce3f44p-1 +0x1.35badcp-1 +-0x1.41c6ep-1 +-0x1.6c41ccp-1 +-0x1.7565fap-4 +0x1.fd92cap-2 +-0x1.37986cp-3 +0x1.d57e7cp-5 +0x1.991d56p-1 +0x1.c0f4d8p-1 +-0x1.af780ap-1 +-0x1.91f064p-3 +0x1.846352p-1 +0x1.19f85ap-2 +-0x1.a43a84p-4 +-0x1.864d08p-3 +-0x1.93569ep-1 +0x1.0cb556p-1 +-0x1.7754cp-1 +0x1.82de4ap-2 +0x1.8c544p-2 +0x1.ee36fp-1 +0x1.1297bap-1 +-0x1.47d746p-2 +0x1.3aadbcp-1 +-0x1.bd928p-1 +-0x1.b13518p-3 +0x1.9ee15p-4 +0x1.2b7cd8p-1 +-0x1.1941fep-1 +0x1.c80c68p-1 +0x1.b281cap-2 +-0x1.ef3af6p-1 +0x1.d979eap-1 +0x1.25e01ep-3 +0x1.fa0fc2p-1 +0x1.0869cap-4 +-0x1.d6aa5ap-2 +-0x1.7b13e4p-1 +0x1.b66e3ap-3 +-0x1.932754p-2 +0x1.30f30cp-5 +-0x1.2f304ep-4 +-0x1.4713a4p-2 +-0x1.f94358p-2 +-0x1.a42354p-1 +-0x1.bb276ap-1 +-0x1.a0215p-1 +-0x1.6a97a2p-1 +-0x1.d17a3ep-1 +0x1.2f363p-1 +0x1.32a8eap-1 +-0x1.c99574p-2 +-0x1.1757fp-1 +-0x1.62cb58p-1 +-0x1.16410ep-2 +0x1.17a89ep-1 +0x1.f5385ep-2 +-0x1.a2d1d2p-1 +0x1.aac754p-1 +0x1.930bc4p-1 +0x1.12566cp-1 +-0x1.11f7a6p-3 +0x1.affc0ap-3 +0x1.f2be0ap-3 +0x1.4a4c52p-1 +0x1.0b3c1ap-3 +-0x1.8c5f16p-1 +0x1.269028p-2 +0x1.4fcd6p-1 +0x1.e0721ep-2 +-0x1.e29a44p-1 +-0x1.cb80f8p-2 +0x1.2c92aap-4 +-0x1.5e774ap-2 +-0x1.b078ap-1 +0x1.5d71d2p-1 +-0x1.f2c132p-1 +0x1.f7818ap-1 +-0x1.386052p-3 +0x1.cea122p-1 +0x1.c33f8cp-3 +-0x1.79e06p-1 +0x1.cc09ccp-3 +0x1.e0b9fap-4 +0x1.6fbeap-2 +0x1.715cacp-3 +0x1.a2bc9ep-3 +-0x1.997e2cp-3 +-0x1.7b7514p-3 +0x1.2718ecp-1 +0x1.806536p-1 +0x1.9579f6p-1 +0x1.3649p-2 +0x1.a0c47ap-8 +-0x1.09803p-1 +0x1.84fb0ep-1 +0x1.944694p-3 +-0x1.08e352p-2 +-0x1.2c4f3ap-1 +0x1.4904fcp-1 +-0x1.d03ef2p-8 +-0x1.8e288ep-1 +0x1.c2aa6p-3 +0x1.ff0a0cp-1 +-0x1.ddb1ecp-2 +-0x1.f82692p-3 +0x1.9197fp-1 +0x1.f12d86p-1 +0x1.bc2f0ap-3 +-0x1.725fc8p-1 +0x1.63774p-2 +0x1.9da178p-2 +-0x1.74fb4ap-2 +0x1.ac5c34p-3 +-0x1.995882p-1 +-0x1.7448d6p-1 +-0x1.633504p-2 +0x1.c9f1ccp-4 +0x1.28782cp-1 +0x1.9fa8f2p-2 +-0x1.2bf5c4p-1 +-0x1.0b75a8p-4 +0x1.6725acp-3 +0x1.77981ep-3 +-0x1.f701b8p-3 +-0x1.bca62cp-2 +0x1.8ec04cp-1 +0x1.bbf638p-1 +-0x1.a3fa38p-2 +-0x1.1af036p-2 +0x1.22f5cep-1 +0x1.d770c8p-3 +-0x1.42a6aep-6 +-0x1.27cb52p-7 +-0x1.f49ffap-2 +-0x1.0d3d4p-1 +0x1.5b1d56p-3 +-0x1.dd3e92p-5 +0x1.d5d6b2p-6 +-0x1.bd0e3ap-1 +0x1.a6ffb6p-6 +0x1.e6a5d2p-8 +-0x1.69a5bp-4 +0x1.1757b4p-2 +0x1.6b8eep-3 +-0x1.0809dap-1 +0x1.1981bcp-2 +0x1.ae3274p-1 +-0x1.acc7c2p-1 +-0x1.8ed5eap-1 +-0x1.9a2218p-1 +0x1.a060eap-2 +-0x1.3a59a4p-3 +-0x1.697f9ep-2 +-0x1.0d641ap-2 +-0x1.85cba2p-2 +-0x1.d786b2p-2 +0x1.d47afp-1 +0x1.12b882p-1 +-0x1.ee07e4p-6 +0x1.c0f588p-2 +-0x1.7a9e3cp-1 +0x1.dd7e58p-2 +0x1.f828d8p-5 +-0x1.53bf26p-1 +-0x1.268cbap-2 +-0x1.53064ep-1 +0x1.4ce786p-3 +-0x1.815ecep-4 +-0x1.f90246p-1 +0x1.802ce6p-2 +0x1.8bb20ap-2 +-0x1.946c8p-1 +0x1.4f8e1p-3 +0x1.673254p-2 +-0x1.98da12p-2 +-0x1.83eef6p-3 +-0x1.5be26ep-1 +0x1.5e6c4ap-6 +0x1.6486d4p-1 +-0x1.79675ep-6 +-0x1.f90ed4p-1 +0x1.1dbb46p-3 +0x1.50ccd4p-1 +-0x1.7c796cp-3 +0x1.2f5dbcp-1 +-0x1.10218ep-1 +-0x1.86e44cp-2 +0x1.58fe4ap-1 +0x1.0d92d8p-1 +-0x1.1f6c54p-1 +-0x1.b5c6eep-2 +0x1.81b8acp-3 +0x1.94b35ep-4 +0x1.1b785cp-2 +0x1.99ab9p-2 +-0x1.dd3e7cp-1 +0x1.00c328p-1 +-0x1.06b808p-3 +0x1.0081cep-1 +0x1.0a5854p-2 +0x1.7002ep-1 +-0x1.9ef988p-3 +0x1.f040f2p-1 +-0x1.dce424p-1 +-0x1.2b698cp-1 +-0x1.604c22p-1 +-0x1.9ead8p-3 +-0x1.7f25d2p-1 +-0x1.3ecb54p-2 +-0x1.42bd8cp-1 +-0x1.b5871p-2 +-0x1.0bcbep-1 +0x1.ad2f3cp-1 +-0x1.c4a34ap-1 +0x1.f1b6a4p-1 +-0x1.ccb27p-1 +0x1.be840ep-2 +0x1.abfd0ap-1 +0x1.73307cp-4 +0x1.ed7722p-1 +0x1.cc4adcp-1 +-0x1.d46c12p-3 +0x1.b84222p-1 +-0x1.14347ep-1 +0x1.94eaaap-1 +0x1.45921ep-1 +0x1.af247cp-5 +0x1.468842p-1 +0x1.4bfdcep-2 +0x1.dc22aep-2 +0x1.3ec044p-1 +-0x1.38e89p-3 +0x1.7f3136p-4 +-0x1.d8e5dp-1 +0x1.ba7a58p-3 +-0x1.0c70aap-2 +-0x1.ec3c46p-1 +-0x1.f6ca0cp-3 +-0x1.45c58p-3 +-0x1.c3de1ep-5 +0x1.e727dap-2 +0x1.abe67p-2 +0x1.6d5472p-1 +0x1.9842aap-2 +-0x1.fc3032p-1 +-0x1.986ebp-1 +0x1.153a18p-1 +-0x1.8b71bp-2 +0x1.e5599ap-4 +-0x1.ea8cbp-1 +0x1.f39e28p-1 +-0x1.15c314p-6 +-0x1.c518dcp-1 +-0x1.73992ap-3 +-0x1.1f0d6p-2 +-0x1.3bfd7ap-3 +0x1.6e0414p-2 +0x1.b2bdep-1 +0x1.5c346ap-6 +0x1.abee2p-2 +-0x1.01d77ep-1 +0x1.48755ep-1 +-0x1.9a52b4p-2 +0x1.fdafb2p-1 +-0x1.3d9a4ep-3 +-0x1.6755aap-1 +-0x1.f8795p-1 +0x1.ed03d4p-3 +0x1.a353a8p-1 +-0x1.6dc442p-2 +-0x1.cfbacep-3 +-0x1.8ccbbap-1 +0x1.7a187p-1 +0x1.da45a4p-2 +0x1.7875eap-1 +-0x1.383464p-2 +-0x1.0fb048p-1 +-0x1.20affcp-1 +0x1.948236p-1 +-0x1.5298e4p-4 +0x1.61acf8p-7 +0x1.72168ep-2 +-0x1.fad952p-2 +-0x1.d3401ap-2 +0x1.1d3854p-1 +-0x1.bfc83cp-3 +-0x1.3c511ep-2 +0x1.da9aaep-2 +0x1.04347ep-2 +0x1.494dbp-1 +0x1.e8026ap-1 +0x1.af76a2p-3 +-0x1.9c0b56p-1 +-0x1.16cd88p-1 +-0x1.3ac826p-1 +0x1.68324p-2 +-0x1.967134p-2 +-0x1.ab726p-3 +-0x1.eca38ap-4 +0x1.aba0c4p-2 +0x1.0819ccp-1 +-0x1.a5ea36p-1 +0x1.ecbf22p-1 +0x1.738008p-4 +-0x1.9000cp-2 +-0x1.478cbep-1 +0x1.8966a8p-4 +0x1.8b66c8p-1 +-0x1.440ac8p-1 +0x1.7c27ecp-3 +-0x1.bf9b0ep-1 +0x1.657f4cp-3 +0x1.c9b35ap-1 +0x1.a7c2fp-2 +-0x1.fca2dap-7 +-0x1.80889ep-4 +-0x1.692e5p-4 +-0x1.87bd2p-2 +-0x1.f45922p-2 +0x1.472382p-1 +-0x1.348664p-2 +-0x1.8ca434p-4 +0x1.27d64p-1 +0x1.3167e2p-9 +0x1.07b746p-1 +-0x1.2f7bfp-1 +0x1.f9f936p-1 +0x1.ba525p-3 +0x1.0f32a8p-1 +-0x1.4f203ap-4 +-0x1.0ffdf8p-1 +-0x1.c6576p-1 +-0x1.b2896ep-5 +0x1.574f6ap-3 +-0x1.ce691ap-4 +0x1.6279p-1 +-0x1.30c4bep-1 +-0x1.62648cp-2 +-0x1.1ac084p-3 +-0x1.bb56e2p-1 +0x1.ad3f74p-3 +0x1.442a24p-1 +0x1.93fc4cp-3 +-0x1.b963dap-2 +-0x1.f13afcp-2 +-0x1.0b4ad8p-1 +-0x1.57e198p-3 +-0x1.0cfed6p-5 +-0x1.4de6ecp-1 +0x1.51a062p-1 +0x1.150624p-3 +-0x1.e4d8bp-1 +-0x1.5e75b6p-1 +0x1.7cc658p-1 +-0x1.47986ap-1 +-0x1.ee6a0ap-2 +0x1.ae4e2p-1 +-0x1.7ee782p-2 +-0x1.6eef8p-1 +0x1.0f2c7cp-1 +-0x1.0c604cp-2 +-0x1.d0cb2ap-4 +0x1.c6d452p-1 +-0x1.213f62p-1 +-0x1.16bdp-1 +-0x1.24e6e4p-2 +0x1.17855cp-3 +-0x1.aca3bap-1 +-0x1.3a2daep-1 +-0x1.4b8214p-2 +-0x1.41194ap-1 +0x1.a37e5cp-2 +-0x1.93d3c8p-2 +0x1.636292p-1 +-0x1.554624p-1 +-0x1.0f8ceap-1 +-0x1.acecccp-2 +0x1.7df32cp-6 +-0x1.255a1ap-1 +-0x1.a2bbbep-2 +-0x1.56d822p-1 +-0x1.0dbebap-1 +-0x1.b94eb6p-1 +-0x1.a9bf86p-3 +-0x1.085582p-2 +0x1.022d02p-3 +0x1.f018e6p-2 +0x1.a8bb44p-4 +-0x1.8e9e7ep-2 +-0x1.664c2ap-5 +-0x1.b5e41p-1 +-0x1.68c7d2p-3 +0x1.7ffc78p-4 +0x1.137d2cp-11 +0x1.6540a4p-4 +0x1.74d162p-3 +0x1.098f56p-1 +0x1.a59a82p-2 +0x1.292126p-1 +0x1.433194p-3 +-0x1.911912p-4 +-0x1.c19fa8p-4 +0x1.282c0ep-1 +0x1.2e83fp-7 +-0x1.e1a488p-4 +-0x1.95bdb2p-3 +0x1.dfd2ep-2 +0x1.ec2148p-1 +0x1.3a1504p-1 +-0x1.5b8e2cp-1 +-0x1.bdcd3p-1 +-0x1.079a1p-1 +0x1.5007a8p-1 +0x1.a0908ap-1 +-0x1.19e172p-1 +0x1.a9bfdp-3 +0x1.7ffbdp-1 +-0x1.604336p-2 +0x1.1c31ccp-3 +0x1.0ac26cp-3 +0x1.6ae5f2p-1 +0x1.121bfp-1 +0x1.9158f6p-2 +0x1.9374cp-1 +-0x1.8b177ap-8 +0x1.cfe3ep-1 +0x1.f9f834p-4 +0x1.975716p-2 +0x1.54625cp-3 +-0x1.d84022p-1 +-0x1.61a5dcp-2 +0x1.8a6d0ap-1 +0x1.79d6d2p-2 +-0x1.b5d0f4p-3 +-0x1.6c1508p-3 +-0x1.cee6ecp-2 +0x1.26ddap-1 +-0x1.80891ap-1 +0x1.b383e6p-1 +0x1.5da5ecp-1 +-0x1.ae0576p-1 +0x1.4f48d4p-1 +-0x1.880168p-3 +-0x1.608e46p-1 +0x1.1a0036p-1 +-0x1.d6b7bap-2 +0x1.9050bcp-2 +0x1.b6e1f8p-3 +-0x1.3fd6bap-2 +0x1.a2e96cp-3 +0x1.1895dep-2 +0x1.b3f4dap-3 +-0x1.cd855cp-2 +0x1.ccea5ap-2 +0x1.558402p-1 +-0x1.2369a8p-2 +-0x1.d10b3p-1 +0x1.1ecb4ap-5 +0x1.808544p-1 +0x1.2a89dep-2 +-0x1.4125a6p-4 +0x1.271f98p-5 +-0x1.7e755p-9 +-0x1.0d9c24p-1 +0x1.2509ecp-3 +0x1.7a11f6p-1 +-0x1.ce345cp-6 +0x1.543b1ap-1 +-0x1.0dabccp-1 +-0x1.807586p-2 +0x1.d01544p-2 +-0x1.23630cp-3 +0x1.f8baf2p-4 +0x1.2c45a4p-2 +-0x1.e7a83cp-2 +0x1.1b546ep-2 +0x1.64958ep-2 +-0x1.1788ap-3 +-0x1.7c7736p-1 +-0x1.86a542p-1 +-0x1.699836p-1 +-0x1.37057ap-1 +-0x1.abe92ap-3 +0x1.94d0b6p-1 +0x1.d7d5bp-2 +-0x1.b42382p-2 +-0x1.60be74p-1 +0x1.035cecp-1 +0x1.7f99fcp-2 +-0x1.995296p-3 +0x1.5ff66ap-2 +-0x1.d41802p-1 +-0x1.aec89cp-1 +0x1.3cda12p-1 +0x1.8f57bep-1 +0x1.0cf5bp-2 +0x1.c8875ep-2 +0x1.ab8b96p-1 +0x1.1f3b7cp-3 +-0x1.541dcap-2 +-0x1.9ef1e2p-1 +-0x1.f1bdb2p-7 +0x1.7df5acp-1 +0x1.6eb4e8p-3 +0x1.efb1a4p-1 +-0x1.72bc14p-1 +-0x1.ba82f6p-2 +-0x1.ea55d8p-3 +0x1.292118p-1 +0x1.5e311cp-1 +-0x1.9bf966p-4 +0x1.cd24b4p-2 +0x1.88f71ap-2 +-0x1.0e428ap-4 +-0x1.9a536ep-2 +-0x1.f8c908p-1 +0x1.40c9a2p-6 +0x1.e18d8p-1 +0x1.108fbap-1 +-0x1.4fcec2p-6 +-0x1.080d9ap-1 +0x1.fc551cp-1 +0x1.9bb61cp-4 +-0x1.4168cp-2 +0x1.c799e8p-1 +-0x1.0c4a5ap-2 +0x1.ebf3ccp-1 +-0x1.be1b56p-1 +-0x1.88a11ap-1 +-0x1.8ecffcp-1 +0x1.c55182p-2 +0x1.d3d142p-3 +0x1.39252cp-2 +0x1.654ff8p-2 +-0x1.750bd8p-3 +-0x1.69df3ep-2 +0x1.bba0dp-1 +-0x1.28c5f2p-2 +0x1.321f6ap-1 +-0x1.eb4042p-2 +0x1.95914p-1 +-0x1.f11da8p-3 +0x1.cb7c72p-1 +0x1.63b18ep-2 +-0x1.9f6c02p-1 +-0x1.8ab8bcp-5 +0x1.7b590ep-4 +-0x1.5df522p-1 +-0x1.68ff1ap-9 +-0x1.540a26p-2 +-0x1.e70f7ap-1 +-0x1.443a22p-1 +-0x1.298bfep-3 +-0x1.86b306p-3 +0x1.1e2ab2p-1 +-0x1.23a576p-1 +-0x1.24f144p-1 +-0x1.4b31f8p-3 +0x1.16c554p-1 +0x1.0d1d3ep-3 +-0x1.d95ceap-4 +0x1.b35c34p-1 +0x1.d53302p-1 +-0x1.bd7b1p-2 +0x1.7aacdep-4 +-0x1.4d08ccp-3 +0x1.1bf0fcp-2 +0x1.dfb862p-1 +0x1.b15fccp-2 +-0x1.0acc9cp-2 +-0x1.3eabeap-1 +0x1.29a66ap-4 +-0x1.389b1ep-6 +0x1.a4ee6ap-3 +0x1.77f648p-3 +0x1.baf354p-1 +0x1.8bd0c2p-5 +0x1.0381bp-1 +0x1.371fdcp-1 +0x1.1e4186p-5 +0x1.3612eap-1 +0x1.4122c6p-1 +-0x1.b1def2p-1 +-0x1.d3b6c8p-3 +-0x1.b8dcb8p-1 +-0x1.f1d346p-1 +0x1.bb5df4p-2 +-0x1.87d1b2p-3 +-0x1.6b1c1cp-1 +-0x1.835d9p-2 +0x1.a11072p-1 +-0x1.0fdc3p-3 +-0x1.b2393ap-6 +0x1.64c874p-2 +0x1.49503cp-1 +0x1.d3a51cp-3 +-0x1.b9e888p-1 +-0x1.1ff292p-1 +0x1.a38aeep-5 +0x1.43a67p-2 +0x1.010fbp-1 +0x1.92a2c6p-3 +-0x1.2ee2p-3 +-0x1.181a88p-2 +-0x1.80ed38p-2 +-0x1.a2626p-1 +0x1.10247p-3 +0x1.31239ap-2 +-0x1.9a988cp-1 +0x1.2a95dep-2 +0x1.0a6016p-1 +0x1.dba78p-3 +-0x1.499e9ep-3 +-0x1.a5bf1ep-1 +-0x1.e737e2p-2 +-0x1.4d1852p-5 +0x1.b4a3fp-5 +0x1.baa424p-1 +0x1.50b7dcp-2 +0x1.a0ae4ep-1 +0x1.03c45p-1 +-0x1.6a1a44p-3 +-0x1.aa7486p-3 +0x1.4b4beep-1 +-0x1.d24a0cp-1 +0x1.94e16cp-2 +0x1.c0a628p-1 +0x1.50122p-3 +-0x1.f7107ap-4 +-0x1.70312ep-1 +0x1.a2b6acp-3 +0x1.7932e6p-1 +-0x1.338dp-3 +0x1.902b6ep-5 +-0x1.599ebep-1 +-0x1.e81a96p-3 +0x1.35b766p-2 +0x1.0bfdfap-1 +-0x1.48bb9ap-2 +-0x1.9d1a9p-1 +0x1.4ef9a4p-4 +0x1.8fe102p-2 +0x1.b8d37ep-2 +0x1.2498c8p-1 +0x1.383d52p-1 +-0x1.9653c6p-1 +0x1.f95622p-1 +0x1.e2e2d6p-2 +-0x1.b28b24p-2 +-0x1.52914cp-2 +-0x1.7ce9c2p-1 +-0x1.263a38p-1 +-0x1.b7340cp-2 +-0x1.adc26cp-2 +-0x1.9cfa82p-2 +0x1.699eaep-1 +0x1.7b4b3p-6 +-0x1.b59d0ep-3 +-0x1.5eb8ecp-2 +-0x1.cec0f8p-1 +0x1.572db2p-1 +0x1.6ad772p-4 +-0x1.49ca7ap-1 +0x1.1b2b62p-4 +0x1.36d5eep-2 +0x1.ba6548p-1 +-0x1.2ab656p-1 +-0x1.72fep-1 +-0x1.bde63cp-5 +0x1.490046p-1 +0x1.3f4e94p-2 +-0x1.087772p-1 +0x1.68a22cp-4 +-0x1.2647a8p-1 +0x1.0e5d18p-1 +-0x1.2de122p-1 +-0x1.91b2e6p-1 +0x1.4fee78p-2 +-0x1.8c8514p-5 +-0x1.09e92cp-3 +0x1.cb4042p-4 +0x1.9726dep-3 +0x1.8c68e4p-1 +0x1.3a6c8ep-1 +-0x1.eb8014p-3 +-0x1.704e46p-4 +0x1.385b92p-1 +-0x1.4792ecp-1 +0x1.c73c8ap-1 +-0x1.ca2cb8p-1 +0x1.99bca8p-1 +0x1.460798p-2 +0x1.f1babep-1 +0x1.f523f8p-2 +-0x1.b932d6p-2 +0x1.9d14aap-1 +-0x1.0cdfap-6 +-0x1.f0318p-3 +0x1.1648fep-1 +-0x1.c87dcap-3 +0x1.8f1964p-3 +-0x1.c96f96p-5 +0x1.b4f6a2p-3 +-0x1.2ad0e4p-2 +0x1.e42a9ep-2 +-0x1.06403ep-3 +-0x1.837efap-1 +0x1.2984fp-4 +-0x1.c66f4p-1 +-0x1.778abep-1 +-0x1.a4c7bcp-2 +0x1.2f2cb2p-3 +0x1.bd1848p-4 +0x1.e20ab4p-1 +-0x1.f7f612p-3 +-0x1.c27646p-2 +0x1.d14bap-4 +-0x1.0987f8p-1 +-0x1.19f55ep-1 +-0x1.75c0e4p-2 +-0x1.b1c836p-1 +0x1.e988d2p-1 +0x1.7b67d8p-1 +0x1.21f2a8p-1 +0x1.b96e7ap-4 +0x1.ad9c94p-1 +0x1.5652ep-3 +-0x1.642986p-1 +0x1.fb3c1cp-1 +-0x1.f525ecp-1 +-0x1.6e9a76p-1 +-0x1.71836ep-5 +0x1.e461bcp-3 +0x1.88ba44p-1 +-0x1.179be8p-5 +-0x1.0ed4ccp-2 +0x1.33bc22p-1 +0x1.29bd2ap-1 +-0x1.fdab52p-1 +-0x1.59a6e4p-2 +-0x1.da4e4ap-1 +-0x1.f2da58p-1 +0x1.fb6d4ap-3 +0x1.b745f4p-1 +0x1.ef6f4ep-2 +-0x1.23e156p-7 +0x1.7a4d5ep-1 +0x1.e7c0b4p-1 +0x1.477914p-3 +0x1.ca8a92p-1 +-0x1.10599cp-2 +-0x1.19b6e4p-1 +-0x1.3f8ed6p-1 +0x1.e8bee4p-2 +0x1.6d466ap-1 +0x1.92188p-1 +0x1.ec5154p-1 +-0x1.e8df5cp-2 +-0x1.68826p-1 +0x1.7e6c5p-4 +-0x1.40a592p-1 +-0x1.248f5cp-3 +-0x1.02654p-1 +-0x1.a23676p-1 +0x1.646a5p-1 +-0x1.d81a5p-5 +-0x1.a56694p-3 +-0x1.331a8ap-2 +0x1.a5b3cap-2 +0x1.66f044p-2 +0x1.23e11ap-2 +0x1.cfcd92p-2 +-0x1.7ebb1p-1 +-0x1.cea03ap-4 +0x1.acbdeap-1 +0x1.8803fp-1 +-0x1.3f809ap-1 +-0x1.481272p-5 +0x1.223c3p-1 +0x1.c4d30cp-1 +-0x1.42a26cp-2 +-0x1.3eac08p-1 +-0x1.a5d926p-3 +-0x1.b1d15cp-1 +-0x1.c79b0ep-1 +0x1.f167fap-2 +0x1.7aacdep-2 +-0x1.3a97b6p-1 +0x1.aec646p-3 +-0x1.edd2fap-1 +0x1.89da3cp-4 +-0x1.22f616p-2 +-0x1.500a42p-1 +0x1.b79c04p-2 +-0x1.090f9ap-1 +0x1.424678p-2 +-0x1.a4b4d6p-3 +0x1.421eaep-1 +-0x1.08ed3ap-2 +-0x1.1bd23ap-1 +0x1.7cedb2p-4 +-0x1.1f95fep-1 +0x1.4610a4p-1 +-0x1.249fdep-3 +-0x1.4516dap-5 +-0x1.b54fb6p-1 +0x1.da0c9ap-1 +0x1.db0ec8p-1 +-0x1.c782e4p-2 +0x1.85af54p-2 +-0x1.aade6ap-3 +-0x1.547b92p-4 +-0x1.8a25fp-5 +0x1.6fcb84p-1 +0x1.2daf52p-3 +0x1.0794e8p-2 +0x1.9ff4p-1 +-0x1.fc2476p-2 +-0x1.210c7ap-1 +0x1.f22eaap-1 +-0x1.a25f9ap-1 +0x1.c656dap-1 +0x1.d412fcp-4 +0x1.c899cep-2 +0x1.852dc6p-5 +-0x1.fada82p-1 +0x1.7fe52ap-1 +0x1.a31d1p-2 +-0x1.d8f9eap-2 +0x1.a38b92p-2 +-0x1.a000cp-3 +0x1.9bfe2ep-1 +0x1.b7077ep-3 +-0x1.a00d3p-2 +0x1.a988d8p-2 +0x1.7cf188p-1 +0x1.7305bap-1 +0x1.e2e038p-2 +0x1.b5b562p-4 +-0x1.52e3fap-1 +0x1.f8519p-1 +-0x1.7fab5p-1 +0x1.5dfaecp-3 +0x1.6c5da6p-1 +-0x1.5bbd4ap-1 +-0x1.88bbecp-3 +0x1.d16ee2p-1 +-0x1.071304p-1 +-0x1.8be6bap-1 +0x1.27cf3ap-1 +-0x1.08f87ep-1 +-0x1.c5d5a6p-3 +-0x1.592718p-1 +-0x1.6789dp-2 +0x1.a3b27cp-8 +0x1.2cdc54p-1 +-0x1.aa7dep-3 +0x1.8062fp-1 +0x1.b64136p-3 +0x1.6f9548p-1 +-0x1.8300b4p-6 +-0x1.87e008p-5 +0x1.51fad8p-1 +-0x1.caa1aap-7 +0x1.d5a40ep-4 +-0x1.6ac5d2p-3 +-0x1.9db40ep-1 +0x1.41aee8p-3 +0x1.f8ae18p-3 +-0x1.d45c64p-1 +0x1.541feap-1 +-0x1.9cd0d2p-1 +0x1.2ae9eap-5 +0x1.e584fp-3 +0x1.4c43bcp-1 +0x1.d71a7ap-2 +0x1.b29d26p-6 +-0x1.3c87f4p-3 +-0x1.fad376p-5 +-0x1.2afbccp-1 +-0x1.c13422p-4 +0x1.80a34ap-1 +-0x1.1b931ap-1 +-0x1.e582a6p-1 +-0x1.d0214ep-1 +-0x1.bf5116p-1 +0x1.80cdb6p-2 +-0x1.bdd19ep-1 +0x1.c616aep-1 +-0x1.ff865ap-1 +-0x1.b94ab4p-1 +0x1.b63c04p-1 +-0x1.699608p-6 +0x1.9adb06p-1 +-0x1.46273p-3 +-0x1.fb70f6p-3 +-0x1.72e71ep-3 +-0x1.a9282cp-6 +0x1.8bfa74p-4 +-0x1.a0e0e2p-1 +-0x1.3d6d58p-2 +0x1.89c75ep-2 +-0x1.241f1cp-1 +-0x1.2bc568p-1 +0x1.e60e4cp-1 +0x1.40105cp-3 +-0x1.2ef564p-1 +-0x1.07bf42p-2 +-0x1.049d34p-1 +-0x1.45f552p-2 +-0x1.1997c4p-4 +-0x1.8de364p-2 +-0x1.05bb6p-1 +-0x1.342b54p-1 +-0x1.89b84ep-2 +-0x1.3f7bcep-1 +0x1.1445cp-6 +0x1.bda78ap-1 +-0x1.854a98p-1 +0x1.5de8d2p-1 +0x1.fb1532p-3 +-0x1.c9dbdcp-4 +-0x1.028ce8p-2 +0x1.8733dep-1 +-0x1.245a56p-3 +0x1.06a56p-5 +-0x1.0bf4ap-1 +-0x1.b581e2p-1 +-0x1.c2e7f4p-2 +-0x1.276d42p-1 +-0x1.061c5cp-4 +-0x1.3228ap-2 +0x1.2a67e2p-2 +-0x1.809258p-1 +-0x1.44c4ep-2 +-0x1.4bdccap-2 +0x1.faeaf4p-1 +0x1.53cd26p-3 +0x1.aabe66p-2 +-0x1.09a5p-1 +-0x1.446314p-3 +-0x1.e0af62p-3 +-0x1.cc1818p-2 +-0x1.3f3c5ap-1 +-0x1.eaede6p-5 +0x1.95010cp-2 +0x1.61f82cp-2 +0x1.53d116p-1 +0x1.788304p-1 +0x1.188138p-2 +0x1.0c9426p-1 +0x1.f8fd58p-1 +0x1.4a5cd6p-4 +-0x1.366788p-3 +-0x1.37d8ccp-1 +0x1.0b29b4p-1 +-0x1.c96cf2p-1 +-0x1.01c426p-5 +0x1.d80d3cp-1 +-0x1.2c483p-1 +-0x1.fb19c4p-2 +0x1.901954p-1 +0x1.91bb1p-2 +0x1.8f2fbep-2 +-0x1.7b79dap-2 +-0x1.6b268ap-4 +0x1.af1126p-2 +-0x1.c37a24p-1 +0x1.8dc00ap-1 +0x1.63d1c8p-1 +0x1.926eb4p-6 +0x1.235de8p-1 +0x1.e42528p-2 +-0x1.572c38p-3 +0x1.0c638ap-3 +0x1.88a23cp-1 +0x1.71ac7ap-2 +0x1.acfa58p-3 +-0x1.8db6ecp-3 +0x1.fa8b9ap-4 +0x1.d12ffp-1 +-0x1.b6ec8cp-5 +-0x1.ba0902p-1 +0x1.ddb47ap-3 +0x1.73982ep-1 +-0x1.644962p-1 +-0x1.f5062ap-6 +-0x1.52bfb6p-2 +0x1.faf4ecp-4 +0x1.a05c38p-2 +0x1.afc80cp-2 +-0x1.0c96d4p-4 +-0x1.eb6172p-1 +-0x1.4d7474p-1 +0x1.97f4b8p-2 +0x1.b431c8p-3 +-0x1.0eb48cp-2 +0x1.88649ep-2 +-0x1.fc0fd6p-2 +-0x1.0052d6p-3 +-0x1.04dbdep-1 +0x1.ece166p-5 +0x1.c9d72ap-1 +0x1.df2ae2p-2 +-0x1.12b504p-1 +-0x1.b4c8eap-4 +-0x1.bbb53ep-1 +0x1.e63fdp-1 +0x1.ea8b02p-1 +-0x1.0d8c0cp-1 +-0x1.4e1244p-2 +0x1.7f6a4ep-2 +-0x1.37faaep-2 +0x1.b81386p-5 +-0x1.fcccf8p-1 +0x1.d5fbdp-2 +-0x1.6c946ap-1 +-0x1.1b352cp-1 +0x1.c11582p-2 +0x1.99001ap-1 +0x1.0dc7c6p-1 +0x1.8fddb4p-1 +0x1.499c58p-1 +-0x1.59c654p-2 +0x1.5eab24p-1 +-0x1.b85a6ap-1 +-0x1.30a6dap-1 +-0x1.932a56p-3 +-0x1.dea32p-2 +0x1.ff3e96p-5 +-0x1.4c618p-1 +-0x1.84e5ap-1 +0x1.7abe06p-2 +-0x1.c7ed9ap-2 +0x1.19b9a8p-3 +0x1.ec5ddp-1 +-0x1.719e66p-1 +-0x1.9c222ep-1 +0x1.ad9e52p-2 +-0x1.b91d5ep-1 +0x1.2f1a9ep-1 +-0x1.fa2f56p-1 +-0x1.f21f1p-1 +-0x1.95f9ecp-1 +0x1.f29af8p-3 +0x1.6fb0acp-2 +-0x1.3c294ep-1 +0x1.8c641ep-2 +-0x1.9ab2bcp-2 +-0x1.351b0ep-5 +-0x1.91b36p-1 +0x1.6b0cfcp-1 +0x1.387baap-5 +0x1.ab2eb2p-1 +-0x1.93edaap-1 +0x1.d085dap-2 +0x1.2d822ap-2 +0x1.ac9ee4p-1 +-0x1.3c5d22p-4 +-0x1.9448c4p-2 +0x1.b402d8p-1 +-0x1.b89d82p-4 +-0x1.3bee36p-2 +-0x1.bb481cp-4 +-0x1.a497f6p-1 +0x1.8c0e64p-1 +-0x1.c28ef4p-1 +0x1.979656p-3 +-0x1.ac4f7cp-1 +-0x1.0b9d3p-1 +0x1.6dea12p-2 +0x1.043b4cp-1 +0x1.235684p-1 +-0x1.d35da2p-3 +-0x1.755cb8p-1 +0x1.74413p-2 +0x1.d833cep-1 +-0x1.95d77ap-1 +0x1.fefb2ep-2 +0x1.403c34p-1 +0x1.3dedbcp-1 +-0x1.6a9174p-1 +0x1.abcb4cp-8 +-0x1.fe3e1ap-1 +0x1.aed45ep-3 +0x1.fca5b2p-2 +-0x1.5aec2cp-5 +-0x1.78b2a8p-1 +-0x1.224796p-3 +0x1.bdd2c2p-1 +0x1.17da74p-4 +0x1.120b4cp-1 +0x1.4e1d52p-1 +0x1.16e1fp-2 +-0x1.01c2b6p-2 +-0x1.c352ecp-3 +0x1.35108ep-1 +-0x1.a04352p-6 +0x1.d0d832p-2 +-0x1.be71c4p-1 +0x1.53b13cp-1 +0x1.7d916ap-3 +-0x1.a281bcp-3 +-0x1.042096p-1 +-0x1.449426p-3 +0x1.bf3b7ap-2 +0x1.1d432ap-2 +-0x1.e77d8p-6 +-0x1.046d5ep-1 +-0x1.d704d6p-1 +-0x1.239618p-1 +-0x1.35ca84p-2 +-0x1.be45cap-1 +-0x1.9839e6p-3 +-0x1.0e269ap-1 +0x1.055fcep-1 +-0x1.c41bbap-3 +-0x1.85e72p-2 +-0x1.76fa5cp-2 +-0x1.0d2e12p-1 +0x1.38c6aap-1 +-0x1.187b2cp-2 +0x1.878a38p-2 +0x1.096782p-1 +-0x1.3a3c82p-1 +0x1.5f46eep-2 +-0x1.8f9916p-2 +0x1.4e239cp-2 +0x1.1db18cp-1 +-0x1.47e9fap-3 +-0x1.d3de9ep-1 +0x1.9057d2p-7 +0x1.426d94p-1 +0x1.6e8a0cp-1 +0x1.72474cp-6 +-0x1.2d2caap-1 +-0x1.ee3072p-1 +0x1.dee28ap-2 +0x1.1b89fep-1 +-0x1.29a052p-2 +-0x1.31163cp-2 +-0x1.d4be14p-1 +0x1.45e848p-1 +-0x1.d264dap-2 +-0x1.6c2b72p-2 +0x1.9872a6p-2 +-0x1.51bd08p-1 +0x1.514bp-1 +-0x1.e085fep-1 +0x1.53009p-1 +-0x1.6934bp-1 +-0x1.e60096p-1 +-0x1.7167d2p-1 +0x1.c3d124p-7 +0x1.595b7ap-1 +-0x1.4786d4p-2 +0x1.60ab0ap-3 +0x1.ab6546p-4 +-0x1.4ce38ap-7 +0x1.4c4202p-3 +0x1.edd0e6p-1 +0x1.e82eap-1 +-0x1.878edap-6 +0x1.b8c5dp-1 +-0x1.758052p-1 +0x1.6beddcp-1 +-0x1.5d201ap-1 +-0x1.4106eap-1 +-0x1.ed26c4p-1 +0x1.40b2acp-3 +0x1.1dc00ap-1 +-0x1.9a927ap-1 +0x1.02bdcep-2 +0x1.23c368p-1 +0x1.11b786p-1 +0x1.b864c8p-3 +0x1.217d76p-1 +0x1.d1bcbp-1 +0x1.2b141cp-3 +-0x1.62ef5p-2 +0x1.94ea8ap-4 +0x1.0a74a8p-2 +0x1.e0bdcap-2 +-0x1.e80fbcp-2 +0x1.65ca6p-1 +0x1.0e00b6p-2 +0x1.3f7602p-1 +-0x1.34ee6p-1 +-0x1.51a328p-2 +0x1.97f7f2p-1 +0x1.b1adfep-1 +-0x1.5a6d86p-1 +0x1.784ca8p-1 +0x1.2d0946p-2 +-0x1.594df6p-1 +0x1.0650bep-2 +0x1.a26172p-7 +0x1.a61d2p-3 +-0x1.afb4c8p-4 +-0x1.159c2cp-1 +0x1.d6bf1ap-2 +0x1.5159aep-1 +-0x1.efc4f4p-2 +-0x1.16670cp-2 +0x1.20517cp-2 +0x1.46cc94p-1 +0x1.ab4774p-5 +0x1.20e1a2p-1 +-0x1.bc3572p-1 +-0x1.c5e448p-2 +0x1.68bbd6p-4 +0x1.16ba84p-1 +0x1.270e1ep-3 +-0x1.c4a876p-1 +-0x1.9b60eap-8 +0x1.ba1ce6p-1 +0x1.2c2b52p-1 +-0x1.7e2b3ap-2 +-0x1.ac1924p-3 +0x1.120eeep-2 +0x1.df9648p-3 +0x1.819cf6p-2 +-0x1.baf79ap-2 +-0x1.3c652ep-1 +-0x1.304962p-1 +-0x1.6ee21cp-2 +0x1.96f7eep-5 +0x1.aa7712p-1 +-0x1.779cfep-4 +0x1.a2b002p-1 +0x1.e15e9ep-1 +0x1.c5917ap-1 +-0x1.eab47p-1 +0x1.564d5ap-1 +-0x1.068ddep-3 +0x1.11b298p-1 +0x1.c54948p-3 +0x1.08008ep-3 +0x1.ccad7cp-4 +0x1.0d9a74p-2 +0x1.b12186p-3 +0x1.9a0be4p-1 +-0x1.58ffc8p-4 +0x1.802e2ap-2 +0x1.40d8d6p-3 +-0x1.970408p-1 +-0x1.930bdp-1 +-0x1.dc2a3p-3 +-0x1.a51098p-3 +-0x1.bca5eap-4 +-0x1.4c97f2p-3 +0x1.9ec046p-2 +-0x1.bf8f7cp-2 +0x1.f27b9ep-2 +-0x1.26f5dap-2 +-0x1.bf469ap-6 +0x1.9105ep-1 +-0x1.1069eap-1 +0x1.925da6p-4 +-0x1.bf3118p-1 +-0x1.21704cp-1 +-0x1.128c48p-3 +0x1.df6d9ep-2 +-0x1.1d8da2p-1 +-0x1.898b68p-1 +0x1.4f261cp-1 +0x1.e516aep-5 +0x1.00755cp-2 +-0x1.f4599p-2 +0x1.2f7f5ap-2 +-0x1.ea5f1ap-1 +-0x1.d8ac8cp-6 +-0x1.84a67cp-1 +0x1.dcd748p-1 +-0x1.32bcap-4 +0x1.a9a27ap-4 +-0x1.9d5db8p-1 +0x1.e3458p-1 +0x1.e8d24ep-6 +-0x1.63966ap-2 +-0x1.79e9ccp-2 +-0x1.650482p-1 +0x1.6a2b6ep-5 +0x1.206bb8p-1 +-0x1.d6fe34p-2 +0x1.2bcbbcp-1 +0x1.7eaad6p-1 +-0x1.fb997ep-1 +0x1.180e4ap-4 +-0x1.7895acp-2 +0x1.c4b296p-1 +0x1.de5a8cp-1 +0x1.cee88p-2 +0x1.560696p-3 +-0x1.eae7c8p-2 +0x1.ee5de6p-1 +-0x1.69d7d6p-4 +-0x1.1ec2cap-4 +-0x1.b7d8d4p-2 +0x1.e2a8b2p-1 +0x1.576682p-1 +-0x1.21dda6p-3 +0x1.d396d8p-4 +-0x1.0d8292p-2 +0x1.7ed824p-9 +-0x1.91626ep-1 +0x1.76d8bp-1 +0x1.e39884p-1 +0x1.a135f6p-1 +-0x1.3d069ep-1 +0x1.2c11c4p-1 +0x1.7900dep-1 +0x1.0ae9e2p-4 +-0x1.13b894p-1 +-0x1.5cb688p-7 +0x1.91ec84p-2 +0x1.694ddep-6 +-0x1.398efp-1 +-0x1.8886dep-1 +-0x1.eca37ap-6 +-0x1.5aab5cp-7 +-0x1.013774p-1 +0x1.8bcb4p-1 +0x1.b6c0dap-2 +0x1.db71fp-3 +0x1.f802ecp-1 +-0x1.a89dd2p-1 +0x1.a65da2p-3 +-0x1.cc22ccp-8 +0x1.fd1108p-5 +0x1.7eb01cp-2 +0x1.cb91d6p-3 +0x1.e7fa4cp-1 +0x1.38e93ep-3 +0x1.d0d974p-3 +-0x1.c66866p-2 +0x1.c62694p-1 +-0x1.ac41f4p-4 +0x1.177ee4p-1 +-0x1.4fadb6p-2 +-0x1.d9a11ap-5 +-0x1.6a8e74p-1 +0x1.8793a8p-4 +0x1.692428p-2 +-0x1.eb454p-1 +-0x1.446fbep-2 +-0x1.05c5ecp-3 +-0x1.9b0ecp-2 +0x1.f6acbep-1 +-0x1.3479a2p-1 +-0x1.21730ap-3 +0x1.5acbb4p-6 +-0x1.8fddcep-2 +0x1.1d3cbp-1 +-0x1.da3892p-1 +0x1.021e3p-2 +-0x1.46686ap-4 +0x1.0673acp-3 +-0x1.db8682p-3 +0x1.deb208p-3 +0x1.357606p-4 +-0x1.a56c98p-6 +0x1.b5f89ep-1 +-0x1.8c17cap-3 +-0x1.65d8d8p-3 +0x1.9222ecp-3 +0x1.2e4afcp-3 +0x1.6b705cp-1 +0x1.bbf77ep-6 +-0x1.8adbc6p-2 +0x1.433f6ap-2 +-0x1.d6ae58p-1 +0x1.67bc66p-2 +-0x1.242ca2p-1 +0x1.f1131ep-1 +0x1.aed728p-1 +0x1.daa8d6p-8 +0x1.b9a9b4p-5 +0x1.d80ae2p-1 +0x1.4d5612p-2 +-0x1.c7440cp-1 +0x1.575c8p-1 +0x1.ab0998p-3 +0x1.1ab062p-2 +0x1.2e364p-3 +-0x1.1a0c56p-1 +0x1.4d4cd2p-3 +0x1.6802fap-1 +0x1.4574dp-1 +-0x1.a79d78p-2 +0x1.00924cp-1 +-0x1.b1bce4p-1 +-0x1.2a255ep-2 +0x1.8daa0ap-2 +0x1.1d2dep-1 +-0x1.ee847cp-1 +0x1.966612p-2 +-0x1.677cc4p-4 +0x1.ab8bb4p-5 +0x1.52db6ap-1 +0x1.61c88p-2 +-0x1.e25128p-1 +0x1.dbc62ep-3 +0x1.8b0d0ap-1 +0x1.6d10f4p-1 +-0x1.a572bcp-2 +0x1.46902ep-4 +0x1.9f2472p-3 +-0x1.583018p-2 +0x1.2e16eap-3 +-0x1.eb2c5ep-1 +-0x1.5b97fap-1 +0x1.e09b72p-2 +0x1.8508a6p-3 +-0x1.87b252p-9 +0x1.36c3f4p-1 +-0x1.20a06ep-4 +-0x1.031486p-2 +0x1.ddfb98p-2 +0x1.1cb62cp-2 +-0x1.3bac38p-2 +-0x1.a150a8p-3 +0x1.08933ep-1 +-0x1.77306ap-1 +-0x1.2a7a5cp-2 +0x1.4a0fcp-1 +0x1.71facep-4 +0x1.f651dcp-1 +0x1.4b9d96p-1 +0x1.615c78p-1 +0x1.5d42p-3 +-0x1.44fae2p-1 +0x1.88e8eep-1 +-0x1.171286p-7 +0x1.4ee89cp-3 From patchwork Wed Nov 24 19:37:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sunil K Pandey X-Patchwork-Id: 48074 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id EC2203858C60 for ; Wed, 24 Nov 2021 19:44:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EC2203858C60 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1637783065; bh=LHtqINV97LJhdAYzGy4gw9xdFj5kUIrL0sIPXL7W8Jc=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=Vlj1CUE1O+ENYSoS0r34sHa7m183kSRe4Zel4/5SJ4a2d8v+4MXENlpiNdP+Bf/hQ ieODYHXG9K7QZOwxVNbC+jSAICvvTXzwzkAVVu8twTbJv+zYkpt+f9nofrvygWBfBR sWkKCj+56rDdDgrHVKhlZd9u2sM/DUb8VWGm/SE0= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by sourceware.org (Postfix) with ESMTPS id B242D3858433 for ; Wed, 24 Nov 2021 19:38:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B242D3858433 X-IronPort-AV: E=McAfee;i="6200,9189,10178"; a="235599444" X-IronPort-AV: E=Sophos;i="5.87,261,1631602800"; d="scan'208";a="235599444" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Nov 2021 11:38:09 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,261,1631602800"; d="scan'208";a="509564564" Received: from scymds02.sc.intel.com ([10.82.73.244]) by fmsmga007.fm.intel.com with ESMTP; 24 Nov 2021 11:38:08 -0800 Received: from gskx-1.sc.intel.com (gskx-1.sc.intel.com [172.25.149.211]) by scymds02.sc.intel.com with ESMTP id 1AOJc7Wo021555; Wed, 24 Nov 2021 11:38:08 -0800 To: libc-alpha@sourceware.org Subject: [PATCH 03/42] x86-64: Add vector acosh/acoshf implementation to libmvec Date: Wed, 24 Nov 2021 11:37:28 -0800 Message-Id: <20211124193807.2093208-4-skpgkp2@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211124193807.2093208-1-skpgkp2@gmail.com> References: <20211124193807.2093208-1-skpgkp2@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, FORGED_GMAIL_RCVD, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, HK_RANDOM_ENVFROM, HK_RANDOM_FROM, KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_SHORT, KAM_STOCKGEN, LOTS_OF_MONEY, NML_ADSP_CUSTOM_MED, SPF_HELO_NONE, SPF_SOFTFAIL, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Sunil K Pandey via Libc-alpha From: Sunil K Pandey Reply-To: Sunil K Pandey Cc: andrey.kolesov@intel.com Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Implement vectorized acosh/acoshf containing SSE, AVX, AVX2 and AVX512 versions for libmvec as per vector ABI. It also contains accuracy and ABI tests for vector acosh/acoshf with regenerated ulps. --- bits/libm-simd-decl-stubs.h | 11 + math/bits/mathcalls.h | 2 +- .../unix/sysv/linux/x86_64/libmvec.abilist | 8 + sysdeps/x86/fpu/bits/math-vector.h | 4 + sysdeps/x86_64/fpu/Makeconfig | 1 + sysdeps/x86_64/fpu/Versions | 2 + sysdeps/x86_64/fpu/libm-test-ulps | 20 + .../fpu/multiarch/svml_d_acosh2_core-sse2.S | 20 + .../x86_64/fpu/multiarch/svml_d_acosh2_core.c | 27 + .../fpu/multiarch/svml_d_acosh2_core_sse4.S | 5408 +++++++++++++++++ .../fpu/multiarch/svml_d_acosh4_core-sse.S | 20 + .../x86_64/fpu/multiarch/svml_d_acosh4_core.c | 27 + .../fpu/multiarch/svml_d_acosh4_core_avx2.S | 5071 ++++++++++++++++ .../fpu/multiarch/svml_d_acosh8_core-avx2.S | 20 + .../x86_64/fpu/multiarch/svml_d_acosh8_core.c | 27 + .../fpu/multiarch/svml_d_acosh8_core_avx512.S | 864 +++ .../fpu/multiarch/svml_s_acoshf16_core-avx2.S | 20 + .../fpu/multiarch/svml_s_acoshf16_core.c | 28 + .../multiarch/svml_s_acoshf16_core_avx512.S | 661 ++ .../fpu/multiarch/svml_s_acoshf4_core-sse2.S | 20 + .../fpu/multiarch/svml_s_acoshf4_core.c | 28 + .../fpu/multiarch/svml_s_acoshf4_core_sse4.S | 2498 ++++++++ .../fpu/multiarch/svml_s_acoshf8_core-sse.S | 20 + .../fpu/multiarch/svml_s_acoshf8_core.c | 28 + .../fpu/multiarch/svml_s_acoshf8_core_avx2.S | 2112 +++++++ sysdeps/x86_64/fpu/svml_d_acosh2_core.S | 29 + sysdeps/x86_64/fpu/svml_d_acosh4_core.S | 29 + sysdeps/x86_64/fpu/svml_d_acosh4_core_avx.S | 25 + sysdeps/x86_64/fpu/svml_d_acosh8_core.S | 25 + sysdeps/x86_64/fpu/svml_s_acoshf16_core.S | 25 + sysdeps/x86_64/fpu/svml_s_acoshf4_core.S | 29 + sysdeps/x86_64/fpu/svml_s_acoshf8_core.S | 29 + sysdeps/x86_64/fpu/svml_s_acoshf8_core_avx.S | 25 + .../fpu/test-double-libmvec-acosh-avx.c | 1 + .../fpu/test-double-libmvec-acosh-avx2.c | 1 + .../fpu/test-double-libmvec-acosh-avx512f.c | 1 + .../x86_64/fpu/test-double-libmvec-acosh.c | 3 + .../x86_64/fpu/test-double-vlen2-wrappers.c | 1 + .../fpu/test-double-vlen4-avx2-wrappers.c | 1 + .../x86_64/fpu/test-double-vlen4-wrappers.c | 1 + .../x86_64/fpu/test-double-vlen8-wrappers.c | 1 + .../fpu/test-float-libmvec-acoshf-avx.c | 1 + .../fpu/test-float-libmvec-acoshf-avx2.c | 1 + .../fpu/test-float-libmvec-acoshf-avx512f.c | 1 + .../x86_64/fpu/test-float-libmvec-acoshf.c | 3 + .../x86_64/fpu/test-float-vlen16-wrappers.c | 1 + .../x86_64/fpu/test-float-vlen4-wrappers.c | 1 + .../fpu/test-float-vlen8-avx2-wrappers.c | 1 + .../x86_64/fpu/test-float-vlen8-wrappers.c | 1 + 49 files changed, 17182 insertions(+), 1 deletion(-) create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core-sse2.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core_sse4.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core-sse.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core_avx2.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core-avx2.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core_avx512.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core-avx2.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core_avx512.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core-sse2.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core_sse4.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core-sse.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core_avx2.S create mode 100644 sysdeps/x86_64/fpu/svml_d_acosh2_core.S create mode 100644 sysdeps/x86_64/fpu/svml_d_acosh4_core.S create mode 100644 sysdeps/x86_64/fpu/svml_d_acosh4_core_avx.S create mode 100644 sysdeps/x86_64/fpu/svml_d_acosh8_core.S create mode 100644 sysdeps/x86_64/fpu/svml_s_acoshf16_core.S create mode 100644 sysdeps/x86_64/fpu/svml_s_acoshf4_core.S create mode 100644 sysdeps/x86_64/fpu/svml_s_acoshf8_core.S create mode 100644 sysdeps/x86_64/fpu/svml_s_acoshf8_core_avx.S create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acosh-avx.c create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acosh-avx2.c create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acosh-avx512f.c create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acosh.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acoshf-avx.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acoshf-avx2.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acoshf-avx512f.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acoshf.c diff --git a/bits/libm-simd-decl-stubs.h b/bits/libm-simd-decl-stubs.h index 2ccdd1fc53..7408044938 100644 --- a/bits/libm-simd-decl-stubs.h +++ b/bits/libm-simd-decl-stubs.h @@ -109,4 +109,15 @@ #define __DECL_SIMD_acosf32x #define __DECL_SIMD_acosf64x #define __DECL_SIMD_acosf128x + +#define __DECL_SIMD_acosh +#define __DECL_SIMD_acoshf +#define __DECL_SIMD_acoshl +#define __DECL_SIMD_acoshf16 +#define __DECL_SIMD_acoshf32 +#define __DECL_SIMD_acoshf64 +#define __DECL_SIMD_acoshf128 +#define __DECL_SIMD_acoshf32x +#define __DECL_SIMD_acoshf64x +#define __DECL_SIMD_acoshf128x #endif diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h index 2cc6654208..3380358eb8 100644 --- a/math/bits/mathcalls.h +++ b/math/bits/mathcalls.h @@ -82,7 +82,7 @@ __MATHDECL_VEC (void,sincos,, #if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99 /* Hyperbolic arc cosine of X. */ -__MATHCALL (acosh,, (_Mdouble_ __x)); +__MATHCALL_VEC (acosh,, (_Mdouble_ __x)); /* Hyperbolic arc sine of X. */ __MATHCALL (asinh,, (_Mdouble_ __x)); /* Hyperbolic arc tangent of X. */ diff --git a/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist b/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist index b37b55777e..dfc5cbc7dc 100644 --- a/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist @@ -47,10 +47,18 @@ GLIBC_2.22 _ZGVeN8v_sin F GLIBC_2.22 _ZGVeN8vv_pow F GLIBC_2.22 _ZGVeN8vvv_sincos F GLIBC_2.35 _ZGVbN2v_acos F +GLIBC_2.35 _ZGVbN2v_acosh F GLIBC_2.35 _ZGVbN4v_acosf F +GLIBC_2.35 _ZGVbN4v_acoshf F GLIBC_2.35 _ZGVcN4v_acos F +GLIBC_2.35 _ZGVcN4v_acosh F GLIBC_2.35 _ZGVcN8v_acosf F +GLIBC_2.35 _ZGVcN8v_acoshf F GLIBC_2.35 _ZGVdN4v_acos F +GLIBC_2.35 _ZGVdN4v_acosh F GLIBC_2.35 _ZGVdN8v_acosf F +GLIBC_2.35 _ZGVdN8v_acoshf F GLIBC_2.35 _ZGVeN16v_acosf F +GLIBC_2.35 _ZGVeN16v_acoshf F GLIBC_2.35 _ZGVeN8v_acos F +GLIBC_2.35 _ZGVeN8v_acosh F diff --git a/sysdeps/x86/fpu/bits/math-vector.h b/sysdeps/x86/fpu/bits/math-vector.h index dabb74cbb9..e7097a0a77 100644 --- a/sysdeps/x86/fpu/bits/math-vector.h +++ b/sysdeps/x86/fpu/bits/math-vector.h @@ -62,6 +62,10 @@ # define __DECL_SIMD_acos __DECL_SIMD_x86_64 # undef __DECL_SIMD_acosf # define __DECL_SIMD_acosf __DECL_SIMD_x86_64 +# undef __DECL_SIMD_acosh +# define __DECL_SIMD_acosh __DECL_SIMD_x86_64 +# undef __DECL_SIMD_acoshf +# define __DECL_SIMD_acoshf __DECL_SIMD_x86_64 # endif #endif diff --git a/sysdeps/x86_64/fpu/Makeconfig b/sysdeps/x86_64/fpu/Makeconfig index bc781c45c7..de6e0164e9 100644 --- a/sysdeps/x86_64/fpu/Makeconfig +++ b/sysdeps/x86_64/fpu/Makeconfig @@ -23,6 +23,7 @@ postclean-generated += libmvec.mk # Define for both math and mathvec directories. libmvec-funcs = \ acos \ + acosh \ cos \ exp \ log \ diff --git a/sysdeps/x86_64/fpu/Versions b/sysdeps/x86_64/fpu/Versions index 8d337bf716..053d32d14d 100644 --- a/sysdeps/x86_64/fpu/Versions +++ b/sysdeps/x86_64/fpu/Versions @@ -15,6 +15,8 @@ libmvec { }, GLIBC_2.35 { _ZGVbN2v_acos; _ZGVcN4v_acos; _ZGVdN4v_acos; _ZGVeN8v_acos; + _ZGVbN2v_acosh; _ZGVcN4v_acosh; _ZGVdN4v_acosh; _ZGVeN8v_acosh; _ZGVbN4v_acosf; _ZGVcN8v_acosf; _ZGVdN8v_acosf; _ZGVeN16v_acosf; + _ZGVbN4v_acoshf; _ZGVcN8v_acoshf; _ZGVdN8v_acoshf; _ZGVeN16v_acoshf; } } diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps index 85a568ed29..8c8f4c648d 100644 --- a/sysdeps/x86_64/fpu/libm-test-ulps +++ b/sysdeps/x86_64/fpu/libm-test-ulps @@ -69,6 +69,26 @@ float: 2 float128: 3 ldouble: 3 +Function: "acosh_vlen16": +float: 1 + +Function: "acosh_vlen2": +double: 2 + +Function: "acosh_vlen4": +double: 2 +float: 1 + +Function: "acosh_vlen4_avx2": +double: 2 + +Function: "acosh_vlen8": +double: 1 +float: 1 + +Function: "acosh_vlen8_avx2": +float: 2 + Function: "asin": double: 1 float: 1 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core-sse2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core-sse2.S new file mode 100644 index 0000000000..28620a03a9 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core-sse2.S @@ -0,0 +1,20 @@ +/* SSE2 version of vectorized acosh, vector length is 2. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define _ZGVbN2v_acosh _ZGVbN2v_acosh_sse2 +#include "../svml_d_acosh2_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core.c new file mode 100644 index 0000000000..8a41507326 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core.c @@ -0,0 +1,27 @@ +/* Multiple versions of vectorized acosh, vector length is 2. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define SYMBOL_NAME _ZGVbN2v_acosh +#include "ifunc-mathvec-sse4_1.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVbN2v_acosh, __GI__ZGVbN2v_acosh, __redirect__ZGVbN2v_acosh) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core_sse4.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core_sse4.S new file mode 100644 index 0000000000..d0bc37dd8d --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core_sse4.S @@ -0,0 +1,5408 @@ +/* Function acosh vectorized with SSE4. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + https://www.gnu.org/licenses/. */ + +/* + * ALGORITHM DESCRIPTION: + * + * Compute acosh(x) as log(x + sqrt(x*x - 1)) + * + * Special cases: + * + * acosh(NaN) = quiet NaN, and raise invalid exception + * acosh(-INF) = NaN + * acosh(+INF) = +INF + * acosh(x) = NaN if x < 1 + * acosh(1) = +0 + * + */ + +#include + + .text +ENTRY(_ZGVbN2v_acosh_sse4) + pushq %rbp + cfi_def_cfa_offset(16) + movq %rsp, %rbp + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + andq $-64, %rsp + subq $256, %rsp + movaps %xmm0, %xmm7 + movups %xmm10, 160(%rsp) + +/* Compute U = X - 1 and V = X + 1, naively first. */ + movaps %xmm7, %xmm2 + .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22 + +/* Load the constant 1 and possibly other stuff */ + movups 12800+__svml_dacosh_data_internal(%rip), %xmm10 + +/* + * Check that 1 < X < +inf; otherwise go to the callout function. + * We need the callout for X = 1 to avoid division by zero below. + * This test ensures that callout handles NaN and either infinity. + */ + movaps %xmm7, %xmm1 + movaps %xmm10, %xmm4 + movaps %xmm10, %xmm5 + subpd %xmm10, %xmm2 + addpd %xmm7, %xmm4 + cmpnlepd 13952+__svml_dacosh_data_internal(%rip), %xmm1 + cmpnltpd %xmm7, %xmm5 + +/* For low-accuracy versions, naivety is harmless */ + mulpd %xmm2, %xmm4 + +/* dH = [X + sqrt(X^2 - 1)] - 1 */ + sqrtpd %xmm4, %xmm3 + addpd %xmm2, %xmm3 + movups %xmm12, 144(%rsp) + .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xff, 0xff, 0xff, 0x22 + +/* + * Now we feed into the log1p code, using H in place of _VARG1 and + * also adding L into Xl. + * compute 1+x as high, low parts + */ + movaps %xmm10, %xmm12 + maxpd %xmm3, %xmm12 + orps %xmm5, %xmm1 + movaps %xmm10, %xmm5 + minpd %xmm3, %xmm5 + movmskpd %xmm1, %edx + +/* Now multiplex to the case X = 2^-30 * input, Xl = dL = 0 in the "big" case. */ + movups 14464+__svml_dacosh_data_internal(%rip), %xmm0 + +/* + * The following computation can go wrong for very large X, e.g. + * the X^2 - 1 = U * V can overflow. But for large X we have + * acosh(X) / log(2 X) - 1 =~= 1/(4 * X^2), so for X >= 2^30 + * we can just later stick X back into the log and tweak up the exponent. + * Actually we scale X by 2^-30 and tweak the exponent up by 31, + * to stay in the safe range for the later log computation. + * Compute a flag now telling us when to do this. + */ + movaps %xmm7, %xmm6 + andps 12864+__svml_dacosh_data_internal(%rip), %xmm3 + movaps %xmm12, %xmm1 + mulpd %xmm7, %xmm0 + cmpltpd 12928+__svml_dacosh_data_internal(%rip), %xmm3 + cmpltpd 13568+__svml_dacosh_data_internal(%rip), %xmm6 + addpd %xmm5, %xmm1 + orps 12992+__svml_dacosh_data_internal(%rip), %xmm3 + movaps %xmm6, %xmm4 + andps %xmm3, %xmm1 + andnps %xmm0, %xmm4 + subpd %xmm1, %xmm12 + andps %xmm6, %xmm1 + lea -4218816+__svml_dacosh_data_internal(%rip), %r8 + +/* + * Now resume the main code. + * preserve mantissa, set input exponent to 2^(-10) + */ + movups 12480+__svml_dacosh_data_internal(%rip), %xmm2 + orps %xmm1, %xmm4 + andps %xmm4, %xmm2 + +/* exponent bits */ + movaps %xmm4, %xmm1 + orps 12544+__svml_dacosh_data_internal(%rip), %xmm2 + psrlq $20, %xmm1 + +/* reciprocal approximation good to at least 11 bits */ + cvtpd2ps %xmm2, %xmm3 + addpd %xmm12, %xmm5 + movlhps %xmm3, %xmm3 + andps %xmm6, %xmm5 + rcpps %xmm3, %xmm0 + cvtps2pd %xmm0, %xmm3 + +/* round reciprocal to nearest integer, will have 1+9 mantissa bits */ + movups .FLT_24(%rip), %xmm0 + addpd %xmm0, %xmm3 + subpd %xmm0, %xmm3 + +/* exponent of X needed to scale Xl */ + movdqu 13376+__svml_dacosh_data_internal(%rip), %xmm12 + movaps %xmm6, %xmm0 + +/* 2^ (-10-exp(X) ) */ + movdqu 13440+__svml_dacosh_data_internal(%rip), %xmm2 + pand %xmm4, %xmm12 + psubq %xmm12, %xmm2 + +/* scale DblRcp */ + mulpd %xmm3, %xmm2 + +/* argument reduction */ + mulpd %xmm2, %xmm4 + mulpd %xmm2, %xmm5 + subpd %xmm10, %xmm4 + pshufd $221, %xmm1, %xmm12 + +/* biased exponent in DP format */ + cvtdq2pd %xmm12, %xmm12 + +/* Add 31 to the exponent in the "large" case to get log(2 * input) */ + movups 14144+__svml_dacosh_data_internal(%rip), %xmm1 + addpd %xmm12, %xmm1 + andps %xmm6, %xmm12 + +/* + * prepare table index + * table lookup + */ + movaps %xmm3, %xmm6 + psrlq $40, %xmm6 + andnps %xmm1, %xmm0 + movd %xmm6, %eax + orps %xmm12, %xmm0 + pshufd $2, %xmm6, %xmm6 + +/* exponent*log(2.0) */ + movups 13184+__svml_dacosh_data_internal(%rip), %xmm12 + movd %xmm6, %ecx + movaps %xmm4, %xmm6 + addpd %xmm5, %xmm6 + cmpltpd %xmm3, %xmm12 + movaps %xmm6, %xmm2 + movaps %xmm6, %xmm10 + subpd %xmm4, %xmm2 + mulpd %xmm6, %xmm10 + subpd %xmm2, %xmm5 + +/* polynomial */ + movups 12416+__svml_dacosh_data_internal(%rip), %xmm4 + mulpd %xmm6, %xmm4 + movups 12448+__svml_dacosh_data_internal(%rip), %xmm3 + addpd 12432+__svml_dacosh_data_internal(%rip), %xmm4 + mulpd %xmm6, %xmm3 + mulpd %xmm10, %xmm4 + addpd 12464+__svml_dacosh_data_internal(%rip), %xmm3 + addpd %xmm4, %xmm3 + +/* + * reconstruction + * VQFMA( D, R, P, R2, R ); + */ + mulpd %xmm3, %xmm10 + addpd %xmm10, %xmm5 + andps 13248+__svml_dacosh_data_internal(%rip), %xmm12 + orps 13312+__svml_dacosh_data_internal(%rip), %xmm12 + subpd %xmm12, %xmm0 + addpd %xmm5, %xmm6 + mulpd 13504+__svml_dacosh_data_internal(%rip), %xmm0 + movslq %eax, %rax + movslq %ecx, %rcx + movsd (%r8,%rax), %xmm1 + movhpd (%r8,%rcx), %xmm1 + addpd %xmm6, %xmm1 + addpd %xmm1, %xmm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + movups 160(%rsp), %xmm10 + cfi_restore(27) + movups 144(%rsp), %xmm12 + cfi_restore(29) + movq %rbp, %rsp + popq %rbp + cfi_def_cfa(7, 8) + cfi_restore(6) + ret + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xff, 0xff, 0xff, 0x22 + +.LBL_1_3: + movups %xmm7, 128(%rsp) + movups %xmm0, 192(%rsp) + xorl %eax, %eax + movups %xmm8, 80(%rsp) + movups %xmm9, 64(%rsp) + movups %xmm11, 48(%rsp) + movups %xmm13, 32(%rsp) + movups %xmm14, 16(%rsp) + movups %xmm15, (%rsp) + movq %rsi, 104(%rsp) + movq %rdi, 96(%rsp) + movq %r12, 120(%rsp) + .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x68, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x78, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22 + movl %eax, %r12d + movq %r13, 112(%rsp) + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22 + movl %edx, %r13d + +.LBL_1_7: + btl %r12d, %r13d + jc .LBL_1_10 + +.LBL_1_8: + incl %r12d + cmpl $2, %r12d + jl .LBL_1_7 + movups 80(%rsp), %xmm8 + cfi_restore(25) + movups 64(%rsp), %xmm9 + cfi_restore(26) + movups 48(%rsp), %xmm11 + cfi_restore(28) + movups 32(%rsp), %xmm13 + cfi_restore(30) + movups 16(%rsp), %xmm14 + cfi_restore(31) + movups (%rsp), %xmm15 + cfi_restore(32) + movq 104(%rsp), %rsi + cfi_restore(4) + movq 96(%rsp), %rdi + cfi_restore(5) + movq 120(%rsp), %r12 + cfi_restore(12) + movq 112(%rsp), %r13 + cfi_restore(13) + movups 192(%rsp), %xmm0 + jmp .LBL_1_2 + .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x68, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x78, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22 + +.LBL_1_10: + lea 128(%rsp,%r12,8), %rdi + lea 192(%rsp,%r12,8), %rsi + call __svml_dacosh_cout_rare_internal + jmp .LBL_1_8 + +END(_ZGVbN2v_acosh_sse4) + + .align 16,0x90 + +__svml_dacosh_cout_rare_internal: + + cfi_startproc + + movzwl 6(%rdi), %eax + andl $32752, %eax + movsd (%rdi), %xmm0 + cmpl $32752, %eax + je .LBL_2_9 + +.LBL_2_2: + movsd %xmm0, -8(%rsp) + cmpl $0, -8(%rsp) + jne .LBL_2_8 + cmpl $1072693248, -4(%rsp) + je .LBL_2_7 + cmpl $2146435072, -4(%rsp) + jne .LBL_2_8 + movsd %xmm0, (%rsi) + xorl %eax, %eax + ret + +.LBL_2_7: + movq 8+__dacosh_la_CoutTab(%rip), %rax + movq %rax, (%rsi) + xorl %eax, %eax + ret + +.LBL_2_8: + movsd 16+__dacosh_la_CoutTab(%rip), %xmm0 + movl $1, %eax + mulsd 8+__dacosh_la_CoutTab(%rip), %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_9: + testl $1048575, 4(%rdi) + jne .LBL_2_12 + cmpl $0, (%rdi) + je .LBL_2_2 + +.LBL_2_12: + mulsd %xmm0, %xmm0 + xorl %eax, %eax + movsd %xmm0, (%rsi) + ret + + cfi_endproc + + .type __svml_dacosh_cout_rare_internal,@function + .size __svml_dacosh_cout_rare_internal,.-__svml_dacosh_cout_rare_internal + + .section .rodata, "a" + .align 64 + +__svml_dacosh_data_internal: + .long 3715793664 + .long 3230016299 + .long 4013928704 + .long 3189565726 + .long 3699038248 + .long 3230016303 + .long 4255595370 + .long 3189567439 + .long 3648859040 + .long 3230016307 + .long 1732833791 + .long 3189567296 + .long 3565385952 + .long 3230016311 + .long 2485752410 + .long 3189567274 + .long 3448748152 + .long 3230016315 + .long 3514744523 + .long 3189567800 + .long 3299074072 + .long 3230016319 + .long 3686511262 + .long 3189567474 + .long 3116491376 + .long 3230016323 + .long 716063611 + .long 3189567908 + .long 2901127016 + .long 3230016327 + .long 354437295 + .long 3189567291 + .long 2653107184 + .long 3230016331 + .long 3777462366 + .long 3189567264 + .long 2372557360 + .long 3230016335 + .long 3590663412 + .long 3189567498 + .long 2059602304 + .long 3230016339 + .long 1680795031 + .long 3189567428 + .long 1714366048 + .long 3230016343 + .long 2010344982 + .long 3189567986 + .long 1336971936 + .long 3230016347 + .long 166254822 + .long 3189567184 + .long 927542568 + .long 3230016351 + .long 59552610 + .long 3189567972 + .long 486199888 + .long 3230016355 + .long 2268824919 + .long 3189567664 + .long 13065112 + .long 3230016359 + .long 3005381643 + .long 3189567835 + .long 3803226080 + .long 3230016362 + .long 4018973165 + .long 3189567825 + .long 3266868056 + .long 3230016366 + .long 3693925101 + .long 3189567457 + .long 2699077504 + .long 3230016370 + .long 4005905743 + .long 3189567697 + .long 2099972936 + .long 3230016374 + .long 3580935118 + .long 3189567215 + .long 1469672176 + .long 3230016378 + .long 2928784295 + .long 3189567129 + .long 808292392 + .long 3230016382 + .long 674298833 + .long 3189567553 + .long 115950104 + .long 3230016386 + .long 2555938320 + .long 3189567208 + .long 3687728456 + .long 3230016389 + .long 532458218 + .long 3189567130 + .long 2933808064 + .long 3230016393 + .long 3888913110 + .long 3189567192 + .long 2149270784 + .long 3230016397 + .long 2365955494 + .long 3189567756 + .long 1334230552 + .long 3230016401 + .long 3325722981 + .long 3189567206 + .long 488800640 + .long 3230016405 + .long 1496133617 + .long 3189567683 + .long 3908061016 + .long 3230016408 + .long 1824836379 + .long 3189567490 + .long 3002189112 + .long 3230016412 + .long 1222174320 + .long 3189567837 + .long 2066263648 + .long 3230016416 + .long 2472769660 + .long 3189567285 + .long 1100395408 + .long 3230016420 + .long 447932460 + .long 3189567455 + .long 104694584 + .long 3230016424 + .long 1006807684 + .long 3189567460 + .long 3374238048 + .long 3230016427 + .long 4121834935 + .long 3189567556 + .long 2319200184 + .long 3230016431 + .long 3019906587 + .long 3189567664 + .long 1234656664 + .long 3230016435 + .long 3882744783 + .long 3189567930 + .long 120715280 + .long 3230016439 + .long 1927363170 + .long 3189567242 + .long 3272450504 + .long 3230016442 + .long 8203115 + .long 3189567876 + .long 2100034368 + .long 3230016446 + .long 1260625560 + .long 3189567855 + .long 898540192 + .long 3230016450 + .long 1791679111 + .long 3189567639 + .long 3963040720 + .long 3230016453 + .long 831133439 + .long 3189567590 + .long 2703706240 + .long 3230016457 + .long 2803140504 + .long 3189567482 + .long 1415608352 + .long 3230016461 + .long 2955844462 + .long 3189568058 + .long 98850816 + .long 3230016465 + .long 4017967070 + .long 3189567455 + .long 3048504096 + .long 3230016468 + .long 3974385451 + .long 3189567871 + .long 1674736240 + .long 3230016472 + .long 2424114556 + .long 3189567887 + .long 272616624 + .long 3230016476 + .long 4261883032 + .long 3189567073 + .long 3137214056 + .long 3230016479 + .long 3716750895 + .long 3189567522 + .long 1678694944 + .long 3230016483 + .long 498025304 + .long 3189567180 + .long 192127016 + .long 3230016487 + .long 1011852160 + .long 3189567511 + .long 2972577480 + .long 3230016490 + .long 558940916 + .long 3189567850 + .long 1430211120 + .long 3230016494 + .long 2550865739 + .long 3189567935 + .long 4155061376 + .long 3230016497 + .long 1930847170 + .long 3189567371 + .long 2557291968 + .long 3230016501 + .long 1716354804 + .long 3189567130 + .long 931967984 + .long 3230016505 + .long 2729403392 + .long 3189567981 + .long 3574154016 + .long 3230016508 + .long 1067280599 + .long 3189567890 + .long 1894012232 + .long 3230016512 + .long 2094260282 + .long 3189567604 + .long 186606176 + .long 3230016516 + .long 3897933165 + .long 3189568046 + .long 2746998904 + .long 3230016519 + .long 1935720459 + .long 3189567701 + .long 985351064 + .long 3230016523 + .long 2170344821 + .long 3189567164 + .long 3491691984 + .long 3230016526 + .long 4220979537 + .long 3189567547 + .long 1676181328 + .long 3230016530 + .long 1953924393 + .long 3189567854 + .long 4128847448 + .long 3230016533 + .long 1689829067 + .long 3189567468 + .long 2259849008 + .long 3230016537 + .long 2367753130 + .long 3189567619 + .long 364246088 + .long 3230016541 + .long 2263309073 + .long 3189567722 + .long 2737098280 + .long 3230016544 + .long 2366756869 + .long 3189567856 + .long 788562816 + .long 3230016548 + .long 2294653975 + .long 3189567145 + .long 3108665616 + .long 3230016551 + .long 1786494117 + .long 3189567254 + .long 1107562960 + .long 3230016555 + .long 3655887416 + .long 3189567689 + .long 3375279848 + .long 3230016558 + .long 1178948625 + .long 3189567241 + .long 1321971608 + .long 3230016562 + .long 1620080441 + .long 3189567466 + .long 3537662304 + .long 3230016565 + .long 154455618 + .long 3189567981 + .long 1432506360 + .long 3230016569 + .long 3128192125 + .long 3189567889 + .long 3596526920 + .long 3230016572 + .long 2026842750 + .long 3189567212 + .long 1439877480 + .long 3230016576 + .long 1384431897 + .long 3189567284 + .long 3552580280 + .long 3230016579 + .long 1999983129 + .long 3189568079 + .long 1344787944 + .long 3230016583 + .long 4035436820 + .long 3189567579 + .long 3406521808 + .long 3230016586 + .long 77799817 + .long 3189567285 + .long 1147933592 + .long 3230016590 + .long 1261060207 + .long 3189567477 + .long 3159043768 + .long 3230016593 + .long 2102717775 + .long 3189567605 + .long 850003184 + .long 3230016597 + .long 161472469 + .long 3189567688 + .long 2810831440 + .long 3230016600 + .long 1937336881 + .long 3189567665 + .long 451678520 + .long 3230016604 + .long 2268353549 + .long 3189567773 + .long 2362563168 + .long 3230016607 + .long 1785871595 + .long 3189567889 + .long 4248601816 + .long 3230016610 + .long 2434669991 + .long 3189567898 + .long 1814910472 + .long 3230016614 + .long 2666999375 + .long 3189568058 + .long 3651506624 + .long 3230016617 + .long 1033139811 + .long 3189567312 + .long 1168538136 + .long 3230016621 + .long 4004618418 + .long 3189567740 + .long 2956021672 + .long 3230016624 + .long 3799928764 + .long 3189567751 + .long 424104288 + .long 3230016628 + .long 3650233137 + .long 3189567549 + .long 2162801816 + .long 3230016631 + .long 437313833 + .long 3189567438 + .long 3877227800 + .long 3230016634 + .long 2138293494 + .long 3189567140 + .long 1272495376 + .long 3230016638 + .long 2891370752 + .long 3189567168 + .long 2938619176 + .long 3230016641 + .long 1704142730 + .long 3189567114 + .long 285744240 + .long 3230016645 + .long 500817607 + .long 3189568035 + .long 1903884424 + .long 3230016648 + .long 3102571944 + .long 3189567668 + .long 3498151272 + .long 3230016651 + .long 2374193154 + .long 3189567933 + .long 773655960 + .long 3230016655 + .long 2898331636 + .long 3189568089 + .long 2320411168 + .long 3230016658 + .long 1983295500 + .long 3189567113 + .long 3843527280 + .long 3230016661 + .long 2132853542 + .long 3189567093 + .long 1048114320 + .long 3230016665 + .long 3551155364 + .long 3189567407 + .long 2524183824 + .long 3230016668 + .long 2564000663 + .long 3189567090 + .long 3976845048 + .long 3230016671 + .long 361581803 + .long 3189567196 + .long 1111206880 + .long 3230016675 + .long 696765230 + .long 3189568040 + .long 2517279744 + .long 3230016678 + .long 941542475 + .long 3189567463 + .long 3900171776 + .long 3230016681 + .long 2377895552 + .long 3189567282 + .long 964990760 + .long 3230016685 + .long 1173605489 + .long 3189567454 + .long 2301746008 + .long 3230016688 + .long 3096720313 + .long 3189567400 + .long 3615544576 + .long 3230016691 + .long 1942008121 + .long 3189567335 + .long 611493160 + .long 3230016695 + .long 3375481119 + .long 3189567537 + .long 1879599992 + .long 3230016698 + .long 4103239143 + .long 3189567624 + .long 3124971056 + .long 3230016701 + .long 3773474925 + .long 3189567869 + .long 52711992 + .long 3230016705 + .long 2465315445 + .long 3189567444 + .long 1252829960 + .long 3230016708 + .long 1041581158 + .long 3189567781 + .long 2430429904 + .long 3230016711 + .long 166620501 + .long 3189567739 + .long 3585583704 + .long 3230016714 + .long 2379237630 + .long 3189567984 + .long 423395616 + .long 3230016718 + .long 134834559 + .long 3189567178 + .long 1533871416 + .long 3230016721 + .long 1449318760 + .long 3189567373 + .long 2622114680 + .long 3230016724 + .long 3042372984 + .long 3189567127 + .long 3688195920 + .long 3230016727 + .long 1265290101 + .long 3189567921 + .long 437218048 + .long 3230016731 + .long 2248549362 + .long 3189567262 + .long 1459185496 + .long 3230016734 + .long 1293250365 + .long 3189567151 + .long 2459200496 + .long 3230016737 + .long 313786605 + .long 3189567180 + .long 3437332240 + .long 3230016740 + .long 3289151823 + .long 3189567872 + .long 98682312 + .long 3230016744 + .long 2693758821 + .long 3189567877 + .long 1033253848 + .long 3230016747 + .long 4237443192 + .long 3189567301 + .long 1946147760 + .long 3230016750 + .long 4099404586 + .long 3189567972 + .long 2837431968 + .long 3230016753 + .long 343640666 + .long 3189567552 + .long 3707174040 + .long 3230016756 + .long 4238401458 + .long 3189567983 + .long 260473960 + .long 3230016760 + .long 21423548 + .long 3189567559 + .long 1087333264 + .long 3230016763 + .long 3515278593 + .long 3189567309 + .long 1892851296 + .long 3230016766 + .long 629106375 + .long 3189567166 + .long 2677094384 + .long 3230016769 + .long 2048670044 + .long 3189567227 + .long 3440128544 + .long 3230016772 + .long 3739217292 + .long 3189568009 + .long 4182019504 + .long 3230016775 + .long 3662039444 + .long 3189567618 + .long 607865368 + .long 3230016779 + .long 1766486991 + .long 3189567112 + .long 1307665824 + .long 3230016782 + .long 512689457 + .long 3189567670 + .long 1986518392 + .long 3230016785 + .long 1704577378 + .long 3189567760 + .long 2644487576 + .long 3230016788 + .long 4001935135 + .long 3189567473 + .long 3281637576 + .long 3230016791 + .long 1184452342 + .long 3189567735 + .long 3898032312 + .long 3230016794 + .long 2714793956 + .long 3189567464 + .long 198768096 + .long 3230016798 + .long 3657654418 + .long 3189567905 + .long 773842856 + .long 3230016801 + .long 2809688013 + .long 3189567736 + .long 1328352328 + .long 3230016804 + .long 390727591 + .long 3189567393 + .long 1862359256 + .long 3230016807 + .long 1135237925 + .long 3189567248 + .long 2375926096 + .long 3230016810 + .long 1377572509 + .long 3189567837 + .long 2869115032 + .long 3230016813 + .long 3148383775 + .long 3189568032 + .long 3341987960 + .long 3230016816 + .long 3809536738 + .long 3189567313 + .long 3794606472 + .long 3230016819 + .long 4243445934 + .long 3189568034 + .long 4227031920 + .long 3230016822 + .long 1302642088 + .long 3189567451 + .long 344358048 + .long 3230016826 + .long 3239125361 + .long 3189567151 + .long 736580224 + .long 3230016829 + .long 3753161736 + .long 3189567129 + .long 1108791648 + .long 3230016832 + .long 624357483 + .long 3189568045 + .long 1461052568 + .long 3230016835 + .long 3153257064 + .long 3189567338 + .long 1793422920 + .long 3230016838 + .long 2705820149 + .long 3189567635 + .long 2105962400 + .long 3230016841 + .long 911564860 + .long 3189567737 + .long 2398730424 + .long 3230016844 + .long 1086958332 + .long 3189567948 + .long 2671786152 + .long 3230016847 + .long 1598984535 + .long 3189567210 + .long 2925188456 + .long 3230016850 + .long 4113385879 + .long 3189567401 + .long 3158995968 + .long 3230016853 + .long 2426812671 + .long 3189567396 + .long 3373267048 + .long 3230016856 + .long 3480845679 + .long 3189567359 + .long 3568059792 + .long 3230016859 + .long 3306230729 + .long 3189567924 + .long 3743432056 + .long 3230016862 + .long 3853821277 + .long 3189567317 + .long 3899441408 + .long 3230016865 + .long 2049309148 + .long 3189567699 + .long 4036145192 + .long 3230016868 + .long 2667321817 + .long 3189567166 + .long 4153600472 + .long 3230016871 + .long 3540670389 + .long 3189567114 + .long 4251864072 + .long 3230016874 + .long 404207883 + .long 3189567310 + .long 36025272 + .long 3230016878 + .long 2837617046 + .long 3189567103 + .long 96074976 + .long 3230016881 + .long 1231280453 + .long 3189567669 + .long 137101976 + .long 3230016884 + .long 792492437 + .long 3189567071 + .long 159162080 + .long 3230016887 + .long 2385525292 + .long 3189567618 + .long 162310880 + .long 3230016890 + .long 3272051015 + .long 3189567858 + .long 146603712 + .long 3230016893 + .long 623573538 + .long 3189567881 + .long 112095672 + .long 3230016896 + .long 2151835939 + .long 3189567451 + .long 58841608 + .long 3230016899 + .long 958006130 + .long 3189567217 + .long 4281863424 + .long 3230016901 + .long 549948691 + .long 3189567863 + .long 4191280920 + .long 3230016904 + .long 4177689987 + .long 3189567217 + .long 4082115512 + .long 3230016907 + .long 2895765193 + .long 3189567599 + .long 3954421112 + .long 3230016910 + .long 1055606208 + .long 3189567799 + .long 3808251392 + .long 3230016913 + .long 1966521217 + .long 3189567351 + .long 3643659776 + .long 3230016916 + .long 1017382758 + .long 3189567732 + .long 3460699480 + .long 3230016919 + .long 3485890155 + .long 3189567410 + .long 3259423472 + .long 3230016922 + .long 2657419170 + .long 3189567140 + .long 3039884488 + .long 3230016925 + .long 4198858220 + .long 3189568080 + .long 2802135064 + .long 3230016928 + .long 2343740494 + .long 3189567869 + .long 2546227480 + .long 3230016931 + .long 2423084215 + .long 3189567957 + .long 2272213808 + .long 3230016934 + .long 3887273856 + .long 3189567631 + .long 1980145888 + .long 3230016937 + .long 3992755473 + .long 3189567251 + .long 1670075336 + .long 3230016940 + .long 722498073 + .long 3189567389 + .long 1342053552 + .long 3230016943 + .long 3573506400 + .long 3189567965 + .long 996131728 + .long 3230016946 + .long 714695829 + .long 3189567392 + .long 632360808 + .long 3230016949 + .long 2816704229 + .long 3189567846 + .long 250791552 + .long 3230016952 + .long 386951333 + .long 3189567243 + .long 4146441768 + .long 3230016954 + .long 2155319939 + .long 3189567580 + .long 3729427184 + .long 3230016957 + .long 4227840137 + .long 3189567931 + .long 3294765200 + .long 3230016960 + .long 1718354212 + .long 3189567672 + .long 2842505696 + .long 3230016963 + .long 4243880582 + .long 3189567656 + .long 2372698352 + .long 3230016966 + .long 3784093842 + .long 3189567302 + .long 1885392624 + .long 3230016969 + .long 2318733051 + .long 3189567813 + .long 1380637784 + .long 3230016972 + .long 497929746 + .long 3189567210 + .long 858482864 + .long 3230016975 + .long 3218883783 + .long 3189567649 + .long 318976720 + .long 3230016978 + .long 3492652862 + .long 3189567382 + .long 4057135272 + .long 3230016980 + .long 473724673 + .long 3189568069 + .long 3483072376 + .long 3230016983 + .long 150485010 + .long 3189567757 + .long 2891803552 + .long 3230016986 + .long 3028900958 + .long 3189567173 + .long 2283376816 + .long 3230016989 + .long 321242596 + .long 3189567822 + .long 1657840008 + .long 3230016992 + .long 151305746 + .long 3189568029 + .long 1015240760 + .long 3230016995 + .long 2208026401 + .long 3189567184 + .long 355626480 + .long 3230016998 + .long 2487781842 + .long 3189567931 + .long 3974011720 + .long 3230017000 + .long 2391142094 + .long 3189567091 + .long 3280508896 + .long 3230017003 + .long 734457618 + .long 3189568092 + .long 2570132168 + .long 3230017006 + .long 3070902701 + .long 3189567794 + .long 1842928168 + .long 3230017009 + .long 1110877923 + .long 3189567896 + .long 1098943352 + .long 3230017012 + .long 3880360185 + .long 3189567898 + .long 338223984 + .long 3230017015 + .long 391995809 + .long 3189567294 + .long 3855783416 + .long 3230017017 + .long 4186345433 + .long 3189567745 + .long 3061732952 + .long 3230017020 + .long 3682852050 + .long 3189567081 + .long 2251085560 + .long 3230017023 + .long 3057037137 + .long 3189567617 + .long 1423886760 + .long 3230017026 + .long 3352664894 + .long 3189567074 + .long 580181848 + .long 3230017029 + .long 1170568982 + .long 3189567927 + .long 4014983272 + .long 3230017031 + .long 671148579 + .long 3189567293 + .long 3138401368 + .long 3230017034 + .long 267496658 + .long 3189567304 + .long 2245448192 + .long 3230017037 + .long 1285167087 + .long 3189568066 + .long 1336168336 + .long 3230017040 + .long 4259909589 + .long 3189567788 + .long 410606184 + .long 3230017043 + .long 1494078902 + .long 3189568031 + .long 3763773256 + .long 3230017045 + .long 261935754 + .long 3189567685 + .long 2805778992 + .long 3230017048 + .long 3679585605 + .long 3189567195 + .long 1831634536 + .long 3230017051 + .long 809066513 + .long 3189567664 + .long 841383576 + .long 3230017054 + .long 385945238 + .long 3189567897 + .long 4130036912 + .long 3230017056 + .long 825579909 + .long 3189567603 + .long 3107703272 + .long 3230017059 + .long 3911295427 + .long 3189567514 + .long 2069393104 + .long 3230017062 + .long 3473784588 + .long 3189567461 + .long 1015149384 + .long 3230017065 + .long 629861200 + .long 3189567515 + .long 4239982216 + .long 3230017067 + .long 2659142760 + .long 3189567083 + .long 3153999632 + .long 3230017070 + .long 1251680713 + .long 3189567080 + .long 2052211384 + .long 3230017073 + .long 3168705163 + .long 3189567992 + .long 934659776 + .long 3230017076 + .long 1674797624 + .long 3189567952 + .long 4096354216 + .long 3230017078 + .long 437847902 + .long 3189567971 + .long 2947402064 + .long 3230017081 + .long 4024401533 + .long 3189567960 + .long 1782812400 + .long 3230017084 + .long 786902458 + .long 3189567873 + .long 602626840 + .long 3230017087 + .long 2593792633 + .long 3189567812 + .long 3701854136 + .long 3230017089 + .long 3989721221 + .long 3189567126 + .long 2490600968 + .long 3230017092 + .long 2545746866 + .long 3189567591 + .long 1263875768 + .long 3230017095 + .long 3115843521 + .long 3189567377 + .long 21719488 + .long 3230017098 + .long 1730226063 + .long 3189567307 + .long 3059140216 + .long 3230017100 + .long 690350922 + .long 3189567892 + .long 1786244008 + .long 3230017103 + .long 3350998585 + .long 3189567394 + .long 498038616 + .long 3230017106 + .long 1499123379 + .long 3189568082 + .long 3489531672 + .long 3230017108 + .long 2598665922 + .long 3189567118 + .long 2170828712 + .long 3230017111 + .long 2436376826 + .long 3189567935 + .long 836937048 + .long 3230017114 + .long 1977004902 + .long 3189568052 + .long 3782863816 + .long 3230017116 + .long 4027224619 + .long 3189567373 + .long 2418714096 + .long 3230017119 + .long 2616869856 + .long 3189567271 + .long 1039494712 + .long 3230017122 + .long 3775628133 + .long 3189567616 + .long 3940212336 + .long 3230017124 + .long 419018052 + .long 3189567909 + .long 2530971600 + .long 3230017127 + .long 150919657 + .long 3189567379 + .long 1106778856 + .long 3230017130 + .long 2926254537 + .long 3189567139 + .long 3962640312 + .long 3230017132 + .long 1610863810 + .long 3189567216 + .long 2508660136 + .long 3230017135 + .long 1166015244 + .long 3189567672 + .long 1039844240 + .long 3230017138 + .long 645159638 + .long 3189567685 + .long 3851198376 + .long 3230017140 + .long 2449439581 + .long 3189567695 + .long 2352826264 + .long 3230017143 + .long 1619104640 + .long 3189567458 + .long 839733360 + .long 3230017146 + .long 2427070371 + .long 3189567165 + .long 3606924968 + .long 3230017148 + .long 2166480890 + .long 3189567544 + .long 2064504368 + .long 3230017151 + .long 2283025905 + .long 3189567907 + .long 507476584 + .long 3230017154 + .long 3923356754 + .long 3189567272 + .long 3230846472 + .long 3230017156 + .long 805331677 + .long 3189567533 + .long 1644716880 + .long 3230017159 + .long 3790469685 + .long 3189567406 + .long 44092384 + .long 3230017162 + .long 2689788214 + .long 3189567653 + .long 2723977432 + .long 3230017164 + .long 2762250221 + .long 3189567072 + .long 1094474416 + .long 3230017167 + .long 2781925193 + .long 3189567716 + .long 3745554800 + .long 3230017169 + .long 593120878 + .long 3189567817 + .long 2087320704 + .long 3230017172 + .long 403414988 + .long 3189568021 + .long 414776008 + .long 3230017175 + .long 359307328 + .long 3189567387 + .long 3022924432 + .long 3230017177 + .long 3373547966 + .long 3189567572 + .long 1321867688 + .long 3230017180 + .long 3978711340 + .long 3189567805 + .long 3901576528 + .long 3230017182 + .long 2765663238 + .long 3189568046 + .long 2172152384 + .long 3230017185 + .long 1181150766 + .long 3189568053 + .long 428598440 + .long 3230017188 + .long 2473022131 + .long 3189567471 + .long 2965917728 + .long 3230017190 + .long 1621744488 + .long 3189567971 + .long 1194211288 + .long 3230017193 + .long 2931299013 + .long 3189567190 + .long 3703449168 + .long 3230017195 + .long 873154950 + .long 3189568039 + .long 1903732144 + .long 3230017198 + .long 1510784525 + .long 3189567521 + .long 90062704 + .long 3230017201 + .long 2918231590 + .long 3189568086 + .long 2557443240 + .long 3230017203 + .long 3329944838 + .long 3189567475 + .long 715974088 + .long 3230017206 + .long 2679715410 + .long 3189568021 + .long 3155624672 + .long 3230017208 + .long 1841110143 + .long 3189567518 + .long 1286495072 + .long 3230017211 + .long 3881638924 + .long 3189567497 + .long 3698554440 + .long 3230017213 + .long 167906931 + .long 3189567169 + .long 1801902600 + .long 3230017216 + .long 1468264167 + .long 3189567597 + .long 4186508448 + .long 3230017218 + .long 2400624638 + .long 3189567691 + .long 2262471560 + .long 3230017221 + .long 3796182064 + .long 3189567357 + .long 324793264 + .long 3230017224 + .long 2801238958 + .long 3189567581 + .long 2668474776 + .long 3230017226 + .long 2273142813 + .long 3189567436 + .long 703615288 + .long 3230017229 + .long 831867571 + .long 3189567237 + .long 3020183048 + .long 3230017231 + .long 2238048829 + .long 3189567595 + .long 1028277008 + .long 3230017234 + .long 1163763070 + .long 3189567452 + .long 3317865168 + .long 3230017236 + .long 1206450788 + .long 3189567228 + .long 1299046216 + .long 3230017239 + .long 737162226 + .long 3189567879 + .long 3561787920 + .long 3230017241 + .long 2433253277 + .long 3189567901 + .long 1516188728 + .long 3230017244 + .long 3561277099 + .long 3189567506 + .long 3752216144 + .long 3230017246 + .long 1385095507 + .long 3189567674 + .long 1679968384 + .long 3230017249 + .long 829462408 + .long 3189567156 + .long 3889412704 + .long 3230017251 + .long 2939266725 + .long 3189567673 + .long 1790647080 + .long 3230017254 + .long 4214100827 + .long 3189567848 + .long 3973638544 + .long 3230017256 + .long 2537954451 + .long 3189567376 + .long 1848484816 + .long 3230017259 + .long 1128740312 + .long 3189567098 + .long 4005152680 + .long 3230017261 + .long 1932232434 + .long 3189568053 + .long 1853739648 + .long 3230017264 + .long 1359710694 + .long 3189567457 + .long 3984212256 + .long 3230017266 + .long 1268482287 + .long 3189567990 + .long 1806667776 + .long 3230017269 + .long 839689017 + .long 3189567631 + .long 3911072520 + .long 3230017271 + .long 3727165601 + .long 3189567921 + .long 1707523520 + .long 3230017274 + .long 1836550952 + .long 3189567895 + .long 3785986872 + .long 3230017276 + .long 172951407 + .long 3189567220 + .long 1556559360 + .long 3230017279 + .long 1166449891 + .long 3189567294 + .long 3609206856 + .long 3230017281 + .long 28625366 + .long 3189567222 + .long 1354025920 + .long 3230017284 + .long 4038426582 + .long 3189567978 + .long 3380982208 + .long 3230017286 + .long 2756284659 + .long 3189567362 + .long 1100172048 + .long 3230017289 + .long 848830252 + .long 3189567230 + .long 3101560856 + .long 3230017291 + .long 1868170309 + .long 3189567423 + .long 795244752 + .long 3230017294 + .long 3128260908 + .long 3189567885 + .long 2771188936 + .long 3230017296 + .long 1691261279 + .long 3189567706 + .long 439489304 + .long 3230017299 + .long 2886711298 + .long 3189567236 + .long 2390110824 + .long 3230017301 + .long 1311431101 + .long 3189567133 + .long 33149176 + .long 3230017304 + .long 3042183093 + .long 3189567401 + .long 1958569120 + .long 3230017306 + .long 3174208880 + .long 3189567462 + .long 3871433416 + .long 3230017308 + .long 302374021 + .long 3189567243 + .long 1476804712 + .long 3230017311 + .long 712531519 + .long 3189567241 + .long 3364647440 + .long 3230017313 + .long 3705318448 + .long 3189567568 + .long 945056744 + .long 3230017316 + .long 2424171915 + .long 3189568016 + .long 2807996856 + .long 3230017318 + .long 199511961 + .long 3189567094 + .long 363562688 + .long 3230017321 + .long 3766234060 + .long 3189567214 + .long 2201718256 + .long 3230017323 + .long 1956195829 + .long 3189567592 + .long 4027525584 + .long 3230017325 + .long 2891794585 + .long 3189567375 + .long 1546046576 + .long 3230017328 + .long 843173017 + .long 3189567760 + .long 3347244936 + .long 3230017330 + .long 1609532414 + .long 3189567955 + .long 841215080 + .long 3230017333 + .long 3356704285 + .long 3189567294 + .long 2617920488 + .long 3230017335 + .long 1641729240 + .long 3189567346 + .long 87455368 + .long 3230017338 + .long 1455753222 + .long 3189567878 + .long 1839783016 + .long 3230017340 + .long 1936589978 + .long 3189567944 + .long 3579964728 + .long 3230017342 + .long 1006586129 + .long 3189567993 + .long 1013061704 + .long 3230017345 + .long 2766825484 + .long 3189567880 + .long 2729036928 + .long 3230017347 + .long 1888685184 + .long 3189567954 + .long 137984104 + .long 3230017350 + .long 848046306 + .long 3189568090 + .long 1829866024 + .long 3230017352 + .long 4178224056 + .long 3189567750 + .long 3509743488 + .long 3230017354 + .long 2637072474 + .long 3189567070 + .long 882677184 + .long 3230017357 + .long 3133305384 + .long 3189567936 + .long 2538629624 + .long 3230017359 + .long 1343200028 + .long 3189567905 + .long 4182661312 + .long 3230017361 + .long 107195460 + .long 3189567427 + .long 1519832648 + .long 3230017364 + .long 602154914 + .long 3189567857 + .long 3140105848 + .long 3230017366 + .long 659160740 + .long 3189567417 + .long 453573824 + .long 3230017369 + .long 236889930 + .long 3189567396 + .long 2050198592 + .long 3230017371 + .long 1175634921 + .long 3189567087 + .long 3635040168 + .long 3230017373 + .long 1241855527 + .long 3189567941 + .long 913158504 + .long 3230017376 + .long 3947904414 + .long 3189567477 + .long 2474515312 + .long 3230017378 + .long 1206979822 + .long 3189567534 + .long 4024170344 + .long 3230017380 + .long 1847397805 + .long 3189567152 + .long 1267183240 + .long 3230017383 + .long 2916539301 + .long 3189567754 + .long 2793515456 + .long 3230017385 + .long 2568213263 + .long 3189568078 + .long 13259168 + .long 3230017388 + .long 3003245330 + .long 3189567303 + .long 1516375624 + .long 3230017390 + .long 3472633477 + .long 3189567153 + .long 3007924104 + .long 3230017392 + .long 532406289 + .long 3189567855 + .long 192963816 + .long 3230017395 + .long 4149310663 + .long 3189567165 + .long 1661455728 + .long 3230017397 + .long 946970842 + .long 3189567598 + .long 3118458864 + .long 3230017399 + .long 2040517972 + .long 3189567254 + .long 269032128 + .long 3230017402 + .long 3669971831 + .long 3189568072 + .long 1703136256 + .long 3230017404 + .long 2375197389 + .long 3189567687 + .long 3125829976 + .long 3230017406 + .long 296757744 + .long 3189567673 + .long 242171944 + .long 3230017409 + .long 611424102 + .long 3189567452 + .long 1642122608 + .long 3230017411 + .long 1700968423 + .long 3189567419 + .long 3030740440 + .long 3230017413 + .long 2947762668 + .long 3189567968 + .long 113083840 + .long 3230017416 + .long 690901756 + .long 3189567496 + .long 1479112984 + .long 3230017418 + .long 121139903 + .long 3189567571 + .long 2833886088 + .long 3230017420 + .long 173386055 + .long 3189567866 + .long 4177428584 + .long 3230017422 + .long 2964718132 + .long 3189567231 + .long 1214798496 + .long 3230017425 + .long 541562024 + .long 3189567842 + .long 2535955680 + .long 3230017427 + .long 3368765612 + .long 3189568076 + .long 3845958008 + .long 3230017429 + .long 3194541507 + .long 3189567689 + .long 849863256 + .long 3230017432 + .long 3443356552 + .long 3189567858 + .long 2137631024 + .long 3230017434 + .long 1180679397 + .long 3189567138 + .long 3414318912 + .long 3230017436 + .long 2261929999 + .long 3189567651 + .long 384984464 + .long 3230017439 + .long 954057098 + .long 3189567971 + .long 1639587024 + .long 3230017441 + .long 1346995839 + .long 3189567263 + .long 2883183944 + .long 3230017443 + .long 3253373727 + .long 3189567382 + .long 4115799808 + .long 3230017445 + .long 4143791142 + .long 3189567800 + .long 1042491824 + .long 3230017448 + .long 4240432954 + .long 3189567700 + .long 2253218992 + .long 3230017450 + .long 1891708033 + .long 3189568072 + .long 3453038360 + .long 3230017452 + .long 710292621 + .long 3189567662 + .long 347006880 + .long 3230017455 + .long 2712254611 + .long 3189567116 + .long 1525083304 + .long 3230017457 + .long 349583280 + .long 3189568004 + .long 2692324448 + .long 3230017459 + .long 1803227864 + .long 3189567740 + .long 3848754312 + .long 3230017461 + .long 3644606976 + .long 3189567826 + .long 699429536 + .long 3230017464 + .long 1067153346 + .long 3189567751 + .long 1834308568 + .long 3230017466 + .long 1335350692 + .long 3189567081 + .long 2958447872 + .long 3230017468 + .long 1803696599 + .long 3189567557 + .long 4071871152 + .long 3230017470 + .long 1232152547 + .long 3189568017 + .long 879634736 + .long 3230017473 + .long 1455437901 + .long 3189567512 + .long 1971696744 + .long 3230017475 + .long 3708110750 + .long 3189567399 + .long 3053113344 + .long 3230017477 + .long 3907324819 + .long 3189567290 + .long 4123907920 + .long 3230017479 + .long 4080000314 + .long 3189567141 + .long 889136480 + .long 3230017482 + .long 1286519001 + .long 3189567298 + .long 1938756848 + .long 3230017484 + .long 1292347423 + .long 3189567513 + .long 2977824880 + .long 3230017486 + .long 1159725249 + .long 3189568015 + .long 4006363664 + .long 3230017488 + .long 895621348 + .long 3189567502 + .long 729428896 + .long 3230017491 + .long 1212894155 + .long 3189567280 + .long 1736978096 + .long 3230017493 + .long 296117275 + .long 3189567210 + .long 2734066816 + .long 3230017495 + .long 2463481211 + .long 3189567796 + .long 3720717848 + .long 3230017497 + .long 76524950 + .long 3189567159 + .long 401986584 + .long 3230017500 + .long 1718551671 + .long 3189567216 + .long 1367830248 + .long 3230017502 + .long 3568874946 + .long 3189567584 + .long 2323304104 + .long 3230017504 + .long 2763456396 + .long 3189567666 + .long 3268430632 + .long 3230017506 + .long 1208592501 + .long 3189567715 + .long 4203232240 + .long 3230017508 + .long 4148835618 + .long 3189567851 + .long 832763976 + .long 3230017511 + .long 610418007 + .long 3189567082 + .long 1746982680 + .long 3230017513 + .long 3035714190 + .long 3189567431 + .long 2650943256 + .long 3230017515 + .long 85931336 + .long 3189567843 + .long 3544667832 + .long 3230017517 + .long 3006685957 + .long 3189567286 + .long 133211144 + .long 3230017520 + .long 878859600 + .long 3189567873 + .long 1006529776 + .long 3230017522 + .long 854333969 + .long 3189567724 + .long 1869678336 + .long 3230017524 + .long 3058646748 + .long 3189567155 + .long 2722678648 + .long 3230017526 + .long 360733640 + .long 3189567693 + .long 3565552488 + .long 3230017528 + .long 3015564990 + .long 3189568013 + .long 103354256 + .long 3230017531 + .long 2286095909 + .long 3189568081 + .long 926040176 + .long 3230017533 + .long 1899270393 + .long 3189567137 + .long 1738664488 + .long 3230017535 + .long 1377641292 + .long 3189567833 + .long 2541248696 + .long 3230017537 + .long 4266686523 + .long 3189568077 + .long 3333814224 + .long 3230017539 + .long 4018775563 + .long 3189567218 + .long 4116382408 + .long 3230017541 + .long 3373913644 + .long 3189567103 + .long 594007232 + .long 3230017544 + .long 2818265402 + .long 3189568021 + .long 1356644520 + .long 3230017546 + .long 1075601108 + .long 3189567716 + .long 2109348112 + .long 3230017548 + .long 3342127702 + .long 3189567566 + .long 2852139088 + .long 3230017550 + .long 2910355434 + .long 3189567504 + .long 3585038464 + .long 3230017552 + .long 611858749 + .long 3189567074 + .long 13099880 + .long 3230017555 + .long 1954698831 + .long 3189567516 + .long 726278816 + .long 3230017557 + .long 550712630 + .long 3189567710 + .long 1429628792 + .long 3230017559 + .long 3672474493 + .long 3189567278 + .long 2123170544 + .long 3230017561 + .long 1160875209 + .long 3189567651 + .long 2806924760 + .long 3230017563 + .long 2242524344 + .long 3189568000 + .long 3480912064 + .long 3230017565 + .long 2823138691 + .long 3189567327 + .long 4145152992 + .long 3230017567 + .long 3521079748 + .long 3189567568 + .long 504700744 + .long 3230017570 + .long 1136670137 + .long 3189567486 + .long 1149510328 + .long 3230017572 + .long 806933442 + .long 3189567823 + .long 1784634816 + .long 3230017574 + .long 1606084669 + .long 3189567242 + .long 2410094488 + .long 3230017576 + .long 2841342625 + .long 3189567480 + .long 3025909584 + .long 3230017578 + .long 984188059 + .long 3189567239 + .long 3632100264 + .long 3230017580 + .long 3011730434 + .long 3189567337 + .long 4228686632 + .long 3230017582 + .long 328432041 + .long 3189567676 + .long 520721440 + .long 3230017585 + .long 2057225622 + .long 3189567268 + .long 1098159248 + .long 3230017587 + .long 3150727306 + .long 3189567348 + .long 1666052680 + .long 3230017589 + .long 3291380622 + .long 3189567307 + .long 2224421584 + .long 3230017591 + .long 3570771984 + .long 3189567798 + .long 2773285760 + .long 3230017593 + .long 2427604440 + .long 3189567698 + .long 3312664936 + .long 3230017595 + .long 3733848165 + .long 3189567211 + .long 3842578768 + .long 3230017597 + .long 2673912350 + .long 3189567904 + .long 68079584 + .long 3230017600 + .long 960995892 + .long 3189567616 + .long 579121512 + .long 3230017602 + .long 4150493479 + .long 3189567659 + .long 1080756744 + .long 3230017604 + .long 1054941272 + .long 3189567735 + .long 1573004704 + .long 3230017606 + .long 2574365292 + .long 3189568007 + .long 2055884768 + .long 3230017608 + .long 2507498673 + .long 3189567092 + .long 2529416224 + .long 3230017610 + .long 2082176323 + .long 3189567207 + .long 2993618320 + .long 3230017612 + .long 3719982601 + .long 3189568058 + .long 3448510256 + .long 3230017614 + .long 4104247904 + .long 3189567897 + .long 3894111152 + .long 3230017616 + .long 3735557011 + .long 3189567647 + .long 35472776 + .long 3230017619 + .long 2914260983 + .long 3189567862 + .long 462548736 + .long 3230017621 + .long 1334094042 + .long 3189567734 + .long 880390688 + .long 3230017623 + .long 1291097379 + .long 3189567171 + .long 1289017512 + .long 3230017625 + .long 1627119803 + .long 3189567853 + .long 1688448064 + .long 3230017627 + .long 3886873723 + .long 3189567117 + .long 2078701104 + .long 3230017629 + .long 627887757 + .long 3189567206 + .long 2459795360 + .long 3230017631 + .long 1722013861 + .long 3189567101 + .long 2831749488 + .long 3230017633 + .long 4163262354 + .long 3189567678 + .long 3194582104 + .long 3230017635 + .long 4170237688 + .long 3189567639 + .long 3548311752 + .long 3230017637 + .long 47563772 + .long 3189567637 + .long 3892956928 + .long 3230017639 + .long 2990136007 + .long 3189567231 + .long 4228536056 + .long 3230017641 + .long 4294532248 + .long 3189567995 + .long 260100240 + .long 3230017644 + .long 2060709623 + .long 3189567397 + .long 577602376 + .long 3230017646 + .long 1488525373 + .long 3189568044 + .long 886093456 + .long 3230017648 + .long 1657840200 + .long 3189567474 + .long 1185591680 + .long 3230017650 + .long 3155771782 + .long 3189567399 + .long 1476115208 + .long 3230017652 + .long 2195162329 + .long 3189567591 + .long 1757682144 + .long 3230017654 + .long 1292806663 + .long 3189567956 + .long 2030310544 + .long 3230017656 + .long 2151451208 + .long 3189567540 + .long 2294018392 + .long 3230017658 + .long 2224122735 + .long 3189567630 + .long 2548823632 + .long 3230017660 + .long 3554417607 + .long 3189567684 + .long 2794744152 + .long 3230017662 + .long 3831650627 + .long 3189567409 + .long 3031797776 + .long 3230017664 + .long 4024246224 + .long 3189567811 + .long 3260002296 + .long 3230017666 + .long 2530219738 + .long 3189567128 + .long 3479375416 + .long 3230017668 + .long 1618145996 + .long 3189568024 + .long 3689934832 + .long 3230017670 + .long 392379700 + .long 3189567378 + .long 3891698144 + .long 3230017672 + .long 55874694 + .long 3189567574 + .long 4084682928 + .long 3230017674 + .long 4294251475 + .long 3189567312 + .long 4268906688 + .long 3230017676 + .long 1899705040 + .long 3189567783 + .long 149419600 + .long 3230017679 + .long 357699389 + .long 3189567568 + .long 316173656 + .long 3230017681 + .long 3025711727 + .long 3189567790 + .long 474218920 + .long 3230017683 + .long 2921891821 + .long 3189568046 + .long 623572704 + .long 3230017685 + .long 1716968749 + .long 3189567453 + .long 764252248 + .long 3230017687 + .long 2393171526 + .long 3189567748 + .long 896274768 + .long 3230017689 + .long 1343317993 + .long 3189567172 + .long 1019657400 + .long 3230017691 + .long 1388235839 + .long 3189567661 + .long 1134417256 + .long 3230017693 + .long 2766147125 + .long 3189567706 + .long 1240571384 + .long 3230017695 + .long 2162068842 + .long 3189567499 + .long 1338136776 + .long 3230017697 + .long 4075455588 + .long 3189567932 + .long 1427130392 + .long 3230017699 + .long 1579647664 + .long 3189567555 + .long 1507569120 + .long 3230017701 + .long 3785749868 + .long 3189567715 + .long 1579469816 + .long 3230017703 + .long 2639950365 + .long 3189567469 + .long 1642849272 + .long 3230017705 + .long 3611501026 + .long 3189567698 + .long 1697724240 + .long 3230017707 + .long 15422953 + .long 3189568066 + .long 1744111424 + .long 3230017709 + .long 2642213241 + .long 3189568062 + .long 1782027472 + .long 3230017711 + .long 143606300 + .long 3189568058 + .long 1811488992 + .long 3230017713 + .long 501328690 + .long 3189567276 + .long 1832512520 + .long 3230017715 + .long 3258054578 + .long 3189567915 + .long 1845114576 + .long 3230017717 + .long 1297851139 + .long 3189568007 + .long 1849311616 + .long 3230017719 + .long 3589200000 + .long 3189567580 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 2147483648 + .long 2846560486 + .long 3210737666 + .long 2729511872 + .long 3211784202 + .long 3956813460 + .long 3212307985 + .long 1796237193 + .long 3212828714 + .long 1562748889 + .long 3213092649 + .long 1602292343 + .long 3213352007 + .long 745814092 + .long 3213610865 + .long 2969306084 + .long 3213869224 + .long 3953060839 + .long 3214006263 + .long 1128703349 + .long 3214134948 + .long 1371067273 + .long 3214263386 + .long 131445019 + .long 3214391579 + .long 1427948820 + .long 3214519527 + .long 665817496 + .long 3214647232 + .long 1817459908 + .long 3214774694 + .long 242758400 + .long 3214901915 + .long 2082038134 + .long 3214981455 + .long 2300828032 + .long 3215044825 + .long 571795571 + .long 3215108076 + .long 3120479584 + .long 3215171207 + .long 3276640540 + .long 3215234220 + .long 2949178581 + .long 3215297115 + .long 4036279704 + .long 3215359892 + .long 4130528508 + .long 3215422552 + .long 813954767 + .long 3215485096 + .long 248046571 + .long 3215547523 + .long 4288926261 + .long 3215609833 + .long 1897492927 + .long 3215672029 + .long 3499237165 + .long 3215734109 + .long 2329611090 + .long 3215796075 + .long 203907094 + .long 3215857927 + .long 3222364838 + .long 3215919664 + .long 295408387 + .long 3215981289 + .long 899212401 + .long 3216012696 + .long 2606049022 + .long 3216043395 + .long 4003691233 + .long 3216074038 + .long 1675303236 + .long 3216104626 + .long 789189655 + .long 3216135158 + .long 2213928479 + .long 3216165634 + .long 2518405585 + .long 3216196055 + .long 2561783534 + .long 3216226421 + .long 3198568176 + .long 3216256732 + .long 983674944 + .long 3216286989 + .long 1057364031 + .long 3216317191 + .long 4260371496 + .long 3216347338 + .long 2838974660 + .long 3216377432 + .long 1919860988 + .long 3216407472 + .long 2330291020 + .long 3216437458 + .long 598130195 + .long 3216467391 + .long 1836782285 + .long 3216497270 + .long 2565351466 + .long 3216527096 + .long 3593575201 + .long 3216556869 + .long 1431920350 + .long 3216586590 + .long 1176515501 + .long 3216616258 + .long 3624279252 + .long 3216645873 + .long 977982819 + .long 3216675437 + .long 2616083454 + .long 3216704948 + .long 733015457 + .long 3216734408 + .long 403990373 + .long 3216763816 + .long 2405156675 + .long 3216793172 + .long 3213628385 + .long 3216822477 + .long 3597448029 + .long 3216851731 + .long 25680167 + .long 3216880935 + .long 1848308454 + .long 3216910087 + .long 1231492199 + .long 3216939189 + .long 3222364838 + .long 3216968240 + .long 4274224607 + .long 3216997241 + .long 836496059 + .long 3217026193 + .long 1119829323 + .long 3217043131 + .long 315251054 + .long 3217057557 + .long 518461891 + .long 3217071958 + .long 2094042713 + .long 3217086334 + .long 1109735857 + .long 3217100686 + .long 2221359788 + .long 3217115013 + .long 1492952593 + .long 3217129316 + .long 3576653728 + .long 3217143594 + .long 237880003 + .long 3217157849 + .long 420109003 + .long 3217172079 + .long 180120274 + .long 3217186285 + .long 4162843939 + .long 3217200466 + .long 4126536273 + .long 3217214624 + .long 417628115 + .long 3217228759 + .long 1970736719 + .long 3217242869 + .long 538873716 + .long 3217256956 + .long 758227830 + .long 3217271019 + .long 2968307242 + .long 3217285058 + .long 3211951040 + .long 3217299074 + .long 1825275166 + .long 3217313067 + .long 3437683677 + .long 3217327036 + .long 4086978021 + .long 3217340982 + .long 4104270002 + .long 3217354905 + .long 3819025464 + .long 3217368805 + .long 3559075183 + .long 3217382682 + .long 3650625670 + .long 3217396536 + .long 123302585 + .long 3217410368 + .long 1890030548 + .long 3217424176 + .long 682272600 + .long 3217437962 + .long 1114811729 + .long 3217451725 + .long 3505892050 + .long 3217465465 + .long 3877229085 + .long 3217479183 + .long 2543954549 + .long 3217492879 + .long 4114626469 + .long 3217506552 + .long 311370023 + .long 3217520204 + .long 34658569 + .long 3217533833 + .long 3593519732 + .long 3217547439 + .long 2705545195 + .long 3217561024 + .long 1971736889 + .long 3217574587 + .long 1696647441 + .long 3217588128 + .long 2183357019 + .long 3217601647 + .long 3733482817 + .long 3217615144 + .long 2352221150 + .long 3217628620 + .long 2633258676 + .long 3217642074 + .long 578912458 + .long 3217655507 + .long 780008323 + .long 3217668918 + .long 3530988084 + .long 3217682307 + .long 534951267 + .long 3217695676 + .long 673467853 + .long 3217709023 + .long 4236783385 + .long 3217722348 + .long 2923827788 + .long 3217735653 + .long 1317060595 + .long 3217748937 + .long 3997577740 + .long 3217762199 + .long 2660218276 + .long 3217775441 + .long 1883376699 + .long 3217788662 + .long 1949142230 + .long 3217801862 + .long 3138274530 + .long 3217815041 + .long 1435244737 + .long 3217828200 + .long 1413145637 + .long 3217841338 + .long 3348797986 + .long 3217854455 + .long 3222758658 + .long 3217867552 + .long 1309263324 + .long 3217880629 + .long 2176234471 + .long 3217893685 + .long 1800387473 + .long 3217906721 + .long 452140382 + .long 3217919737 + .long 2695621757 + .long 3217932732 + .long 208809263 + .long 3217945708 + .long 1848308454 + .long 3217958663 + .long 3584589359 + .long 3217971598 + .long 1386895968 + .long 3217984514 + .long 4108155659 + .long 3217997409 + .long 3420215606 + .long 3218010285 + .long 3878621277 + .long 3218023141 + .long 1447787319 + .long 3218035978 + .long 680874053 + .long 3218048795 + .long 1834892843 + .long 3218061592 + .long 870713292 + .long 3218074370 + .long 1168986141 + .long 3218083436 + .long 3245089583 + .long 3218089805 + .long 2494877761 + .long 3218096165 + .long 3338922950 + .long 3218102515 + .long 1607293197 + .long 3218108856 + .long 1719424943 + .long 3218115187 + .long 3799224547 + .long 3218121508 + .long 3675071677 + .long 3218127820 + .long 1469757259 + .long 3218134123 + .long 1600486820 + .long 3218140416 + .long 4188949205 + .long 3218146699 + .long 766352567 + .long 3218152974 + .long 43231408 + .long 3218159239 + .long 2139646042 + .long 3218165494 + .long 2880153102 + .long 3218171740 + .long 2383743325 + .long 3218177977 + .long 768877423 + .long 3218184205 + .long 2448456521 + .long 3218190423 + .long 3244923387 + .long 3218196632 + .long 3275167422 + .long 3218202832 + .long 2655560435 + .long 3218209023 + .long 1501959692 + .long 3218215205 + .long 4224678246 + .long 3218221377 + .long 2348618756 + .long 3218227541 + .long 283080250 + .long 3218233696 + .long 2436859197 + .long 3218239841 + .long 333350563 + .long 3218245978 + .long 2675321801 + .long 3218252105 + .long 985177381 + .long 3218258224 + .long 3964700035 + .long 3218264333 + .long 3135315249 + .long 3218270434 + .long 2902865164 + .long 3218276526 + .long 3377742213 + .long 3218282609 + .long 374891912 + .long 3218288684 + .long 2593684821 + .long 3218294749 + .long 1553148222 + .long 3218300806 + .long 1656739931 + .long 3218306854 + .long 3012481825 + .long 3218312893 + .long 1432962538 + .long 3218318924 + .long 1320242026 + .long 3218324946 + .long 2780952336 + .long 3218330959 + .long 1626300240 + .long 3218336964 + .long 2256971748 + .long 3218342960 + .long 483265518 + .long 3218348948 + .long 704964628 + .long 3218354927 + .long 3026437244 + .long 3218360897 + .long 3256639170 + .long 3218366859 + .long 1499050969 + .long 3218372813 + .long 2151680465 + .long 3218378758 + .long 1022163351 + .long 3218384695 + .long 2507634849 + .long 3218390623 + .long 2414862975 + .long 3218396543 + .long 845152874 + .long 3218402455 + .long 2194349235 + .long 3218408358 + .long 2267936813 + .long 3218414253 + .long 1165944702 + .long 3218420140 + .long 3282948707 + .long 3218426018 + .long 128204514 + .long 3218431889 + .long 390421100 + .long 3218437751 + .long 4167959282 + .long 3218443604 + .long 2968834018 + .long 3218449450 + .long 1185553177 + .long 3218455288 + .long 3210217930 + .long 3218461117 + .long 549623114 + .long 3218466939 + .long 1890030548 + .long 3218472752 + .long 3032400188 + .long 3218478557 + .long 4072261525 + .long 3218484354 + .long 3450874911 + .long 1070995813 + .long 2331021804 + .long 1070990032 + .long 1029453230 + .long 1070984259 + .long 3747176240 + .long 1070978493 + .long 1800682930 + .long 1070972736 + .long 3686719393 + .long 1070966986 + .long 722545241 + .long 1070961245 + .long 1405669883 + .long 1070955511 + .long 1349079372 + .long 1070949785 + .long 461103529 + .long 1070944067 + .long 2945413886 + .long 1070938356 + .long 121152472 + .long 1070932654 + .long 487700860 + .long 1070926959 + .long 3954874384 + .long 1070921271 + .long 1842920138 + .long 1070915592 + .long 2652318780 + .long 1070909920 + .long 1999011482 + .long 1070904256 + .long 4089234463 + .long 1070898599 + .long 244680560 + .long 1070892951 + .long 3262235675 + .long 1070887309 + .long 169336595 + .long 1070881676 + .long 3763576649 + .long 1070876049 + .long 1073096258 + .long 1070870431 + .long 601221319 + .long 1070864820 + .long 2261690268 + .long 1070859216 + .long 1673619518 + .long 1070853620 + .long 3046403514 + .long 1070848031 + .long 1999843716 + .long 1070842450 + .long 2744015967 + .long 1070836876 + .long 899399508 + .long 1070831310 + .long 676744370 + .long 1070825751 + .long 1992167703 + .long 1070820199 + .long 467152011 + .long 1070814655 + .long 313445281 + .long 1070809118 + .long 1448157352 + .long 1070803588 + .long 3788725476 + .long 1070798065 + .long 2957945300 + .long 1070792550 + .long 3168871046 + .long 1070787042 + .long 44944622 + .long 1070781542 + .long 2094830420 + .long 1070776048 + .long 647642559 + .long 1070770562 + .long 4212681596 + .long 1070765082 + .long 4119694493 + .long 1070759610 + .long 288676754 + .long 1070754146 + .long 1229870791 + .long 1070748688 + .long 2568927817 + .long 1070743237 + .long 4226775419 + .long 1070737793 + .long 1829681364 + .long 1070732357 + .long 3889121191 + .long 1070726927 + .long 1737005556 + .long 1070721505 + .long 3885417029 + .long 1070716089 + .long 1666870165 + .long 1070710681 + .long 3594048319 + .long 1070705279 + .long 1000063738 + .long 1070699885 + .long 2398194399 + .long 1070694497 + .long 3417111411 + .long 1070689116 + .long 3980746691 + .long 1070683742 + .long 4013324163 + .long 1070678375 + .long 3439358267 + .long 1070673015 + .long 2183652476 + .long 1070667662 + .long 171297820 + .long 1070662316 + .long 1622638721 + .long 1070656976 + .long 2168369647 + .long 1070651643 + .long 1734435555 + .long 1070646317 + .long 247063161 + .long 1070640998 + .long 1927726804 + .long 1070635685 + .long 2408245143 + .long 1070630379 + .long 1615681634 + .long 1070625080 + .long 3772343130 + .long 1070619787 + .long 215909304 + .long 1070614502 + .long 3759169634 + .long 1070609222 + .long 1445381777 + .long 1070603950 + .long 1792910451 + .long 1070598684 + .long 870975437 + .long 1070590754 + .long 3194096222 + .long 1070580248 + .long 1823716217 + .long 1070569756 + .long 913800688 + .long 1070559277 + .long 323875369 + .long 1070548811 + .long 4208958430 + .long 1070538357 + .long 3839688678 + .long 1070527917 + .long 3372126730 + .long 1070517490 + .long 2667883253 + .long 1070507076 + .long 1589083690 + .long 1070496675 + .long 4293333010 + .long 1070486286 + .long 2053843986 + .long 1070475911 + .long 3324205749 + .long 1070465548 + .long 3673610217 + .long 1070455198 + .long 2966718784 + .long 1070444861 + .long 1068692560 + .long 1070434537 + .long 2140157205 + .long 1070424225 + .long 1752298597 + .long 1070413926 + .long 4066729595 + .long 1070403639 + .long 360651144 + .long 1070393366 + .long 3386588242 + .long 1070383104 + .long 127747308 + .long 1070372856 + .long 3337621361 + .long 1070362619 + .long 380113 + .long 1070352396 + .long 2870475188 + .long 1070342184 + .long 3227997535 + .long 1070331985 + .long 943446189 + .long 1070321799 + .long 182758681 + .long 1070311625 + .long 817374162 + .long 1070301463 + .long 2719198427 + .long 1070291313 + .long 1465634365 + .long 1070281176 + .long 1224481606 + .long 1070271051 + .long 1869032404 + .long 1070260938 + .long 3273036717 + .long 1070250837 + .long 1015732707 + .long 1070240749 + .long 3561713742 + .long 1070230672 + .long 2196155141 + .long 1070220608 + .long 1089583089 + .long 1070210556 + .long 118003300 + .long 1070200516 + .long 3452833475 + .long 1070190487 + .long 2381031992 + .long 1070180471 + .long 1074899573 + .long 1070170467 + .long 3707175295 + .long 1070160474 + .long 1566132617 + .long 1070150494 + .long 3120348377 + .long 1070140525 + .long 3953929663 + .long 1070130568 + .long 3946380940 + .long 1070120623 + .long 2977634725 + .long 1070110690 + .long 928049556 + .long 1070100769 + .long 1973375279 + .long 1070090859 + .long 1699849154 + .long 1070080961 + .long 4284063055 + .long 1070071074 + .long 1018125008 + .long 1070061200 + .long 374428300 + .long 1070051337 + .long 2235845747 + .long 1070041485 + .long 2190695046 + .long 1070031645 + .long 122671437 + .long 1070021817 + .long 210845780 + .long 1070012000 + .long 2339728060 + .long 1070002194 + .long 2099265479 + .long 1069992400 + .long 3669742467 + .long 1069982617 + .long 2641909617 + .long 1069972846 + .long 3196851002 + .long 1069963086 + .long 926113142 + .long 1069953338 + .long 11572342 + .long 1069943601 + .long 340530969 + .long 1069933875 + .long 1800682930 + .long 1069924160 + .long 4280111857 + .long 1069914456 + .long 3372322013 + .long 1069904764 + .long 3261138386 + .long 1069895083 + .long 3835803021 + .long 1069885413 + .long 690973253 + .long 1069875755 + .long 2306589128 + .long 1069866107 + .long 4278067876 + .long 1069856470 + .long 2201204065 + .long 1069846845 + .long 262102455 + .long 1069837231 + .long 2647241692 + .long 1069827627 + .long 658570708 + .long 1069818035 + .long 2778278092 + .long 1069808453 + .long 309052031 + .long 1069798883 + .long 1733817001 + .long 1069789323 + .long 2650961017 + .long 1069779774 + .long 2954203158 + .long 1069770236 + .long 2537624622 + .long 1069760709 + .long 1295667077 + .long 1069751193 + .long 3418098326 + .long 1069741687 + .long 210141498 + .long 1069732193 + .long 157244505 + .long 1069722709 + .long 3155274661 + .long 1069713235 + .long 510517079 + .long 1069703773 + .long 709476866 + .long 1069694321 + .long 3649073763 + .long 1069684879 + .long 636640577 + .long 1069675449 + .long 159725394 + .long 1069666029 + .long 2116286250 + .long 1069656619 + .long 2109656884 + .long 1069647220 + .long 38479793 + .long 1069637832 + .long 96704707 + .long 1069628454 + .long 2183652476 + .long 1069619086 + .long 1904013563 + .long 1069609729 + .long 3452748429 + .long 1069600382 + .long 2435216853 + .long 1069591046 + .long 3047045639 + .long 1069581720 + .long 894257944 + .long 1069572405 + .long 173141005 + .long 1069563100 + .long 785342784 + .long 1069553805 + .long 970708326 + .long 1069541521 + .long 2645916898 + .long 1069522972 + .long 2106590683 + .long 1069504444 + .long 3453588195 + .long 1069485936 + .long 2198475040 + .long 1069467449 + .long 2443390270 + .long 1069448982 + .long 3996141691 + .long 1069430535 + .long 2370203065 + .long 1069412109 + .long 1669613218 + .long 1069393703 + .long 1704071394 + .long 1069375317 + .long 2283901796 + .long 1069356951 + .long 3220050856 + .long 1069338605 + .long 29117219 + .long 1069320280 + .long 1113218225 + .long 1069301974 + .long 1990183441 + .long 1069283688 + .long 2473421172 + .long 1069265422 + .long 2376948508 + .long 1069247176 + .long 1515388672 + .long 1069228950 + .long 3998935692 + .long 1069210743 + .long 1053482595 + .long 1069192557 + .long 1085389880 + .long 1069174390 + .long 3911679148 + .long 1069156242 + .long 760030536 + .long 1069138115 + .long 38583924 + .long 1069120007 + .long 1566132617 + .long 1069101918 + .long 867088104 + .long 1069083849 + .long 2056379433 + .long 1069065799 + .long 659581512 + .long 1069047769 + .long 792781808 + .long 1069029758 + .long 2277675977 + .long 1069011766 + .long 641565395 + .long 1068993794 + .long 2256601 + .long 1068975841 + .long 183156961 + .long 1068957907 + .long 1008239542 + .long 1068939992 + .long 2302040698 + .long 1068922096 + .long 3889657667 + .long 1068904219 + .long 1301778891 + .long 1068886362 + .long 2954550821 + .long 1068868523 + .long 84804484 + .long 1068850704 + .long 1109791498 + .long 1068832903 + .long 1562410668 + .long 1068815121 + .long 1271074840 + .long 1068797358 + .long 64741293 + .long 1068779614 + .long 2067876735 + .long 1068761888 + .long 2815553124 + .long 1068744181 + .long 2138347284 + .long 1068726493 + .long 4162338635 + .long 1068708823 + .long 129237761 + .long 1068691173 + .long 2756122533 + .long 1068673540 + .long 3285762921 + .long 1068655926 + .long 1551389854 + .long 1068638331 + .long 1681725707 + .long 1068620754 + .long 3511047527 + .long 1068603195 + .long 2579184841 + .long 1068585655 + .long 3016419377 + .long 1068568133 + .long 363613719 + .long 1068550630 + .long 3047045639 + .long 1068533144 + .long 2313634884 + .long 1068515677 + .long 296456961 + .long 1068497513 + .long 1367328035 + .long 1068462651 + .long 3221665916 + .long 1068427825 + .long 1242258971 + .long 1068393036 + .long 3697798734 + .long 1068358282 + .long 1678104687 + .long 1068323565 + .long 3453858508 + .long 1068288883 + .long 116861598 + .long 1068254238 + .long 4234736672 + .long 1068219627 + .long 2606283437 + .long 1068185053 + .long 3506114812 + .long 1068150514 + .long 2324914545 + .long 1068116011 + .long 3044269692 + .long 1068081543 + .long 1056797460 + .long 1068047111 + .long 346010435 + .long 1068012714 + .long 601410756 + .long 1067978352 + .long 1513453498 + .long 1067944025 + .long 2773542775 + .long 1067909733 + .long 4074027864 + .long 1067875476 + .long 813232056 + .long 1067841255 + .long 1275317999 + .long 1067807068 + .long 860480111 + .long 1067772916 + .long 3559777258 + .long 1067738798 + .long 480292498 + .long 1067704716 + .long 4204867691 + .long 1067670667 + .long 1547459502 + .long 1067636654 + .long 797775935 + .long 1067602675 + .long 1656501562 + .long 1067568730 + .long 3825228429 + .long 1067534819 + .long 2711485098 + .long 1067500943 + .long 2313634884 + .long 1067467101 + .long 376973398 + .long 1067416219 + .long 672386641 + .long 1067348671 + .long 630691842 + .long 1067281191 + .long 3960777458 + .long 1067213778 + .long 1488394470 + .long 1067146434 + .long 1220920383 + .long 1067079157 + .long 2577548405 + .long 1067011947 + .long 684247743 + .long 1066944805 + .long 3553625811 + .long 1066877729 + .long 2020150230 + .long 1066810721 + .long 4099880293 + .long 1066743779 + .long 630721729 + .long 1066676905 + .long 3927125538 + .long 1066610096 + .long 535440936 + .long 1066543355 + .long 2773516144 + .long 1066476679 + .long 1486051399 + .long 1066410070 + .long 808661260 + .long 1066285262 + .long 2227658502 + .long 1066152307 + .long 1813447778 + .long 1066019484 + .long 2743640746 + .long 1065886792 + .long 3904192454 + .long 1065754231 + .long 4184355568 + .long 1065621801 + .long 2476667369 + .long 1065489502 + .long 1971904113 + .long 1065357333 + .long 3138267131 + .long 1065097372 + .long 341338964 + .long 1064833554 + .long 1954052322 + .long 1064569994 + .long 1498975029 + .long 1064306693 + .long 2190050752 + .long 1063782660 + .long 1440057502 + .long 1063257089 + .long 1432705161 + .long 1062208000 + .long 0 + .long 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2900053258 + .long 1070176668 + .long 2900053258 + .long 1070176668 + .long 1208323809 + .long 3218079745 + .long 1208323809 + .long 3218079745 + .long 1431651269 + .long 1070945621 + .long 1431651269 + .long 1070945621 + .long 4294965279 + .long 3219128319 + .long 4294965279 + .long 3219128319 + .long 4294967295 + .long 1048575 + .long 4294967295 + .long 1048575 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1062207488 + .long 0 + .long 1062207488 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294967295 + .long 3220176895 + .long 4294967295 + .long 3220176895 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294963200 + .long 2134900735 + .long 4294963200 + .long 2134900735 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4227858432 + .long 4294967295 + .long 4227858432 + .long 4294967295 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1072693248 + .long 0 + .long 1072693248 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294967295 + .long 2147483647 + .long 4294967295 + .long 2147483647 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1040187392 + .long 0 + .long 1040187392 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294966272 + .long 4294967295 + .long 4294966272 + .long 4294967295 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4277796864 + .long 1072049730 + .long 4277796864 + .long 1072049730 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3164471296 + .long 1031600026 + .long 3164471296 + .long 1031600026 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1082564608 + .long 0 + .long 1082564608 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1083176960 + .long 0 + .long 1083176960 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1083174912 + .long 0 + .long 1083174912 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 2134900736 + .long 0 + .long 2134900736 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1104150528 + .long 0 + .long 1104150528 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294967290 + .long 1071120383 + .long 4294967290 + .long 1071120383 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294967290 + .long 1070858239 + .long 4294967290 + .long 1070858239 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 333042728 + .long 1070694400 + .long 333042728 + .long 1070694400 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 635310127 + .long 1070563328 + .long 635310127 + .long 1070563328 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294967295 + .long 2146435071 + .long 4294967295 + .long 2146435071 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1063256064 + .long 0 + .long 1063256064 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1077870592 + .long 0 + .long 1077870592 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 4294966784 + .long 0 + .long 4294966784 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4160749568 + .long 4294967295 + .long 4160749568 + .long 4294967295 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4278190080 + .long 4294967295 + .long 4278190080 + .long 4294967295 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294963200 + .long 4294967295 + .long 4294963200 + .long 4294967295 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1041235968 + .long 0 + .long 1041235968 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 2146435072 + .long 0 + .long 4293918720 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1072693248 + .long 0 + .long 3220176896 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 0 + .long 0 + .long 2147483648 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .type __svml_dacosh_data_internal,@object + .size __svml_dacosh_data_internal,14720 + .align 16 + +.FLT_24: + .long 0x00000000,0x43380000,0x00000000,0x43380000 + .type .FLT_24,@object + .size .FLT_24,16 + .align 8 + +__dacosh_la_CoutTab: + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 2146435072 + .long 0 + .long 4293918720 + .type __dacosh_la_CoutTab,@object + .size __dacosh_la_CoutTab,32 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core-sse.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core-sse.S new file mode 100644 index 0000000000..cc524d4813 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core-sse.S @@ -0,0 +1,20 @@ +/* SSE version of vectorized acosh, vector length is 4. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define _ZGVdN4v_acosh _ZGVdN4v_acosh_sse_wrapper +#include "../svml_d_acosh4_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core.c new file mode 100644 index 0000000000..bb07c44f4b --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core.c @@ -0,0 +1,27 @@ +/* Multiple versions of vectorized acosh, vector length is 4. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define SYMBOL_NAME _ZGVdN4v_acosh +#include "ifunc-mathvec-avx2.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVdN4v_acosh, __GI__ZGVdN4v_acosh, __redirect__ZGVdN4v_acosh) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core_avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core_avx2.S new file mode 100644 index 0000000000..9ec6fa712d --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core_avx2.S @@ -0,0 +1,5071 @@ +/* Function acosh vectorized with AVX2. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + https://www.gnu.org/licenses/. */ + +/* + * ALGORITHM DESCRIPTION: + * + * Compute acosh(x) as log(x + sqrt(x*x - 1)) + * + * Special cases: + * + * acosh(NaN) = quiet NaN, and raise invalid exception + * acosh(-INF) = NaN + * acosh(+INF) = +INF + * acosh(x) = NaN if x < 1 + * acosh(1) = +0 + * + */ + +#include + + .text +ENTRY(_ZGVdN4v_acosh_avx2) + pushq %rbp + cfi_def_cfa_offset(16) + movq %rsp, %rbp + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + andq $-64, %rsp + subq $384, %rsp + lea -4218816+__svml_dacosh_data_internal(%rip), %rax + vmovups %ymm8, 224(%rsp) + .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22 + +/* Load the constant 1 and possibly other stuff */ + vmovupd 12864+__svml_dacosh_data_internal(%rip), %ymm8 + vmovups %ymm9, 192(%rsp) + vmovups %ymm12, 160(%rsp) + vmovups %ymm10, 32(%rsp) + vmovups %ymm11, 96(%rsp) + vmovups %ymm14, 288(%rsp) + vmovups %ymm13, 256(%rsp) + vmovups %ymm15, 320(%rsp) + .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe0, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe1, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22 + vmovapd %ymm0, %ymm9 + vmovapd %ymm8, %ymm1 + vfmsub231pd %ymm9, %ymm9, %ymm1 + +/* + * Now 1 / (1 + d) + * = 1 / (1 + (sqrt(1 - e) - 1)) + * = 1 / sqrt(1 - e) + * = 1 + 1/2 * e + 3/8 * e^2 + 5/16 * e^3 + 35/128 * e^4 + + * 63/256 * e^5 + 231/1024 * e^6 + .... + * So compute the first five nonconstant terms of that, so that + * we have a relative correction (1 + Corr) to apply to S etc. + * C1 = 1/2 + * C2 = 3/8 + * C3 = 5/16 + * C4 = 35/128 + * C5 = 63/256 + */ + vmovupd 13952+__svml_dacosh_data_internal(%rip), %ymm0 + +/* + * Check that 1 < X < +inf; otherwise go to the callout function. + * We need the callout for X = 1 to avoid division by zero below. + * This test ensures that callout handles NaN and either infinity. + */ + vcmpnle_uqpd 14016+__svml_dacosh_data_internal(%rip), %ymm9, %ymm5 + vcmpngt_uqpd %ymm8, %ymm9, %ymm4 + +/* dU is needed later on */ + vsubpd %ymm8, %ymm9, %ymm6 + +/* + * The following computation can go wrong for very large X, e.g. + * the X^2 - 1 = U * V can overflow. But for large X we have + * acosh(X) / log(2 X) - 1 =~= 1/(4 * X^2), so for X >= 2^30 + * we can just later stick X back into the log and tweak up the exponent. + * Actually we scale X by 2^-30 and tweak the exponent up by 31, + * to stay in the safe range for the later log computation. + * Compute a flag now telling us when to do this. + */ + vcmplt_oqpd 13632+__svml_dacosh_data_internal(%rip), %ymm9, %ymm7 + +/* + * do the same thing but with NR iteration + * Finally, express Y + W = U * V accurately where Y has <= 29 bits + */ + vandpd 14400+__svml_dacosh_data_internal(%rip), %ymm1, %ymm12 + +/* + * Compute R = 1/sqrt(Y + W) * (1 + d) + * Force R to <= 12 significant bits in case it isn't already + * This means that R * Y and R^2 * Y are exactly representable. + */ + vcvtpd2ps %ymm12, %xmm3 + vsubpd %ymm12, %ymm1, %ymm13 + vrsqrtps %xmm3, %xmm10 + vcvtps2pd %xmm10, %ymm11 + +/* Now multiplex to the case X = 2^-30 * input, Xl = dL = 0 in the "big" case. */ + vmulpd 14528+__svml_dacosh_data_internal(%rip), %ymm9, %ymm10 + vandpd 14272+__svml_dacosh_data_internal(%rip), %ymm11, %ymm14 + vorpd %ymm4, %ymm5, %ymm2 + +/* + * Compute S = (Y/sqrt(Y + W)) * (1 + d) + * and T = (W/sqrt(Y + W)) * (1 + d) + * so that S + T = sqrt(Y + W) * (1 + d) + * S is exact, and the rounding error in T is OK. + */ + vmulpd %ymm14, %ymm12, %ymm5 + vmulpd %ymm13, %ymm14, %ymm4 + +/* + * Compute e = -(2 * d + d^2) + * The first FMR is exact, and the rounding error in the other is acceptable + * since d and e are ~ 2^-12 + */ + vmovapd %ymm8, %ymm15 + vfnmadd231pd %ymm5, %ymm14, %ymm15 + +/* + * For low-accuracy versions, the computation can be done + * just as U + ((S + T) + (S + T) * Corr) + */ + vaddpd %ymm4, %ymm5, %ymm1 + vfnmadd231pd %ymm4, %ymm14, %ymm15 + vfmadd213pd 13888+__svml_dacosh_data_internal(%rip), %ymm15, %ymm0 + vfmadd213pd 13824+__svml_dacosh_data_internal(%rip), %ymm15, %ymm0 + vfmadd213pd 13760+__svml_dacosh_data_internal(%rip), %ymm15, %ymm0 + vfmadd213pd 13696+__svml_dacosh_data_internal(%rip), %ymm15, %ymm0 + vmovmskpd %ymm2, %edx + vmulpd %ymm0, %ymm15, %ymm2 + vfmadd213pd %ymm1, %ymm2, %ymm1 + vaddpd %ymm1, %ymm6, %ymm6 + +/* + * Now we feed into the log1p code, using H in place of _VARG1 and + * also adding L into Xl. + * compute 1+x as high, low parts + */ + vmaxpd %ymm6, %ymm8, %ymm1 + vminpd %ymm6, %ymm8, %ymm3 + vandpd 12928+__svml_dacosh_data_internal(%rip), %ymm6, %ymm0 + vcmplt_oqpd 12992+__svml_dacosh_data_internal(%rip), %ymm0, %ymm5 + vaddpd %ymm3, %ymm1, %ymm4 + vorpd 13056+__svml_dacosh_data_internal(%rip), %ymm5, %ymm2 + vandpd %ymm2, %ymm4, %ymm11 + vblendvpd %ymm7, %ymm11, %ymm10, %ymm5 + vsubpd %ymm11, %ymm1, %ymm6 + +/* 2^ (-10-exp(X) ) */ + vmovupd 13504+__svml_dacosh_data_internal(%rip), %ymm2 + vaddpd %ymm6, %ymm3, %ymm12 + +/* exponent bits */ + vpsrlq $20, %ymm5, %ymm3 + +/* + * Now resume the main code. + * preserve mantissa, set input exponent to 2^(-10) + */ + vandpd 12544+__svml_dacosh_data_internal(%rip), %ymm5, %ymm13 + vorpd 12608+__svml_dacosh_data_internal(%rip), %ymm13, %ymm14 + +/* reciprocal approximation good to at least 11 bits */ + vcvtpd2ps %ymm14, %xmm15 + vrcpps %xmm15, %xmm0 + vandpd %ymm7, %ymm12, %ymm4 + vcvtps2pd %xmm0, %ymm10 + +/* exponent of X needed to scale Xl */ + vandps 13440+__svml_dacosh_data_internal(%rip), %ymm5, %ymm1 + vpsubq %ymm1, %ymm2, %ymm11 + vextractf128 $1, %ymm3, %xmm6 + vshufps $221, %xmm6, %xmm3, %xmm12 + +/* biased exponent in DP format */ + vcvtdq2pd %xmm12, %ymm14 + +/* round reciprocal to nearest integer, will have 1+9 mantissa bits */ + vroundpd $0, %ymm10, %ymm3 + +/* Add 31 to the exponent in the "large" case to get log(2 * input) */ + vaddpd 14208+__svml_dacosh_data_internal(%rip), %ymm14, %ymm13 + +/* scale DblRcp */ + vmulpd %ymm11, %ymm3, %ymm2 + vblendvpd %ymm7, %ymm14, %ymm13, %ymm1 + +/* exponent*log(2.0) */ + vmovupd 13248+__svml_dacosh_data_internal(%rip), %ymm13 + +/* argument reduction */ + vfmsub213pd %ymm8, %ymm2, %ymm5 + vmulpd %ymm2, %ymm4, %ymm2 + vmovupd 12480+__svml_dacosh_data_internal(%rip), %ymm4 + +/* + * prepare table index + * table lookup + */ + vpsrlq $40, %ymm3, %ymm7 + vcmplt_oqpd %ymm3, %ymm13, %ymm3 + vandpd 13312+__svml_dacosh_data_internal(%rip), %ymm3, %ymm14 + vorpd 13376+__svml_dacosh_data_internal(%rip), %ymm14, %ymm15 + vsubpd %ymm15, %ymm1, %ymm1 + vmulpd 13568+__svml_dacosh_data_internal(%rip), %ymm1, %ymm3 + vaddpd %ymm2, %ymm5, %ymm1 + vsubpd %ymm5, %ymm1, %ymm5 + vfmadd213pd 12512+__svml_dacosh_data_internal(%rip), %ymm1, %ymm4 + vmulpd %ymm1, %ymm1, %ymm8 + vsubpd %ymm5, %ymm2, %ymm2 + +/* polynomial */ + vmovupd 12416+__svml_dacosh_data_internal(%rip), %ymm5 + vfmadd213pd 12448+__svml_dacosh_data_internal(%rip), %ymm1, %ymm5 + vfmadd213pd %ymm4, %ymm8, %ymm5 + +/* + * reconstruction + * VQFMA( D, R, P, R2, R ); + */ + vfmadd213pd %ymm2, %ymm8, %ymm5 + vaddpd %ymm5, %ymm1, %ymm4 + vextractf128 $1, %ymm7, %xmm10 + vmovd %xmm7, %ecx + vmovd %xmm10, %r9d + movslq %ecx, %rcx + vpextrd $2, %xmm7, %r8d + movslq %r9d, %r9 + vpextrd $2, %xmm10, %r10d + movslq %r8d, %r8 + movslq %r10d, %r10 + vmovsd (%rax,%rcx), %xmm0 + vmovsd (%rax,%r9), %xmm11 + vmovhpd (%rax,%r8), %xmm0, %xmm6 + vmovhpd (%rax,%r10), %xmm11, %xmm12 + vinsertf128 $1, %xmm12, %ymm6, %ymm0 + vaddpd %ymm4, %ymm0, %ymm0 + vaddpd %ymm0, %ymm3, %ymm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + vmovups 224(%rsp), %ymm8 + cfi_restore(91) + vmovups 192(%rsp), %ymm9 + cfi_restore(92) + vmovups 32(%rsp), %ymm10 + cfi_restore(93) + vmovups 96(%rsp), %ymm11 + cfi_restore(94) + vmovups 160(%rsp), %ymm12 + cfi_restore(95) + vmovups 256(%rsp), %ymm13 + cfi_restore(96) + vmovups 288(%rsp), %ymm14 + cfi_restore(97) + vmovups 320(%rsp), %ymm15 + cfi_restore(98) + movq %rbp, %rsp + popq %rbp + cfi_def_cfa(7, 8) + cfi_restore(6) + ret + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe0, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe1, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22 + +.LBL_1_3: + vmovupd %ymm9, 64(%rsp) + vmovupd %ymm0, 128(%rsp) + je .LBL_1_2 + xorl %eax, %eax + vzeroupper + movq %rsi, 8(%rsp) + movq %rdi, (%rsp) + movq %r12, 24(%rsp) + .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x88, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x98, 0xfe, 0xff, 0xff, 0x22 + movl %eax, %r12d + movq %r13, 16(%rsp) + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xfe, 0xff, 0xff, 0x22 + movl %edx, %r13d + +.LBL_1_7: + btl %r12d, %r13d + jc .LBL_1_10 + +.LBL_1_8: + incl %r12d + cmpl $4, %r12d + jl .LBL_1_7 + movq 8(%rsp), %rsi + cfi_restore(4) + movq (%rsp), %rdi + cfi_restore(5) + movq 24(%rsp), %r12 + cfi_restore(12) + movq 16(%rsp), %r13 + cfi_restore(13) + vmovupd 128(%rsp), %ymm0 + jmp .LBL_1_2 + .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x88, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x98, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xfe, 0xff, 0xff, 0x22 + +.LBL_1_10: + lea 64(%rsp,%r12,8), %rdi + lea 128(%rsp,%r12,8), %rsi + call __svml_dacosh_cout_rare_internal + jmp .LBL_1_8 + +END(_ZGVdN4v_acosh_avx2) + + .align 16,0x90 + +__svml_dacosh_cout_rare_internal: + + cfi_startproc + + movzwl 6(%rdi), %eax + andl $32752, %eax + movsd (%rdi), %xmm0 + cmpl $32752, %eax + je .LBL_2_9 + +.LBL_2_2: + movsd %xmm0, -8(%rsp) + cmpl $0, -8(%rsp) + jne .LBL_2_8 + cmpl $1072693248, -4(%rsp) + je .LBL_2_7 + cmpl $2146435072, -4(%rsp) + jne .LBL_2_8 + movsd %xmm0, (%rsi) + xorl %eax, %eax + ret + +.LBL_2_7: + movq 8+__dacosh_la_CoutTab(%rip), %rax + movq %rax, (%rsi) + xorl %eax, %eax + ret + +.LBL_2_8: + movsd 16+__dacosh_la_CoutTab(%rip), %xmm0 + movl $1, %eax + mulsd 8+__dacosh_la_CoutTab(%rip), %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_9: + testl $1048575, 4(%rdi) + jne .LBL_2_12 + cmpl $0, (%rdi) + je .LBL_2_2 + +.LBL_2_12: + mulsd %xmm0, %xmm0 + xorl %eax, %eax + movsd %xmm0, (%rsi) + ret + + cfi_endproc + + .type __svml_dacosh_cout_rare_internal,@function + .size __svml_dacosh_cout_rare_internal,.-__svml_dacosh_cout_rare_internal + + .section .rodata, "a" + .align 64 + +__svml_dacosh_data_internal: + .long 3715793664 + .long 3230016299 + .long 4013928704 + .long 3189565726 + .long 3699038248 + .long 3230016303 + .long 4255595370 + .long 3189567439 + .long 3648859040 + .long 3230016307 + .long 1732833791 + .long 3189567296 + .long 3565385952 + .long 3230016311 + .long 2485752410 + .long 3189567274 + .long 3448748152 + .long 3230016315 + .long 3514744523 + .long 3189567800 + .long 3299074072 + .long 3230016319 + .long 3686511262 + .long 3189567474 + .long 3116491376 + .long 3230016323 + .long 716063611 + .long 3189567908 + .long 2901127016 + .long 3230016327 + .long 354437295 + .long 3189567291 + .long 2653107184 + .long 3230016331 + .long 3777462366 + .long 3189567264 + .long 2372557360 + .long 3230016335 + .long 3590663412 + .long 3189567498 + .long 2059602304 + .long 3230016339 + .long 1680795031 + .long 3189567428 + .long 1714366048 + .long 3230016343 + .long 2010344982 + .long 3189567986 + .long 1336971936 + .long 3230016347 + .long 166254822 + .long 3189567184 + .long 927542568 + .long 3230016351 + .long 59552610 + .long 3189567972 + .long 486199888 + .long 3230016355 + .long 2268824919 + .long 3189567664 + .long 13065112 + .long 3230016359 + .long 3005381643 + .long 3189567835 + .long 3803226080 + .long 3230016362 + .long 4018973165 + .long 3189567825 + .long 3266868056 + .long 3230016366 + .long 3693925101 + .long 3189567457 + .long 2699077504 + .long 3230016370 + .long 4005905743 + .long 3189567697 + .long 2099972936 + .long 3230016374 + .long 3580935118 + .long 3189567215 + .long 1469672176 + .long 3230016378 + .long 2928784295 + .long 3189567129 + .long 808292392 + .long 3230016382 + .long 674298833 + .long 3189567553 + .long 115950104 + .long 3230016386 + .long 2555938320 + .long 3189567208 + .long 3687728456 + .long 3230016389 + .long 532458218 + .long 3189567130 + .long 2933808064 + .long 3230016393 + .long 3888913110 + .long 3189567192 + .long 2149270784 + .long 3230016397 + .long 2365955494 + .long 3189567756 + .long 1334230552 + .long 3230016401 + .long 3325722981 + .long 3189567206 + .long 488800640 + .long 3230016405 + .long 1496133617 + .long 3189567683 + .long 3908061016 + .long 3230016408 + .long 1824836379 + .long 3189567490 + .long 3002189112 + .long 3230016412 + .long 1222174320 + .long 3189567837 + .long 2066263648 + .long 3230016416 + .long 2472769660 + .long 3189567285 + .long 1100395408 + .long 3230016420 + .long 447932460 + .long 3189567455 + .long 104694584 + .long 3230016424 + .long 1006807684 + .long 3189567460 + .long 3374238048 + .long 3230016427 + .long 4121834935 + .long 3189567556 + .long 2319200184 + .long 3230016431 + .long 3019906587 + .long 3189567664 + .long 1234656664 + .long 3230016435 + .long 3882744783 + .long 3189567930 + .long 120715280 + .long 3230016439 + .long 1927363170 + .long 3189567242 + .long 3272450504 + .long 3230016442 + .long 8203115 + .long 3189567876 + .long 2100034368 + .long 3230016446 + .long 1260625560 + .long 3189567855 + .long 898540192 + .long 3230016450 + .long 1791679111 + .long 3189567639 + .long 3963040720 + .long 3230016453 + .long 831133439 + .long 3189567590 + .long 2703706240 + .long 3230016457 + .long 2803140504 + .long 3189567482 + .long 1415608352 + .long 3230016461 + .long 2955844462 + .long 3189568058 + .long 98850816 + .long 3230016465 + .long 4017967070 + .long 3189567455 + .long 3048504096 + .long 3230016468 + .long 3974385451 + .long 3189567871 + .long 1674736240 + .long 3230016472 + .long 2424114556 + .long 3189567887 + .long 272616624 + .long 3230016476 + .long 4261883032 + .long 3189567073 + .long 3137214056 + .long 3230016479 + .long 3716750895 + .long 3189567522 + .long 1678694944 + .long 3230016483 + .long 498025304 + .long 3189567180 + .long 192127016 + .long 3230016487 + .long 1011852160 + .long 3189567511 + .long 2972577480 + .long 3230016490 + .long 558940916 + .long 3189567850 + .long 1430211120 + .long 3230016494 + .long 2550865739 + .long 3189567935 + .long 4155061376 + .long 3230016497 + .long 1930847170 + .long 3189567371 + .long 2557291968 + .long 3230016501 + .long 1716354804 + .long 3189567130 + .long 931967984 + .long 3230016505 + .long 2729403392 + .long 3189567981 + .long 3574154016 + .long 3230016508 + .long 1067280599 + .long 3189567890 + .long 1894012232 + .long 3230016512 + .long 2094260282 + .long 3189567604 + .long 186606176 + .long 3230016516 + .long 3897933165 + .long 3189568046 + .long 2746998904 + .long 3230016519 + .long 1935720459 + .long 3189567701 + .long 985351064 + .long 3230016523 + .long 2170344821 + .long 3189567164 + .long 3491691984 + .long 3230016526 + .long 4220979537 + .long 3189567547 + .long 1676181328 + .long 3230016530 + .long 1953924393 + .long 3189567854 + .long 4128847448 + .long 3230016533 + .long 1689829067 + .long 3189567468 + .long 2259849008 + .long 3230016537 + .long 2367753130 + .long 3189567619 + .long 364246088 + .long 3230016541 + .long 2263309073 + .long 3189567722 + .long 2737098280 + .long 3230016544 + .long 2366756869 + .long 3189567856 + .long 788562816 + .long 3230016548 + .long 2294653975 + .long 3189567145 + .long 3108665616 + .long 3230016551 + .long 1786494117 + .long 3189567254 + .long 1107562960 + .long 3230016555 + .long 3655887416 + .long 3189567689 + .long 3375279848 + .long 3230016558 + .long 1178948625 + .long 3189567241 + .long 1321971608 + .long 3230016562 + .long 1620080441 + .long 3189567466 + .long 3537662304 + .long 3230016565 + .long 154455618 + .long 3189567981 + .long 1432506360 + .long 3230016569 + .long 3128192125 + .long 3189567889 + .long 3596526920 + .long 3230016572 + .long 2026842750 + .long 3189567212 + .long 1439877480 + .long 3230016576 + .long 1384431897 + .long 3189567284 + .long 3552580280 + .long 3230016579 + .long 1999983129 + .long 3189568079 + .long 1344787944 + .long 3230016583 + .long 4035436820 + .long 3189567579 + .long 3406521808 + .long 3230016586 + .long 77799817 + .long 3189567285 + .long 1147933592 + .long 3230016590 + .long 1261060207 + .long 3189567477 + .long 3159043768 + .long 3230016593 + .long 2102717775 + .long 3189567605 + .long 850003184 + .long 3230016597 + .long 161472469 + .long 3189567688 + .long 2810831440 + .long 3230016600 + .long 1937336881 + .long 3189567665 + .long 451678520 + .long 3230016604 + .long 2268353549 + .long 3189567773 + .long 2362563168 + .long 3230016607 + .long 1785871595 + .long 3189567889 + .long 4248601816 + .long 3230016610 + .long 2434669991 + .long 3189567898 + .long 1814910472 + .long 3230016614 + .long 2666999375 + .long 3189568058 + .long 3651506624 + .long 3230016617 + .long 1033139811 + .long 3189567312 + .long 1168538136 + .long 3230016621 + .long 4004618418 + .long 3189567740 + .long 2956021672 + .long 3230016624 + .long 3799928764 + .long 3189567751 + .long 424104288 + .long 3230016628 + .long 3650233137 + .long 3189567549 + .long 2162801816 + .long 3230016631 + .long 437313833 + .long 3189567438 + .long 3877227800 + .long 3230016634 + .long 2138293494 + .long 3189567140 + .long 1272495376 + .long 3230016638 + .long 2891370752 + .long 3189567168 + .long 2938619176 + .long 3230016641 + .long 1704142730 + .long 3189567114 + .long 285744240 + .long 3230016645 + .long 500817607 + .long 3189568035 + .long 1903884424 + .long 3230016648 + .long 3102571944 + .long 3189567668 + .long 3498151272 + .long 3230016651 + .long 2374193154 + .long 3189567933 + .long 773655960 + .long 3230016655 + .long 2898331636 + .long 3189568089 + .long 2320411168 + .long 3230016658 + .long 1983295500 + .long 3189567113 + .long 3843527280 + .long 3230016661 + .long 2132853542 + .long 3189567093 + .long 1048114320 + .long 3230016665 + .long 3551155364 + .long 3189567407 + .long 2524183824 + .long 3230016668 + .long 2564000663 + .long 3189567090 + .long 3976845048 + .long 3230016671 + .long 361581803 + .long 3189567196 + .long 1111206880 + .long 3230016675 + .long 696765230 + .long 3189568040 + .long 2517279744 + .long 3230016678 + .long 941542475 + .long 3189567463 + .long 3900171776 + .long 3230016681 + .long 2377895552 + .long 3189567282 + .long 964990760 + .long 3230016685 + .long 1173605489 + .long 3189567454 + .long 2301746008 + .long 3230016688 + .long 3096720313 + .long 3189567400 + .long 3615544576 + .long 3230016691 + .long 1942008121 + .long 3189567335 + .long 611493160 + .long 3230016695 + .long 3375481119 + .long 3189567537 + .long 1879599992 + .long 3230016698 + .long 4103239143 + .long 3189567624 + .long 3124971056 + .long 3230016701 + .long 3773474925 + .long 3189567869 + .long 52711992 + .long 3230016705 + .long 2465315445 + .long 3189567444 + .long 1252829960 + .long 3230016708 + .long 1041581158 + .long 3189567781 + .long 2430429904 + .long 3230016711 + .long 166620501 + .long 3189567739 + .long 3585583704 + .long 3230016714 + .long 2379237630 + .long 3189567984 + .long 423395616 + .long 3230016718 + .long 134834559 + .long 3189567178 + .long 1533871416 + .long 3230016721 + .long 1449318760 + .long 3189567373 + .long 2622114680 + .long 3230016724 + .long 3042372984 + .long 3189567127 + .long 3688195920 + .long 3230016727 + .long 1265290101 + .long 3189567921 + .long 437218048 + .long 3230016731 + .long 2248549362 + .long 3189567262 + .long 1459185496 + .long 3230016734 + .long 1293250365 + .long 3189567151 + .long 2459200496 + .long 3230016737 + .long 313786605 + .long 3189567180 + .long 3437332240 + .long 3230016740 + .long 3289151823 + .long 3189567872 + .long 98682312 + .long 3230016744 + .long 2693758821 + .long 3189567877 + .long 1033253848 + .long 3230016747 + .long 4237443192 + .long 3189567301 + .long 1946147760 + .long 3230016750 + .long 4099404586 + .long 3189567972 + .long 2837431968 + .long 3230016753 + .long 343640666 + .long 3189567552 + .long 3707174040 + .long 3230016756 + .long 4238401458 + .long 3189567983 + .long 260473960 + .long 3230016760 + .long 21423548 + .long 3189567559 + .long 1087333264 + .long 3230016763 + .long 3515278593 + .long 3189567309 + .long 1892851296 + .long 3230016766 + .long 629106375 + .long 3189567166 + .long 2677094384 + .long 3230016769 + .long 2048670044 + .long 3189567227 + .long 3440128544 + .long 3230016772 + .long 3739217292 + .long 3189568009 + .long 4182019504 + .long 3230016775 + .long 3662039444 + .long 3189567618 + .long 607865368 + .long 3230016779 + .long 1766486991 + .long 3189567112 + .long 1307665824 + .long 3230016782 + .long 512689457 + .long 3189567670 + .long 1986518392 + .long 3230016785 + .long 1704577378 + .long 3189567760 + .long 2644487576 + .long 3230016788 + .long 4001935135 + .long 3189567473 + .long 3281637576 + .long 3230016791 + .long 1184452342 + .long 3189567735 + .long 3898032312 + .long 3230016794 + .long 2714793956 + .long 3189567464 + .long 198768096 + .long 3230016798 + .long 3657654418 + .long 3189567905 + .long 773842856 + .long 3230016801 + .long 2809688013 + .long 3189567736 + .long 1328352328 + .long 3230016804 + .long 390727591 + .long 3189567393 + .long 1862359256 + .long 3230016807 + .long 1135237925 + .long 3189567248 + .long 2375926096 + .long 3230016810 + .long 1377572509 + .long 3189567837 + .long 2869115032 + .long 3230016813 + .long 3148383775 + .long 3189568032 + .long 3341987960 + .long 3230016816 + .long 3809536738 + .long 3189567313 + .long 3794606472 + .long 3230016819 + .long 4243445934 + .long 3189568034 + .long 4227031920 + .long 3230016822 + .long 1302642088 + .long 3189567451 + .long 344358048 + .long 3230016826 + .long 3239125361 + .long 3189567151 + .long 736580224 + .long 3230016829 + .long 3753161736 + .long 3189567129 + .long 1108791648 + .long 3230016832 + .long 624357483 + .long 3189568045 + .long 1461052568 + .long 3230016835 + .long 3153257064 + .long 3189567338 + .long 1793422920 + .long 3230016838 + .long 2705820149 + .long 3189567635 + .long 2105962400 + .long 3230016841 + .long 911564860 + .long 3189567737 + .long 2398730424 + .long 3230016844 + .long 1086958332 + .long 3189567948 + .long 2671786152 + .long 3230016847 + .long 1598984535 + .long 3189567210 + .long 2925188456 + .long 3230016850 + .long 4113385879 + .long 3189567401 + .long 3158995968 + .long 3230016853 + .long 2426812671 + .long 3189567396 + .long 3373267048 + .long 3230016856 + .long 3480845679 + .long 3189567359 + .long 3568059792 + .long 3230016859 + .long 3306230729 + .long 3189567924 + .long 3743432056 + .long 3230016862 + .long 3853821277 + .long 3189567317 + .long 3899441408 + .long 3230016865 + .long 2049309148 + .long 3189567699 + .long 4036145192 + .long 3230016868 + .long 2667321817 + .long 3189567166 + .long 4153600472 + .long 3230016871 + .long 3540670389 + .long 3189567114 + .long 4251864072 + .long 3230016874 + .long 404207883 + .long 3189567310 + .long 36025272 + .long 3230016878 + .long 2837617046 + .long 3189567103 + .long 96074976 + .long 3230016881 + .long 1231280453 + .long 3189567669 + .long 137101976 + .long 3230016884 + .long 792492437 + .long 3189567071 + .long 159162080 + .long 3230016887 + .long 2385525292 + .long 3189567618 + .long 162310880 + .long 3230016890 + .long 3272051015 + .long 3189567858 + .long 146603712 + .long 3230016893 + .long 623573538 + .long 3189567881 + .long 112095672 + .long 3230016896 + .long 2151835939 + .long 3189567451 + .long 58841608 + .long 3230016899 + .long 958006130 + .long 3189567217 + .long 4281863424 + .long 3230016901 + .long 549948691 + .long 3189567863 + .long 4191280920 + .long 3230016904 + .long 4177689987 + .long 3189567217 + .long 4082115512 + .long 3230016907 + .long 2895765193 + .long 3189567599 + .long 3954421112 + .long 3230016910 + .long 1055606208 + .long 3189567799 + .long 3808251392 + .long 3230016913 + .long 1966521217 + .long 3189567351 + .long 3643659776 + .long 3230016916 + .long 1017382758 + .long 3189567732 + .long 3460699480 + .long 3230016919 + .long 3485890155 + .long 3189567410 + .long 3259423472 + .long 3230016922 + .long 2657419170 + .long 3189567140 + .long 3039884488 + .long 3230016925 + .long 4198858220 + .long 3189568080 + .long 2802135064 + .long 3230016928 + .long 2343740494 + .long 3189567869 + .long 2546227480 + .long 3230016931 + .long 2423084215 + .long 3189567957 + .long 2272213808 + .long 3230016934 + .long 3887273856 + .long 3189567631 + .long 1980145888 + .long 3230016937 + .long 3992755473 + .long 3189567251 + .long 1670075336 + .long 3230016940 + .long 722498073 + .long 3189567389 + .long 1342053552 + .long 3230016943 + .long 3573506400 + .long 3189567965 + .long 996131728 + .long 3230016946 + .long 714695829 + .long 3189567392 + .long 632360808 + .long 3230016949 + .long 2816704229 + .long 3189567846 + .long 250791552 + .long 3230016952 + .long 386951333 + .long 3189567243 + .long 4146441768 + .long 3230016954 + .long 2155319939 + .long 3189567580 + .long 3729427184 + .long 3230016957 + .long 4227840137 + .long 3189567931 + .long 3294765200 + .long 3230016960 + .long 1718354212 + .long 3189567672 + .long 2842505696 + .long 3230016963 + .long 4243880582 + .long 3189567656 + .long 2372698352 + .long 3230016966 + .long 3784093842 + .long 3189567302 + .long 1885392624 + .long 3230016969 + .long 2318733051 + .long 3189567813 + .long 1380637784 + .long 3230016972 + .long 497929746 + .long 3189567210 + .long 858482864 + .long 3230016975 + .long 3218883783 + .long 3189567649 + .long 318976720 + .long 3230016978 + .long 3492652862 + .long 3189567382 + .long 4057135272 + .long 3230016980 + .long 473724673 + .long 3189568069 + .long 3483072376 + .long 3230016983 + .long 150485010 + .long 3189567757 + .long 2891803552 + .long 3230016986 + .long 3028900958 + .long 3189567173 + .long 2283376816 + .long 3230016989 + .long 321242596 + .long 3189567822 + .long 1657840008 + .long 3230016992 + .long 151305746 + .long 3189568029 + .long 1015240760 + .long 3230016995 + .long 2208026401 + .long 3189567184 + .long 355626480 + .long 3230016998 + .long 2487781842 + .long 3189567931 + .long 3974011720 + .long 3230017000 + .long 2391142094 + .long 3189567091 + .long 3280508896 + .long 3230017003 + .long 734457618 + .long 3189568092 + .long 2570132168 + .long 3230017006 + .long 3070902701 + .long 3189567794 + .long 1842928168 + .long 3230017009 + .long 1110877923 + .long 3189567896 + .long 1098943352 + .long 3230017012 + .long 3880360185 + .long 3189567898 + .long 338223984 + .long 3230017015 + .long 391995809 + .long 3189567294 + .long 3855783416 + .long 3230017017 + .long 4186345433 + .long 3189567745 + .long 3061732952 + .long 3230017020 + .long 3682852050 + .long 3189567081 + .long 2251085560 + .long 3230017023 + .long 3057037137 + .long 3189567617 + .long 1423886760 + .long 3230017026 + .long 3352664894 + .long 3189567074 + .long 580181848 + .long 3230017029 + .long 1170568982 + .long 3189567927 + .long 4014983272 + .long 3230017031 + .long 671148579 + .long 3189567293 + .long 3138401368 + .long 3230017034 + .long 267496658 + .long 3189567304 + .long 2245448192 + .long 3230017037 + .long 1285167087 + .long 3189568066 + .long 1336168336 + .long 3230017040 + .long 4259909589 + .long 3189567788 + .long 410606184 + .long 3230017043 + .long 1494078902 + .long 3189568031 + .long 3763773256 + .long 3230017045 + .long 261935754 + .long 3189567685 + .long 2805778992 + .long 3230017048 + .long 3679585605 + .long 3189567195 + .long 1831634536 + .long 3230017051 + .long 809066513 + .long 3189567664 + .long 841383576 + .long 3230017054 + .long 385945238 + .long 3189567897 + .long 4130036912 + .long 3230017056 + .long 825579909 + .long 3189567603 + .long 3107703272 + .long 3230017059 + .long 3911295427 + .long 3189567514 + .long 2069393104 + .long 3230017062 + .long 3473784588 + .long 3189567461 + .long 1015149384 + .long 3230017065 + .long 629861200 + .long 3189567515 + .long 4239982216 + .long 3230017067 + .long 2659142760 + .long 3189567083 + .long 3153999632 + .long 3230017070 + .long 1251680713 + .long 3189567080 + .long 2052211384 + .long 3230017073 + .long 3168705163 + .long 3189567992 + .long 934659776 + .long 3230017076 + .long 1674797624 + .long 3189567952 + .long 4096354216 + .long 3230017078 + .long 437847902 + .long 3189567971 + .long 2947402064 + .long 3230017081 + .long 4024401533 + .long 3189567960 + .long 1782812400 + .long 3230017084 + .long 786902458 + .long 3189567873 + .long 602626840 + .long 3230017087 + .long 2593792633 + .long 3189567812 + .long 3701854136 + .long 3230017089 + .long 3989721221 + .long 3189567126 + .long 2490600968 + .long 3230017092 + .long 2545746866 + .long 3189567591 + .long 1263875768 + .long 3230017095 + .long 3115843521 + .long 3189567377 + .long 21719488 + .long 3230017098 + .long 1730226063 + .long 3189567307 + .long 3059140216 + .long 3230017100 + .long 690350922 + .long 3189567892 + .long 1786244008 + .long 3230017103 + .long 3350998585 + .long 3189567394 + .long 498038616 + .long 3230017106 + .long 1499123379 + .long 3189568082 + .long 3489531672 + .long 3230017108 + .long 2598665922 + .long 3189567118 + .long 2170828712 + .long 3230017111 + .long 2436376826 + .long 3189567935 + .long 836937048 + .long 3230017114 + .long 1977004902 + .long 3189568052 + .long 3782863816 + .long 3230017116 + .long 4027224619 + .long 3189567373 + .long 2418714096 + .long 3230017119 + .long 2616869856 + .long 3189567271 + .long 1039494712 + .long 3230017122 + .long 3775628133 + .long 3189567616 + .long 3940212336 + .long 3230017124 + .long 419018052 + .long 3189567909 + .long 2530971600 + .long 3230017127 + .long 150919657 + .long 3189567379 + .long 1106778856 + .long 3230017130 + .long 2926254537 + .long 3189567139 + .long 3962640312 + .long 3230017132 + .long 1610863810 + .long 3189567216 + .long 2508660136 + .long 3230017135 + .long 1166015244 + .long 3189567672 + .long 1039844240 + .long 3230017138 + .long 645159638 + .long 3189567685 + .long 3851198376 + .long 3230017140 + .long 2449439581 + .long 3189567695 + .long 2352826264 + .long 3230017143 + .long 1619104640 + .long 3189567458 + .long 839733360 + .long 3230017146 + .long 2427070371 + .long 3189567165 + .long 3606924968 + .long 3230017148 + .long 2166480890 + .long 3189567544 + .long 2064504368 + .long 3230017151 + .long 2283025905 + .long 3189567907 + .long 507476584 + .long 3230017154 + .long 3923356754 + .long 3189567272 + .long 3230846472 + .long 3230017156 + .long 805331677 + .long 3189567533 + .long 1644716880 + .long 3230017159 + .long 3790469685 + .long 3189567406 + .long 44092384 + .long 3230017162 + .long 2689788214 + .long 3189567653 + .long 2723977432 + .long 3230017164 + .long 2762250221 + .long 3189567072 + .long 1094474416 + .long 3230017167 + .long 2781925193 + .long 3189567716 + .long 3745554800 + .long 3230017169 + .long 593120878 + .long 3189567817 + .long 2087320704 + .long 3230017172 + .long 403414988 + .long 3189568021 + .long 414776008 + .long 3230017175 + .long 359307328 + .long 3189567387 + .long 3022924432 + .long 3230017177 + .long 3373547966 + .long 3189567572 + .long 1321867688 + .long 3230017180 + .long 3978711340 + .long 3189567805 + .long 3901576528 + .long 3230017182 + .long 2765663238 + .long 3189568046 + .long 2172152384 + .long 3230017185 + .long 1181150766 + .long 3189568053 + .long 428598440 + .long 3230017188 + .long 2473022131 + .long 3189567471 + .long 2965917728 + .long 3230017190 + .long 1621744488 + .long 3189567971 + .long 1194211288 + .long 3230017193 + .long 2931299013 + .long 3189567190 + .long 3703449168 + .long 3230017195 + .long 873154950 + .long 3189568039 + .long 1903732144 + .long 3230017198 + .long 1510784525 + .long 3189567521 + .long 90062704 + .long 3230017201 + .long 2918231590 + .long 3189568086 + .long 2557443240 + .long 3230017203 + .long 3329944838 + .long 3189567475 + .long 715974088 + .long 3230017206 + .long 2679715410 + .long 3189568021 + .long 3155624672 + .long 3230017208 + .long 1841110143 + .long 3189567518 + .long 1286495072 + .long 3230017211 + .long 3881638924 + .long 3189567497 + .long 3698554440 + .long 3230017213 + .long 167906931 + .long 3189567169 + .long 1801902600 + .long 3230017216 + .long 1468264167 + .long 3189567597 + .long 4186508448 + .long 3230017218 + .long 2400624638 + .long 3189567691 + .long 2262471560 + .long 3230017221 + .long 3796182064 + .long 3189567357 + .long 324793264 + .long 3230017224 + .long 2801238958 + .long 3189567581 + .long 2668474776 + .long 3230017226 + .long 2273142813 + .long 3189567436 + .long 703615288 + .long 3230017229 + .long 831867571 + .long 3189567237 + .long 3020183048 + .long 3230017231 + .long 2238048829 + .long 3189567595 + .long 1028277008 + .long 3230017234 + .long 1163763070 + .long 3189567452 + .long 3317865168 + .long 3230017236 + .long 1206450788 + .long 3189567228 + .long 1299046216 + .long 3230017239 + .long 737162226 + .long 3189567879 + .long 3561787920 + .long 3230017241 + .long 2433253277 + .long 3189567901 + .long 1516188728 + .long 3230017244 + .long 3561277099 + .long 3189567506 + .long 3752216144 + .long 3230017246 + .long 1385095507 + .long 3189567674 + .long 1679968384 + .long 3230017249 + .long 829462408 + .long 3189567156 + .long 3889412704 + .long 3230017251 + .long 2939266725 + .long 3189567673 + .long 1790647080 + .long 3230017254 + .long 4214100827 + .long 3189567848 + .long 3973638544 + .long 3230017256 + .long 2537954451 + .long 3189567376 + .long 1848484816 + .long 3230017259 + .long 1128740312 + .long 3189567098 + .long 4005152680 + .long 3230017261 + .long 1932232434 + .long 3189568053 + .long 1853739648 + .long 3230017264 + .long 1359710694 + .long 3189567457 + .long 3984212256 + .long 3230017266 + .long 1268482287 + .long 3189567990 + .long 1806667776 + .long 3230017269 + .long 839689017 + .long 3189567631 + .long 3911072520 + .long 3230017271 + .long 3727165601 + .long 3189567921 + .long 1707523520 + .long 3230017274 + .long 1836550952 + .long 3189567895 + .long 3785986872 + .long 3230017276 + .long 172951407 + .long 3189567220 + .long 1556559360 + .long 3230017279 + .long 1166449891 + .long 3189567294 + .long 3609206856 + .long 3230017281 + .long 28625366 + .long 3189567222 + .long 1354025920 + .long 3230017284 + .long 4038426582 + .long 3189567978 + .long 3380982208 + .long 3230017286 + .long 2756284659 + .long 3189567362 + .long 1100172048 + .long 3230017289 + .long 848830252 + .long 3189567230 + .long 3101560856 + .long 3230017291 + .long 1868170309 + .long 3189567423 + .long 795244752 + .long 3230017294 + .long 3128260908 + .long 3189567885 + .long 2771188936 + .long 3230017296 + .long 1691261279 + .long 3189567706 + .long 439489304 + .long 3230017299 + .long 2886711298 + .long 3189567236 + .long 2390110824 + .long 3230017301 + .long 1311431101 + .long 3189567133 + .long 33149176 + .long 3230017304 + .long 3042183093 + .long 3189567401 + .long 1958569120 + .long 3230017306 + .long 3174208880 + .long 3189567462 + .long 3871433416 + .long 3230017308 + .long 302374021 + .long 3189567243 + .long 1476804712 + .long 3230017311 + .long 712531519 + .long 3189567241 + .long 3364647440 + .long 3230017313 + .long 3705318448 + .long 3189567568 + .long 945056744 + .long 3230017316 + .long 2424171915 + .long 3189568016 + .long 2807996856 + .long 3230017318 + .long 199511961 + .long 3189567094 + .long 363562688 + .long 3230017321 + .long 3766234060 + .long 3189567214 + .long 2201718256 + .long 3230017323 + .long 1956195829 + .long 3189567592 + .long 4027525584 + .long 3230017325 + .long 2891794585 + .long 3189567375 + .long 1546046576 + .long 3230017328 + .long 843173017 + .long 3189567760 + .long 3347244936 + .long 3230017330 + .long 1609532414 + .long 3189567955 + .long 841215080 + .long 3230017333 + .long 3356704285 + .long 3189567294 + .long 2617920488 + .long 3230017335 + .long 1641729240 + .long 3189567346 + .long 87455368 + .long 3230017338 + .long 1455753222 + .long 3189567878 + .long 1839783016 + .long 3230017340 + .long 1936589978 + .long 3189567944 + .long 3579964728 + .long 3230017342 + .long 1006586129 + .long 3189567993 + .long 1013061704 + .long 3230017345 + .long 2766825484 + .long 3189567880 + .long 2729036928 + .long 3230017347 + .long 1888685184 + .long 3189567954 + .long 137984104 + .long 3230017350 + .long 848046306 + .long 3189568090 + .long 1829866024 + .long 3230017352 + .long 4178224056 + .long 3189567750 + .long 3509743488 + .long 3230017354 + .long 2637072474 + .long 3189567070 + .long 882677184 + .long 3230017357 + .long 3133305384 + .long 3189567936 + .long 2538629624 + .long 3230017359 + .long 1343200028 + .long 3189567905 + .long 4182661312 + .long 3230017361 + .long 107195460 + .long 3189567427 + .long 1519832648 + .long 3230017364 + .long 602154914 + .long 3189567857 + .long 3140105848 + .long 3230017366 + .long 659160740 + .long 3189567417 + .long 453573824 + .long 3230017369 + .long 236889930 + .long 3189567396 + .long 2050198592 + .long 3230017371 + .long 1175634921 + .long 3189567087 + .long 3635040168 + .long 3230017373 + .long 1241855527 + .long 3189567941 + .long 913158504 + .long 3230017376 + .long 3947904414 + .long 3189567477 + .long 2474515312 + .long 3230017378 + .long 1206979822 + .long 3189567534 + .long 4024170344 + .long 3230017380 + .long 1847397805 + .long 3189567152 + .long 1267183240 + .long 3230017383 + .long 2916539301 + .long 3189567754 + .long 2793515456 + .long 3230017385 + .long 2568213263 + .long 3189568078 + .long 13259168 + .long 3230017388 + .long 3003245330 + .long 3189567303 + .long 1516375624 + .long 3230017390 + .long 3472633477 + .long 3189567153 + .long 3007924104 + .long 3230017392 + .long 532406289 + .long 3189567855 + .long 192963816 + .long 3230017395 + .long 4149310663 + .long 3189567165 + .long 1661455728 + .long 3230017397 + .long 946970842 + .long 3189567598 + .long 3118458864 + .long 3230017399 + .long 2040517972 + .long 3189567254 + .long 269032128 + .long 3230017402 + .long 3669971831 + .long 3189568072 + .long 1703136256 + .long 3230017404 + .long 2375197389 + .long 3189567687 + .long 3125829976 + .long 3230017406 + .long 296757744 + .long 3189567673 + .long 242171944 + .long 3230017409 + .long 611424102 + .long 3189567452 + .long 1642122608 + .long 3230017411 + .long 1700968423 + .long 3189567419 + .long 3030740440 + .long 3230017413 + .long 2947762668 + .long 3189567968 + .long 113083840 + .long 3230017416 + .long 690901756 + .long 3189567496 + .long 1479112984 + .long 3230017418 + .long 121139903 + .long 3189567571 + .long 2833886088 + .long 3230017420 + .long 173386055 + .long 3189567866 + .long 4177428584 + .long 3230017422 + .long 2964718132 + .long 3189567231 + .long 1214798496 + .long 3230017425 + .long 541562024 + .long 3189567842 + .long 2535955680 + .long 3230017427 + .long 3368765612 + .long 3189568076 + .long 3845958008 + .long 3230017429 + .long 3194541507 + .long 3189567689 + .long 849863256 + .long 3230017432 + .long 3443356552 + .long 3189567858 + .long 2137631024 + .long 3230017434 + .long 1180679397 + .long 3189567138 + .long 3414318912 + .long 3230017436 + .long 2261929999 + .long 3189567651 + .long 384984464 + .long 3230017439 + .long 954057098 + .long 3189567971 + .long 1639587024 + .long 3230017441 + .long 1346995839 + .long 3189567263 + .long 2883183944 + .long 3230017443 + .long 3253373727 + .long 3189567382 + .long 4115799808 + .long 3230017445 + .long 4143791142 + .long 3189567800 + .long 1042491824 + .long 3230017448 + .long 4240432954 + .long 3189567700 + .long 2253218992 + .long 3230017450 + .long 1891708033 + .long 3189568072 + .long 3453038360 + .long 3230017452 + .long 710292621 + .long 3189567662 + .long 347006880 + .long 3230017455 + .long 2712254611 + .long 3189567116 + .long 1525083304 + .long 3230017457 + .long 349583280 + .long 3189568004 + .long 2692324448 + .long 3230017459 + .long 1803227864 + .long 3189567740 + .long 3848754312 + .long 3230017461 + .long 3644606976 + .long 3189567826 + .long 699429536 + .long 3230017464 + .long 1067153346 + .long 3189567751 + .long 1834308568 + .long 3230017466 + .long 1335350692 + .long 3189567081 + .long 2958447872 + .long 3230017468 + .long 1803696599 + .long 3189567557 + .long 4071871152 + .long 3230017470 + .long 1232152547 + .long 3189568017 + .long 879634736 + .long 3230017473 + .long 1455437901 + .long 3189567512 + .long 1971696744 + .long 3230017475 + .long 3708110750 + .long 3189567399 + .long 3053113344 + .long 3230017477 + .long 3907324819 + .long 3189567290 + .long 4123907920 + .long 3230017479 + .long 4080000314 + .long 3189567141 + .long 889136480 + .long 3230017482 + .long 1286519001 + .long 3189567298 + .long 1938756848 + .long 3230017484 + .long 1292347423 + .long 3189567513 + .long 2977824880 + .long 3230017486 + .long 1159725249 + .long 3189568015 + .long 4006363664 + .long 3230017488 + .long 895621348 + .long 3189567502 + .long 729428896 + .long 3230017491 + .long 1212894155 + .long 3189567280 + .long 1736978096 + .long 3230017493 + .long 296117275 + .long 3189567210 + .long 2734066816 + .long 3230017495 + .long 2463481211 + .long 3189567796 + .long 3720717848 + .long 3230017497 + .long 76524950 + .long 3189567159 + .long 401986584 + .long 3230017500 + .long 1718551671 + .long 3189567216 + .long 1367830248 + .long 3230017502 + .long 3568874946 + .long 3189567584 + .long 2323304104 + .long 3230017504 + .long 2763456396 + .long 3189567666 + .long 3268430632 + .long 3230017506 + .long 1208592501 + .long 3189567715 + .long 4203232240 + .long 3230017508 + .long 4148835618 + .long 3189567851 + .long 832763976 + .long 3230017511 + .long 610418007 + .long 3189567082 + .long 1746982680 + .long 3230017513 + .long 3035714190 + .long 3189567431 + .long 2650943256 + .long 3230017515 + .long 85931336 + .long 3189567843 + .long 3544667832 + .long 3230017517 + .long 3006685957 + .long 3189567286 + .long 133211144 + .long 3230017520 + .long 878859600 + .long 3189567873 + .long 1006529776 + .long 3230017522 + .long 854333969 + .long 3189567724 + .long 1869678336 + .long 3230017524 + .long 3058646748 + .long 3189567155 + .long 2722678648 + .long 3230017526 + .long 360733640 + .long 3189567693 + .long 3565552488 + .long 3230017528 + .long 3015564990 + .long 3189568013 + .long 103354256 + .long 3230017531 + .long 2286095909 + .long 3189568081 + .long 926040176 + .long 3230017533 + .long 1899270393 + .long 3189567137 + .long 1738664488 + .long 3230017535 + .long 1377641292 + .long 3189567833 + .long 2541248696 + .long 3230017537 + .long 4266686523 + .long 3189568077 + .long 3333814224 + .long 3230017539 + .long 4018775563 + .long 3189567218 + .long 4116382408 + .long 3230017541 + .long 3373913644 + .long 3189567103 + .long 594007232 + .long 3230017544 + .long 2818265402 + .long 3189568021 + .long 1356644520 + .long 3230017546 + .long 1075601108 + .long 3189567716 + .long 2109348112 + .long 3230017548 + .long 3342127702 + .long 3189567566 + .long 2852139088 + .long 3230017550 + .long 2910355434 + .long 3189567504 + .long 3585038464 + .long 3230017552 + .long 611858749 + .long 3189567074 + .long 13099880 + .long 3230017555 + .long 1954698831 + .long 3189567516 + .long 726278816 + .long 3230017557 + .long 550712630 + .long 3189567710 + .long 1429628792 + .long 3230017559 + .long 3672474493 + .long 3189567278 + .long 2123170544 + .long 3230017561 + .long 1160875209 + .long 3189567651 + .long 2806924760 + .long 3230017563 + .long 2242524344 + .long 3189568000 + .long 3480912064 + .long 3230017565 + .long 2823138691 + .long 3189567327 + .long 4145152992 + .long 3230017567 + .long 3521079748 + .long 3189567568 + .long 504700744 + .long 3230017570 + .long 1136670137 + .long 3189567486 + .long 1149510328 + .long 3230017572 + .long 806933442 + .long 3189567823 + .long 1784634816 + .long 3230017574 + .long 1606084669 + .long 3189567242 + .long 2410094488 + .long 3230017576 + .long 2841342625 + .long 3189567480 + .long 3025909584 + .long 3230017578 + .long 984188059 + .long 3189567239 + .long 3632100264 + .long 3230017580 + .long 3011730434 + .long 3189567337 + .long 4228686632 + .long 3230017582 + .long 328432041 + .long 3189567676 + .long 520721440 + .long 3230017585 + .long 2057225622 + .long 3189567268 + .long 1098159248 + .long 3230017587 + .long 3150727306 + .long 3189567348 + .long 1666052680 + .long 3230017589 + .long 3291380622 + .long 3189567307 + .long 2224421584 + .long 3230017591 + .long 3570771984 + .long 3189567798 + .long 2773285760 + .long 3230017593 + .long 2427604440 + .long 3189567698 + .long 3312664936 + .long 3230017595 + .long 3733848165 + .long 3189567211 + .long 3842578768 + .long 3230017597 + .long 2673912350 + .long 3189567904 + .long 68079584 + .long 3230017600 + .long 960995892 + .long 3189567616 + .long 579121512 + .long 3230017602 + .long 4150493479 + .long 3189567659 + .long 1080756744 + .long 3230017604 + .long 1054941272 + .long 3189567735 + .long 1573004704 + .long 3230017606 + .long 2574365292 + .long 3189568007 + .long 2055884768 + .long 3230017608 + .long 2507498673 + .long 3189567092 + .long 2529416224 + .long 3230017610 + .long 2082176323 + .long 3189567207 + .long 2993618320 + .long 3230017612 + .long 3719982601 + .long 3189568058 + .long 3448510256 + .long 3230017614 + .long 4104247904 + .long 3189567897 + .long 3894111152 + .long 3230017616 + .long 3735557011 + .long 3189567647 + .long 35472776 + .long 3230017619 + .long 2914260983 + .long 3189567862 + .long 462548736 + .long 3230017621 + .long 1334094042 + .long 3189567734 + .long 880390688 + .long 3230017623 + .long 1291097379 + .long 3189567171 + .long 1289017512 + .long 3230017625 + .long 1627119803 + .long 3189567853 + .long 1688448064 + .long 3230017627 + .long 3886873723 + .long 3189567117 + .long 2078701104 + .long 3230017629 + .long 627887757 + .long 3189567206 + .long 2459795360 + .long 3230017631 + .long 1722013861 + .long 3189567101 + .long 2831749488 + .long 3230017633 + .long 4163262354 + .long 3189567678 + .long 3194582104 + .long 3230017635 + .long 4170237688 + .long 3189567639 + .long 3548311752 + .long 3230017637 + .long 47563772 + .long 3189567637 + .long 3892956928 + .long 3230017639 + .long 2990136007 + .long 3189567231 + .long 4228536056 + .long 3230017641 + .long 4294532248 + .long 3189567995 + .long 260100240 + .long 3230017644 + .long 2060709623 + .long 3189567397 + .long 577602376 + .long 3230017646 + .long 1488525373 + .long 3189568044 + .long 886093456 + .long 3230017648 + .long 1657840200 + .long 3189567474 + .long 1185591680 + .long 3230017650 + .long 3155771782 + .long 3189567399 + .long 1476115208 + .long 3230017652 + .long 2195162329 + .long 3189567591 + .long 1757682144 + .long 3230017654 + .long 1292806663 + .long 3189567956 + .long 2030310544 + .long 3230017656 + .long 2151451208 + .long 3189567540 + .long 2294018392 + .long 3230017658 + .long 2224122735 + .long 3189567630 + .long 2548823632 + .long 3230017660 + .long 3554417607 + .long 3189567684 + .long 2794744152 + .long 3230017662 + .long 3831650627 + .long 3189567409 + .long 3031797776 + .long 3230017664 + .long 4024246224 + .long 3189567811 + .long 3260002296 + .long 3230017666 + .long 2530219738 + .long 3189567128 + .long 3479375416 + .long 3230017668 + .long 1618145996 + .long 3189568024 + .long 3689934832 + .long 3230017670 + .long 392379700 + .long 3189567378 + .long 3891698144 + .long 3230017672 + .long 55874694 + .long 3189567574 + .long 4084682928 + .long 3230017674 + .long 4294251475 + .long 3189567312 + .long 4268906688 + .long 3230017676 + .long 1899705040 + .long 3189567783 + .long 149419600 + .long 3230017679 + .long 357699389 + .long 3189567568 + .long 316173656 + .long 3230017681 + .long 3025711727 + .long 3189567790 + .long 474218920 + .long 3230017683 + .long 2921891821 + .long 3189568046 + .long 623572704 + .long 3230017685 + .long 1716968749 + .long 3189567453 + .long 764252248 + .long 3230017687 + .long 2393171526 + .long 3189567748 + .long 896274768 + .long 3230017689 + .long 1343317993 + .long 3189567172 + .long 1019657400 + .long 3230017691 + .long 1388235839 + .long 3189567661 + .long 1134417256 + .long 3230017693 + .long 2766147125 + .long 3189567706 + .long 1240571384 + .long 3230017695 + .long 2162068842 + .long 3189567499 + .long 1338136776 + .long 3230017697 + .long 4075455588 + .long 3189567932 + .long 1427130392 + .long 3230017699 + .long 1579647664 + .long 3189567555 + .long 1507569120 + .long 3230017701 + .long 3785749868 + .long 3189567715 + .long 1579469816 + .long 3230017703 + .long 2639950365 + .long 3189567469 + .long 1642849272 + .long 3230017705 + .long 3611501026 + .long 3189567698 + .long 1697724240 + .long 3230017707 + .long 15422953 + .long 3189568066 + .long 1744111424 + .long 3230017709 + .long 2642213241 + .long 3189568062 + .long 1782027472 + .long 3230017711 + .long 143606300 + .long 3189568058 + .long 1811488992 + .long 3230017713 + .long 501328690 + .long 3189567276 + .long 1832512520 + .long 3230017715 + .long 3258054578 + .long 3189567915 + .long 1845114576 + .long 3230017717 + .long 1297851139 + .long 3189568007 + .long 1849311616 + .long 3230017719 + .long 3589200000 + .long 3189567580 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 2147483648 + .long 2846560486 + .long 3210737666 + .long 2729511872 + .long 3211784202 + .long 3956813460 + .long 3212307985 + .long 1796237193 + .long 3212828714 + .long 1562748889 + .long 3213092649 + .long 1602292343 + .long 3213352007 + .long 745814092 + .long 3213610865 + .long 2969306084 + .long 3213869224 + .long 3953060839 + .long 3214006263 + .long 1128703349 + .long 3214134948 + .long 1371067273 + .long 3214263386 + .long 131445019 + .long 3214391579 + .long 1427948820 + .long 3214519527 + .long 665817496 + .long 3214647232 + .long 1817459908 + .long 3214774694 + .long 242758400 + .long 3214901915 + .long 2082038134 + .long 3214981455 + .long 2300828032 + .long 3215044825 + .long 571795571 + .long 3215108076 + .long 3120479584 + .long 3215171207 + .long 3276640540 + .long 3215234220 + .long 2949178581 + .long 3215297115 + .long 4036279704 + .long 3215359892 + .long 4130528508 + .long 3215422552 + .long 813954767 + .long 3215485096 + .long 248046571 + .long 3215547523 + .long 4288926261 + .long 3215609833 + .long 1897492927 + .long 3215672029 + .long 3499237165 + .long 3215734109 + .long 2329611090 + .long 3215796075 + .long 203907094 + .long 3215857927 + .long 3222364838 + .long 3215919664 + .long 295408387 + .long 3215981289 + .long 899212401 + .long 3216012696 + .long 2606049022 + .long 3216043395 + .long 4003691233 + .long 3216074038 + .long 1675303236 + .long 3216104626 + .long 789189655 + .long 3216135158 + .long 2213928479 + .long 3216165634 + .long 2518405585 + .long 3216196055 + .long 2561783534 + .long 3216226421 + .long 3198568176 + .long 3216256732 + .long 983674944 + .long 3216286989 + .long 1057364031 + .long 3216317191 + .long 4260371496 + .long 3216347338 + .long 2838974660 + .long 3216377432 + .long 1919860988 + .long 3216407472 + .long 2330291020 + .long 3216437458 + .long 598130195 + .long 3216467391 + .long 1836782285 + .long 3216497270 + .long 2565351466 + .long 3216527096 + .long 3593575201 + .long 3216556869 + .long 1431920350 + .long 3216586590 + .long 1176515501 + .long 3216616258 + .long 3624279252 + .long 3216645873 + .long 977982819 + .long 3216675437 + .long 2616083454 + .long 3216704948 + .long 733015457 + .long 3216734408 + .long 403990373 + .long 3216763816 + .long 2405156675 + .long 3216793172 + .long 3213628385 + .long 3216822477 + .long 3597448029 + .long 3216851731 + .long 25680167 + .long 3216880935 + .long 1848308454 + .long 3216910087 + .long 1231492199 + .long 3216939189 + .long 3222364838 + .long 3216968240 + .long 4274224607 + .long 3216997241 + .long 836496059 + .long 3217026193 + .long 1119829323 + .long 3217043131 + .long 315251054 + .long 3217057557 + .long 518461891 + .long 3217071958 + .long 2094042713 + .long 3217086334 + .long 1109735857 + .long 3217100686 + .long 2221359788 + .long 3217115013 + .long 1492952593 + .long 3217129316 + .long 3576653728 + .long 3217143594 + .long 237880003 + .long 3217157849 + .long 420109003 + .long 3217172079 + .long 180120274 + .long 3217186285 + .long 4162843939 + .long 3217200466 + .long 4126536273 + .long 3217214624 + .long 417628115 + .long 3217228759 + .long 1970736719 + .long 3217242869 + .long 538873716 + .long 3217256956 + .long 758227830 + .long 3217271019 + .long 2968307242 + .long 3217285058 + .long 3211951040 + .long 3217299074 + .long 1825275166 + .long 3217313067 + .long 3437683677 + .long 3217327036 + .long 4086978021 + .long 3217340982 + .long 4104270002 + .long 3217354905 + .long 3819025464 + .long 3217368805 + .long 3559075183 + .long 3217382682 + .long 3650625670 + .long 3217396536 + .long 123302585 + .long 3217410368 + .long 1890030548 + .long 3217424176 + .long 682272600 + .long 3217437962 + .long 1114811729 + .long 3217451725 + .long 3505892050 + .long 3217465465 + .long 3877229085 + .long 3217479183 + .long 2543954549 + .long 3217492879 + .long 4114626469 + .long 3217506552 + .long 311370023 + .long 3217520204 + .long 34658569 + .long 3217533833 + .long 3593519732 + .long 3217547439 + .long 2705545195 + .long 3217561024 + .long 1971736889 + .long 3217574587 + .long 1696647441 + .long 3217588128 + .long 2183357019 + .long 3217601647 + .long 3733482817 + .long 3217615144 + .long 2352221150 + .long 3217628620 + .long 2633258676 + .long 3217642074 + .long 578912458 + .long 3217655507 + .long 780008323 + .long 3217668918 + .long 3530988084 + .long 3217682307 + .long 534951267 + .long 3217695676 + .long 673467853 + .long 3217709023 + .long 4236783385 + .long 3217722348 + .long 2923827788 + .long 3217735653 + .long 1317060595 + .long 3217748937 + .long 3997577740 + .long 3217762199 + .long 2660218276 + .long 3217775441 + .long 1883376699 + .long 3217788662 + .long 1949142230 + .long 3217801862 + .long 3138274530 + .long 3217815041 + .long 1435244737 + .long 3217828200 + .long 1413145637 + .long 3217841338 + .long 3348797986 + .long 3217854455 + .long 3222758658 + .long 3217867552 + .long 1309263324 + .long 3217880629 + .long 2176234471 + .long 3217893685 + .long 1800387473 + .long 3217906721 + .long 452140382 + .long 3217919737 + .long 2695621757 + .long 3217932732 + .long 208809263 + .long 3217945708 + .long 1848308454 + .long 3217958663 + .long 3584589359 + .long 3217971598 + .long 1386895968 + .long 3217984514 + .long 4108155659 + .long 3217997409 + .long 3420215606 + .long 3218010285 + .long 3878621277 + .long 3218023141 + .long 1447787319 + .long 3218035978 + .long 680874053 + .long 3218048795 + .long 1834892843 + .long 3218061592 + .long 870713292 + .long 3218074370 + .long 1168986141 + .long 3218083436 + .long 3245089583 + .long 3218089805 + .long 2494877761 + .long 3218096165 + .long 3338922950 + .long 3218102515 + .long 1607293197 + .long 3218108856 + .long 1719424943 + .long 3218115187 + .long 3799224547 + .long 3218121508 + .long 3675071677 + .long 3218127820 + .long 1469757259 + .long 3218134123 + .long 1600486820 + .long 3218140416 + .long 4188949205 + .long 3218146699 + .long 766352567 + .long 3218152974 + .long 43231408 + .long 3218159239 + .long 2139646042 + .long 3218165494 + .long 2880153102 + .long 3218171740 + .long 2383743325 + .long 3218177977 + .long 768877423 + .long 3218184205 + .long 2448456521 + .long 3218190423 + .long 3244923387 + .long 3218196632 + .long 3275167422 + .long 3218202832 + .long 2655560435 + .long 3218209023 + .long 1501959692 + .long 3218215205 + .long 4224678246 + .long 3218221377 + .long 2348618756 + .long 3218227541 + .long 283080250 + .long 3218233696 + .long 2436859197 + .long 3218239841 + .long 333350563 + .long 3218245978 + .long 2675321801 + .long 3218252105 + .long 985177381 + .long 3218258224 + .long 3964700035 + .long 3218264333 + .long 3135315249 + .long 3218270434 + .long 2902865164 + .long 3218276526 + .long 3377742213 + .long 3218282609 + .long 374891912 + .long 3218288684 + .long 2593684821 + .long 3218294749 + .long 1553148222 + .long 3218300806 + .long 1656739931 + .long 3218306854 + .long 3012481825 + .long 3218312893 + .long 1432962538 + .long 3218318924 + .long 1320242026 + .long 3218324946 + .long 2780952336 + .long 3218330959 + .long 1626300240 + .long 3218336964 + .long 2256971748 + .long 3218342960 + .long 483265518 + .long 3218348948 + .long 704964628 + .long 3218354927 + .long 3026437244 + .long 3218360897 + .long 3256639170 + .long 3218366859 + .long 1499050969 + .long 3218372813 + .long 2151680465 + .long 3218378758 + .long 1022163351 + .long 3218384695 + .long 2507634849 + .long 3218390623 + .long 2414862975 + .long 3218396543 + .long 845152874 + .long 3218402455 + .long 2194349235 + .long 3218408358 + .long 2267936813 + .long 3218414253 + .long 1165944702 + .long 3218420140 + .long 3282948707 + .long 3218426018 + .long 128204514 + .long 3218431889 + .long 390421100 + .long 3218437751 + .long 4167959282 + .long 3218443604 + .long 2968834018 + .long 3218449450 + .long 1185553177 + .long 3218455288 + .long 3210217930 + .long 3218461117 + .long 549623114 + .long 3218466939 + .long 1890030548 + .long 3218472752 + .long 3032400188 + .long 3218478557 + .long 4072261525 + .long 3218484354 + .long 3450874911 + .long 1070995813 + .long 2331021804 + .long 1070990032 + .long 1029453230 + .long 1070984259 + .long 3747176240 + .long 1070978493 + .long 1800682930 + .long 1070972736 + .long 3686719393 + .long 1070966986 + .long 722545241 + .long 1070961245 + .long 1405669883 + .long 1070955511 + .long 1349079372 + .long 1070949785 + .long 461103529 + .long 1070944067 + .long 2945413886 + .long 1070938356 + .long 121152472 + .long 1070932654 + .long 487700860 + .long 1070926959 + .long 3954874384 + .long 1070921271 + .long 1842920138 + .long 1070915592 + .long 2652318780 + .long 1070909920 + .long 1999011482 + .long 1070904256 + .long 4089234463 + .long 1070898599 + .long 244680560 + .long 1070892951 + .long 3262235675 + .long 1070887309 + .long 169336595 + .long 1070881676 + .long 3763576649 + .long 1070876049 + .long 1073096258 + .long 1070870431 + .long 601221319 + .long 1070864820 + .long 2261690268 + .long 1070859216 + .long 1673619518 + .long 1070853620 + .long 3046403514 + .long 1070848031 + .long 1999843716 + .long 1070842450 + .long 2744015967 + .long 1070836876 + .long 899399508 + .long 1070831310 + .long 676744370 + .long 1070825751 + .long 1992167703 + .long 1070820199 + .long 467152011 + .long 1070814655 + .long 313445281 + .long 1070809118 + .long 1448157352 + .long 1070803588 + .long 3788725476 + .long 1070798065 + .long 2957945300 + .long 1070792550 + .long 3168871046 + .long 1070787042 + .long 44944622 + .long 1070781542 + .long 2094830420 + .long 1070776048 + .long 647642559 + .long 1070770562 + .long 4212681596 + .long 1070765082 + .long 4119694493 + .long 1070759610 + .long 288676754 + .long 1070754146 + .long 1229870791 + .long 1070748688 + .long 2568927817 + .long 1070743237 + .long 4226775419 + .long 1070737793 + .long 1829681364 + .long 1070732357 + .long 3889121191 + .long 1070726927 + .long 1737005556 + .long 1070721505 + .long 3885417029 + .long 1070716089 + .long 1666870165 + .long 1070710681 + .long 3594048319 + .long 1070705279 + .long 1000063738 + .long 1070699885 + .long 2398194399 + .long 1070694497 + .long 3417111411 + .long 1070689116 + .long 3980746691 + .long 1070683742 + .long 4013324163 + .long 1070678375 + .long 3439358267 + .long 1070673015 + .long 2183652476 + .long 1070667662 + .long 171297820 + .long 1070662316 + .long 1622638721 + .long 1070656976 + .long 2168369647 + .long 1070651643 + .long 1734435555 + .long 1070646317 + .long 247063161 + .long 1070640998 + .long 1927726804 + .long 1070635685 + .long 2408245143 + .long 1070630379 + .long 1615681634 + .long 1070625080 + .long 3772343130 + .long 1070619787 + .long 215909304 + .long 1070614502 + .long 3759169634 + .long 1070609222 + .long 1445381777 + .long 1070603950 + .long 1792910451 + .long 1070598684 + .long 870975437 + .long 1070590754 + .long 3194096222 + .long 1070580248 + .long 1823716217 + .long 1070569756 + .long 913800688 + .long 1070559277 + .long 323875369 + .long 1070548811 + .long 4208958430 + .long 1070538357 + .long 3839688678 + .long 1070527917 + .long 3372126730 + .long 1070517490 + .long 2667883253 + .long 1070507076 + .long 1589083690 + .long 1070496675 + .long 4293333010 + .long 1070486286 + .long 2053843986 + .long 1070475911 + .long 3324205749 + .long 1070465548 + .long 3673610217 + .long 1070455198 + .long 2966718784 + .long 1070444861 + .long 1068692560 + .long 1070434537 + .long 2140157205 + .long 1070424225 + .long 1752298597 + .long 1070413926 + .long 4066729595 + .long 1070403639 + .long 360651144 + .long 1070393366 + .long 3386588242 + .long 1070383104 + .long 127747308 + .long 1070372856 + .long 3337621361 + .long 1070362619 + .long 380113 + .long 1070352396 + .long 2870475188 + .long 1070342184 + .long 3227997535 + .long 1070331985 + .long 943446189 + .long 1070321799 + .long 182758681 + .long 1070311625 + .long 817374162 + .long 1070301463 + .long 2719198427 + .long 1070291313 + .long 1465634365 + .long 1070281176 + .long 1224481606 + .long 1070271051 + .long 1869032404 + .long 1070260938 + .long 3273036717 + .long 1070250837 + .long 1015732707 + .long 1070240749 + .long 3561713742 + .long 1070230672 + .long 2196155141 + .long 1070220608 + .long 1089583089 + .long 1070210556 + .long 118003300 + .long 1070200516 + .long 3452833475 + .long 1070190487 + .long 2381031992 + .long 1070180471 + .long 1074899573 + .long 1070170467 + .long 3707175295 + .long 1070160474 + .long 1566132617 + .long 1070150494 + .long 3120348377 + .long 1070140525 + .long 3953929663 + .long 1070130568 + .long 3946380940 + .long 1070120623 + .long 2977634725 + .long 1070110690 + .long 928049556 + .long 1070100769 + .long 1973375279 + .long 1070090859 + .long 1699849154 + .long 1070080961 + .long 4284063055 + .long 1070071074 + .long 1018125008 + .long 1070061200 + .long 374428300 + .long 1070051337 + .long 2235845747 + .long 1070041485 + .long 2190695046 + .long 1070031645 + .long 122671437 + .long 1070021817 + .long 210845780 + .long 1070012000 + .long 2339728060 + .long 1070002194 + .long 2099265479 + .long 1069992400 + .long 3669742467 + .long 1069982617 + .long 2641909617 + .long 1069972846 + .long 3196851002 + .long 1069963086 + .long 926113142 + .long 1069953338 + .long 11572342 + .long 1069943601 + .long 340530969 + .long 1069933875 + .long 1800682930 + .long 1069924160 + .long 4280111857 + .long 1069914456 + .long 3372322013 + .long 1069904764 + .long 3261138386 + .long 1069895083 + .long 3835803021 + .long 1069885413 + .long 690973253 + .long 1069875755 + .long 2306589128 + .long 1069866107 + .long 4278067876 + .long 1069856470 + .long 2201204065 + .long 1069846845 + .long 262102455 + .long 1069837231 + .long 2647241692 + .long 1069827627 + .long 658570708 + .long 1069818035 + .long 2778278092 + .long 1069808453 + .long 309052031 + .long 1069798883 + .long 1733817001 + .long 1069789323 + .long 2650961017 + .long 1069779774 + .long 2954203158 + .long 1069770236 + .long 2537624622 + .long 1069760709 + .long 1295667077 + .long 1069751193 + .long 3418098326 + .long 1069741687 + .long 210141498 + .long 1069732193 + .long 157244505 + .long 1069722709 + .long 3155274661 + .long 1069713235 + .long 510517079 + .long 1069703773 + .long 709476866 + .long 1069694321 + .long 3649073763 + .long 1069684879 + .long 636640577 + .long 1069675449 + .long 159725394 + .long 1069666029 + .long 2116286250 + .long 1069656619 + .long 2109656884 + .long 1069647220 + .long 38479793 + .long 1069637832 + .long 96704707 + .long 1069628454 + .long 2183652476 + .long 1069619086 + .long 1904013563 + .long 1069609729 + .long 3452748429 + .long 1069600382 + .long 2435216853 + .long 1069591046 + .long 3047045639 + .long 1069581720 + .long 894257944 + .long 1069572405 + .long 173141005 + .long 1069563100 + .long 785342784 + .long 1069553805 + .long 970708326 + .long 1069541521 + .long 2645916898 + .long 1069522972 + .long 2106590683 + .long 1069504444 + .long 3453588195 + .long 1069485936 + .long 2198475040 + .long 1069467449 + .long 2443390270 + .long 1069448982 + .long 3996141691 + .long 1069430535 + .long 2370203065 + .long 1069412109 + .long 1669613218 + .long 1069393703 + .long 1704071394 + .long 1069375317 + .long 2283901796 + .long 1069356951 + .long 3220050856 + .long 1069338605 + .long 29117219 + .long 1069320280 + .long 1113218225 + .long 1069301974 + .long 1990183441 + .long 1069283688 + .long 2473421172 + .long 1069265422 + .long 2376948508 + .long 1069247176 + .long 1515388672 + .long 1069228950 + .long 3998935692 + .long 1069210743 + .long 1053482595 + .long 1069192557 + .long 1085389880 + .long 1069174390 + .long 3911679148 + .long 1069156242 + .long 760030536 + .long 1069138115 + .long 38583924 + .long 1069120007 + .long 1566132617 + .long 1069101918 + .long 867088104 + .long 1069083849 + .long 2056379433 + .long 1069065799 + .long 659581512 + .long 1069047769 + .long 792781808 + .long 1069029758 + .long 2277675977 + .long 1069011766 + .long 641565395 + .long 1068993794 + .long 2256601 + .long 1068975841 + .long 183156961 + .long 1068957907 + .long 1008239542 + .long 1068939992 + .long 2302040698 + .long 1068922096 + .long 3889657667 + .long 1068904219 + .long 1301778891 + .long 1068886362 + .long 2954550821 + .long 1068868523 + .long 84804484 + .long 1068850704 + .long 1109791498 + .long 1068832903 + .long 1562410668 + .long 1068815121 + .long 1271074840 + .long 1068797358 + .long 64741293 + .long 1068779614 + .long 2067876735 + .long 1068761888 + .long 2815553124 + .long 1068744181 + .long 2138347284 + .long 1068726493 + .long 4162338635 + .long 1068708823 + .long 129237761 + .long 1068691173 + .long 2756122533 + .long 1068673540 + .long 3285762921 + .long 1068655926 + .long 1551389854 + .long 1068638331 + .long 1681725707 + .long 1068620754 + .long 3511047527 + .long 1068603195 + .long 2579184841 + .long 1068585655 + .long 3016419377 + .long 1068568133 + .long 363613719 + .long 1068550630 + .long 3047045639 + .long 1068533144 + .long 2313634884 + .long 1068515677 + .long 296456961 + .long 1068497513 + .long 1367328035 + .long 1068462651 + .long 3221665916 + .long 1068427825 + .long 1242258971 + .long 1068393036 + .long 3697798734 + .long 1068358282 + .long 1678104687 + .long 1068323565 + .long 3453858508 + .long 1068288883 + .long 116861598 + .long 1068254238 + .long 4234736672 + .long 1068219627 + .long 2606283437 + .long 1068185053 + .long 3506114812 + .long 1068150514 + .long 2324914545 + .long 1068116011 + .long 3044269692 + .long 1068081543 + .long 1056797460 + .long 1068047111 + .long 346010435 + .long 1068012714 + .long 601410756 + .long 1067978352 + .long 1513453498 + .long 1067944025 + .long 2773542775 + .long 1067909733 + .long 4074027864 + .long 1067875476 + .long 813232056 + .long 1067841255 + .long 1275317999 + .long 1067807068 + .long 860480111 + .long 1067772916 + .long 3559777258 + .long 1067738798 + .long 480292498 + .long 1067704716 + .long 4204867691 + .long 1067670667 + .long 1547459502 + .long 1067636654 + .long 797775935 + .long 1067602675 + .long 1656501562 + .long 1067568730 + .long 3825228429 + .long 1067534819 + .long 2711485098 + .long 1067500943 + .long 2313634884 + .long 1067467101 + .long 376973398 + .long 1067416219 + .long 672386641 + .long 1067348671 + .long 630691842 + .long 1067281191 + .long 3960777458 + .long 1067213778 + .long 1488394470 + .long 1067146434 + .long 1220920383 + .long 1067079157 + .long 2577548405 + .long 1067011947 + .long 684247743 + .long 1066944805 + .long 3553625811 + .long 1066877729 + .long 2020150230 + .long 1066810721 + .long 4099880293 + .long 1066743779 + .long 630721729 + .long 1066676905 + .long 3927125538 + .long 1066610096 + .long 535440936 + .long 1066543355 + .long 2773516144 + .long 1066476679 + .long 1486051399 + .long 1066410070 + .long 808661260 + .long 1066285262 + .long 2227658502 + .long 1066152307 + .long 1813447778 + .long 1066019484 + .long 2743640746 + .long 1065886792 + .long 3904192454 + .long 1065754231 + .long 4184355568 + .long 1065621801 + .long 2476667369 + .long 1065489502 + .long 1971904113 + .long 1065357333 + .long 3138267131 + .long 1065097372 + .long 341338964 + .long 1064833554 + .long 1954052322 + .long 1064569994 + .long 1498975029 + .long 1064306693 + .long 2190050752 + .long 1063782660 + .long 1440057502 + .long 1063257089 + .long 1432705161 + .long 1062208000 + .long 0 + .long 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2900053258 + .long 1070176668 + .long 2900053258 + .long 1070176668 + .long 2900053258 + .long 1070176668 + .long 2900053258 + .long 1070176668 + .long 1208323809 + .long 3218079745 + .long 1208323809 + .long 3218079745 + .long 1208323809 + .long 3218079745 + .long 1208323809 + .long 3218079745 + .long 1431651269 + .long 1070945621 + .long 1431651269 + .long 1070945621 + .long 1431651269 + .long 1070945621 + .long 1431651269 + .long 1070945621 + .long 4294965279 + .long 3219128319 + .long 4294965279 + .long 3219128319 + .long 4294965279 + .long 3219128319 + .long 4294965279 + .long 3219128319 + .long 4294967295 + .long 1048575 + .long 4294967295 + .long 1048575 + .long 4294967295 + .long 1048575 + .long 4294967295 + .long 1048575 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1062207488 + .long 0 + .long 1062207488 + .long 0 + .long 1062207488 + .long 0 + .long 1062207488 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294967295 + .long 3220176895 + .long 4294967295 + .long 3220176895 + .long 4294967295 + .long 3220176895 + .long 4294967295 + .long 3220176895 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294963200 + .long 2134900735 + .long 4294963200 + .long 2134900735 + .long 4294963200 + .long 2134900735 + .long 4294963200 + .long 2134900735 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4227858432 + .long 4294967295 + .long 4227858432 + .long 4294967295 + .long 4227858432 + .long 4294967295 + .long 4227858432 + .long 4294967295 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1072693248 + .long 0 + .long 1072693248 + .long 0 + .long 1072693248 + .long 0 + .long 1072693248 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294967295 + .long 2147483647 + .long 4294967295 + .long 2147483647 + .long 4294967295 + .long 2147483647 + .long 4294967295 + .long 2147483647 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1040187392 + .long 0 + .long 1040187392 + .long 0 + .long 1040187392 + .long 0 + .long 1040187392 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294966272 + .long 4294967295 + .long 4294966272 + .long 4294967295 + .long 4294966272 + .long 4294967295 + .long 4294966272 + .long 4294967295 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4277796864 + .long 1072049730 + .long 4277796864 + .long 1072049730 + .long 4277796864 + .long 1072049730 + .long 4277796864 + .long 1072049730 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3164471296 + .long 1031600026 + .long 3164471296 + .long 1031600026 + .long 3164471296 + .long 1031600026 + .long 3164471296 + .long 1031600026 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1082564608 + .long 0 + .long 1082564608 + .long 0 + .long 1082564608 + .long 0 + .long 1082564608 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1083176960 + .long 0 + .long 1083176960 + .long 0 + .long 1083176960 + .long 0 + .long 1083176960 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1083174912 + .long 0 + .long 1083174912 + .long 0 + .long 1083174912 + .long 0 + .long 1083174912 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 2134900736 + .long 0 + .long 2134900736 + .long 0 + .long 2134900736 + .long 0 + .long 2134900736 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1104150528 + .long 0 + .long 1104150528 + .long 0 + .long 1104150528 + .long 0 + .long 1104150528 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294967290 + .long 1071120383 + .long 4294967290 + .long 1071120383 + .long 4294967290 + .long 1071120383 + .long 4294967290 + .long 1071120383 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294967290 + .long 1070858239 + .long 4294967290 + .long 1070858239 + .long 4294967290 + .long 1070858239 + .long 4294967290 + .long 1070858239 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 333042728 + .long 1070694400 + .long 333042728 + .long 1070694400 + .long 333042728 + .long 1070694400 + .long 333042728 + .long 1070694400 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 635310127 + .long 1070563328 + .long 635310127 + .long 1070563328 + .long 635310127 + .long 1070563328 + .long 635310127 + .long 1070563328 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294967295 + .long 2146435071 + .long 4294967295 + .long 2146435071 + .long 4294967295 + .long 2146435071 + .long 4294967295 + .long 2146435071 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1063256064 + .long 0 + .long 1063256064 + .long 0 + .long 1063256064 + .long 0 + .long 1063256064 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1077870592 + .long 0 + .long 1077870592 + .long 0 + .long 1077870592 + .long 0 + .long 1077870592 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 4294966784 + .long 0 + .long 4294966784 + .long 0 + .long 4294966784 + .long 0 + .long 4294966784 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4160749568 + .long 4294967295 + .long 4160749568 + .long 4294967295 + .long 4160749568 + .long 4294967295 + .long 4160749568 + .long 4294967295 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4278190080 + .long 4294967295 + .long 4278190080 + .long 4294967295 + .long 4278190080 + .long 4294967295 + .long 4278190080 + .long 4294967295 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294963200 + .long 4294967295 + .long 4294963200 + .long 4294967295 + .long 4294963200 + .long 4294967295 + .long 4294963200 + .long 4294967295 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1041235968 + .long 0 + .long 1041235968 + .long 0 + .long 1041235968 + .long 0 + .long 1041235968 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 2146435072 + .long 0 + .long 4293918720 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 1072693248 + .long 0 + .long 3220176896 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 0 + .long 0 + .long 2147483648 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .type __svml_dacosh_data_internal,@object + .size __svml_dacosh_data_internal,14784 + .align 8 + +__dacosh_la_CoutTab: + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 2146435072 + .long 0 + .long 4293918720 + .type __dacosh_la_CoutTab,@object + .size __dacosh_la_CoutTab,32 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core-avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core-avx2.S new file mode 100644 index 0000000000..48879787c1 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core-avx2.S @@ -0,0 +1,20 @@ +/* AVX2 version of vectorized acosh, vector length is 8. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define _ZGVeN8v_acosh _ZGVeN8v_acosh_avx2_wrapper +#include "../svml_d_acosh8_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core.c new file mode 100644 index 0000000000..4322a5f707 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core.c @@ -0,0 +1,27 @@ +/* Multiple versions of vectorized acosh, vector length is 8. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define SYMBOL_NAME _ZGVeN8v_acosh +#include "ifunc-mathvec-avx512-skx.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVeN8v_acosh, __GI__ZGVeN8v_acosh, __redirect__ZGVeN8v_acosh) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core_avx512.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core_avx512.S new file mode 100644 index 0000000000..381eeb2006 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core_avx512.S @@ -0,0 +1,864 @@ +/* Function acosh vectorized with AVX-512. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + https://www.gnu.org/licenses/. */ + +/* + * ALGORITHM DESCRIPTION: + * + * Compute acosh(x) as log(x + sqrt(x*x - 1)) + * using RSQRT instructions for starting the + * square root approximation, and small table lookups for log + * that map to AVX-512 permute instructions + * + * Special cases: + * + * acosh(NaN) = quiet NaN, and raise invalid exception + * acosh(-INF) = NaN + * acosh(+INF) = +INF + * acosh(x) = NaN if x < 1 + * acosh(1) = +0 + * + */ + +#include + + .text +ENTRY(_ZGVeN8v_acosh_skx) + pushq %rbp + cfi_def_cfa_offset(16) + movq %rsp, %rbp + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + andq $-64, %rsp + subq $192, %rsp + vmovups 256+__svml_dacosh_data_internal_avx512(%rip), %zmm5 + +/* polynomial computation for small inputs */ + vmovups 576+__svml_dacosh_data_internal_avx512(%rip), %zmm13 + vmovups 640+__svml_dacosh_data_internal_avx512(%rip), %zmm14 + +/* + * sqrt(1+x^2) ~ Sh + Sl + Sh*Eh*poly_s + * poly_s = c1+c2*Eh+c3*Eh^2 + */ + vmovups 704+__svml_dacosh_data_internal_avx512(%rip), %zmm1 + vmovups 832+__svml_dacosh_data_internal_avx512(%rip), %zmm2 + vmovups 896+__svml_dacosh_data_internal_avx512(%rip), %zmm6 + +/* very large inputs ? */ + vmovups 448+__svml_dacosh_data_internal_avx512(%rip), %zmm15 + +/* out of range inputs? */ + vmovups 512+__svml_dacosh_data_internal_avx512(%rip), %zmm3 + +/* not a very small input ? */ + vmovups 384+__svml_dacosh_data_internal_avx512(%rip), %zmm10 + vmovaps %zmm0, %zmm12 + +/* x^2 - 1 */ + vmovaps %zmm5, %zmm11 + vfmsub231pd {rn-sae}, %zmm12, %zmm12, %zmm11 + vcmppd $21, {sae}, %zmm15, %zmm12, %k2 + vcmppd $22, {sae}, %zmm3, %zmm12, %k0 + vcmppd $18, {sae}, %zmm5, %zmm12, %k1 + vrsqrt14pd %zmm11, %zmm4 + vcmppd $21, {sae}, %zmm10, %zmm11, %k3 + vfmadd231pd {rn-sae}, %zmm11, %zmm13, %zmm14 + vmovups 768+__svml_dacosh_data_internal_avx512(%rip), %zmm13 + +/* Sh ~sqrt(-1+x^2) */ + vmulpd {rn-sae}, %zmm4, %zmm11, %zmm9 + vmulpd {rn-sae}, %zmm11, %zmm14, %zmm8 + +/* Sh+x */ + vaddpd {rn-sae}, %zmm12, %zmm9, %zmm15 + kmovw %k0, %edx + kmovw %k1, %eax + +/* Shh */ + vsubpd {rn-sae}, %zmm12, %zmm15, %zmm14 + +/* (Yh*R0)_low */ + vmovaps %zmm11, %zmm0 + orl %eax, %edx + +/* rel. error term: Eh=1-Sh*R0 */ + vmovaps %zmm5, %zmm7 + vfmsub213pd {rn-sae}, %zmm9, %zmm4, %zmm0 + vfnmadd231pd {rn-sae}, %zmm9, %zmm4, %zmm7 + +/* rel. error term: Eh=(1-Sh*R0)-Sl*R0 */ + vfnmadd231pd {rn-sae}, %zmm0, %zmm4, %zmm7 + +/* Shl */ + vsubpd {rn-sae}, %zmm14, %zmm9, %zmm4 + vmovups 1472+__svml_dacosh_data_internal_avx512(%rip), %zmm14 + vfmadd231pd {rn-sae}, %zmm7, %zmm1, %zmm13 + vfmadd213pd {rn-sae}, %zmm2, %zmm7, %zmm13 + vfmadd213pd {rn-sae}, %zmm6, %zmm7, %zmm13 + +/* Sh*Eh */ + vmulpd {rn-sae}, %zmm7, %zmm9, %zmm7 + +/* Sl + Sh*Eh*poly_s */ + vfmadd213pd {rn-sae}, %zmm0, %zmm13, %zmm7 + +/* polynomials */ + vmovups 1344+__svml_dacosh_data_internal_avx512(%rip), %zmm13 + +/* polynomial computation for small inputs */ + vaddpd {rn-sae}, %zmm7, %zmm9, %zmm0 + +/* Xin0+Sl+Sh*Eh*poly_s ~ x+sqrt(1+x^2) */ + vaddpd {rn-sae}, %zmm7, %zmm15, %zmm6 + vfmadd231pd {rn-sae}, %zmm0, %zmm8, %zmm0 + +/* fixup for very large inputs */ + vmovups 1216+__svml_dacosh_data_internal_avx512(%rip), %zmm8 + +/* Sl_high */ + vsubpd {rn-sae}, %zmm15, %zmm6, %zmm9 + vmovups 1536+__svml_dacosh_data_internal_avx512(%rip), %zmm15 + vmulpd {rn-sae}, %zmm8, %zmm12, %zmm6{%k2} + +/* Sl_l */ + vsubpd {rn-sae}, %zmm9, %zmm7, %zmm3 + vrcp14pd %zmm6, %zmm1 + +/* Xin_low */ + vaddpd {rn-sae}, %zmm4, %zmm3, %zmm7 + +/* Table lookups */ + vmovups __svml_dacosh_data_internal_avx512(%rip), %zmm3 + +/* round reciprocal to 1+4b mantissas */ + vpaddq 1088+__svml_dacosh_data_internal_avx512(%rip), %zmm1, %zmm2 + +/* fixup for very large inputs */ + vxorpd %zmm7, %zmm7, %zmm7{%k2} + vmovups 1408+__svml_dacosh_data_internal_avx512(%rip), %zmm1 + vandpd 1152+__svml_dacosh_data_internal_avx512(%rip), %zmm2, %zmm8 + vmovups 128+__svml_dacosh_data_internal_avx512(%rip), %zmm2 + +/* Prepare table index */ + vpsrlq $48, %zmm8, %zmm9 + +/* reduced argument for log(): (Rcp*Xin-1)+Rcp*Xin_low */ + vfmsub231pd {rn-sae}, %zmm8, %zmm6, %zmm5 + +/* exponents */ + vgetexppd {sae}, %zmm8, %zmm4 + vmovups 1280+__svml_dacosh_data_internal_avx512(%rip), %zmm6 + vpermt2pd 64+__svml_dacosh_data_internal_avx512(%rip), %zmm9, %zmm3 + vpermt2pd 192+__svml_dacosh_data_internal_avx512(%rip), %zmm9, %zmm2 + vsubpd {rn-sae}, %zmm6, %zmm4, %zmm4{%k2} + vfmadd231pd {rn-sae}, %zmm8, %zmm7, %zmm5 + vmovups 1600+__svml_dacosh_data_internal_avx512(%rip), %zmm6 + vmovups 1664+__svml_dacosh_data_internal_avx512(%rip), %zmm7 + +/* -K*L2H + Th */ + vmovups 1920+__svml_dacosh_data_internal_avx512(%rip), %zmm8 + +/* -K*L2L + Tl */ + vmovups 1984+__svml_dacosh_data_internal_avx512(%rip), %zmm9 + vfmadd231pd {rn-sae}, %zmm5, %zmm13, %zmm1 + vmovups 1792+__svml_dacosh_data_internal_avx512(%rip), %zmm13 + vfnmadd231pd {rn-sae}, %zmm4, %zmm8, %zmm3 + vfnmadd213pd {rn-sae}, %zmm2, %zmm9, %zmm4 + vfmadd213pd {rn-sae}, %zmm14, %zmm5, %zmm1 + vmovups 1728+__svml_dacosh_data_internal_avx512(%rip), %zmm2 + vmovups 1856+__svml_dacosh_data_internal_avx512(%rip), %zmm14 + vfmadd213pd {rn-sae}, %zmm15, %zmm5, %zmm1 + +/* R^2 */ + vmulpd {rn-sae}, %zmm5, %zmm5, %zmm15 + vfmadd213pd {rn-sae}, %zmm6, %zmm5, %zmm1 + vfmadd213pd {rn-sae}, %zmm7, %zmm5, %zmm1 + vfmadd213pd {rn-sae}, %zmm2, %zmm5, %zmm1 + vfmadd213pd {rn-sae}, %zmm13, %zmm5, %zmm1 + vfmadd213pd {rn-sae}, %zmm14, %zmm5, %zmm1 + +/* Tl + R^2*Poly */ + vfmadd213pd {rn-sae}, %zmm4, %zmm15, %zmm1 + +/* R+Tl + R^2*Poly */ + vaddpd {rn-sae}, %zmm5, %zmm1, %zmm5 + vaddpd {rn-sae}, %zmm5, %zmm3, %zmm0{%k3} + jne .LBL_1_3 + +.LBL_1_2: + movq %rbp, %rsp + popq %rbp + cfi_def_cfa(7, 8) + cfi_restore(6) + ret + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + +.LBL_1_3: + vmovups %zmm12, 64(%rsp) + vmovups %zmm0, 128(%rsp) + je .LBL_1_2 + xorl %eax, %eax + vzeroupper + kmovw %k4, 24(%rsp) + kmovw %k5, 16(%rsp) + kmovw %k6, 8(%rsp) + kmovw %k7, (%rsp) + movq %rsi, 40(%rsp) + movq %rdi, 32(%rsp) + movq %r12, 56(%rsp) + .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x68, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x78, 0xff, 0xff, 0xff, 0x22 + movl %eax, %r12d + movq %r13, 48(%rsp) + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22 + movl %edx, %r13d + .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22 + +.LBL_1_7: + btl %r12d, %r13d + jc .LBL_1_10 + +.LBL_1_8: + incl %r12d + cmpl $8, %r12d + jl .LBL_1_7 + kmovw 24(%rsp), %k4 + cfi_restore(122) + kmovw 16(%rsp), %k5 + cfi_restore(123) + kmovw 8(%rsp), %k6 + cfi_restore(124) + kmovw (%rsp), %k7 + cfi_restore(125) + vmovups 128(%rsp), %zmm0 + movq 40(%rsp), %rsi + cfi_restore(4) + movq 32(%rsp), %rdi + cfi_restore(5) + movq 56(%rsp), %r12 + cfi_restore(12) + movq 48(%rsp), %r13 + cfi_restore(13) + jmp .LBL_1_2 + .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x68, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x78, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22 + +.LBL_1_10: + lea 64(%rsp,%r12,8), %rdi + lea 128(%rsp,%r12,8), %rsi + call __svml_dacosh_cout_rare_internal + jmp .LBL_1_8 + +END(_ZGVeN8v_acosh_skx) + + .align 16,0x90 + +__svml_dacosh_cout_rare_internal: + + cfi_startproc + + movzwl 6(%rdi), %eax + andl $32752, %eax + movsd (%rdi), %xmm0 + cmpl $32752, %eax + je .LBL_2_9 + +.LBL_2_2: + movsd %xmm0, -8(%rsp) + cmpl $0, -8(%rsp) + jne .LBL_2_8 + cmpl $1072693248, -4(%rsp) + je .LBL_2_7 + cmpl $2146435072, -4(%rsp) + jne .LBL_2_8 + movsd %xmm0, (%rsi) + xorl %eax, %eax + ret + +.LBL_2_7: + movq 8+__dacosh_la_CoutTab(%rip), %rax + movq %rax, (%rsi) + xorl %eax, %eax + ret + +.LBL_2_8: + movsd 16+__dacosh_la_CoutTab(%rip), %xmm0 + movl $1, %eax + mulsd 8+__dacosh_la_CoutTab(%rip), %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_9: + testl $1048575, 4(%rdi) + jne .LBL_2_12 + cmpl $0, (%rdi) + je .LBL_2_2 + +.LBL_2_12: + mulsd %xmm0, %xmm0 + xorl %eax, %eax + movsd %xmm0, (%rsi) + ret + + cfi_endproc + + .type __svml_dacosh_cout_rare_internal,@function + .size __svml_dacosh_cout_rare_internal,.-__svml_dacosh_cout_rare_internal + + .section .rodata, "a" + .align 64 + +__svml_dacosh_data_internal_avx512: + .long 0 + .long 0 + .long 3222405120 + .long 3215919664 + .long 1848311808 + .long 3216910087 + .long 1890025472 + .long 3217424176 + .long 3348791296 + .long 3217854455 + .long 2880159744 + .long 3218171740 + .long 3256631296 + .long 3218366859 + .long 4139499520 + .long 3218553303 + .long 3971973120 + .long 3218731811 + .long 3348791296 + .long 3218903031 + .long 1605304320 + .long 3219067535 + .long 3827638272 + .long 3219177074 + .long 1584414720 + .long 3219253343 + .long 860823552 + .long 3219326935 + .long 3896934400 + .long 3219398031 + .long 643547136 + .long 3219466797 + .long 0 + .long 0 + .long 3496399314 + .long 1028893491 + .long 720371772 + .long 1026176044 + .long 1944193543 + .long 3175338952 + .long 634920691 + .long 3175752108 + .long 1664625295 + .long 1029304828 + .long 192624563 + .long 3177103997 + .long 3796653051 + .long 3176138396 + .long 3062724207 + .long 3176680434 + .long 634920691 + .long 3176800684 + .long 1913570380 + .long 3174806221 + .long 825194088 + .long 3176465773 + .long 2335489660 + .long 3172599741 + .long 2497625109 + .long 1029604288 + .long 914782743 + .long 1029350199 + .long 3743595607 + .long 3175525305 + .long 0 + .long 1072693248 + .long 0 + .long 1072693248 + .long 0 + .long 1072693248 + .long 0 + .long 1072693248 + .long 0 + .long 1072693248 + .long 0 + .long 1072693248 + .long 0 + .long 1072693248 + .long 0 + .long 1072693248 + .long 4294967295 + .long 2147483647 + .long 4294967295 + .long 2147483647 + .long 4294967295 + .long 2147483647 + .long 4294967295 + .long 2147483647 + .long 4294967295 + .long 2147483647 + .long 4294967295 + .long 2147483647 + .long 4294967295 + .long 2147483647 + .long 4294967295 + .long 2147483647 + .long 0 + .long 1055916032 + .long 0 + .long 1055916032 + .long 0 + .long 1055916032 + .long 0 + .long 1055916032 + .long 0 + .long 1055916032 + .long 0 + .long 1055916032 + .long 0 + .long 1055916032 + .long 0 + .long 1055916032 + .long 0 + .long 1608515584 + .long 0 + .long 1608515584 + .long 0 + .long 1608515584 + .long 0 + .long 1608515584 + .long 0 + .long 1608515584 + .long 0 + .long 1608515584 + .long 0 + .long 1608515584 + .long 0 + .long 1608515584 + .long 4294967295 + .long 2146435071 + .long 4294967295 + .long 2146435071 + .long 4294967295 + .long 2146435071 + .long 4294967295 + .long 2146435071 + .long 4294967295 + .long 2146435071 + .long 4294967295 + .long 2146435071 + .long 4294967295 + .long 2146435071 + .long 4294967295 + .long 2146435071 + .long 246350567 + .long 1068708642 + .long 246350567 + .long 1068708642 + .long 246350567 + .long 1068708642 + .long 246350567 + .long 1068708642 + .long 246350567 + .long 1068708642 + .long 246350567 + .long 1068708642 + .long 246350567 + .long 1068708642 + .long 246350567 + .long 1068708642 + .long 1431445118 + .long 3217380693 + .long 1431445118 + .long 3217380693 + .long 1431445118 + .long 3217380693 + .long 1431445118 + .long 3217380693 + .long 1431445118 + .long 3217380693 + .long 1431445118 + .long 3217380693 + .long 1431445118 + .long 3217380693 + .long 1431445118 + .long 3217380693 + .long 26490386 + .long 1070694400 + .long 26490386 + .long 1070694400 + .long 26490386 + .long 1070694400 + .long 26490386 + .long 1070694400 + .long 26490386 + .long 1070694400 + .long 26490386 + .long 1070694400 + .long 26490386 + .long 1070694400 + .long 26490386 + .long 1070694400 + .long 20643840 + .long 1070858240 + .long 20643840 + .long 1070858240 + .long 20643840 + .long 1070858240 + .long 20643840 + .long 1070858240 + .long 20643840 + .long 1070858240 + .long 20643840 + .long 1070858240 + .long 20643840 + .long 1070858240 + .long 20643840 + .long 1070858240 + .long 0 + .long 1071120384 + .long 0 + .long 1071120384 + .long 0 + .long 1071120384 + .long 0 + .long 1071120384 + .long 0 + .long 1071120384 + .long 0 + .long 1071120384 + .long 0 + .long 1071120384 + .long 0 + .long 1071120384 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 1071120384 + .long 0 + .long 1071120384 + .long 0 + .long 1071120384 + .long 0 + .long 1071120384 + .long 0 + .long 1071120384 + .long 0 + .long 1071120384 + .long 0 + .long 1071120384 + .long 0 + .long 1071120384 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 1071644672 + .long 0 + .long 32768 + .long 0 + .long 32768 + .long 0 + .long 32768 + .long 0 + .long 32768 + .long 0 + .long 32768 + .long 0 + .long 32768 + .long 0 + .long 32768 + .long 0 + .long 32768 + .long 0 + .long 4294901760 + .long 0 + .long 4294901760 + .long 0 + .long 4294901760 + .long 0 + .long 4294901760 + .long 0 + .long 4294901760 + .long 0 + .long 4294901760 + .long 0 + .long 4294901760 + .long 0 + .long 4294901760 + .long 0 + .long 1069547520 + .long 0 + .long 1069547520 + .long 0 + .long 1069547520 + .long 0 + .long 1069547520 + .long 0 + .long 1069547520 + .long 0 + .long 1069547520 + .long 0 + .long 1069547520 + .long 0 + .long 1069547520 + .long 0 + .long 1074790400 + .long 0 + .long 1074790400 + .long 0 + .long 1074790400 + .long 0 + .long 1074790400 + .long 0 + .long 1074790400 + .long 0 + .long 1074790400 + .long 0 + .long 1074790400 + .long 0 + .long 1074790400 + .long 1075921768 + .long 3216615856 + .long 1075921768 + .long 3216615856 + .long 1075921768 + .long 3216615856 + .long 1075921768 + .long 3216615856 + .long 1075921768 + .long 3216615856 + .long 1075921768 + .long 3216615856 + .long 1075921768 + .long 3216615856 + .long 1075921768 + .long 3216615856 + .long 1847891832 + .long 1069318246 + .long 1847891832 + .long 1069318246 + .long 1847891832 + .long 1069318246 + .long 1847891832 + .long 1069318246 + .long 1847891832 + .long 1069318246 + .long 1847891832 + .long 1069318246 + .long 1847891832 + .long 1069318246 + .long 1847891832 + .long 1069318246 + .long 2315602889 + .long 3217031163 + .long 2315602889 + .long 3217031163 + .long 2315602889 + .long 3217031163 + .long 2315602889 + .long 3217031163 + .long 2315602889 + .long 3217031163 + .long 2315602889 + .long 3217031163 + .long 2315602889 + .long 3217031163 + .long 2315602889 + .long 3217031163 + .long 4145174257 + .long 1069697314 + .long 4145174257 + .long 1069697314 + .long 4145174257 + .long 1069697314 + .long 4145174257 + .long 1069697314 + .long 4145174257 + .long 1069697314 + .long 4145174257 + .long 1069697314 + .long 4145174257 + .long 1069697314 + .long 4145174257 + .long 1069697314 + .long 1436264246 + .long 3217380693 + .long 1436264246 + .long 3217380693 + .long 1436264246 + .long 3217380693 + .long 1436264246 + .long 3217380693 + .long 1436264246 + .long 3217380693 + .long 1436264246 + .long 3217380693 + .long 1436264246 + .long 3217380693 + .long 1436264246 + .long 3217380693 + .long 2579396527 + .long 1070176665 + .long 2579396527 + .long 1070176665 + .long 2579396527 + .long 1070176665 + .long 2579396527 + .long 1070176665 + .long 2579396527 + .long 1070176665 + .long 2579396527 + .long 1070176665 + .long 2579396527 + .long 1070176665 + .long 2579396527 + .long 1070176665 + .long 4294966373 + .long 3218079743 + .long 4294966373 + .long 3218079743 + .long 4294966373 + .long 3218079743 + .long 4294966373 + .long 3218079743 + .long 4294966373 + .long 3218079743 + .long 4294966373 + .long 3218079743 + .long 4294966373 + .long 3218079743 + .long 4294966373 + .long 3218079743 + .long 1431655617 + .long 1070945621 + .long 1431655617 + .long 1070945621 + .long 1431655617 + .long 1070945621 + .long 1431655617 + .long 1070945621 + .long 1431655617 + .long 1070945621 + .long 1431655617 + .long 1070945621 + .long 1431655617 + .long 1070945621 + .long 1431655617 + .long 1070945621 + .long 0 + .long 3219128320 + .long 0 + .long 3219128320 + .long 0 + .long 3219128320 + .long 0 + .long 3219128320 + .long 0 + .long 3219128320 + .long 0 + .long 3219128320 + .long 0 + .long 3219128320 + .long 0 + .long 3219128320 + .long 4277796864 + .long 1072049730 + .long 4277796864 + .long 1072049730 + .long 4277796864 + .long 1072049730 + .long 4277796864 + .long 1072049730 + .long 4277796864 + .long 1072049730 + .long 4277796864 + .long 1072049730 + .long 4277796864 + .long 1072049730 + .long 4277796864 + .long 1072049730 + .long 3164471296 + .long 1031600026 + .long 3164471296 + .long 1031600026 + .long 3164471296 + .long 1031600026 + .long 3164471296 + .long 1031600026 + .long 3164471296 + .long 1031600026 + .long 3164471296 + .long 1031600026 + .long 3164471296 + .long 1031600026 + .long 3164471296 + .long 1031600026 + .type __svml_dacosh_data_internal_avx512,@object + .size __svml_dacosh_data_internal_avx512,2048 + .align 8 + +__dacosh_la_CoutTab: + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 2146435072 + .long 0 + .long 4293918720 + .type __dacosh_la_CoutTab,@object + .size __dacosh_la_CoutTab,32 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core-avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core-avx2.S new file mode 100644 index 0000000000..a54c6863c5 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core-avx2.S @@ -0,0 +1,20 @@ +/* AVX2 version of vectorized acoshf. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define _ZGVeN16v_acoshf _ZGVeN16v_acoshf_avx2_wrapper +#include "../svml_s_acoshf16_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core.c new file mode 100644 index 0000000000..8109b73ebf --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core.c @@ -0,0 +1,28 @@ +/* Multiple versions of vectorized acoshf, vector length is 16. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define SYMBOL_NAME _ZGVeN16v_acoshf +#include "ifunc-mathvec-avx512-skx.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVeN16v_acoshf, __GI__ZGVeN16v_acoshf, + __redirect__ZGVeN16v_acoshf) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core_avx512.S b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core_avx512.S new file mode 100644 index 0000000000..e187d19950 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core_avx512.S @@ -0,0 +1,661 @@ +/* Function acoshf vectorized with AVX-512. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + https://www.gnu.org/licenses/. */ + +/* + * ALGORITHM DESCRIPTION: + * + * Compute acosh(x) as log(x + sqrt(x*x - 1)) + * using RSQRT instructions for starting the + * square root approximation, and small table lookups for log + * that map to AVX-512 permute instructions + * + * Special cases: + * + * acosh(NaN) = quiet NaN, and raise invalid exception + * acosh(-INF) = NaN + * acosh(+INF) = +INF + * acosh(x) = NaN if x < 1 + * acosh(1) = +0 + * + */ + +#include + + .text +ENTRY(_ZGVeN16v_acoshf_skx) + pushq %rbp + cfi_def_cfa_offset(16) + movq %rsp, %rbp + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + andq $-64, %rsp + subq $192, %rsp + vmovups 256+__svml_sacosh_data_internal_avx512(%rip), %zmm1 + +/* + * sqrt(1+x^2) ~ Sh + Sl + Sh*Eh*poly_s + * poly_s = c1+c2*Eh + */ + vmovups 640+__svml_sacosh_data_internal_avx512(%rip), %zmm13 + vmovups 704+__svml_sacosh_data_internal_avx512(%rip), %zmm15 + +/* polynomial computation for small inputs */ + vmovups 576+__svml_sacosh_data_internal_avx512(%rip), %zmm9 + +/* very large inputs ? */ + vmovups 448+__svml_sacosh_data_internal_avx512(%rip), %zmm10 + +/* out of range inputs? */ + vmovups 512+__svml_sacosh_data_internal_avx512(%rip), %zmm11 + +/* not a very small input ? */ + vmovups 384+__svml_sacosh_data_internal_avx512(%rip), %zmm6 + vmovaps %zmm0, %zmm8 + +/* x^2 - 1 */ + vmovaps %zmm1, %zmm7 + vfmsub231ps {rn-sae}, %zmm8, %zmm8, %zmm7 + vcmpps $21, {sae}, %zmm10, %zmm8, %k2 + vcmpps $22, {sae}, %zmm11, %zmm8, %k0 + vcmpps $18, {sae}, %zmm1, %zmm8, %k1 + vrsqrt14ps %zmm7, %zmm12 + vcmpps $21, {sae}, %zmm6, %zmm7, %k3 + vmulps {rn-sae}, %zmm9, %zmm7, %zmm4 + +/* Sh ~sqrt(-1+x^2) */ + vmulps {rn-sae}, %zmm12, %zmm7, %zmm5 + kmovw %k0, %edx + kmovw %k1, %eax + +/* Sh+x */ + vaddps {rn-sae}, %zmm8, %zmm5, %zmm9 + +/* (Yh*R0)_low */ + vmovaps %zmm7, %zmm0 + orl %eax, %edx + +/* rel. error term: Eh=1-Sh*R0 */ + vmovaps %zmm1, %zmm14 + vfmsub213ps {rn-sae}, %zmm5, %zmm12, %zmm0 + vfnmadd231ps {rn-sae}, %zmm5, %zmm12, %zmm14 + +/* rel. error term: Eh=(1-Sh*R0)-Sl*R0 */ + vfnmadd231ps {rn-sae}, %zmm0, %zmm12, %zmm14 + +/* Sh*Eh */ + vmulps {rn-sae}, %zmm14, %zmm5, %zmm3 + vfmadd231ps {rn-sae}, %zmm14, %zmm13, %zmm15 + +/* Sl + Sh*Eh*poly_s */ + vfmadd213ps {rn-sae}, %zmm0, %zmm15, %zmm3 + +/* Shh */ + vsubps {rn-sae}, %zmm8, %zmm9, %zmm15 + +/* polynomial computation for small inputs */ + vaddps {rn-sae}, %zmm3, %zmm5, %zmm0 + +/* Xin0+Sl+Sh*Eh*poly_s ~ x+sqrt(1+x^2) */ + vaddps {rn-sae}, %zmm3, %zmm9, %zmm2 + +/* Shl */ + vsubps {rn-sae}, %zmm15, %zmm5, %zmm10 + vfmadd231ps {rn-sae}, %zmm0, %zmm4, %zmm0 + +/* fixup for very large inputs */ + vmovups 896+__svml_sacosh_data_internal_avx512(%rip), %zmm4 + +/* Sl_high */ + vsubps {rn-sae}, %zmm9, %zmm2, %zmm5 + +/* polynomial */ + vmovups 1024+__svml_sacosh_data_internal_avx512(%rip), %zmm9 + vmulps {rn-sae}, %zmm4, %zmm8, %zmm2{%k2} + +/* -K*L2L + Tl */ + vmovups 1280+__svml_sacosh_data_internal_avx512(%rip), %zmm4 + +/* Sl_l */ + vsubps {rn-sae}, %zmm5, %zmm3, %zmm3 + vrcp14ps %zmm2, %zmm11 + vmovups 128+__svml_sacosh_data_internal_avx512(%rip), %zmm5 + +/* Xin_low */ + vaddps {rn-sae}, %zmm10, %zmm3, %zmm13 + +/* round reciprocal to 1+4b mantissas */ + vpaddd 768+__svml_sacosh_data_internal_avx512(%rip), %zmm11, %zmm12 + vmovups 1152+__svml_sacosh_data_internal_avx512(%rip), %zmm10 + vandps 832+__svml_sacosh_data_internal_avx512(%rip), %zmm12, %zmm14 + +/* fixup for very large inputs */ + vxorps %zmm13, %zmm13, %zmm13{%k2} + +/* reduced argument for log(): (Rcp*Xin-1)+Rcp*Xin_low */ + vfmsub231ps {rn-sae}, %zmm14, %zmm2, %zmm1 + +/* exponents */ + vgetexpps {sae}, %zmm14, %zmm12 + vmovups 960+__svml_sacosh_data_internal_avx512(%rip), %zmm2 + +/* Prepare table index */ + vpsrld $18, %zmm14, %zmm3 + vfmadd231ps {rn-sae}, %zmm14, %zmm13, %zmm1 + vmovups 1088+__svml_sacosh_data_internal_avx512(%rip), %zmm13 + +/* Table lookups */ + vmovups __svml_sacosh_data_internal_avx512(%rip), %zmm14 + vsubps {rn-sae}, %zmm2, %zmm12, %zmm12{%k2} + vpermt2ps 192+__svml_sacosh_data_internal_avx512(%rip), %zmm3, %zmm5 + vpermt2ps 64+__svml_sacosh_data_internal_avx512(%rip), %zmm3, %zmm14 + +/* R^2 */ + vmulps {rn-sae}, %zmm1, %zmm1, %zmm11 + +/* -K*L2H + Th */ + vmovups 1216+__svml_sacosh_data_internal_avx512(%rip), %zmm2 + vfmadd231ps {rn-sae}, %zmm1, %zmm9, %zmm13 + vfnmadd231ps {rn-sae}, %zmm12, %zmm2, %zmm14 + vfnmadd213ps {rn-sae}, %zmm5, %zmm4, %zmm12 + vfmadd213ps {rn-sae}, %zmm10, %zmm1, %zmm13 + +/* Tl + R^2*Poly */ + vfmadd213ps {rn-sae}, %zmm12, %zmm11, %zmm13 + +/* R+Tl + R^2*Poly */ + vaddps {rn-sae}, %zmm1, %zmm13, %zmm1 + vaddps {rn-sae}, %zmm1, %zmm14, %zmm0{%k3} + jne .LBL_1_3 + +.LBL_1_2: + movq %rbp, %rsp + popq %rbp + cfi_def_cfa(7, 8) + cfi_restore(6) + ret + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + +.LBL_1_3: + vmovups %zmm8, 64(%rsp) + vmovups %zmm0, 128(%rsp) + je .LBL_1_2 + xorl %eax, %eax + vzeroupper + kmovw %k4, 24(%rsp) + kmovw %k5, 16(%rsp) + kmovw %k6, 8(%rsp) + kmovw %k7, (%rsp) + movq %rsi, 40(%rsp) + movq %rdi, 32(%rsp) + movq %r12, 56(%rsp) + .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x68, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x78, 0xff, 0xff, 0xff, 0x22 + movl %eax, %r12d + movq %r13, 48(%rsp) + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22 + movl %edx, %r13d + .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22 + +.LBL_1_7: + btl %r12d, %r13d + jc .LBL_1_10 + +.LBL_1_8: + incl %r12d + cmpl $16, %r12d + jl .LBL_1_7 + kmovw 24(%rsp), %k4 + cfi_restore(122) + kmovw 16(%rsp), %k5 + cfi_restore(123) + kmovw 8(%rsp), %k6 + cfi_restore(124) + kmovw (%rsp), %k7 + cfi_restore(125) + vmovups 128(%rsp), %zmm0 + movq 40(%rsp), %rsi + cfi_restore(4) + movq 32(%rsp), %rdi + cfi_restore(5) + movq 56(%rsp), %r12 + cfi_restore(12) + movq 48(%rsp), %r13 + cfi_restore(13) + jmp .LBL_1_2 + .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x68, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x78, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22 + +.LBL_1_10: + lea 64(%rsp,%r12,4), %rdi + lea 128(%rsp,%r12,4), %rsi + call __svml_sacosh_cout_rare_internal + jmp .LBL_1_8 + +END(_ZGVeN16v_acoshf_skx) + + .align 16,0x90 + +__svml_sacosh_cout_rare_internal: + + cfi_startproc + + movl (%rdi), %eax + movl %eax, -8(%rsp) + andl $2139095040, %eax + cmpl $2139095040, %eax + je .LBL_2_8 + +.LBL_2_2: + movl -8(%rsp), %eax + cmpl $1065353216, %eax + je .LBL_2_7 + cmpl $2139095040, %eax + jne .LBL_2_5 + movl 8+__sacosh_la__iml_sacosh_cout_tab(%rip), %eax + movl %eax, (%rsi) + xorl %eax, %eax + ret + +.LBL_2_5: + movss 8+__sacosh_la__iml_sacosh_cout_tab(%rip), %xmm0 + movl $1, %eax + mulss 4+__sacosh_la__iml_sacosh_cout_tab(%rip), %xmm0 + movss %xmm0, (%rsi) + ret + +.LBL_2_7: + movl 4+__sacosh_la__iml_sacosh_cout_tab(%rip), %eax + movl %eax, (%rsi) + xorl %eax, %eax + ret + +.LBL_2_8: + testl $8388607, -8(%rsp) + je .LBL_2_2 + movss -8(%rsp), %xmm0 + xorl %eax, %eax + mulss -8(%rsp), %xmm0 + movss %xmm0, (%rsi) + ret + + cfi_endproc + + .type __svml_sacosh_cout_rare_internal,@function + .size __svml_sacosh_cout_rare_internal,.-__svml_sacosh_cout_rare_internal + + .section .rodata, "a" + .align 64 + +__svml_sacosh_data_internal_avx512: + .long 0 + .long 3170631680 + .long 3178790912 + .long 3182919680 + .long 3186704384 + .long 3189022720 + .long 3190816768 + .long 3192561664 + .long 3194257408 + .long 3195912192 + .long 3196796928 + .long 3197583360 + .long 3198357504 + .long 3199111168 + .long 3199848448 + .long 3200569344 + .long 3201277952 + .long 3201966080 + .long 3202646016 + .long 3203309568 + .long 3203960832 + .long 3204524032 + .long 3204837376 + .long 3205146624 + .long 3205447680 + .long 3205744640 + .long 3206037504 + .long 3206324224 + .long 3206606848 + .long 3206883328 + .long 3207155712 + .long 3207424000 + .long 2147483648 + .long 3072770974 + .long 943319038 + .long 3075640037 + .long 930648533 + .long 3089726480 + .long 936349528 + .long 944943494 + .long 897812054 + .long 3087808175 + .long 941839444 + .long 3093478113 + .long 937982919 + .long 931430736 + .long 924853521 + .long 3075349253 + .long 945558336 + .long 3094838221 + .long 906200662 + .long 3084126596 + .long 3088015279 + .long 3089451852 + .long 3093678154 + .long 938521645 + .long 3091119329 + .long 3090949395 + .long 933442244 + .long 930702671 + .long 945827699 + .long 913590776 + .long 3082066287 + .long 3087046763 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 1593835520 + .long 1593835520 + .long 1593835520 + .long 1593835520 + .long 1593835520 + .long 1593835520 + .long 1593835520 + .long 1593835520 + .long 1593835520 + .long 1593835520 + .long 1593835520 + .long 1593835520 + .long 1593835520 + .long 1593835520 + .long 1593835520 + .long 1593835520 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 3190466014 + .long 3190466014 + .long 3190466014 + .long 3190466014 + .long 3190466014 + .long 3190466014 + .long 3190466014 + .long 3190466014 + .long 3190466014 + .long 3190466014 + .long 3190466014 + .long 3190466014 + .long 3190466014 + .long 3190466014 + .long 3190466014 + .long 3190466014 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 131072 + .long 131072 + .long 131072 + .long 131072 + .long 131072 + .long 131072 + .long 131072 + .long 131072 + .long 131072 + .long 131072 + .long 131072 + .long 131072 + .long 131072 + .long 131072 + .long 131072 + .long 131072 + .long 4294705152 + .long 4294705152 + .long 4294705152 + .long 4294705152 + .long 4294705152 + .long 4294705152 + .long 4294705152 + .long 4294705152 + .long 4294705152 + .long 4294705152 + .long 4294705152 + .long 4294705152 + .long 4294705152 + .long 4294705152 + .long 4294705152 + .long 4294705152 + .long 1040187392 + .long 1040187392 + .long 1040187392 + .long 1040187392 + .long 1040187392 + .long 1040187392 + .long 1040187392 + .long 1040187392 + .long 1040187392 + .long 1040187392 + .long 1040187392 + .long 1040187392 + .long 1040187392 + .long 1040187392 + .long 1040187392 + .long 1040187392 + .long 1082130432 + .long 1082130432 + .long 1082130432 + .long 1082130432 + .long 1082130432 + .long 1082130432 + .long 1082130432 + .long 1082130432 + .long 1082130432 + .long 1082130432 + .long 1082130432 + .long 1082130432 + .long 1082130432 + .long 1082130432 + .long 1082130432 + .long 1082130432 + .long 3196061712 + .long 3196061712 + .long 3196061712 + .long 3196061712 + .long 3196061712 + .long 3196061712 + .long 3196061712 + .long 3196061712 + .long 3196061712 + .long 3196061712 + .long 3196061712 + .long 3196061712 + .long 3196061712 + .long 3196061712 + .long 3196061712 + .long 3196061712 + .long 1051373854 + .long 1051373854 + .long 1051373854 + .long 1051373854 + .long 1051373854 + .long 1051373854 + .long 1051373854 + .long 1051373854 + .long 1051373854 + .long 1051373854 + .long 1051373854 + .long 1051373854 + .long 1051373854 + .long 1051373854 + .long 1051373854 + .long 1051373854 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 1060204544 + .long 1060204544 + .long 1060204544 + .long 1060204544 + .long 1060204544 + .long 1060204544 + .long 1060204544 + .long 1060204544 + .long 1060204544 + .long 1060204544 + .long 1060204544 + .long 1060204544 + .long 1060204544 + .long 1060204544 + .long 1060204544 + .long 1060204544 + .long 939916788 + .long 939916788 + .long 939916788 + .long 939916788 + .long 939916788 + .long 939916788 + .long 939916788 + .long 939916788 + .long 939916788 + .long 939916788 + .long 939916788 + .long 939916788 + .long 939916788 + .long 939916788 + .long 939916788 + .long 939916788 + .type __svml_sacosh_data_internal_avx512,@object + .size __svml_sacosh_data_internal_avx512,1344 + .align 4 + +__sacosh_la__iml_sacosh_cout_tab: + .long 1065353216 + .long 0 + .long 2139095040 + .type __sacosh_la__iml_sacosh_cout_tab,@object + .size __sacosh_la__iml_sacosh_cout_tab,12 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core-sse2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core-sse2.S new file mode 100644 index 0000000000..d789ec1d47 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core-sse2.S @@ -0,0 +1,20 @@ +/* SSE2 version of vectorized acoshf, vector length is 4. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define _ZGVbN4v_acoshf _ZGVbN4v_acoshf_sse2 +#include "../svml_s_acoshf4_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core.c new file mode 100644 index 0000000000..b2d9101c47 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core.c @@ -0,0 +1,28 @@ +/* Multiple versions of vectorized acoshf, vector length is 4. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define SYMBOL_NAME _ZGVbN4v_acoshf +#include "ifunc-mathvec-sse4_1.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVbN4v_acoshf, __GI__ZGVbN4v_acoshf, + __redirect__ZGVbN4v_acoshf) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core_sse4.S b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core_sse4.S new file mode 100644 index 0000000000..d3694f56c4 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core_sse4.S @@ -0,0 +1,2498 @@ +/* Function acoshf vectorized with SSE4. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + https://www.gnu.org/licenses/. */ + +/* + * ALGORITHM DESCRIPTION: + * + * Compute acosh(x) as log(x + sqrt(x*x - 1)) + * + * Special cases: + * + * acosh(NaN) = quiet NaN, and raise invalid exception + * acosh(-INF) = NaN + * acosh(+INF) = +INF + * acosh(x) = NaN if x < 1 + * acosh(1) = +0 + * + */ + +#include + + .text +ENTRY(_ZGVbN4v_acoshf_sse4) + pushq %rbp + cfi_def_cfa_offset(16) + movq %rsp, %rbp + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + andq $-64, %rsp + subq $320, %rsp + +/* Compute U = X - 1 and V = X + 1, naively first. */ + movaps %xmm0, %xmm3 + +/* Load constants, always including One = 1 */ + movups 1920+__svml_sacosh_data_internal(%rip), %xmm1 + +/* + * Check that 1 < X < +inf; otherwise go to the callout function. + * We need the callout for X = 1 to avoid division by zero below. + * This test ensures that callout handles NaN and either infinity. + */ + movaps %xmm0, %xmm5 + movaps %xmm1, %xmm7 + movaps %xmm1, %xmm2 + +/* Finally, express Y + W = U * V accurately where Y has <= 8 bits */ + movups 3008+__svml_sacosh_data_internal(%rip), %xmm4 + subps %xmm1, %xmm3 + addps %xmm0, %xmm7 + cmpnleps 2624+__svml_sacosh_data_internal(%rip), %xmm5 + cmpnltps %xmm0, %xmm2 + +/* For low-accuracy versions, naivety is harmless */ + mulps %xmm3, %xmm7 + movups %xmm15, 144(%rsp) + .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22 + movaps %xmm4, %xmm15 + andps %xmm7, %xmm15 + orps %xmm2, %xmm5 + +/* + * Compute R = 1/sqrt(Y + W) * (1 + d) + * Force R to <= 8 significant bits. + * This means that R * Y and R^2 * Y are exactly representable. + */ + rsqrtps %xmm15, %xmm6 + movmskps %xmm5, %edx + subps %xmm15, %xmm7 + andps %xmm4, %xmm6 + +/* + * Compute e = -(2 * d + d^2) + * The first FMR is exact, and the rounding error in the other is acceptable + * since d and e are ~ 2^-8 + */ + movaps %xmm1, %xmm5 + +/* + * Compute S = (Y/sqrt(Y + W)) * (1 + d) + * and T = (W/sqrt(Y + W)) * (1 + d) + * so that S + T = sqrt(Y + W) * (1 + d) + * S is exact, and the rounding error in T is OK. + */ + mulps %xmm6, %xmm15 + movaps %xmm6, %xmm4 + mulps %xmm6, %xmm7 + mulps %xmm15, %xmm4 + mulps %xmm7, %xmm6 + +/* + * For low-accuracy versions, the computation can be done + * just as U + ((S + T) + (S + T) * Corr) + */ + addps %xmm7, %xmm15 + subps %xmm4, %xmm5 + +/* + * Now we feed into the log1p code, using H in place of _VARG1 and + * also adding L into Xl. + * compute 1+x as high, low parts + */ + movaps %xmm1, %xmm7 + +/* + * The following computation can go wrong for very large X, e.g. + * the X^2 - 1 = U * V can overflow. But for large X we have + * acosh(X) / log(2 X) - 1 =~= 1/(4 * X^2), so for X >= 2^30 + * we can just later stick X back into the log and tweak up the exponent. + * Actually we scale X by 2^-30 and tweak the exponent up by 31, + * to stay in the safe range for the later log computation. + * Compute a flag now telling us when to do this. + */ + movaps %xmm0, %xmm2 + cmpltps 2368+__svml_sacosh_data_internal(%rip), %xmm2 + subps %xmm6, %xmm5 + +/* + * Now 1 / (1 + d) + * = 1 / (1 + (sqrt(1 - e) - 1)) + * = 1 / sqrt(1 - e) + * = 1 + 1/2 * e + 3/8 * e^2 + 5/16 * e^3 + 35/128 * e^4 + ... + * So compute the first three nonconstant terms of that, so that + * we have a relative correction (1 + Corr) to apply to S etc. + * C1 = 1/2 + * C2 = 3/8 + * C3 = 5/16 + */ + movups 2496+__svml_sacosh_data_internal(%rip), %xmm6 + movaps %xmm2, %xmm4 + mulps %xmm5, %xmm6 + addps 2432+__svml_sacosh_data_internal(%rip), %xmm6 + mulps %xmm5, %xmm6 + addps 2560+__svml_sacosh_data_internal(%rip), %xmm6 + mulps %xmm6, %xmm5 + mulps %xmm15, %xmm5 + addps %xmm5, %xmm15 + movaps %xmm1, %xmm5 + addps %xmm15, %xmm3 + movaps %xmm1, %xmm15 + maxps %xmm3, %xmm7 + minps %xmm3, %xmm5 + movaps %xmm7, %xmm6 + +/* Now multiplex to the case X = 2^-30 * input, Xl = 0 in the "big" case. */ + movups 3072+__svml_sacosh_data_internal(%rip), %xmm3 + addps %xmm5, %xmm6 + mulps %xmm0, %xmm3 + subps %xmm6, %xmm7 + andnps %xmm3, %xmm4 + andps %xmm2, %xmm6 + orps %xmm6, %xmm4 + addps %xmm7, %xmm5 + +/* + * Now resume the main code. + * reduction: compute r,n + */ + movdqu 2240+__svml_sacosh_data_internal(%rip), %xmm7 + andps %xmm2, %xmm5 + movdqu 2304+__svml_sacosh_data_internal(%rip), %xmm6 + psubd %xmm7, %xmm4 + pand %xmm4, %xmm6 + psrad $23, %xmm4 + cvtdq2ps %xmm4, %xmm3 + pslld $23, %xmm4 + paddd %xmm7, %xmm6 + psubd %xmm4, %xmm15 + +/* polynomial evaluation */ + subps %xmm1, %xmm6 + mulps %xmm15, %xmm5 + movups 2096+__svml_sacosh_data_internal(%rip), %xmm1 + addps %xmm6, %xmm5 + mulps %xmm5, %xmm1 + movaps %xmm2, %xmm6 + +/* Add 31 to the exponent in the "large" case to get log(2 * input) */ + movups 2816+__svml_sacosh_data_internal(%rip), %xmm4 + addps 2080+__svml_sacosh_data_internal(%rip), %xmm1 + addps %xmm3, %xmm4 + mulps %xmm5, %xmm1 + andnps %xmm4, %xmm6 + andps %xmm2, %xmm3 + orps %xmm3, %xmm6 + addps 2064+__svml_sacosh_data_internal(%rip), %xmm1 + +/* final reconstruction */ + mulps 3136+__svml_sacosh_data_internal(%rip), %xmm6 + mulps %xmm5, %xmm1 + addps 2048+__svml_sacosh_data_internal(%rip), %xmm1 + mulps %xmm5, %xmm1 + addps 2032+__svml_sacosh_data_internal(%rip), %xmm1 + mulps %xmm5, %xmm1 + addps 2016+__svml_sacosh_data_internal(%rip), %xmm1 + mulps %xmm5, %xmm1 + addps 2000+__svml_sacosh_data_internal(%rip), %xmm1 + mulps %xmm5, %xmm1 + addps 1984+__svml_sacosh_data_internal(%rip), %xmm1 + mulps %xmm5, %xmm1 + mulps %xmm5, %xmm1 + addps %xmm1, %xmm5 + addps %xmm6, %xmm5 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + movups 144(%rsp), %xmm15 + cfi_restore(32) + movaps %xmm5, %xmm0 + movq %rbp, %rsp + popq %rbp + cfi_def_cfa(7, 8) + cfi_restore(6) + ret + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22 + +.LBL_1_3: + movups %xmm0, 192(%rsp) + movups %xmm5, 256(%rsp) + xorl %eax, %eax + movups %xmm8, 96(%rsp) + movups %xmm9, 80(%rsp) + movups %xmm10, 64(%rsp) + movups %xmm11, 48(%rsp) + movups %xmm12, 32(%rsp) + movups %xmm13, 16(%rsp) + movups %xmm14, (%rsp) + movq %rsi, 120(%rsp) + movq %rdi, 112(%rsp) + movq %r12, 136(%rsp) + .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x38, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xfe, 0xff, 0xff, 0x22 + movl %eax, %r12d + movq %r13, 128(%rsp) + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22 + movl %edx, %r13d + +.LBL_1_7: + btl %r12d, %r13d + jc .LBL_1_10 + +.LBL_1_8: + incl %r12d + cmpl $4, %r12d + jl .LBL_1_7 + movups 96(%rsp), %xmm8 + cfi_restore(25) + movups 80(%rsp), %xmm9 + cfi_restore(26) + movups 64(%rsp), %xmm10 + cfi_restore(27) + movups 48(%rsp), %xmm11 + cfi_restore(28) + movups 32(%rsp), %xmm12 + cfi_restore(29) + movups 16(%rsp), %xmm13 + cfi_restore(30) + movups (%rsp), %xmm14 + cfi_restore(31) + movq 120(%rsp), %rsi + cfi_restore(4) + movq 112(%rsp), %rdi + cfi_restore(5) + movq 136(%rsp), %r12 + cfi_restore(12) + movq 128(%rsp), %r13 + cfi_restore(13) + movups 256(%rsp), %xmm5 + jmp .LBL_1_2 + .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x38, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xfe, 0xff, 0xff, 0x22 + +.LBL_1_10: + lea 192(%rsp,%r12,4), %rdi + lea 256(%rsp,%r12,4), %rsi + call __svml_sacosh_cout_rare_internal + jmp .LBL_1_8 + +END(_ZGVbN4v_acoshf_sse4) + + .align 16,0x90 + +__svml_sacosh_cout_rare_internal: + + cfi_startproc + + movl (%rdi), %eax + movl %eax, -8(%rsp) + andl $2139095040, %eax + cmpl $2139095040, %eax + je .LBL_2_8 + +.LBL_2_2: + movl -8(%rsp), %eax + cmpl $1065353216, %eax + je .LBL_2_7 + cmpl $2139095040, %eax + jne .LBL_2_5 + movl 8+__sacosh_la__iml_sacosh_cout_tab(%rip), %eax + movl %eax, (%rsi) + xorl %eax, %eax + ret + +.LBL_2_5: + movss 8+__sacosh_la__iml_sacosh_cout_tab(%rip), %xmm0 + movl $1, %eax + mulss 4+__sacosh_la__iml_sacosh_cout_tab(%rip), %xmm0 + movss %xmm0, (%rsi) + ret + +.LBL_2_7: + movl 4+__sacosh_la__iml_sacosh_cout_tab(%rip), %eax + movl %eax, (%rsi) + xorl %eax, %eax + ret + +.LBL_2_8: + testl $8388607, -8(%rsp) + je .LBL_2_2 + movss -8(%rsp), %xmm0 + xorl %eax, %eax + mulss -8(%rsp), %xmm0 + movss %xmm0, (%rsi) + ret + + cfi_endproc + + .type __svml_sacosh_cout_rare_internal,@function + .size __svml_sacosh_cout_rare_internal,.-__svml_sacosh_cout_rare_internal + + .section .rodata, "a" + .align 64 + +__svml_sacosh_data_internal: + .long 3266227256 + .long 3107766024 + .long 3266228276 + .long 3107776882 + .long 3266229284 + .long 3109949545 + .long 3266230292 + .long 3108055846 + .long 3266231292 + .long 3106351937 + .long 3266232276 + .long 3109092567 + .long 3266233260 + .long 3107948216 + .long 3266234236 + .long 3107170960 + .long 3266235204 + .long 3106817287 + .long 3266236164 + .long 3106942449 + .long 3266237116 + .long 3107600489 + .long 3266238060 + .long 3108844279 + .long 3266239004 + .long 3106531253 + .long 3266239932 + .long 3109100650 + .long 3266240860 + .long 3108213420 + .long 3266241780 + .long 3108112381 + .long 3266242692 + .long 3108845034 + .long 3266243604 + .long 3106263589 + .long 3266244500 + .long 3108802209 + .long 3266245396 + .long 3108116909 + .long 3266246284 + .long 3108445707 + .long 3266247164 + .long 3109831435 + .long 3266248044 + .long 3108121760 + .long 3266248916 + .long 3107552123 + .long 3266249780 + .long 3108162844 + .long 3266250644 + .long 3105799146 + .long 3266251492 + .long 3108888393 + .long 3266252340 + .long 3109079979 + .long 3266253188 + .long 3106411173 + .long 3266254020 + .long 3109307139 + .long 3266254852 + .long 3109415127 + .long 3266255684 + .long 3106770317 + .long 3266256500 + .long 3109795834 + .long 3266257324 + .long 3105942641 + .long 3266258132 + .long 3107826892 + .long 3266258940 + .long 3107092610 + .long 3266259740 + .long 3107966131 + .long 3266260540 + .long 3106284596 + .long 3266261332 + .long 3106273188 + .long 3266262116 + .long 3107962226 + .long 3266262900 + .long 3107187186 + .long 3266263676 + .long 3108171617 + .long 3266264452 + .long 3106749947 + .long 3266265220 + .long 3107144703 + .long 3266265980 + .long 3109383615 + .long 3266266740 + .long 3109299629 + .long 3266267500 + .long 3106919521 + .long 3266268252 + .long 3106463913 + .long 3266268996 + .long 3107958670 + .long 3266269740 + .long 3107234917 + .long 3266270476 + .long 3108511954 + .long 3266271212 + .long 3107620056 + .long 3266271940 + .long 3108777693 + .long 3266272668 + .long 3107814325 + .long 3266273388 + .long 3108947630 + .long 3266274108 + .long 3108006290 + .long 3266274820 + .long 3109207222 + .long 3266275532 + .long 3108378366 + .long 3266276236 + .long 3109735912 + .long 3266276940 + .long 3109107087 + .long 3266277644 + .long 3106513079 + .long 3266278340 + .long 3106169044 + .long 3266279028 + .long 3108095503 + .long 3266279716 + .long 3108118349 + .long 3266280404 + .long 3106257463 + .long 3266281084 + .long 3106726720 + .long 3266281756 + .long 3109545389 + .long 3266282436 + .long 3106343833 + .long 3266283100 + .long 3109723642 + .long 3266283772 + .long 3107120300 + .long 3266284436 + .long 3106940529 + .long 3266285092 + .long 3109202170 + .long 3266285748 + .long 3109728494 + .long 3266286404 + .long 3108536808 + .long 3266287052 + .long 3109838471 + .long 3266287700 + .long 3109455977 + .long 3266288348 + .long 3107405879 + .long 3266288988 + .long 3107898790 + .long 3266289628 + .long 3106756477 + .long 3266290260 + .long 3108189081 + .long 3266290892 + .long 3108017907 + .long 3266291524 + .long 3106258339 + .long 3266292148 + .long 3107119845 + .long 3266292772 + .long 3106423069 + .long 3266293388 + .long 3108377050 + .long 3266294004 + .long 3108802011 + .long 3266294620 + .long 3107712277 + .long 3266295228 + .long 3109316274 + .long 3266295836 + .long 3109433625 + .long 3266296444 + .long 3108078064 + .long 3266297044 + .long 3109457438 + .long 3266297644 + .long 3109390801 + .long 3266298244 + .long 3107891329 + .long 3266298836 + .long 3109166323 + .long 3266299428 + .long 3109034299 + .long 3266300020 + .long 3107507904 + .long 3266300604 + .long 3108793919 + .long 3266301188 + .long 3108710352 + .long 3266301772 + .long 3107269350 + .long 3266302348 + .long 3108677203 + .long 3266302924 + .long 3108751436 + .long 3266303500 + .long 3107503720 + .long 3266304068 + .long 3109139881 + .long 3266304636 + .long 3109476985 + .long 3266305204 + .long 3108526254 + .long 3266305772 + .long 3106298768 + .long 3266306332 + .long 3106999765 + .long 3266306892 + .long 3106445739 + .long 3266307444 + .long 3108841650 + .long 3266308004 + .long 3105809415 + .long 3266308548 + .long 3109942336 + .long 3266309100 + .long 3108667760 + .long 3266309652 + .long 3106190122 + .long 3266310196 + .long 3106713732 + .long 3266310740 + .long 3106054165 + .long 3266311276 + .long 3108415484 + .long 3266311812 + .long 3109613023 + .long 3266312348 + .long 3109656301 + .long 3266312884 + .long 3108554723 + .long 3266313420 + .long 3106317576 + .long 3266313948 + .long 3107148341 + .long 3266314476 + .long 3106861780 + .long 3266314996 + .long 3109661153 + .long 3266315524 + .long 3107166702 + .long 3266316044 + .long 3107775778 + .long 3266316564 + .long 3107302717 + .long 3266317076 + .long 3109950361 + .long 3266317596 + .long 3107338539 + .long 3266318108 + .long 3107864196 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1051372345 + .long 1051372345 + .long 1051372345 + .long 1051372345 + .long 3204448310 + .long 3204448310 + .long 3204448310 + .long 3204448310 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 1051372180 + .long 1051372180 + .long 1051372180 + .long 1051372180 + .long 3196061070 + .long 3196061070 + .long 3196061070 + .long 3196061070 + .long 1045225872 + .long 1045225872 + .long 1045225872 + .long 1045225872 + .long 3190336823 + .long 3190336823 + .long 3190336823 + .long 3190336823 + .long 1041222418 + .long 1041222418 + .long 1041222418 + .long 1041222418 + .long 3189430755 + .long 3189430755 + .long 3189430755 + .long 3189430755 + .long 1041073389 + .long 1041073389 + .long 1041073389 + .long 1041073389 + .long 16777216 + .long 16777216 + .long 16777216 + .long 16777216 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1317011456 + .long 1317011456 + .long 1317011456 + .long 1317011456 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1050673152 + .long 1050673152 + .long 1050673152 + .long 1050673152 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1031798784 + .long 1031798784 + .long 1031798784 + .long 1031798784 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1106771968 + .long 1106771968 + .long 1106771968 + .long 1106771968 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294959104 + .long 4294959104 + .long 4294959104 + .long 4294959104 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294963200 + .long 4294963200 + .long 4294963200 + .long 4294963200 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294901760 + .long 4294901760 + .long 4294901760 + .long 4294901760 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 813694976 + .long 813694976 + .long 813694976 + .long 813694976 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2139095040 + .long 4286578688 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1065353216 + .long 3212836864 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 2147483648 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .type __svml_sacosh_data_internal,@object + .size __svml_sacosh_data_internal,3392 + .align 4 + +__sacosh_la__iml_sacosh_cout_tab: + .long 1065353216 + .long 0 + .long 2139095040 + .type __sacosh_la__iml_sacosh_cout_tab,@object + .size __sacosh_la__iml_sacosh_cout_tab,12 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core-sse.S b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core-sse.S new file mode 100644 index 0000000000..cb97d291c5 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core-sse.S @@ -0,0 +1,20 @@ +/* SSE version of vectorized acoshf, vector length is 8. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define _ZGVdN8v_acoshf _ZGVdN8v_acoshf_sse_wrapper +#include "../svml_s_acoshf8_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core.c new file mode 100644 index 0000000000..db71194cd0 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core.c @@ -0,0 +1,28 @@ +/* Multiple versions of vectorized acoshf, vector length is 8. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define SYMBOL_NAME _ZGVdN8v_acoshf +#include "ifunc-mathvec-avx2.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVdN8v_acoshf, __GI__ZGVdN8v_acoshf, + __redirect__ZGVdN8v_acoshf) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core_avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core_avx2.S new file mode 100644 index 0000000000..d928320751 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core_avx2.S @@ -0,0 +1,2112 @@ +/* Function acoshf vectorized with AVX2. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + https://www.gnu.org/licenses/. */ + +/* + * ALGORITHM DESCRIPTION: + * + * Compute acosh(x) as log(x + sqrt(x*x - 1)) + * + * Special cases: + * + * acosh(NaN) = quiet NaN, and raise invalid exception + * acosh(-INF) = NaN + * acosh(+INF) = +INF + * acosh(x) = NaN if x < 1 + * acosh(1) = +0 + * + */ + +#include + + .text +ENTRY(_ZGVdN8v_acoshf_avx2) + pushq %rbp + cfi_def_cfa_offset(16) + movq %rsp, %rbp + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + andq $-64, %rsp + subq $384, %rsp + +/* Load constants, always including One = 1 */ + vmovups 1920+__svml_sacosh_data_internal(%rip), %ymm2 + vmovups %ymm10, 160(%rsp) + vmovups %ymm8, 32(%rsp) + vmovups %ymm11, 192(%rsp) + vmovups %ymm9, 96(%rsp) + .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22 + +/* + * Now 1 / (1 + d) + * = 1 / (1 + (sqrt(1 - e) - 1)) + * = 1 / sqrt(1 - e) + * = 1 + 1/2 * e + 3/8 * e^2 + 5/16 * e^3 + 35/128 * e^4 + ... + * So compute the first three nonconstant terms of that, so that + * we have a relative correction (1 + Corr) to apply to S etc. + * C1 = 1/2 + * C2 = 3/8 + * C3 = 5/16 + */ + vmovups 2624+__svml_sacosh_data_internal(%rip), %ymm9 + vmovups %ymm12, 224(%rsp) + vmovups %ymm14, 288(%rsp) + vmovups %ymm13, 256(%rsp) + vmovups %ymm15, 320(%rsp) + vmovaps %ymm0, %ymm3 + +/* + * Check that 1 < X < +inf; otherwise go to the callout function. + * We need the callout for X = 1 to avoid division by zero below. + * This test ensures that callout handles NaN and either infinity. + */ + vcmpnle_uqps 2752+__svml_sacosh_data_internal(%rip), %ymm3, %ymm4 + vcmpngt_uqps %ymm2, %ymm3, %ymm5 + .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe0, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe1, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22 + +/* sU is needed later on */ + vsubps %ymm2, %ymm3, %ymm13 + +/* + * The following computation can go wrong for very large X, e.g. + * the X^2 - 1 = U * V can overflow. But for large X we have + * acosh(X) / log(2 X) - 1 =~= 1/(4 * X^2), so for X >= 2^30 + * we can just later stick X back into the log and tweak up the exponent. + * Actually we scale X by 2^-30 and tweak the exponent up by 31, + * to stay in the safe range for the later log computation. + * Compute a flag now telling us when to do this. + */ + vcmplt_oqps 2496+__svml_sacosh_data_internal(%rip), %ymm3, %ymm1 + vmovaps %ymm2, %ymm7 + vorps %ymm5, %ymm4, %ymm6 + vfmsub231ps %ymm3, %ymm3, %ymm7 + +/* Finally, express Y + W = U * V accurately where Y has <= 8 bits */ + vmovups 3136+__svml_sacosh_data_internal(%rip), %ymm4 + vandps %ymm4, %ymm7, %ymm5 + +/* + * Compute R = 1/sqrt(Y + W) * (1 + d) + * Force R to <= 8 significant bits. + * This means that R * Y and R^2 * Y are exactly representable. + */ + vrsqrtps %ymm5, %ymm0 + vsubps %ymm5, %ymm7, %ymm7 + vmovmskps %ymm6, %edx + vandps %ymm4, %ymm0, %ymm6 + +/* + * Compute S = (Y/sqrt(Y + W)) * (1 + d) + * and T = (W/sqrt(Y + W)) * (1 + d) + * so that S + T = sqrt(Y + W) * (1 + d) + * S is exact, and the rounding error in T is OK. + */ + vmulps %ymm6, %ymm5, %ymm10 + vmulps %ymm7, %ymm6, %ymm11 + +/* + * Compute e = -(2 * d + d^2) + * The first FMR is exact, and the rounding error in the other is acceptable + * since d and e are ~ 2^-8 + */ + vmovaps %ymm2, %ymm8 + vfnmadd231ps %ymm10, %ymm6, %ymm8 + +/* + * For low-accuracy versions, the computation can be done + * just as U + ((S + T) + (S + T) * Corr) + */ + vaddps %ymm11, %ymm10, %ymm14 + vfnmadd231ps %ymm11, %ymm6, %ymm8 + +/* Now multiplex to the case X = 2^-30 * input, Xl = 0 in the "big" case. */ + vmulps 3200+__svml_sacosh_data_internal(%rip), %ymm3, %ymm6 + vfmadd213ps 2560+__svml_sacosh_data_internal(%rip), %ymm8, %ymm9 + vfmadd213ps 2688+__svml_sacosh_data_internal(%rip), %ymm8, %ymm9 + vmulps %ymm9, %ymm8, %ymm12 + vfmadd213ps %ymm14, %ymm12, %ymm14 + +/* + * Now resume the main code. + * reduction: compute r,n + */ + vmovups 2368+__svml_sacosh_data_internal(%rip), %ymm12 + vaddps %ymm14, %ymm13, %ymm15 + +/* + * Now we feed into the log1p code, using H in place of _VARG1 and + * also adding L into Xl. + * compute 1+x as high, low parts + */ + vmaxps %ymm15, %ymm2, %ymm0 + vminps %ymm15, %ymm2, %ymm4 + vaddps %ymm4, %ymm0, %ymm7 + vblendvps %ymm1, %ymm7, %ymm6, %ymm9 + vsubps %ymm7, %ymm0, %ymm5 + vpsubd %ymm12, %ymm9, %ymm10 + vaddps %ymm5, %ymm4, %ymm8 + vpsrad $23, %ymm10, %ymm13 + vpand 2432+__svml_sacosh_data_internal(%rip), %ymm10, %ymm11 + vpslld $23, %ymm13, %ymm14 + vpaddd %ymm12, %ymm11, %ymm4 + vcvtdq2ps %ymm13, %ymm0 + vpsubd %ymm14, %ymm2, %ymm13 + +/* polynomial evaluation */ + vsubps %ymm2, %ymm4, %ymm2 + vmovups 2208+__svml_sacosh_data_internal(%rip), %ymm4 + vandps %ymm1, %ymm8, %ymm15 + vmulps %ymm13, %ymm15, %ymm5 + vaddps %ymm2, %ymm5, %ymm2 + +/* Add 31 to the exponent in the "large" case to get log(2 * input) */ + vaddps 2944+__svml_sacosh_data_internal(%rip), %ymm0, %ymm5 + vfmadd213ps 2176+__svml_sacosh_data_internal(%rip), %ymm2, %ymm4 + vblendvps %ymm1, %ymm0, %ymm5, %ymm0 + vfmadd213ps 2144+__svml_sacosh_data_internal(%rip), %ymm2, %ymm4 + vfmadd213ps 2112+__svml_sacosh_data_internal(%rip), %ymm2, %ymm4 + vfmadd213ps 2080+__svml_sacosh_data_internal(%rip), %ymm2, %ymm4 + vfmadd213ps 2048+__svml_sacosh_data_internal(%rip), %ymm2, %ymm4 + vfmadd213ps 2016+__svml_sacosh_data_internal(%rip), %ymm2, %ymm4 + vfmadd213ps 1984+__svml_sacosh_data_internal(%rip), %ymm2, %ymm4 + vmulps %ymm4, %ymm2, %ymm6 + vfmadd213ps %ymm2, %ymm2, %ymm6 + +/* final reconstruction */ + vfmadd132ps 3264+__svml_sacosh_data_internal(%rip), %ymm6, %ymm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + vmovups 32(%rsp), %ymm8 + cfi_restore(91) + vmovups 96(%rsp), %ymm9 + cfi_restore(92) + vmovups 160(%rsp), %ymm10 + cfi_restore(93) + vmovups 192(%rsp), %ymm11 + cfi_restore(94) + vmovups 224(%rsp), %ymm12 + cfi_restore(95) + vmovups 256(%rsp), %ymm13 + cfi_restore(96) + vmovups 288(%rsp), %ymm14 + cfi_restore(97) + vmovups 320(%rsp), %ymm15 + cfi_restore(98) + movq %rbp, %rsp + popq %rbp + cfi_def_cfa(7, 8) + cfi_restore(6) + ret + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe0, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe1, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22 + +.LBL_1_3: + vmovups %ymm3, 64(%rsp) + vmovups %ymm0, 128(%rsp) + je .LBL_1_2 + xorl %eax, %eax + vzeroupper + movq %rsi, 8(%rsp) + movq %rdi, (%rsp) + movq %r12, 24(%rsp) + .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x88, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x98, 0xfe, 0xff, 0xff, 0x22 + movl %eax, %r12d + movq %r13, 16(%rsp) + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xfe, 0xff, 0xff, 0x22 + movl %edx, %r13d + +.LBL_1_7: + btl %r12d, %r13d + jc .LBL_1_10 + +.LBL_1_8: + incl %r12d + cmpl $8, %r12d + jl .LBL_1_7 + movq 8(%rsp), %rsi + cfi_restore(4) + movq (%rsp), %rdi + cfi_restore(5) + movq 24(%rsp), %r12 + cfi_restore(12) + movq 16(%rsp), %r13 + cfi_restore(13) + vmovups 128(%rsp), %ymm0 + jmp .LBL_1_2 + .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x88, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x98, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xfe, 0xff, 0xff, 0x22 + +.LBL_1_10: + lea 64(%rsp,%r12,4), %rdi + lea 128(%rsp,%r12,4), %rsi + call __svml_sacosh_cout_rare_internal + jmp .LBL_1_8 + +END(_ZGVdN8v_acoshf_avx2) + + .align 16,0x90 + +__svml_sacosh_cout_rare_internal: + + cfi_startproc + + movl (%rdi), %eax + movl %eax, -8(%rsp) + andl $2139095040, %eax + cmpl $2139095040, %eax + je .LBL_2_8 + +.LBL_2_2: + movl -8(%rsp), %eax + cmpl $1065353216, %eax + je .LBL_2_7 + cmpl $2139095040, %eax + jne .LBL_2_5 + movl 8+__sacosh_la__iml_sacosh_cout_tab(%rip), %eax + movl %eax, (%rsi) + xorl %eax, %eax + ret + +.LBL_2_5: + movss 8+__sacosh_la__iml_sacosh_cout_tab(%rip), %xmm0 + movl $1, %eax + mulss 4+__sacosh_la__iml_sacosh_cout_tab(%rip), %xmm0 + movss %xmm0, (%rsi) + ret + +.LBL_2_7: + movl 4+__sacosh_la__iml_sacosh_cout_tab(%rip), %eax + movl %eax, (%rsi) + xorl %eax, %eax + ret + +.LBL_2_8: + testl $8388607, -8(%rsp) + je .LBL_2_2 + movss -8(%rsp), %xmm0 + xorl %eax, %eax + mulss -8(%rsp), %xmm0 + movss %xmm0, (%rsi) + ret + + cfi_endproc + + .type __svml_sacosh_cout_rare_internal,@function + .size __svml_sacosh_cout_rare_internal,.-__svml_sacosh_cout_rare_internal + + .section .rodata, "a" + .align 64 + +__svml_sacosh_data_internal: + .long 3266227256 + .long 3107766024 + .long 3266228276 + .long 3107776882 + .long 3266229284 + .long 3109949545 + .long 3266230292 + .long 3108055846 + .long 3266231292 + .long 3106351937 + .long 3266232276 + .long 3109092567 + .long 3266233260 + .long 3107948216 + .long 3266234236 + .long 3107170960 + .long 3266235204 + .long 3106817287 + .long 3266236164 + .long 3106942449 + .long 3266237116 + .long 3107600489 + .long 3266238060 + .long 3108844279 + .long 3266239004 + .long 3106531253 + .long 3266239932 + .long 3109100650 + .long 3266240860 + .long 3108213420 + .long 3266241780 + .long 3108112381 + .long 3266242692 + .long 3108845034 + .long 3266243604 + .long 3106263589 + .long 3266244500 + .long 3108802209 + .long 3266245396 + .long 3108116909 + .long 3266246284 + .long 3108445707 + .long 3266247164 + .long 3109831435 + .long 3266248044 + .long 3108121760 + .long 3266248916 + .long 3107552123 + .long 3266249780 + .long 3108162844 + .long 3266250644 + .long 3105799146 + .long 3266251492 + .long 3108888393 + .long 3266252340 + .long 3109079979 + .long 3266253188 + .long 3106411173 + .long 3266254020 + .long 3109307139 + .long 3266254852 + .long 3109415127 + .long 3266255684 + .long 3106770317 + .long 3266256500 + .long 3109795834 + .long 3266257324 + .long 3105942641 + .long 3266258132 + .long 3107826892 + .long 3266258940 + .long 3107092610 + .long 3266259740 + .long 3107966131 + .long 3266260540 + .long 3106284596 + .long 3266261332 + .long 3106273188 + .long 3266262116 + .long 3107962226 + .long 3266262900 + .long 3107187186 + .long 3266263676 + .long 3108171617 + .long 3266264452 + .long 3106749947 + .long 3266265220 + .long 3107144703 + .long 3266265980 + .long 3109383615 + .long 3266266740 + .long 3109299629 + .long 3266267500 + .long 3106919521 + .long 3266268252 + .long 3106463913 + .long 3266268996 + .long 3107958670 + .long 3266269740 + .long 3107234917 + .long 3266270476 + .long 3108511954 + .long 3266271212 + .long 3107620056 + .long 3266271940 + .long 3108777693 + .long 3266272668 + .long 3107814325 + .long 3266273388 + .long 3108947630 + .long 3266274108 + .long 3108006290 + .long 3266274820 + .long 3109207222 + .long 3266275532 + .long 3108378366 + .long 3266276236 + .long 3109735912 + .long 3266276940 + .long 3109107087 + .long 3266277644 + .long 3106513079 + .long 3266278340 + .long 3106169044 + .long 3266279028 + .long 3108095503 + .long 3266279716 + .long 3108118349 + .long 3266280404 + .long 3106257463 + .long 3266281084 + .long 3106726720 + .long 3266281756 + .long 3109545389 + .long 3266282436 + .long 3106343833 + .long 3266283100 + .long 3109723642 + .long 3266283772 + .long 3107120300 + .long 3266284436 + .long 3106940529 + .long 3266285092 + .long 3109202170 + .long 3266285748 + .long 3109728494 + .long 3266286404 + .long 3108536808 + .long 3266287052 + .long 3109838471 + .long 3266287700 + .long 3109455977 + .long 3266288348 + .long 3107405879 + .long 3266288988 + .long 3107898790 + .long 3266289628 + .long 3106756477 + .long 3266290260 + .long 3108189081 + .long 3266290892 + .long 3108017907 + .long 3266291524 + .long 3106258339 + .long 3266292148 + .long 3107119845 + .long 3266292772 + .long 3106423069 + .long 3266293388 + .long 3108377050 + .long 3266294004 + .long 3108802011 + .long 3266294620 + .long 3107712277 + .long 3266295228 + .long 3109316274 + .long 3266295836 + .long 3109433625 + .long 3266296444 + .long 3108078064 + .long 3266297044 + .long 3109457438 + .long 3266297644 + .long 3109390801 + .long 3266298244 + .long 3107891329 + .long 3266298836 + .long 3109166323 + .long 3266299428 + .long 3109034299 + .long 3266300020 + .long 3107507904 + .long 3266300604 + .long 3108793919 + .long 3266301188 + .long 3108710352 + .long 3266301772 + .long 3107269350 + .long 3266302348 + .long 3108677203 + .long 3266302924 + .long 3108751436 + .long 3266303500 + .long 3107503720 + .long 3266304068 + .long 3109139881 + .long 3266304636 + .long 3109476985 + .long 3266305204 + .long 3108526254 + .long 3266305772 + .long 3106298768 + .long 3266306332 + .long 3106999765 + .long 3266306892 + .long 3106445739 + .long 3266307444 + .long 3108841650 + .long 3266308004 + .long 3105809415 + .long 3266308548 + .long 3109942336 + .long 3266309100 + .long 3108667760 + .long 3266309652 + .long 3106190122 + .long 3266310196 + .long 3106713732 + .long 3266310740 + .long 3106054165 + .long 3266311276 + .long 3108415484 + .long 3266311812 + .long 3109613023 + .long 3266312348 + .long 3109656301 + .long 3266312884 + .long 3108554723 + .long 3266313420 + .long 3106317576 + .long 3266313948 + .long 3107148341 + .long 3266314476 + .long 3106861780 + .long 3266314996 + .long 3109661153 + .long 3266315524 + .long 3107166702 + .long 3266316044 + .long 3107775778 + .long 3266316564 + .long 3107302717 + .long 3266317076 + .long 3109950361 + .long 3266317596 + .long 3107338539 + .long 3266318108 + .long 3107864196 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .long 2147483647 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .long 964689920 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1051372345 + .long 1051372345 + .long 1051372345 + .long 1051372345 + .long 1051372345 + .long 1051372345 + .long 1051372345 + .long 1051372345 + .long 3204448310 + .long 3204448310 + .long 3204448310 + .long 3204448310 + .long 3204448310 + .long 3204448310 + .long 3204448310 + .long 3204448310 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .long 1065353216 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 3204448256 + .long 1051372180 + .long 1051372180 + .long 1051372180 + .long 1051372180 + .long 1051372180 + .long 1051372180 + .long 1051372180 + .long 1051372180 + .long 3196061070 + .long 3196061070 + .long 3196061070 + .long 3196061070 + .long 3196061070 + .long 3196061070 + .long 3196061070 + .long 3196061070 + .long 1045225872 + .long 1045225872 + .long 1045225872 + .long 1045225872 + .long 1045225872 + .long 1045225872 + .long 1045225872 + .long 1045225872 + .long 3190336823 + .long 3190336823 + .long 3190336823 + .long 3190336823 + .long 3190336823 + .long 3190336823 + .long 3190336823 + .long 3190336823 + .long 1041222418 + .long 1041222418 + .long 1041222418 + .long 1041222418 + .long 1041222418 + .long 1041222418 + .long 1041222418 + .long 1041222418 + .long 3189430755 + .long 3189430755 + .long 3189430755 + .long 3189430755 + .long 3189430755 + .long 3189430755 + .long 3189430755 + .long 3189430755 + .long 1041073389 + .long 1041073389 + .long 1041073389 + .long 1041073389 + .long 1041073389 + .long 1041073389 + .long 1041073389 + .long 1041073389 + .long 16777216 + .long 16777216 + .long 16777216 + .long 16777216 + .long 16777216 + .long 16777216 + .long 16777216 + .long 16777216 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1317011456 + .long 1317011456 + .long 1317011456 + .long 1317011456 + .long 1317011456 + .long 1317011456 + .long 1317011456 + .long 1317011456 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .long 1052770304 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1050673152 + .long 1050673152 + .long 1050673152 + .long 1050673152 + .long 1050673152 + .long 1050673152 + .long 1050673152 + .long 1050673152 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .long 1056964608 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .long 2139095039 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1031798784 + .long 1031798784 + .long 1031798784 + .long 1031798784 + .long 1031798784 + .long 1031798784 + .long 1031798784 + .long 1031798784 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1106771968 + .long 1106771968 + .long 1106771968 + .long 1106771968 + .long 1106771968 + .long 1106771968 + .long 1106771968 + .long 1106771968 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294959104 + .long 4294959104 + .long 4294959104 + .long 4294959104 + .long 4294959104 + .long 4294959104 + .long 4294959104 + .long 4294959104 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294963200 + .long 4294963200 + .long 4294963200 + .long 4294963200 + .long 4294963200 + .long 4294963200 + .long 4294963200 + .long 4294963200 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294901760 + .long 4294901760 + .long 4294901760 + .long 4294901760 + .long 4294901760 + .long 4294901760 + .long 4294901760 + .long 4294901760 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 813694976 + .long 813694976 + .long 813694976 + .long 813694976 + .long 813694976 + .long 813694976 + .long 813694976 + .long 813694976 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2139095040 + .long 4286578688 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1065353216 + .long 3212836864 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 2147483648 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .type __svml_sacosh_data_internal,@object + .size __svml_sacosh_data_internal,3520 + .align 4 + +__sacosh_la__iml_sacosh_cout_tab: + .long 1065353216 + .long 0 + .long 2139095040 + .type __sacosh_la__iml_sacosh_cout_tab,@object + .size __sacosh_la__iml_sacosh_cout_tab,12 diff --git a/sysdeps/x86_64/fpu/svml_d_acosh2_core.S b/sysdeps/x86_64/fpu/svml_d_acosh2_core.S new file mode 100644 index 0000000000..42bd5c1b5d --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_d_acosh2_core.S @@ -0,0 +1,29 @@ +/* Function acosh vectorized with SSE2. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include "svml_d_wrapper_impl.h" + + .text +ENTRY (_ZGVbN2v_acosh) +WRAPPER_IMPL_SSE2 acosh +END (_ZGVbN2v_acosh) + +#ifndef USE_MULTIARCH + libmvec_hidden_def (_ZGVbN2v_acosh) +#endif diff --git a/sysdeps/x86_64/fpu/svml_d_acosh4_core.S b/sysdeps/x86_64/fpu/svml_d_acosh4_core.S new file mode 100644 index 0000000000..433192bae1 --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_d_acosh4_core.S @@ -0,0 +1,29 @@ +/* Function acosh vectorized with AVX2, wrapper version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. +