From: DongHun Kwak Date: Fri, 15 Jul 2022 02:14:51 +0000 (+0900) Subject: Imported Upstream version 1.21.4 X-Git-Tag: upstream/1.21.4^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4a59d149067edf1af37482b36bbb3bf1fe040a4a;p=platform%2Fupstream%2Fpython3-numpy.git Imported Upstream version 1.21.4 --- diff --git a/PKG-INFO b/PKG-INFO index 9e8286d6..5e02e4ca 100644 --- a/PKG-INFO +++ b/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: numpy -Version: 1.21.3 +Version: 1.21.4 Summary: NumPy is the fundamental package for array computing with Python. Home-page: https://www.numpy.org Author: Travis E. Oliphant et al. diff --git a/doc/changelog/1.21.4-changelog.rst b/doc/changelog/1.21.4-changelog.rst new file mode 100644 index 00000000..ecc1d1d9 --- /dev/null +++ b/doc/changelog/1.21.4-changelog.rst @@ -0,0 +1,29 @@ + +Contributors +============ + +A total of 7 people contributed to this release. People with a "+" by their +names contributed a patch for the first time. + +* Bas van Beek +* Charles Harris +* Isuru Fernando +* Matthew Brett +* Sayed Adel +* Sebastian Berg +* 傅立业(Chris Fu) + + +Pull requests merged +==================== + +A total of 9 pull requests were merged for this release. + +* `#20278 `__: BUG: Fix shadowed reference of `dtype` in type stub +* `#20293 `__: BUG: Fix headers for universal2 builds +* `#20294 `__: BUG: ``VOID_nonzero`` could sometimes mutate alignment flag +* `#20295 `__: BUG: Do not use nonzero fastpath on unaligned arrays +* `#20296 `__: BUG: Distutils patch to allow for 2 as a minor version (!) +* `#20297 `__: BUG, SIMD: Fix 64-bit/8-bit integer division by a scalar +* `#20298 `__: BUG, SIMD: Workaround broadcasting SIMD 64-bit integers on MSVC... +* `#20300 `__: REL: Prepare for the NumPy 1.21.4 release. +* `#20302 `__: TST: Fix a `Arrayterator` typing test failure diff --git a/doc/release/upcoming_changes/20049.change.rst b/doc/release/upcoming_changes/20049.change.rst deleted file mode 100644 index e1f08b34..00000000 --- a/doc/release/upcoming_changes/20049.change.rst +++ /dev/null @@ -1,5 +0,0 @@ -Corrected ``advance`` in ``PCG64DSXM`` and ``PCG64`` ----------------------------------------------------- -Fixed a bug in the ``advance`` method of ``PCG64DSXM`` and ``PCG64``. The bug only -affects results when the step was larger than :math:`2^{64}` on platforms -that do not support 128-bit integers(e.g., Windows and 32-bit Linux). diff --git a/doc/source/release.rst b/doc/source/release.rst index bef6e8e4..2a13b25f 100644 --- a/doc/source/release.rst +++ b/doc/source/release.rst @@ -5,6 +5,7 @@ Release Notes .. toctree:: :maxdepth: 3 + 1.21.4 1.21.3 1.21.2 1.21.1 diff --git a/doc/source/release/1.21.4-notes.rst b/doc/source/release/1.21.4-notes.rst new file mode 100644 index 00000000..dd8abdb8 --- /dev/null +++ b/doc/source/release/1.21.4-notes.rst @@ -0,0 +1,46 @@ +.. currentmodule:: numpy + +========================== +NumPy 1.21.4 Release Notes +========================== + +The NumPy 1.21.4 is a maintenance release that fixes a few bugs discovered +after 1.21.3. The most important fix here is a fix for the NumPy header files +to make them work for both x86_64 and M1 hardware when included in the Mac +universal2 wheels. Previously, the header files only worked for M1 and this +caused problems for folks building x86_64 extensions. This problem was not seen +before Python 3.10 because there were thin wheels for x86_64 that had +precedence. This release also provides thin x86_64 Mac wheels for Python 3.10. + +The Python versions supported in this release are 3.7-3.10. If you want to +compile your own version using gcc-11, you will need to use gcc-11.2+ to avoid +problems. + +Contributors +============ + +A total of 7 people contributed to this release. People with a "+" by their +names contributed a patch for the first time. + +* Bas van Beek +* Charles Harris +* Isuru Fernando +* Matthew Brett +* Sayed Adel +* Sebastian Berg +* 傅立业(Chris Fu) + + +Pull requests merged +==================== + +A total of 9 pull requests were merged for this release. + +* `#20278 `__: BUG: Fix shadowed reference of `dtype` in type stub +* `#20293 `__: BUG: Fix headers for universal2 builds +* `#20294 `__: BUG: ``VOID_nonzero`` could sometimes mutate alignment flag +* `#20295 `__: BUG: Do not use nonzero fastpath on unaligned arrays +* `#20296 `__: BUG: Distutils patch to allow for 2 as a minor version (!) +* `#20297 `__: BUG, SIMD: Fix 64-bit/8-bit integer division by a scalar +* `#20298 `__: BUG, SIMD: Workaround broadcasting SIMD 64-bit integers on MSVC... +* `#20300 `__: REL: Prepare for the NumPy 1.21.4 release. +* `#20302 `__: TST: Fix a `Arrayterator` typing test failure diff --git a/numpy/__init__.pyi b/numpy/__init__.pyi index dfec6af9..b97ea531 100644 --- a/numpy/__init__.pyi +++ b/numpy/__init__.pyi @@ -926,7 +926,7 @@ _DTypeScalar_co = TypeVar("_DTypeScalar_co", covariant=True, bound=generic) _ByteOrder = L["S", "<", ">", "=", "|", "L", "B", "N", "I"] class dtype(Generic[_DTypeScalar_co]): - names: Optional[Tuple[str, ...]] + names: Optional[Tuple[builtins.str, ...]] # Overload for subclass of generic @overload def __new__( @@ -953,7 +953,7 @@ class dtype(Generic[_DTypeScalar_co]): @overload def __new__(cls, dtype: Type[complex], align: bool = ..., copy: bool = ...) -> dtype[complex_]: ... @overload - def __new__(cls, dtype: Type[str], align: bool = ..., copy: bool = ...) -> dtype[str_]: ... + def __new__(cls, dtype: Type[builtins.str], align: bool = ..., copy: bool = ...) -> dtype[str_]: ... @overload def __new__(cls, dtype: Type[bytes], align: bool = ..., copy: bool = ...) -> dtype[bytes_]: ... @@ -1067,7 +1067,7 @@ class dtype(Generic[_DTypeScalar_co]): @overload def __new__( cls, - dtype: str, + dtype: builtins.str, align: bool = ..., copy: bool = ..., ) -> dtype[Any]: ... @@ -1089,9 +1089,9 @@ class dtype(Generic[_DTypeScalar_co]): ) -> dtype[object_]: ... @overload - def __getitem__(self: dtype[void], key: List[str]) -> dtype[void]: ... + def __getitem__(self: dtype[void], key: List[builtins.str]) -> dtype[void]: ... @overload - def __getitem__(self: dtype[void], key: Union[str, int]) -> dtype[Any]: ... + def __getitem__(self: dtype[void], key: Union[builtins.str, int]) -> dtype[Any]: ... # NOTE: In the future 1-based multiplications will also yield `void` dtypes @overload @@ -1114,15 +1114,15 @@ class dtype(Generic[_DTypeScalar_co]): @property def base(self: _DType) -> _DType: ... @property - def byteorder(self) -> str: ... + def byteorder(self) -> builtins.str: ... @property - def char(self) -> str: ... + def char(self) -> builtins.str: ... @property - def descr(self) -> List[Union[Tuple[str, str], Tuple[str, str, _Shape]]]: ... + def descr(self) -> List[Union[Tuple[builtins.str, builtins.str], Tuple[builtins.str, builtins.str, _Shape]]]: ... @property def fields( self, - ) -> Optional[Mapping[str, Union[Tuple[dtype[Any], int], Tuple[dtype[Any], int, Any]]]]: ... + ) -> Optional[Mapping[builtins.str, Union[Tuple[dtype[Any], int], Tuple[dtype[Any], int, Any]]]]: ... @property def flags(self) -> int: ... @property @@ -1136,11 +1136,11 @@ class dtype(Generic[_DTypeScalar_co]): @property def itemsize(self) -> int: ... @property - def kind(self) -> str: ... + def kind(self) -> builtins.str: ... @property - def metadata(self) -> Optional[Mapping[str, Any]]: ... + def metadata(self) -> Optional[Mapping[builtins.str, Any]]: ... @property - def name(self) -> str: ... + def name(self) -> builtins.str: ... @property def names(self) -> Optional[Tuple[str, ...]]: ... @property @@ -1152,8 +1152,6 @@ class dtype(Generic[_DTypeScalar_co]): @property def subdtype(self: _DType) -> Optional[Tuple[_DType, _Shape]]: ... def newbyteorder(self: _DType, __new_order: _ByteOrder = ...) -> _DType: ... - # Leave str and type for end to avoid having to use `builtins.str` - # everywhere. See https://github.com/python/mypy/issues/3775 @property def str(self) -> builtins.str: ... @property @@ -1659,6 +1657,9 @@ _ArrayComplex_co = NDArray[Union[bool_, integer[Any], floating[Any], complexfloa _ArrayNumber_co = NDArray[Union[bool_, number[Any]]] _ArrayTD64_co = NDArray[Union[bool_, integer[Any], timedelta64]] +# Introduce an alias for `dtype` to avoid naming conflicts. +_dtype = dtype + class _SupportsItem(Protocol[_T_co]): def item(self, __args: Any) -> _T_co: ... @@ -1680,13 +1681,13 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): @property def real( self: NDArray[_SupportsReal[_ScalarType]], # type: ignore[type-var] - ) -> ndarray[_ShapeType, dtype[_ScalarType]]: ... + ) -> ndarray[_ShapeType, _dtype[_ScalarType]]: ... @real.setter def real(self, value: ArrayLike) -> None: ... @property def imag( self: NDArray[_SupportsImag[_ScalarType]], # type: ignore[type-var] - ) -> ndarray[_ShapeType, dtype[_ScalarType]]: ... + ) -> ndarray[_ShapeType, _dtype[_ScalarType]]: ... @imag.setter def imag(self, value: ArrayLike) -> None: ... def __new__( @@ -1720,12 +1721,12 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): # Use the same output type as that of the underlying `generic` @overload def item( - self: ndarray[Any, dtype[_SupportsItem[_T]]], # type: ignore[type-var] + self: ndarray[Any, _dtype[_SupportsItem[_T]]], # type: ignore[type-var] *args: SupportsIndex, ) -> _T: ... @overload def item( - self: ndarray[Any, dtype[_SupportsItem[_T]]], # type: ignore[type-var] + self: ndarray[Any, _dtype[_SupportsItem[_T]]], # type: ignore[type-var] __args: Tuple[SupportsIndex, ...], ) -> _T: ... @@ -1765,7 +1766,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): axis: Optional[SupportsIndex] = ..., kind: _PartitionKind = ..., order: Union[None, str, Sequence[str]] = ..., - ) -> ndarray[Any, dtype[intp]]: ... + ) -> ndarray[Any, _dtype[intp]]: ... def diagonal( self, @@ -1784,7 +1785,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): def dot(self, b: ArrayLike, out: _NdArraySubClass) -> _NdArraySubClass: ... # `nonzero()` is deprecated for 0d arrays/generics - def nonzero(self) -> Tuple[ndarray[Any, dtype[intp]], ...]: ... + def nonzero(self) -> Tuple[ndarray[Any, _dtype[intp]], ...]: ... def partition( self, @@ -1816,7 +1817,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): v: ArrayLike, side: _SortSide = ..., sorter: Optional[_ArrayLikeInt_co] = ..., - ) -> ndarray[Any, dtype[intp]]: ... + ) -> ndarray[Any, _dtype[intp]]: ... def setfield( self, @@ -1853,7 +1854,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): @overload def take( # type: ignore[misc] - self: ndarray[Any, dtype[_ScalarType]], + self: ndarray[Any, _dtype[_ScalarType]], indices: _IntLike_co, axis: Optional[SupportsIndex] = ..., out: None = ..., @@ -1950,19 +1951,19 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): # Dispatch to the underlying `generic` via protocols def __int__( - self: ndarray[Any, dtype[SupportsInt]], # type: ignore[type-var] + self: ndarray[Any, _dtype[SupportsInt]], # type: ignore[type-var] ) -> int: ... def __float__( - self: ndarray[Any, dtype[SupportsFloat]], # type: ignore[type-var] + self: ndarray[Any, _dtype[SupportsFloat]], # type: ignore[type-var] ) -> float: ... def __complex__( - self: ndarray[Any, dtype[SupportsComplex]], # type: ignore[type-var] + self: ndarray[Any, _dtype[SupportsComplex]], # type: ignore[type-var] ) -> complex: ... def __index__( - self: ndarray[Any, dtype[SupportsIndex]], # type: ignore[type-var] + self: ndarray[Any, _dtype[SupportsIndex]], # type: ignore[type-var] ) -> int: ... def __len__(self) -> int: ... @@ -2138,7 +2139,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): @overload def __mod__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co) -> NDArray[floating[Any]]: ... # type: ignore[misc] @overload - def __mod__(self: _ArrayTD64_co, other: _NestedSequence[_SupportsArray[dtype[timedelta64]]]) -> NDArray[timedelta64]: ... + def __mod__(self: _ArrayTD64_co, other: _NestedSequence[_SupportsArray[_dtype[timedelta64]]]) -> NDArray[timedelta64]: ... @overload def __mod__(self: NDArray[object_], other: Any) -> Any: ... @overload @@ -2160,7 +2161,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): @overload def __rmod__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co) -> NDArray[floating[Any]]: ... # type: ignore[misc] @overload - def __rmod__(self: _ArrayTD64_co, other: _NestedSequence[_SupportsArray[dtype[timedelta64]]]) -> NDArray[timedelta64]: ... + def __rmod__(self: _ArrayTD64_co, other: _NestedSequence[_SupportsArray[_dtype[timedelta64]]]) -> NDArray[timedelta64]: ... @overload def __rmod__(self: NDArray[object_], other: Any) -> Any: ... @overload @@ -2182,7 +2183,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): @overload def __divmod__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co) -> _2Tuple[NDArray[floating[Any]]]: ... # type: ignore[misc] @overload - def __divmod__(self: _ArrayTD64_co, other: _NestedSequence[_SupportsArray[dtype[timedelta64]]]) -> Tuple[NDArray[int64], NDArray[timedelta64]]: ... + def __divmod__(self: _ArrayTD64_co, other: _NestedSequence[_SupportsArray[_dtype[timedelta64]]]) -> Tuple[NDArray[int64], NDArray[timedelta64]]: ... @overload def __divmod__( self: NDArray[Union[bool_, integer[Any], floating[Any], timedelta64]], @@ -2200,7 +2201,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): @overload def __rdivmod__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co) -> _2Tuple[NDArray[floating[Any]]]: ... # type: ignore[misc] @overload - def __rdivmod__(self: _ArrayTD64_co, other: _NestedSequence[_SupportsArray[dtype[timedelta64]]]) -> Tuple[NDArray[int64], NDArray[timedelta64]]: ... + def __rdivmod__(self: _ArrayTD64_co, other: _NestedSequence[_SupportsArray[_dtype[timedelta64]]]) -> Tuple[NDArray[int64], NDArray[timedelta64]]: ... @overload def __rdivmod__( self: NDArray[Union[bool_, integer[Any], floating[Any], timedelta64]], @@ -2384,7 +2385,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): @overload def __floordiv__(self: _ArrayComplex_co, other: _ArrayLikeComplex_co) -> NDArray[complexfloating[Any, Any]]: ... # type: ignore[misc] @overload - def __floordiv__(self: NDArray[timedelta64], other: _NestedSequence[_SupportsArray[dtype[timedelta64]]]) -> NDArray[int64]: ... + def __floordiv__(self: NDArray[timedelta64], other: _NestedSequence[_SupportsArray[_dtype[timedelta64]]]) -> NDArray[int64]: ... @overload def __floordiv__(self: NDArray[timedelta64], other: _ArrayLikeBool_co) -> NoReturn: ... @overload @@ -2412,7 +2413,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): @overload def __rfloordiv__(self: _ArrayComplex_co, other: _ArrayLikeComplex_co) -> NDArray[complexfloating[Any, Any]]: ... # type: ignore[misc] @overload - def __rfloordiv__(self: NDArray[timedelta64], other: _NestedSequence[_SupportsArray[dtype[timedelta64]]]) -> NDArray[int64]: ... + def __rfloordiv__(self: NDArray[timedelta64], other: _NestedSequence[_SupportsArray[_dtype[timedelta64]]]) -> NDArray[int64]: ... @overload def __rfloordiv__(self: NDArray[bool_], other: _ArrayLikeTD64_co) -> NoReturn: ... @overload @@ -2480,7 +2481,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): @overload def __truediv__(self: _ArrayComplex_co, other: _ArrayLikeComplex_co) -> NDArray[complexfloating[Any, Any]]: ... # type: ignore[misc] @overload - def __truediv__(self: NDArray[timedelta64], other: _NestedSequence[_SupportsArray[dtype[timedelta64]]]) -> NDArray[float64]: ... + def __truediv__(self: NDArray[timedelta64], other: _NestedSequence[_SupportsArray[_dtype[timedelta64]]]) -> NDArray[float64]: ... @overload def __truediv__(self: NDArray[timedelta64], other: _ArrayLikeBool_co) -> NoReturn: ... @overload @@ -2504,7 +2505,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): @overload def __rtruediv__(self: _ArrayComplex_co, other: _ArrayLikeComplex_co) -> NDArray[complexfloating[Any, Any]]: ... # type: ignore[misc] @overload - def __rtruediv__(self: NDArray[timedelta64], other: _NestedSequence[_SupportsArray[dtype[timedelta64]]]) -> NDArray[float64]: ... + def __rtruediv__(self: NDArray[timedelta64], other: _NestedSequence[_SupportsArray[_dtype[timedelta64]]]) -> NDArray[float64]: ... @overload def __rtruediv__(self: NDArray[bool_], other: _ArrayLikeTD64_co) -> NoReturn: ... @overload @@ -2817,7 +2818,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeType, _DType_co]): @overload def __imod__(self: NDArray[floating[_NBit1]], other: _ArrayLikeFloat_co) -> NDArray[floating[_NBit1]]: ... @overload - def __imod__(self: NDArray[timedelta64], other: _NestedSequence[_SupportsArray[dtype[timedelta64]]]) -> NDArray[timedelta64]: ... + def __imod__(self: NDArray[timedelta64], other: _NestedSequence[_SupportsArray[_dtype[timedelta64]]]) -> NDArray[timedelta64]: ... @overload def __imod__(self: NDArray[object_], other: Any) -> NDArray[object_]: ... @overload @@ -2904,7 +2905,7 @@ class generic(_ArrayOrScalarCommon): @abstractmethod def __init__(self, *args: Any, **kwargs: Any) -> None: ... @overload - def __array__(self: _ScalarType, __dtype: None = ...) -> ndarray[Any, dtype[_ScalarType]]: ... + def __array__(self: _ScalarType, __dtype: None = ...) -> ndarray[Any, _dtype[_ScalarType]]: ... @overload def __array__(self, __dtype: _DType) -> ndarray[Any, _DType]: ... @property @@ -2919,7 +2920,7 @@ class generic(_ArrayOrScalarCommon): def strides(self) -> Tuple[()]: ... def byteswap(self: _ScalarType, inplace: L[False] = ...) -> _ScalarType: ... @property - def flat(self: _ScalarType) -> flatiter[ndarray[Any, dtype[_ScalarType]]]: ... + def flat(self: _ScalarType) -> flatiter[ndarray[Any, _dtype[_ScalarType]]]: ... @overload def astype( @@ -2993,7 +2994,7 @@ class generic(_ArrayOrScalarCommon): axis: Optional[SupportsIndex] = ..., out: None = ..., mode: _ModeKind = ..., - ) -> ndarray[Any, dtype[_ScalarType]]: ... + ) -> ndarray[Any, _dtype[_ScalarType]]: ... @overload def take( self, @@ -3007,26 +3008,26 @@ class generic(_ArrayOrScalarCommon): self: _ScalarType, repeats: _ArrayLikeInt_co, axis: Optional[SupportsIndex] = ..., - ) -> ndarray[Any, dtype[_ScalarType]]: ... + ) -> ndarray[Any, _dtype[_ScalarType]]: ... def flatten( self: _ScalarType, order: _OrderKACF = ..., - ) -> ndarray[Any, dtype[_ScalarType]]: ... + ) -> ndarray[Any, _dtype[_ScalarType]]: ... def ravel( self: _ScalarType, order: _OrderKACF = ..., - ) -> ndarray[Any, dtype[_ScalarType]]: ... + ) -> ndarray[Any, _dtype[_ScalarType]]: ... @overload def reshape( self: _ScalarType, __shape: _ShapeLike, *, order: _OrderACF = ... - ) -> ndarray[Any, dtype[_ScalarType]]: ... + ) -> ndarray[Any, _dtype[_ScalarType]]: ... @overload def reshape( self: _ScalarType, *shape: SupportsIndex, order: _OrderACF = ... - ) -> ndarray[Any, dtype[_ScalarType]]: ... + ) -> ndarray[Any, _dtype[_ScalarType]]: ... def squeeze( self: _ScalarType, axis: Union[L[0], Tuple[()]] = ... @@ -3034,7 +3035,7 @@ class generic(_ArrayOrScalarCommon): def transpose(self: _ScalarType, __axes: Tuple[()] = ...) -> _ScalarType: ... # Keep `dtype` at the bottom to avoid name conflicts with `np.dtype` @property - def dtype(self: _ScalarType) -> dtype[_ScalarType]: ... + def dtype(self: _ScalarType) -> _dtype[_ScalarType]: ... class number(generic, Generic[_NBit1]): # type: ignore @property diff --git a/numpy/_version.py b/numpy/_version.py index 723d927d..3ffbf4d6 100644 --- a/numpy/_version.py +++ b/numpy/_version.py @@ -8,11 +8,11 @@ import json version_json = ''' { - "date": "2021-10-19T18:45:47-0600", + "date": "2021-11-04T15:06:03-0600", "dirty": false, "error": null, - "full-revisionid": "d4d0584ccb508cad69288b504e6c8b04aa0d5caf", - "version": "1.21.3" + "full-revisionid": "c0b003e9c787ccab27f6fe57c154d7b881da5795", + "version": "1.21.4" } ''' # END VERSION_JSON diff --git a/numpy/core/include/numpy/numpyconfig.h b/numpy/core/include/numpy/numpyconfig.h index a1b1de0e..3909aa9c 100644 --- a/numpy/core/include/numpy/numpyconfig.h +++ b/numpy/core/include/numpy/numpyconfig.h @@ -19,6 +19,19 @@ #define NPY_SIZEOF_LONG 4 #define NPY_SIZEOF_PY_INTPTR_T 4 #endif + + #undef NPY_SIZEOF_LONGDOUBLE + #undef NPY_SIZEOF_COMPLEX_LONGDOUBLE + + #ifdef __x86_64 + #define NPY_SIZEOF_LONGDOUBLE 16 + #define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32 + #elif defined(__arm64__) + #define NPY_SIZEOF_LONGDOUBLE 8 + #define NPY_SIZEOF_COMPLEX_LONGDOUBLE 16 + #else + #error "unknown architecture" + #endif #endif /** diff --git a/numpy/core/src/common/simd/avx2/memory.h b/numpy/core/src/common/simd/avx2/memory.h index e27bf15f..5891a270 100644 --- a/numpy/core/src/common/simd/avx2/memory.h +++ b/numpy/core/src/common/simd/avx2/memory.h @@ -87,7 +87,7 @@ NPY_FINLINE npyv_f32 npyv_loadn_f32(const float *ptr, npy_intp stride) #if 0 // slower NPY_FINLINE npyv_u64 npyv_loadn_u64(const npy_uint64 *ptr, npy_intp stride) { - const __m256i idx = _mm256_setr_epi64x(0, 1*stride, 2*stride, 3*stride); + const __m256i idx = npyv_set_s64(0, 1*stride, 2*stride, 3*stride); return _mm256_i64gather_epi64((const void*)ptr, idx, 8); } NPY_FINLINE npyv_s64 npyv_loadn_s64(const npy_int64 *ptr, npy_intp stride) @@ -170,9 +170,9 @@ NPY_FINLINE npyv_s32 npyv_load_tillz_s32(const npy_int32 *ptr, npy_uintp nlane) NPY_FINLINE npyv_s64 npyv_load_till_s64(const npy_int64 *ptr, npy_uintp nlane, npy_int64 fill) { assert(nlane > 0); - const __m256i vfill = _mm256_set1_epi64x(fill); - const __m256i steps = _mm256_setr_epi64x(0, 1, 2, 3); - __m256i vnlane = _mm256_set1_epi64x(nlane > 4 ? 4 : (int)nlane); + const __m256i vfill = npyv_setall_s64(fill); + const __m256i steps = npyv_set_s64(0, 1, 2, 3); + __m256i vnlane = npyv_setall_s64(nlane > 4 ? 4 : (int)nlane); __m256i mask = _mm256_cmpgt_epi64(vnlane, steps); __m256i payload = _mm256_maskload_epi64((const void*)ptr, mask); return _mm256_blendv_epi8(vfill, payload, mask); @@ -181,8 +181,8 @@ NPY_FINLINE npyv_s64 npyv_load_till_s64(const npy_int64 *ptr, npy_uintp nlane, n NPY_FINLINE npyv_s64 npyv_load_tillz_s64(const npy_int64 *ptr, npy_uintp nlane) { assert(nlane > 0); - const __m256i steps = _mm256_setr_epi64x(0, 1, 2, 3); - __m256i vnlane = _mm256_set1_epi64x(nlane > 4 ? 4 : (int)nlane); + const __m256i steps = npyv_set_s64(0, 1, 2, 3); + __m256i vnlane = npyv_setall_s64(nlane > 4 ? 4 : (int)nlane); __m256i mask = _mm256_cmpgt_epi64(vnlane, steps); return _mm256_maskload_epi64((const void*)ptr, mask); } @@ -211,10 +211,10 @@ NPY_FINLINE npyv_s64 npyv_loadn_till_s64(const npy_int64 *ptr, npy_intp stride, npy_uintp nlane, npy_int64 fill) { assert(nlane > 0); - const __m256i vfill = _mm256_set1_epi64x(fill); - const __m256i idx = _mm256_setr_epi64x(0, 1*stride, 2*stride, 3*stride); - const __m256i steps = _mm256_setr_epi64x(0, 1, 2, 3); - __m256i vnlane = _mm256_set1_epi64x(nlane > 4 ? 4 : (int)nlane); + const __m256i vfill = npyv_setall_s64(fill); + const __m256i idx = npyv_set_s64(0, 1*stride, 2*stride, 3*stride); + const __m256i steps = npyv_set_s64(0, 1, 2, 3); + __m256i vnlane = npyv_setall_s64(nlane > 4 ? 4 : (int)nlane); __m256i mask = _mm256_cmpgt_epi64(vnlane, steps); return _mm256_mask_i64gather_epi64(vfill, (const void*)ptr, idx, mask, 8); } @@ -238,8 +238,8 @@ NPY_FINLINE void npyv_store_till_s32(npy_int32 *ptr, npy_uintp nlane, npyv_s32 a NPY_FINLINE void npyv_store_till_s64(npy_int64 *ptr, npy_uintp nlane, npyv_s64 a) { assert(nlane > 0); - const __m256i steps = _mm256_setr_epi64x(0, 1, 2, 3); - __m256i vnlane = _mm256_set1_epi64x(nlane > 8 ? 8 : (int)nlane); + const __m256i steps = npyv_set_s64(0, 1, 2, 3); + __m256i vnlane = npyv_setall_s64(nlane > 8 ? 8 : (int)nlane); __m256i mask = _mm256_cmpgt_epi64(vnlane, steps); _mm256_maskstore_epi64((void*)ptr, mask, a); } diff --git a/numpy/core/src/common/simd/avx2/misc.h b/numpy/core/src/common/simd/avx2/misc.h index e96696dc..5e91e91b 100644 --- a/numpy/core/src/common/simd/avx2/misc.h +++ b/numpy/core/src/common/simd/avx2/misc.h @@ -24,11 +24,27 @@ #define npyv_setall_s16(VAL) _mm256_set1_epi16((short)VAL) #define npyv_setall_u32(VAL) _mm256_set1_epi32((int)VAL) #define npyv_setall_s32(VAL) _mm256_set1_epi32(VAL) -#define npyv_setall_u64(VAL) _mm256_set1_epi64x(VAL) -#define npyv_setall_s64(VAL) _mm256_set1_epi64x(VAL) #define npyv_setall_f32(VAL) _mm256_set1_ps(VAL) #define npyv_setall_f64(VAL) _mm256_set1_pd(VAL) +NPY_FINLINE __m256i npyv__setr_epi64(npy_int64, npy_int64, npy_int64, npy_int64); +NPY_FINLINE npyv_u64 npyv_setall_u64(npy_uint64 a) +{ + npy_int64 ai = (npy_int64)a; +#if defined(_MSC_VER) && defined(_M_IX86) + return npyv__setr_epi64(ai, ai, ai, ai); +#else + return _mm256_set1_epi64x(ai); +#endif +} +NPY_FINLINE npyv_s64 npyv_setall_s64(npy_int64 a) +{ +#if defined(_MSC_VER) && defined(_M_IX86) + return npyv__setr_epi64(a, a, a, a); +#else + return _mm256_set1_epi64x(a); +#endif +} /* * vector with specific values set to each lane and * set a specific value to all remained lanes @@ -59,7 +75,14 @@ NPY_FINLINE __m256i npyv__setr_epi32(int i0, int i1, int i2, int i3, int i4, int } NPY_FINLINE __m256i npyv__setr_epi64(npy_int64 i0, npy_int64 i1, npy_int64 i2, npy_int64 i3) { +#if defined(_MSC_VER) && defined(_M_IX86) + return _mm256_setr_epi32( + (int)i0, (int)(i0 >> 32), (int)i1, (int)(i1 >> 32), + (int)i2, (int)(i2 >> 32), (int)i3, (int)(i3 >> 32) + ); +#else return _mm256_setr_epi64x(i0, i1, i2, i3); +#endif } NPY_FINLINE __m256 npyv__setr_ps(float i0, float i1, float i2, float i3, float i4, float i5, diff --git a/numpy/core/src/common/simd/avx512/math.h b/numpy/core/src/common/simd/avx512/math.h index 0141396d..0949b2b0 100644 --- a/numpy/core/src/common/simd/avx512/math.h +++ b/numpy/core/src/common/simd/avx512/math.h @@ -35,7 +35,7 @@ NPY_FINLINE npyv_f64 npyv_abs_f64(npyv_f64 a) return _mm512_range_pd(a, a, 8); #else return npyv_and_f64( - a, _mm512_castsi512_pd(_mm512_set1_epi64(0x7fffffffffffffffLL)) + a, _mm512_castsi512_pd(npyv_setall_s64(0x7fffffffffffffffLL)) ); #endif } diff --git a/numpy/core/src/common/simd/avx512/memory.h b/numpy/core/src/common/simd/avx512/memory.h index bffd6e90..47095bf7 100644 --- a/numpy/core/src/common/simd/avx512/memory.h +++ b/numpy/core/src/common/simd/avx512/memory.h @@ -110,7 +110,7 @@ NPY_FINLINE npyv_f32 npyv_loadn_f32(const float *ptr, npy_intp stride) //// 64 NPY_FINLINE npyv_u64 npyv_loadn_u64(const npy_uint64 *ptr, npy_intp stride) { - const __m512i idx = _mm512_setr_epi64( + const __m512i idx = npyv_set_s64( 0*stride, 1*stride, 2*stride, 3*stride, 4*stride, 5*stride, 6*stride, 7*stride ); @@ -140,7 +140,7 @@ NPY_FINLINE void npyv_storen_f32(float *ptr, npy_intp stride, npyv_f32 a) //// 64 NPY_FINLINE void npyv_storen_u64(npy_uint64 *ptr, npy_intp stride, npyv_u64 a) { - const __m512i idx = _mm512_setr_epi64( + const __m512i idx = npyv_set_s64( 0*stride, 1*stride, 2*stride, 3*stride, 4*stride, 5*stride, 6*stride, 7*stride ); @@ -173,7 +173,7 @@ NPY_FINLINE npyv_s32 npyv_load_tillz_s32(const npy_int32 *ptr, npy_uintp nlane) NPY_FINLINE npyv_s64 npyv_load_till_s64(const npy_int64 *ptr, npy_uintp nlane, npy_int64 fill) { assert(nlane > 0); - const __m512i vfill = _mm512_set1_epi64(fill); + const __m512i vfill = npyv_setall_s64(fill); const __mmask8 mask = nlane > 31 ? -1 : (1 << nlane) - 1; return _mm512_mask_loadu_epi64(vfill, mask, (const __m512i*)ptr); } @@ -210,11 +210,11 @@ NPY_FINLINE npyv_s64 npyv_loadn_till_s64(const npy_int64 *ptr, npy_intp stride, npy_uintp nlane, npy_int64 fill) { assert(nlane > 0); - const __m512i idx = _mm512_setr_epi64( + const __m512i idx = npyv_set_s64( 0*stride, 1*stride, 2*stride, 3*stride, 4*stride, 5*stride, 6*stride, 7*stride ); - const __m512i vfill = _mm512_set1_epi64(fill); + const __m512i vfill = npyv_setall_s64(fill); const __mmask8 mask = nlane > 31 ? -1 : (1 << nlane) - 1; return _mm512_mask_i64gather_epi64(vfill, mask, idx, (const __m512i*)ptr, 8); } @@ -258,7 +258,7 @@ NPY_FINLINE void npyv_storen_till_s32(npy_int32 *ptr, npy_intp stride, npy_uintp NPY_FINLINE void npyv_storen_till_s64(npy_int64 *ptr, npy_intp stride, npy_uintp nlane, npyv_s64 a) { assert(nlane > 0); - const __m512i idx = _mm512_setr_epi64( + const __m512i idx = npyv_set_s64( 0*stride, 1*stride, 2*stride, 3*stride, 4*stride, 5*stride, 6*stride, 7*stride ); diff --git a/numpy/core/src/common/simd/avx512/misc.h b/numpy/core/src/common/simd/avx512/misc.h index 4b6729b0..c3039ecf 100644 --- a/numpy/core/src/common/simd/avx512/misc.h +++ b/numpy/core/src/common/simd/avx512/misc.h @@ -24,11 +24,30 @@ #define npyv_setall_s16(VAL) _mm512_set1_epi16((short)VAL) #define npyv_setall_u32(VAL) _mm512_set1_epi32((int)VAL) #define npyv_setall_s32(VAL) _mm512_set1_epi32(VAL) -#define npyv_setall_u64(VAL) _mm512_set1_epi64(VAL) -#define npyv_setall_s64(VAL) _mm512_set1_epi64(VAL) #define npyv_setall_f32(VAL) _mm512_set1_ps(VAL) #define npyv_setall_f64(VAL) _mm512_set1_pd(VAL) +NPY_FINLINE __m512i npyv__setr_epi64( + npy_int64, npy_int64, npy_int64, npy_int64, + npy_int64, npy_int64, npy_int64, npy_int64 +); +NPY_FINLINE npyv_u64 npyv_setall_u64(npy_uint64 a) +{ + npy_int64 ai = (npy_int64)a; +#if defined(_MSC_VER) && defined(_M_IX86) + return npyv__setr_epi64(ai, ai, ai, ai, ai, ai, ai, ai); +#else + return _mm512_set1_epi64(ai); +#endif +} +NPY_FINLINE npyv_s64 npyv_setall_s64(npy_int64 a) +{ +#if defined(_MSC_VER) && defined(_M_IX86) + return npyv__setr_epi64(a, a, a, a, a, a, a, a); +#else + return _mm512_set1_epi64(a); +#endif +} /** * vector with specific values set to each lane and * set a specific value to all remained lanes @@ -76,7 +95,16 @@ NPY_FINLINE __m512i npyv__setr_epi32( NPY_FINLINE __m512i npyv__setr_epi64(npy_int64 i0, npy_int64 i1, npy_int64 i2, npy_int64 i3, npy_int64 i4, npy_int64 i5, npy_int64 i6, npy_int64 i7) { +#if defined(_MSC_VER) && defined(_M_IX86) + return _mm512_setr_epi32( + (int)i0, (int)(i0 >> 32), (int)i1, (int)(i1 >> 32), + (int)i2, (int)(i2 >> 32), (int)i3, (int)(i3 >> 32), + (int)i4, (int)(i4 >> 32), (int)i5, (int)(i5 >> 32), + (int)i6, (int)(i6 >> 32), (int)i7, (int)(i7 >> 32) + ); +#else return _mm512_setr_epi64(i0, i1, i2, i3, i4, i5, i6, i7); +#endif } NPY_FINLINE __m512 npyv__setr_ps( diff --git a/numpy/core/src/common/simd/intdiv.h b/numpy/core/src/common/simd/intdiv.h index f6ea9abf..7df4abfd 100644 --- a/numpy/core/src/common/simd/intdiv.h +++ b/numpy/core/src/common/simd/intdiv.h @@ -162,11 +162,12 @@ NPY_FINLINE npy_uint64 npyv__divh128_u64(npy_uint64 high, npy_uint64 divisor) npy_uint32 divisor_hi = divisor >> 32; npy_uint32 divisor_lo = divisor & 0xFFFFFFFF; // compute high quotient digit - npy_uint32 quotient_hi = (npy_uint32)(high / divisor_hi); + npy_uint64 quotient_hi = high / divisor_hi; npy_uint64 remainder = high - divisor_hi * quotient_hi; npy_uint64 base32 = 1ULL << 32; while (quotient_hi >= base32 || quotient_hi*divisor_lo > base32*remainder) { - remainder += --divisor_hi; + --quotient_hi; + remainder += divisor_hi; if (remainder >= base32) { break; } @@ -200,7 +201,7 @@ NPY_FINLINE npyv_u8x3 npyv_divisor_u8(npy_uint8 d) default: l = npyv__bitscan_revnz_u32(d - 1) + 1; // ceil(log2(d)) l2 = (npy_uint8)(1 << l); // 2^l, overflow to 0 if l = 8 - m = ((l2 - d) << 8) / d + 1; // multiplier + m = ((npy_uint16)((l2 - d) << 8)) / d + 1; // multiplier sh1 = 1; sh2 = l - 1; // shift counts } npyv_u8x3 divisor; diff --git a/numpy/core/src/common/simd/simd.h b/numpy/core/src/common/simd/simd.h index a3e2b95d..08b2a7d0 100644 --- a/numpy/core/src/common/simd/simd.h +++ b/numpy/core/src/common/simd/simd.h @@ -27,6 +27,25 @@ typedef npy_int64 npyv_lanetype_s64; typedef float npyv_lanetype_f32; typedef double npyv_lanetype_f64; +#if defined(_MSC_VER) && defined(_M_IX86) +/* + * Avoid using any of the following intrinsics with MSVC 32-bit, + * even if they are apparently work on newer versions. + * They had bad impact on the generated instructions, + * sometimes the compiler deal with them without the respect + * of 32-bit mode which lead to crush due to execute 64-bit + * instructions and other times generate bad emulated instructions. + */ + #undef _mm512_set1_epi64 + #undef _mm256_set1_epi64x + #undef _mm_set1_epi64x + #undef _mm512_setr_epi64x + #undef _mm256_setr_epi64x + #undef _mm_setr_epi64x + #undef _mm512_set_epi64x + #undef _mm256_set_epi64x + #undef _mm_set_epi64x +#endif #if defined(NPY_HAVE_AVX512F) && !defined(NPY_SIMD_FORCE_256) && !defined(NPY_SIMD_FORCE_128) #include "avx512/avx512.h" #elif defined(NPY_HAVE_AVX2) && !defined(NPY_SIMD_FORCE_128) diff --git a/numpy/core/src/common/simd/sse/misc.h b/numpy/core/src/common/simd/sse/misc.h index 1099c491..7d13fbf5 100644 --- a/numpy/core/src/common/simd/sse/misc.h +++ b/numpy/core/src/common/simd/sse/misc.h @@ -24,11 +24,28 @@ #define npyv_setall_s16(VAL) _mm_set1_epi16((short)(VAL)) #define npyv_setall_u32(VAL) _mm_set1_epi32((int)(VAL)) #define npyv_setall_s32(VAL) _mm_set1_epi32((int)(VAL)) -#define npyv_setall_u64(VAL) _mm_set1_epi64x((npy_int64)(VAL)) -#define npyv_setall_s64(VAL) _mm_set1_epi64x((npy_int64)(VAL)) #define npyv_setall_f32 _mm_set1_ps #define npyv_setall_f64 _mm_set1_pd +NPY_FINLINE __m128i npyv__setr_epi64(npy_int64 i0, npy_int64 i1); + +NPY_FINLINE npyv_u64 npyv_setall_u64(npy_uint64 a) +{ +#if defined(_MSC_VER) && defined(_M_IX86) + return npyv__setr_epi64((npy_int64)a, (npy_int64)a); +#else + return _mm_set1_epi64x((npy_int64)a); +#endif +} +NPY_FINLINE npyv_s64 npyv_setall_s64(npy_int64 a) +{ +#if defined(_MSC_VER) && defined(_M_IX86) + return npyv__setr_epi64(a, a); +#else + return _mm_set1_epi64x((npy_int64)a); +#endif +} + /** * vector with specific values set to each lane and * set a specific value to all remained lanes @@ -53,7 +70,11 @@ NPY_FINLINE __m128i npyv__setr_epi32(int i0, int i1, int i2, int i3) } NPY_FINLINE __m128i npyv__setr_epi64(npy_int64 i0, npy_int64 i1) { +#if defined(_MSC_VER) && defined(_M_IX86) + return _mm_setr_epi32((int)i0, (int)(i0 >> 32), (int)i1, (int)(i1 >> 32)); +#else return _mm_set_epi64x(i1, i0); +#endif } NPY_FINLINE __m128 npyv__setr_ps(float i0, float i1, float i2, float i3) { diff --git a/numpy/core/src/multiarray/arraytypes.c.src b/numpy/core/src/multiarray/arraytypes.c.src index b3ea7544..7f545d6c 100644 --- a/numpy/core/src/multiarray/arraytypes.c.src +++ b/numpy/core/src/multiarray/arraytypes.c.src @@ -2759,10 +2759,10 @@ VOID_nonzero (char *ip, PyArrayObject *ap) dummy_fields.descr = new; if ((new->alignment > 1) && !__ALIGNED(ip + offset, new->alignment)) { - PyArray_CLEARFLAGS(ap, NPY_ARRAY_ALIGNED); + PyArray_CLEARFLAGS(dummy_arr, NPY_ARRAY_ALIGNED); } else { - PyArray_ENABLEFLAGS(ap, NPY_ARRAY_ALIGNED); + PyArray_ENABLEFLAGS(dummy_arr, NPY_ARRAY_ALIGNED); } if (new->f->nonzero(ip+offset, dummy_arr)) { nonz = NPY_TRUE; diff --git a/numpy/core/src/multiarray/item_selection.c b/numpy/core/src/multiarray/item_selection.c index 2b8ea9e7..47d78f25 100644 --- a/numpy/core/src/multiarray/item_selection.c +++ b/numpy/core/src/multiarray/item_selection.c @@ -2390,19 +2390,14 @@ PyArray_CountNonzero(PyArrayObject *self) npy_intp *strideptr, *innersizeptr; NPY_BEGIN_THREADS_DEF; - // Special low-overhead version specific to the boolean/int types dtype = PyArray_DESCR(self); - switch(dtype->kind) { - case 'u': - case 'i': - case 'b': - if (dtype->elsize > 8) { - break; - } - return count_nonzero_int( - PyArray_NDIM(self), PyArray_BYTES(self), PyArray_DIMS(self), - PyArray_STRIDES(self), dtype->elsize - ); + /* Special low-overhead version specific to the boolean/int types */ + if (PyArray_ISALIGNED(self) && ( + PyDataType_ISBOOL(dtype) || PyDataType_ISINTEGER(dtype))) { + return count_nonzero_int( + PyArray_NDIM(self), PyArray_BYTES(self), PyArray_DIMS(self), + PyArray_STRIDES(self), dtype->elsize + ); } nonzero = PyArray_DESCR(self)->f->nonzero; diff --git a/numpy/core/src/umath/svml/LICENSE b/numpy/core/src/umath/svml/LICENSE new file mode 100644 index 00000000..4723d4ea --- /dev/null +++ b/numpy/core/src/umath/svml/LICENSE @@ -0,0 +1,30 @@ +Copyright (c) 2005-2021, NumPy Developers. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the NumPy Developers nor the names of any + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/numpy/core/src/umath/svml/README.md b/numpy/core/src/umath/svml/README.md new file mode 100644 index 00000000..65ab9815 --- /dev/null +++ b/numpy/core/src/umath/svml/README.md @@ -0,0 +1,4 @@ +Short Vector Math Library (SVML) + +Provides vectorized implementations of commonly used math functions (currently +supports only x86_64 AVX-512). diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s new file mode 100644 index 00000000..779b9105 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s @@ -0,0 +1,2642 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + + + .text +.L_2__routine_start___svml_acos8_z0_0: + + .align 16,0x90 + .globl __svml_acos8 + +__svml_acos8: + + + .cfi_startproc +..L2: + + 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 + +/* Xx then a=-x, b=y, PIO2=Pi/2 + */ + vmovups 64+__svml_datan2_data_internal(%rip), %zmm3 + vandpd %zmm4, %zmm0, %zmm11 + vmovaps %zmm1, %zmm7 + vandpd %zmm4, %zmm7, %zmm2 + vandpd %zmm6, %zmm7, %zmm5 + vandpd %zmm6, %zmm0, %zmm4 + vorpd %zmm6, %zmm2, %zmm12 + vcmppd $17, {sae}, %zmm2, %zmm11, %k1 + vmovdqu 1664+__svml_datan2_data_internal(%rip), %ymm6 + vmovups %zmm11, 64(%rsp) + +/* Check if y and x are on main path. */ + vpsrlq $32, %zmm2, %zmm9 + vblendmpd %zmm11, %zmm12, %zmm13{%k1} + vblendmpd %zmm2, %zmm11, %zmm15{%k1} + vpsrlq $32, %zmm11, %zmm8 + vmovdqu 1600+__svml_datan2_data_internal(%rip), %ymm12 + vdivpd {rn-sae}, %zmm15, %zmm13, %zmm1 + vmovups %zmm15, (%rsp) + vpmovqd %zmm9, %ymm14 + vpmovqd %zmm8, %ymm10 + vxorpd %zmm3, %zmm3, %zmm3{%k1} + vpsubd %ymm12, %ymm14, %ymm13 + vpsubd %ymm12, %ymm10, %ymm9 + +/* Polynomial. */ + vmulpd {rn-sae}, %zmm1, %zmm1, %zmm12 + vpcmpgtd %ymm6, %ymm13, %ymm15 + vpcmpeqd %ymm6, %ymm13, %ymm11 + vmulpd {rn-sae}, %zmm12, %zmm12, %zmm13 + vpor %ymm11, %ymm15, %ymm8 + vmovups 256+__svml_datan2_data_internal(%rip), %zmm11 + vmovups 512+__svml_datan2_data_internal(%rip), %zmm15 + vpcmpgtd %ymm6, %ymm9, %ymm14 + vpcmpeqd %ymm6, %ymm9, %ymm6 + vpor %ymm6, %ymm14, %ymm10 + vmulpd {rn-sae}, %zmm13, %zmm13, %zmm14 + vmovups 320+__svml_datan2_data_internal(%rip), %zmm9 + vpor %ymm10, %ymm8, %ymm6 + vmovups 384+__svml_datan2_data_internal(%rip), %zmm10 + vfmadd231pd {rn-sae}, %zmm14, %zmm11, %zmm15 + vmovups 576+__svml_datan2_data_internal(%rip), %zmm11 + vmovups 704+__svml_datan2_data_internal(%rip), %zmm8 + vfmadd231pd {rn-sae}, %zmm14, %zmm9, %zmm11 + vmovups 640+__svml_datan2_data_internal(%rip), %zmm9 + vfmadd231pd {rn-sae}, %zmm14, %zmm10, %zmm9 + vmovups 448+__svml_datan2_data_internal(%rip), %zmm10 + vfmadd231pd {rn-sae}, %zmm14, %zmm10, %zmm8 + vmovups 768+__svml_datan2_data_internal(%rip), %zmm10 + vfmadd213pd {rn-sae}, %zmm10, %zmm14, %zmm15 + vmovups 832+__svml_datan2_data_internal(%rip), %zmm10 + vfmadd213pd {rn-sae}, %zmm10, %zmm14, %zmm11 + vmovups 896+__svml_datan2_data_internal(%rip), %zmm10 + vfmadd213pd {rn-sae}, %zmm10, %zmm14, %zmm9 + vmovups 960+__svml_datan2_data_internal(%rip), %zmm10 + vfmadd213pd {rn-sae}, %zmm10, %zmm14, %zmm8 + vmovups 1024+__svml_datan2_data_internal(%rip), %zmm10 + vfmadd213pd {rn-sae}, %zmm10, %zmm14, %zmm15 + vmovups 1088+__svml_datan2_data_internal(%rip), %zmm10 + vfmadd213pd {rn-sae}, %zmm10, %zmm14, %zmm11 + vmovups 1152+__svml_datan2_data_internal(%rip), %zmm10 + vfmadd213pd {rn-sae}, %zmm10, %zmm14, %zmm9 + vmovups 1216+__svml_datan2_data_internal(%rip), %zmm10 + vfmadd213pd {rn-sae}, %zmm10, %zmm14, %zmm8 + vmovups 1280+__svml_datan2_data_internal(%rip), %zmm10 + +/* A00=1.0, account for it later VQFMA(D, dP4, dP4, dR8, dA00); */ + vmulpd {rn-sae}, %zmm14, %zmm8, %zmm8 + vfmadd213pd {rn-sae}, %zmm10, %zmm14, %zmm15 + vmovups 1344+__svml_datan2_data_internal(%rip), %zmm10 + vfmadd213pd {rn-sae}, %zmm10, %zmm14, %zmm11 + vmovups 1408+__svml_datan2_data_internal(%rip), %zmm10 + vfmadd213pd {rn-sae}, %zmm11, %zmm12, %zmm15 + vfmadd213pd {rn-sae}, %zmm10, %zmm14, %zmm9 + vfmadd213pd {rn-sae}, %zmm8, %zmm12, %zmm9 + vmovups __svml_datan2_data_internal(%rip), %zmm8 + vfmadd213pd {rn-sae}, %zmm9, %zmm13, %zmm15 + +/* + * Reconstruction. + * dP=(R+R*dP) + dPIO2 + */ + vfmadd213pd {rn-sae}, %zmm1, %zmm1, %zmm15 + vaddpd {rn-sae}, %zmm3, %zmm15, %zmm1 + vorpd %zmm5, %zmm1, %zmm9 + +/* if x<0, dPI = Pi, else dPI =0 */ + vmovups 1792+__svml_datan2_data_internal(%rip), %zmm1 + vcmppd $18, {sae}, %zmm1, %zmm7, %k2 + vaddpd {rn-sae}, %zmm8, %zmm9, %zmm9{%k2} + vmovmskps %ymm6, %eax + vorpd %zmm4, %zmm9, %zmm11 + +/* =========== Special branch for fast (vector) processing of zero arguments ================ */ + vmovups 64(%rsp), %zmm9 + testl %eax, %eax + jne .LBL_1_12 + +.LBL_1_2: + + +/* + * =========== Special branch for fast (vector) processing of zero arguments ================ + * -------------- The end of implementation ---------------- + */ + testl %edx, %edx + jne .LBL_1_4 + +.LBL_1_3: + + +/* no invcbrt in libm, so taking it out here */ + vmovaps %zmm11, %zmm0 + 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_4: + + vmovups %zmm0, 64(%rsp) + vmovups %zmm7, 128(%rsp) + vmovups %zmm11, 192(%rsp) + je .LBL_1_3 + + + 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, 0x28, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x38, 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, 0x30, 0xff, 0xff, 0xff, 0x22 + movl %edx, %r13d + .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x18, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x08, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22 + +.LBL_1_8: + + btl %r12d, %r13d + jc .LBL_1_11 + +.LBL_1_9: + + incl %r12d + cmpl $8, %r12d + jl .LBL_1_8 + + + 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 192(%rsp), %zmm11 + 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_3 + .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x28, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x38, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x18, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x08, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22 + +.LBL_1_11: + + lea 64(%rsp,%r12,8), %rdi + lea 128(%rsp,%r12,8), %rsi + lea 192(%rsp,%r12,8), %rdx + + call __svml_datan2_cout_rare_internal + jmp .LBL_1_9 + .cfi_restore 4 + .cfi_restore 5 + .cfi_restore 12 + .cfi_restore 13 + .cfi_restore 122 + .cfi_restore 123 + .cfi_restore 124 + .cfi_restore 125 + +.LBL_1_12: + + +/* Check if both X & Y are not NaNs: iXYnotNAN */ + vcmppd $3, {sae}, %zmm7, %zmm7, %k1 + vcmppd $3, {sae}, %zmm0, %zmm0, %k2 + +/* Check if at least on of Y or Y is zero: iAXAYZERO */ + vmovups 1792+__svml_datan2_data_internal(%rip), %zmm8 + vpbroadcastq .L_2il0floatpacket.31(%rip), %zmm10 + vcmppd $4, {sae}, %zmm8, %zmm2, %k3 + vmovaps %zmm10, %zmm12 + vmovaps %zmm10, %zmm15 + vmovaps %zmm10, %zmm13 + vpandnq %zmm7, %zmm7, %zmm12{%k1} + vcmppd $4, {sae}, %zmm8, %zmm9, %k1 + vpandnq %zmm2, %zmm2, %zmm15{%k3} + vmovaps %zmm10, %zmm2 + +/* Res = sign(Y)*(X<0)?(PIO2+PI):PIO2 */ + vpcmpgtq %zmm7, %zmm8, %k3 + vpandnq %zmm0, %zmm0, %zmm13{%k2} + vpandnq %zmm9, %zmm9, %zmm2{%k1} + vandpd %zmm13, %zmm12, %zmm14 + vorpd %zmm2, %zmm15, %zmm9 + vpsrlq $32, %zmm14, %zmm1 + vpsrlq $32, %zmm9, %zmm2 + vpmovqd %zmm1, %ymm1 + vpmovqd %zmm2, %ymm9 + +/* Check if at least on of Y or Y is zero and not NaN: iAXAYZEROnotNAN */ + vpand %ymm1, %ymm9, %ymm2 + +/* + * -------- Path for zero arguments (at least one of both) -------------- + * Check if both args are zeros (den. is zero) + */ + vmovups (%rsp), %zmm1 + +/* Exclude from previous callout mask zero (and not NaN) arguments */ + vpandn %ymm6, %ymm2, %ymm6 + vcmppd $4, {sae}, %zmm8, %zmm1, %k2 + +/* Go to callout */ + vmovmskps %ymm6, %edx + vpandnq %zmm1, %zmm1, %zmm10{%k2} + +/* Set sPIO2 to zero if den. is zero */ + vpandnq %zmm3, %zmm10, %zmm3 + vpandq %zmm10, %zmm8, %zmm1 + vporq %zmm1, %zmm3, %zmm3 + vorpd %zmm5, %zmm3, %zmm1 + vmovups __svml_datan2_data_internal(%rip), %zmm5 + vaddpd {rn-sae}, %zmm5, %zmm1, %zmm1{%k3} + vorpd %zmm4, %zmm1, %zmm1 + +/* Merge results from main and spec path */ + vpmovzxdq %ymm2, %zmm4 + vpsllq $32, %zmm4, %zmm2 + vpord %zmm2, %zmm4, %zmm3 + vpandnq %zmm11, %zmm3, %zmm11 + vpandq %zmm3, %zmm1, %zmm1 + vporq %zmm1, %zmm11, %zmm11 + jmp .LBL_1_2 + .align 16,0x90 + + .cfi_endproc + + .type __svml_atan28,@function + .size __svml_atan28,.-__svml_atan28 +..LN__svml_atan28.0: + +.L_2__routine_start___svml_datan2_cout_rare_internal_1: + + .align 16,0x90 + +__svml_datan2_cout_rare_internal: + + + .cfi_startproc +..L65: + + movq %rdx, %rcx + movsd 1888+__datan2_la_CoutTab(%rip), %xmm1 + movsd (%rdi), %xmm2 + movsd (%rsi), %xmm0 + mulsd %xmm1, %xmm2 + mulsd %xmm0, %xmm1 + movsd %xmm2, -48(%rsp) + movsd %xmm1, -40(%rsp) + movzwl -42(%rsp), %r9d + andl $32752, %r9d + movb -33(%rsp), %al + movzwl -34(%rsp), %r8d + andb $-128, %al + andl $32752, %r8d + shrl $4, %r9d + movb -41(%rsp), %dl + shrb $7, %dl + shrb $7, %al + shrl $4, %r8d + cmpl $2047, %r9d + je .LBL_2_49 + + + cmpl $2047, %r8d + je .LBL_2_38 + + + testl %r9d, %r9d + jne .LBL_2_6 + + + testl $1048575, -44(%rsp) + jne .LBL_2_6 + + + cmpl $0, -48(%rsp) + je .LBL_2_31 + +.LBL_2_6: + + testl %r8d, %r8d + jne .LBL_2_9 + + + testl $1048575, -36(%rsp) + jne .LBL_2_9 + + + cmpl $0, -40(%rsp) + je .LBL_2_29 + +.LBL_2_9: + + negl %r8d + movsd %xmm2, -48(%rsp) + addl %r9d, %r8d + movsd %xmm1, -40(%rsp) + movb -41(%rsp), %dil + movb -33(%rsp), %sil + andb $127, %dil + andb $127, %sil + cmpl $-54, %r8d + jle .LBL_2_24 + + + cmpl $54, %r8d + jge .LBL_2_21 + + + movb %sil, -33(%rsp) + movb %dil, -41(%rsp) + testb %al, %al + jne .LBL_2_13 + + + movsd 1976+__datan2_la_CoutTab(%rip), %xmm1 + movaps %xmm1, %xmm0 + jmp .LBL_2_14 + +.LBL_2_13: + + movsd 1936+__datan2_la_CoutTab(%rip), %xmm1 + movsd 1944+__datan2_la_CoutTab(%rip), %xmm0 + +.LBL_2_14: + + movsd -48(%rsp), %xmm4 + movsd -40(%rsp), %xmm2 + movaps %xmm4, %xmm5 + divsd %xmm2, %xmm5 + movzwl -42(%rsp), %esi + movsd %xmm5, -16(%rsp) + testl %r9d, %r9d + jle .LBL_2_37 + + + cmpl $2046, %r9d + jge .LBL_2_17 + + + andl $-32753, %esi + addl $-1023, %r9d + movsd %xmm4, -48(%rsp) + addl $16368, %esi + movw %si, -42(%rsp) + jmp .LBL_2_18 + +.LBL_2_17: + + movsd 1992+__datan2_la_CoutTab(%rip), %xmm3 + movl $1022, %r9d + mulsd %xmm3, %xmm4 + movsd %xmm4, -48(%rsp) + +.LBL_2_18: + + negl %r9d + addl $1023, %r9d + andl $2047, %r9d + movzwl 1894+__datan2_la_CoutTab(%rip), %esi + movsd 1888+__datan2_la_CoutTab(%rip), %xmm3 + andl $-32753, %esi + shll $4, %r9d + movsd %xmm3, -40(%rsp) + orl %r9d, %esi + movw %si, -34(%rsp) + movsd -40(%rsp), %xmm4 + mulsd %xmm4, %xmm2 + comisd 1880+__datan2_la_CoutTab(%rip), %xmm5 + jb .LBL_2_20 + + + movsd 2000+__datan2_la_CoutTab(%rip), %xmm12 + movaps %xmm2, %xmm3 + mulsd %xmm2, %xmm12 + movsd %xmm12, -72(%rsp) + movsd -72(%rsp), %xmm13 + movsd %xmm5, -24(%rsp) + subsd %xmm2, %xmm13 + movsd %xmm13, -64(%rsp) + movsd -72(%rsp), %xmm15 + movsd -64(%rsp), %xmm14 + movl -20(%rsp), %r8d + movl %r8d, %r9d + andl $-524288, %r8d + andl $-1048576, %r9d + addl $262144, %r8d + subsd %xmm14, %xmm15 + movsd %xmm15, -72(%rsp) + andl $1048575, %r8d + movsd -72(%rsp), %xmm4 + orl %r8d, %r9d + movl $0, -24(%rsp) + subsd %xmm4, %xmm3 + movl %r9d, -20(%rsp) + movsd %xmm3, -64(%rsp) + movsd -72(%rsp), %xmm5 + movsd -24(%rsp), %xmm11 + movsd -64(%rsp), %xmm9 + mulsd %xmm11, %xmm5 + mulsd %xmm11, %xmm9 + movsd 1968+__datan2_la_CoutTab(%rip), %xmm8 + mulsd %xmm8, %xmm5 + mulsd %xmm8, %xmm9 + movaps %xmm5, %xmm7 + movzwl -10(%rsp), %edi + addsd %xmm9, %xmm7 + movsd %xmm7, -72(%rsp) + andl $32752, %edi + movsd -72(%rsp), %xmm6 + shrl $4, %edi + subsd %xmm6, %xmm5 + movl -12(%rsp), %esi + addsd %xmm5, %xmm9 + movsd %xmm9, -64(%rsp) + andl $1048575, %esi + movsd -48(%rsp), %xmm9 + movsd -72(%rsp), %xmm3 + movaps %xmm9, %xmm12 + movsd -64(%rsp), %xmm10 + movaps %xmm9, %xmm14 + movaps %xmm9, %xmm6 + addsd %xmm3, %xmm12 + movsd %xmm12, -72(%rsp) + movsd -72(%rsp), %xmm13 + shll $20, %edi + subsd %xmm13, %xmm14 + movsd %xmm14, -64(%rsp) + orl %esi, %edi + movsd -72(%rsp), %xmm4 + addl $-1069547520, %edi + movsd -64(%rsp), %xmm15 + movl $113, %esi + movsd 2000+__datan2_la_CoutTab(%rip), %xmm13 + addsd %xmm15, %xmm4 + movsd %xmm4, -56(%rsp) + movsd -64(%rsp), %xmm8 + sarl $19, %edi + addsd %xmm3, %xmm8 + movsd %xmm8, -64(%rsp) + cmpl $113, %edi + movsd -56(%rsp), %xmm7 + cmovl %edi, %esi + subsd %xmm7, %xmm6 + movsd %xmm6, -56(%rsp) + addl %esi, %esi + movsd -64(%rsp), %xmm12 + lea __datan2_la_CoutTab(%rip), %rdi + movsd -56(%rsp), %xmm5 + movslq %esi, %rsi + addsd %xmm5, %xmm12 + movsd %xmm12, -56(%rsp) + movsd -72(%rsp), %xmm7 + mulsd %xmm7, %xmm13 + movsd -56(%rsp), %xmm8 + movsd %xmm13, -72(%rsp) + addsd %xmm10, %xmm8 + movsd -72(%rsp), %xmm4 + movaps %xmm9, %xmm10 + mulsd 2000+__datan2_la_CoutTab(%rip), %xmm10 + subsd %xmm7, %xmm4 + movsd %xmm4, -64(%rsp) + movsd -72(%rsp), %xmm3 + movsd -64(%rsp), %xmm14 + subsd %xmm14, %xmm3 + movsd %xmm3, -72(%rsp) + movsd -72(%rsp), %xmm15 + subsd %xmm15, %xmm7 + movsd %xmm7, -64(%rsp) + movsd -72(%rsp), %xmm7 + movsd -64(%rsp), %xmm4 + movsd %xmm10, -72(%rsp) + movaps %xmm2, %xmm10 + addsd %xmm4, %xmm8 + movsd -72(%rsp), %xmm4 + subsd -48(%rsp), %xmm4 + movsd %xmm4, -64(%rsp) + movsd -72(%rsp), %xmm6 + movsd -64(%rsp), %xmm3 + subsd %xmm3, %xmm6 + movaps %xmm2, %xmm3 + movsd %xmm6, -72(%rsp) + movsd -72(%rsp), %xmm5 + subsd %xmm5, %xmm9 + movsd %xmm9, -64(%rsp) + movsd -72(%rsp), %xmm12 + movsd -64(%rsp), %xmm9 + mulsd %xmm11, %xmm12 + mulsd %xmm11, %xmm9 + movaps %xmm12, %xmm11 + addsd %xmm9, %xmm11 + movsd %xmm11, -72(%rsp) + movsd -72(%rsp), %xmm4 + subsd %xmm4, %xmm12 + addsd %xmm9, %xmm12 + movsd %xmm12, -64(%rsp) + movsd -72(%rsp), %xmm15 + movsd -64(%rsp), %xmm6 + addsd %xmm15, %xmm3 + movsd %xmm3, -72(%rsp) + movsd -72(%rsp), %xmm5 + movsd 2000+__datan2_la_CoutTab(%rip), %xmm3 + subsd %xmm5, %xmm10 + movsd %xmm10, -64(%rsp) + movsd -72(%rsp), %xmm13 + movsd -64(%rsp), %xmm11 + addsd %xmm11, %xmm13 + movsd %xmm13, -56(%rsp) + movsd -64(%rsp), %xmm14 + movsd 2000+__datan2_la_CoutTab(%rip), %xmm13 + addsd %xmm14, %xmm15 + movsd %xmm15, -64(%rsp) + movsd -56(%rsp), %xmm4 + movsd 1888+__datan2_la_CoutTab(%rip), %xmm14 + subsd %xmm4, %xmm2 + movsd %xmm2, -56(%rsp) + movsd -64(%rsp), %xmm4 + movsd -56(%rsp), %xmm2 + addsd %xmm2, %xmm4 + movsd %xmm4, -56(%rsp) + movsd -72(%rsp), %xmm12 + mulsd %xmm12, %xmm3 + movsd -56(%rsp), %xmm5 + movsd %xmm3, -72(%rsp) + addsd %xmm6, %xmm5 + movsd -72(%rsp), %xmm9 + subsd %xmm12, %xmm9 + movsd %xmm9, -64(%rsp) + movsd -72(%rsp), %xmm10 + movsd -64(%rsp), %xmm2 + subsd %xmm2, %xmm10 + movsd %xmm10, -72(%rsp) + movsd -72(%rsp), %xmm11 + subsd %xmm11, %xmm12 + movsd %xmm12, -64(%rsp) + movsd -72(%rsp), %xmm9 + divsd %xmm9, %xmm14 + mulsd %xmm14, %xmm13 + movsd -64(%rsp), %xmm10 + movsd %xmm13, -64(%rsp) + addsd %xmm10, %xmm5 + movsd -64(%rsp), %xmm15 + movsd 1888+__datan2_la_CoutTab(%rip), %xmm12 + subsd %xmm14, %xmm15 + movsd %xmm15, -56(%rsp) + movsd -64(%rsp), %xmm2 + movsd -56(%rsp), %xmm4 + movsd 2000+__datan2_la_CoutTab(%rip), %xmm13 + subsd %xmm4, %xmm2 + movsd %xmm2, -56(%rsp) + movsd -56(%rsp), %xmm3 + mulsd %xmm3, %xmm9 + movsd -56(%rsp), %xmm11 + subsd %xmm9, %xmm12 + mulsd %xmm11, %xmm5 + movsd %xmm5, -64(%rsp) + movsd -64(%rsp), %xmm5 + subsd %xmm5, %xmm12 + movsd %xmm12, -64(%rsp) + movsd -64(%rsp), %xmm2 + movq -56(%rsp), %r10 + movsd -64(%rsp), %xmm6 + movsd -56(%rsp), %xmm4 + movq %r10, -40(%rsp) + movsd -40(%rsp), %xmm3 + movaps %xmm3, %xmm5 + addsd 1888+__datan2_la_CoutTab(%rip), %xmm2 + mulsd %xmm7, %xmm5 + mulsd %xmm6, %xmm2 + mulsd %xmm4, %xmm2 + mulsd %xmm2, %xmm7 + mulsd %xmm8, %xmm2 + mulsd %xmm3, %xmm8 + addsd %xmm2, %xmm7 + movsd 1872+__datan2_la_CoutTab(%rip), %xmm3 + addsd %xmm8, %xmm7 + movsd %xmm7, -72(%rsp) + movaps %xmm5, %xmm7 + movsd -72(%rsp), %xmm4 + movsd 2000+__datan2_la_CoutTab(%rip), %xmm6 + addsd %xmm4, %xmm7 + movsd %xmm7, -72(%rsp) + movsd -72(%rsp), %xmm8 + subsd %xmm8, %xmm5 + addsd %xmm4, %xmm5 + movsd %xmm5, -64(%rsp) + movsd -72(%rsp), %xmm11 + movaps %xmm11, %xmm2 + mulsd %xmm11, %xmm2 + mulsd %xmm11, %xmm6 + mulsd %xmm2, %xmm3 + movsd -64(%rsp), %xmm4 + movsd %xmm6, -72(%rsp) + movsd -72(%rsp), %xmm7 + addsd 1864+__datan2_la_CoutTab(%rip), %xmm3 + subsd %xmm11, %xmm7 + mulsd %xmm2, %xmm3 + movsd %xmm7, -64(%rsp) + movsd -72(%rsp), %xmm9 + movsd -64(%rsp), %xmm8 + addsd 1856+__datan2_la_CoutTab(%rip), %xmm3 + subsd %xmm8, %xmm9 + mulsd %xmm2, %xmm3 + movsd %xmm9, -72(%rsp) + movsd -72(%rsp), %xmm10 + addsd 1848+__datan2_la_CoutTab(%rip), %xmm3 + subsd %xmm10, %xmm11 + mulsd %xmm2, %xmm3 + movsd %xmm11, -64(%rsp) + addsd 1840+__datan2_la_CoutTab(%rip), %xmm3 + mulsd %xmm2, %xmm3 + addsd 1832+__datan2_la_CoutTab(%rip), %xmm3 + mulsd %xmm2, %xmm3 + addsd 1824+__datan2_la_CoutTab(%rip), %xmm3 + mulsd %xmm2, %xmm3 + mulsd %xmm3, %xmm13 + movsd -72(%rsp), %xmm2 + movsd -64(%rsp), %xmm12 + movsd %xmm13, -72(%rsp) + addsd %xmm12, %xmm4 + movsd -72(%rsp), %xmm14 + subsd %xmm3, %xmm14 + movsd %xmm14, -64(%rsp) + movsd -72(%rsp), %xmm5 + movsd -64(%rsp), %xmm15 + subsd %xmm15, %xmm5 + movsd %xmm5, -72(%rsp) + movsd -72(%rsp), %xmm6 + subsd %xmm6, %xmm3 + movsd %xmm3, -64(%rsp) + movsd -72(%rsp), %xmm6 + movsd -64(%rsp), %xmm5 + movaps %xmm6, %xmm12 + movaps %xmm5, %xmm3 + mulsd %xmm4, %xmm6 + mulsd %xmm4, %xmm3 + mulsd %xmm2, %xmm5 + mulsd %xmm2, %xmm12 + addsd %xmm3, %xmm6 + movaps %xmm12, %xmm7 + movaps %xmm12, %xmm8 + addsd %xmm5, %xmm6 + addsd %xmm2, %xmm7 + movsd %xmm6, -72(%rsp) + movsd -72(%rsp), %xmm5 + movsd %xmm7, -72(%rsp) + movsd -72(%rsp), %xmm3 + subsd %xmm3, %xmm8 + movsd %xmm8, -64(%rsp) + movsd -72(%rsp), %xmm10 + movsd -64(%rsp), %xmm9 + addsd %xmm9, %xmm10 + movsd %xmm10, -56(%rsp) + movsd -64(%rsp), %xmm11 + addsd %xmm11, %xmm2 + movsd %xmm2, -64(%rsp) + movsd -56(%rsp), %xmm2 + subsd %xmm2, %xmm12 + movsd %xmm12, -56(%rsp) + movsd -64(%rsp), %xmm14 + movsd -56(%rsp), %xmm13 + addsd %xmm13, %xmm14 + movsd %xmm14, -56(%rsp) + movq -72(%rsp), %r11 + movsd -56(%rsp), %xmm15 + movq %r11, -40(%rsp) + addsd %xmm15, %xmm4 + movsd -40(%rsp), %xmm8 + addsd %xmm5, %xmm4 + movsd %xmm4, -32(%rsp) + movaps %xmm8, %xmm4 + movaps %xmm8, %xmm2 + addsd (%rdi,%rsi,8), %xmm4 + movsd %xmm4, -72(%rsp) + movsd -72(%rsp), %xmm4 + subsd %xmm4, %xmm2 + movsd %xmm2, -64(%rsp) + movsd -72(%rsp), %xmm5 + movsd -64(%rsp), %xmm3 + addsd %xmm3, %xmm5 + movsd %xmm5, -56(%rsp) + movsd -64(%rsp), %xmm6 + addsd (%rdi,%rsi,8), %xmm6 + movsd %xmm6, -64(%rsp) + movsd -56(%rsp), %xmm7 + subsd %xmm7, %xmm8 + movsd %xmm8, -56(%rsp) + movsd -64(%rsp), %xmm10 + movsd -56(%rsp), %xmm9 + addsd %xmm9, %xmm10 + movsd %xmm10, -56(%rsp) + movq -72(%rsp), %r8 + movq %r8, -40(%rsp) + + + movsd -56(%rsp), %xmm2 + movaps %xmm1, %xmm3 + shrq $56, %r8 + addsd -32(%rsp), %xmm2 + shlb $7, %dl + addsd 8(%rdi,%rsi,8), %xmm2 + movb %al, %sil + andb $127, %r8b + shlb $7, %sil + movsd %xmm2, -32(%rsp) + orb %sil, %r8b + movb %r8b, -33(%rsp) + movsd -40(%rsp), %xmm9 + movaps %xmm9, %xmm5 + addsd %xmm9, %xmm3 + movsd %xmm3, -72(%rsp) + movsd -72(%rsp), %xmm4 + movb -25(%rsp), %dil + movb %dil, %r9b + shrb $7, %dil + subsd %xmm4, %xmm5 + movsd %xmm5, -64(%rsp) + movsd -72(%rsp), %xmm7 + movsd -64(%rsp), %xmm6 + xorb %dil, %al + andb $127, %r9b + shlb $7, %al + addsd %xmm6, %xmm7 + movsd %xmm7, -56(%rsp) + movsd -64(%rsp), %xmm8 + addsd %xmm8, %xmm1 + movsd %xmm1, -64(%rsp) + orb %al, %r9b + movsd -56(%rsp), %xmm1 + movb %r9b, -25(%rsp) + subsd %xmm1, %xmm9 + movsd %xmm9, -56(%rsp) + movsd -64(%rsp), %xmm11 + movsd -56(%rsp), %xmm10 + addsd %xmm10, %xmm11 + movsd %xmm11, -56(%rsp) + movq -72(%rsp), %rax + movsd -56(%rsp), %xmm12 + movq %rax, -40(%rsp) + addsd %xmm12, %xmm0 + movsd -40(%rsp), %xmm13 + addsd -32(%rsp), %xmm0 + movsd %xmm0, -32(%rsp) + addsd %xmm0, %xmm13 + movsd %xmm13, -24(%rsp) + movb -17(%rsp), %r10b + andb $127, %r10b + orb %dl, %r10b + movb %r10b, -17(%rsp) + movq -24(%rsp), %rdx + movq %rdx, (%rcx) + jmp .LBL_2_36 + +.LBL_2_20: + + movsd -48(%rsp), %xmm12 + movb %al, %r8b + movaps %xmm12, %xmm7 + mulsd 2000+__datan2_la_CoutTab(%rip), %xmm7 + shlb $7, %r8b + shlb $7, %dl + movsd %xmm7, -72(%rsp) + movsd -72(%rsp), %xmm8 + movsd 2000+__datan2_la_CoutTab(%rip), %xmm13 + movsd 1888+__datan2_la_CoutTab(%rip), %xmm7 + mulsd %xmm2, %xmm13 + subsd -48(%rsp), %xmm8 + movsd %xmm8, -64(%rsp) + movsd -72(%rsp), %xmm10 + movsd -64(%rsp), %xmm9 + subsd %xmm9, %xmm10 + movsd %xmm10, -72(%rsp) + movsd -72(%rsp), %xmm11 + subsd %xmm11, %xmm12 + movsd %xmm12, -64(%rsp) + movsd -72(%rsp), %xmm6 + movsd -64(%rsp), %xmm5 + movsd %xmm13, -72(%rsp) + movsd -72(%rsp), %xmm14 + subsd %xmm2, %xmm14 + movsd %xmm14, -64(%rsp) + movsd -72(%rsp), %xmm4 + movsd -64(%rsp), %xmm15 + subsd %xmm15, %xmm4 + movsd %xmm4, -72(%rsp) + movsd -72(%rsp), %xmm3 + movsd 1888+__datan2_la_CoutTab(%rip), %xmm4 + subsd %xmm3, %xmm2 + movsd %xmm2, -64(%rsp) + movsd -72(%rsp), %xmm12 + divsd %xmm12, %xmm7 + movsd 2000+__datan2_la_CoutTab(%rip), %xmm2 + mulsd %xmm7, %xmm2 + movsd -64(%rsp), %xmm14 + movsd %xmm2, -64(%rsp) + movsd -64(%rsp), %xmm8 + subsd %xmm7, %xmm8 + movsd %xmm8, -56(%rsp) + movsd -64(%rsp), %xmm10 + movsd -56(%rsp), %xmm9 + subsd %xmm9, %xmm10 + movsd %xmm10, -56(%rsp) + movsd -56(%rsp), %xmm11 + mulsd %xmm11, %xmm12 + movsd -56(%rsp), %xmm13 + subsd %xmm12, %xmm4 + mulsd %xmm13, %xmm14 + movsd %xmm14, -64(%rsp) + movsd -64(%rsp), %xmm15 + movsd 2000+__datan2_la_CoutTab(%rip), %xmm13 + subsd %xmm15, %xmm4 + movsd %xmm4, -64(%rsp) + movsd -64(%rsp), %xmm7 + movq -56(%rsp), %rsi + movsd -64(%rsp), %xmm2 + movsd -56(%rsp), %xmm3 + movq %rsi, -40(%rsp) + movsd -40(%rsp), %xmm8 + movaps %xmm8, %xmm9 + addsd 1888+__datan2_la_CoutTab(%rip), %xmm7 + mulsd %xmm6, %xmm9 + mulsd %xmm5, %xmm8 + mulsd %xmm2, %xmm7 + movsd -16(%rsp), %xmm2 + mulsd %xmm2, %xmm2 + mulsd %xmm3, %xmm7 + movsd 1872+__datan2_la_CoutTab(%rip), %xmm3 + mulsd %xmm2, %xmm3 + mulsd %xmm7, %xmm6 + mulsd %xmm5, %xmm7 + addsd 1864+__datan2_la_CoutTab(%rip), %xmm3 + addsd %xmm7, %xmm6 + mulsd %xmm2, %xmm3 + addsd %xmm8, %xmm6 + addsd 1856+__datan2_la_CoutTab(%rip), %xmm3 + mulsd %xmm2, %xmm3 + movaps %xmm9, %xmm5 + movsd %xmm6, -72(%rsp) + movsd -72(%rsp), %xmm4 + addsd 1848+__datan2_la_CoutTab(%rip), %xmm3 + addsd %xmm4, %xmm5 + mulsd %xmm2, %xmm3 + movsd %xmm5, -72(%rsp) + movsd -72(%rsp), %xmm6 + movsd 2000+__datan2_la_CoutTab(%rip), %xmm5 + subsd %xmm6, %xmm9 + addsd 1840+__datan2_la_CoutTab(%rip), %xmm3 + addsd %xmm4, %xmm9 + mulsd %xmm2, %xmm3 + movsd %xmm9, -64(%rsp) + movsd -72(%rsp), %xmm11 + mulsd %xmm11, %xmm5 + addsd 1832+__datan2_la_CoutTab(%rip), %xmm3 + movsd -64(%rsp), %xmm4 + movsd %xmm5, -72(%rsp) + movsd -72(%rsp), %xmm7 + mulsd %xmm2, %xmm3 + subsd %xmm11, %xmm7 + movsd %xmm7, -64(%rsp) + movsd -72(%rsp), %xmm8 + movsd -64(%rsp), %xmm6 + addsd 1824+__datan2_la_CoutTab(%rip), %xmm3 + subsd %xmm6, %xmm8 + mulsd %xmm2, %xmm3 + movsd %xmm8, -72(%rsp) + movsd -72(%rsp), %xmm10 + mulsd %xmm3, %xmm13 + subsd %xmm10, %xmm11 + movsd %xmm11, -64(%rsp) + movsd -72(%rsp), %xmm2 + movsd -64(%rsp), %xmm12 + movsd %xmm13, -72(%rsp) + addsd %xmm12, %xmm4 + movsd -72(%rsp), %xmm14 + subsd %xmm3, %xmm14 + movsd %xmm14, -64(%rsp) + movsd -72(%rsp), %xmm5 + movsd -64(%rsp), %xmm15 + subsd %xmm15, %xmm5 + movsd %xmm5, -72(%rsp) + movsd -72(%rsp), %xmm6 + subsd %xmm6, %xmm3 + movsd %xmm3, -64(%rsp) + movsd -72(%rsp), %xmm6 + movsd -64(%rsp), %xmm5 + movaps %xmm6, %xmm12 + movaps %xmm5, %xmm3 + mulsd %xmm4, %xmm6 + mulsd %xmm4, %xmm3 + mulsd %xmm2, %xmm5 + mulsd %xmm2, %xmm12 + addsd %xmm3, %xmm6 + movaps %xmm12, %xmm7 + movaps %xmm12, %xmm8 + addsd %xmm5, %xmm6 + addsd %xmm2, %xmm7 + movsd %xmm6, -72(%rsp) + movsd -72(%rsp), %xmm5 + movsd %xmm7, -72(%rsp) + movsd -72(%rsp), %xmm3 + subsd %xmm3, %xmm8 + movsd %xmm8, -64(%rsp) + movsd -72(%rsp), %xmm10 + movsd -64(%rsp), %xmm9 + addsd %xmm9, %xmm10 + movsd %xmm10, -56(%rsp) + movsd -64(%rsp), %xmm11 + addsd %xmm11, %xmm2 + movsd %xmm2, -64(%rsp) + movsd -56(%rsp), %xmm2 + subsd %xmm2, %xmm12 + movsd %xmm12, -56(%rsp) + movsd -64(%rsp), %xmm14 + movsd -56(%rsp), %xmm13 + addsd %xmm13, %xmm14 + movsd %xmm14, -56(%rsp) + movq -72(%rsp), %rdi + movsd -56(%rsp), %xmm15 + movq %rdi, -40(%rsp) + addsd %xmm15, %xmm4 + shrq $56, %rdi + addsd %xmm5, %xmm4 + andb $127, %dil + orb %r8b, %dil + movb %dil, -33(%rsp) + movsd %xmm4, -32(%rsp) + movaps %xmm1, %xmm4 + movsd -40(%rsp), %xmm7 + movaps %xmm7, %xmm2 + addsd %xmm7, %xmm4 + movsd %xmm4, -72(%rsp) + movsd -72(%rsp), %xmm4 + movb -25(%rsp), %r9b + movb %r9b, %r10b + shrb $7, %r9b + subsd %xmm4, %xmm2 + movsd %xmm2, -64(%rsp) + movsd -72(%rsp), %xmm5 + movsd -64(%rsp), %xmm3 + xorb %r9b, %al + andb $127, %r10b + shlb $7, %al + addsd %xmm3, %xmm5 + movsd %xmm5, -56(%rsp) + movsd -64(%rsp), %xmm6 + addsd %xmm6, %xmm1 + movsd %xmm1, -64(%rsp) + orb %al, %r10b + movsd -56(%rsp), %xmm1 + movb %r10b, -25(%rsp) + subsd %xmm1, %xmm7 + movsd %xmm7, -56(%rsp) + movsd -64(%rsp), %xmm2 + movsd -56(%rsp), %xmm1 + addsd %xmm1, %xmm2 + movsd %xmm2, -56(%rsp) + movq -72(%rsp), %rax + movsd -56(%rsp), %xmm3 + movq %rax, -40(%rsp) + addsd %xmm3, %xmm0 + movsd -40(%rsp), %xmm4 + addsd -32(%rsp), %xmm0 + movsd %xmm0, -32(%rsp) + addsd %xmm0, %xmm4 + movsd %xmm4, -24(%rsp) + movb -17(%rsp), %r11b + andb $127, %r11b + orb %dl, %r11b + movb %r11b, -17(%rsp) + movq -24(%rsp), %rdx + movq %rdx, (%rcx) + jmp .LBL_2_36 + +.LBL_2_21: + + cmpl $74, %r8d + jge .LBL_2_53 + + + movb %dil, -41(%rsp) + divsd -48(%rsp), %xmm1 + movsd 1928+__datan2_la_CoutTab(%rip), %xmm0 + shlb $7, %dl + subsd %xmm1, %xmm0 + addsd 1920+__datan2_la_CoutTab(%rip), %xmm0 + movsd %xmm0, -24(%rsp) + movb -17(%rsp), %al + andb $127, %al + orb %dl, %al + movb %al, -17(%rsp) + movq -24(%rsp), %rdx + movq %rdx, (%rcx) + jmp .LBL_2_36 + +.LBL_2_24: + + testb %al, %al + jne .LBL_2_35 + + + movb %dil, -41(%rsp) + movb %sil, -33(%rsp) + movsd -48(%rsp), %xmm2 + divsd -40(%rsp), %xmm2 + movsd %xmm2, -24(%rsp) + movzwl -18(%rsp), %eax + testl $32752, %eax + je .LBL_2_27 + + + movsd 1888+__datan2_la_CoutTab(%rip), %xmm0 + shlb $7, %dl + addsd %xmm2, %xmm0 + movsd %xmm0, -72(%rsp) + movsd -72(%rsp), %xmm1 + mulsd %xmm1, %xmm2 + movsd %xmm2, -24(%rsp) + movb -17(%rsp), %al + andb $127, %al + orb %dl, %al + movb %al, -17(%rsp) + movq -24(%rsp), %rdx + movq %rdx, (%rcx) + jmp .LBL_2_36 + +.LBL_2_27: + + mulsd %xmm2, %xmm2 + shlb $7, %dl + movsd %xmm2, -72(%rsp) + movsd -72(%rsp), %xmm0 + addsd -24(%rsp), %xmm0 + movsd %xmm0, -24(%rsp) + movb -17(%rsp), %al + andb $127, %al + orb %dl, %al + movb %al, -17(%rsp) + movq -24(%rsp), %rdx + movq %rdx, (%rcx) + jmp .LBL_2_36 + +.LBL_2_29: + + testl %r9d, %r9d + jne .LBL_2_53 + + + testl $1048575, -44(%rsp) + jne .LBL_2_53 + jmp .LBL_2_57 + +.LBL_2_31: + + jne .LBL_2_53 + +.LBL_2_33: + + testb %al, %al + jne .LBL_2_35 + +.LBL_2_34: + + shlb $7, %dl + movq 1976+__datan2_la_CoutTab(%rip), %rax + movq %rax, -24(%rsp) + shrq $56, %rax + andb $127, %al + orb %dl, %al + movb %al, -17(%rsp) + movq -24(%rsp), %rdx + movq %rdx, (%rcx) + jmp .LBL_2_36 + +.LBL_2_35: + + movsd 1936+__datan2_la_CoutTab(%rip), %xmm0 + shlb $7, %dl + addsd 1944+__datan2_la_CoutTab(%rip), %xmm0 + movsd %xmm0, -24(%rsp) + movb -17(%rsp), %al + andb $127, %al + orb %dl, %al + movb %al, -17(%rsp) + movq -24(%rsp), %rdx + movq %rdx, (%rcx) + +.LBL_2_36: + + xorl %eax, %eax + ret + +.LBL_2_37: + + movsd 1984+__datan2_la_CoutTab(%rip), %xmm3 + movl $-1022, %r9d + mulsd %xmm3, %xmm4 + movsd %xmm4, -48(%rsp) + jmp .LBL_2_18 + +.LBL_2_38: + + cmpl $2047, %r9d + je .LBL_2_49 + +.LBL_2_39: + + testl $1048575, -36(%rsp) + jne .LBL_2_41 + + + cmpl $0, -40(%rsp) + je .LBL_2_42 + +.LBL_2_41: + + addsd %xmm1, %xmm2 + movsd %xmm2, (%rcx) + jmp .LBL_2_36 + +.LBL_2_42: + + cmpl $2047, %r9d + je .LBL_2_46 + + + testb %al, %al + je .LBL_2_34 + jmp .LBL_2_35 + +.LBL_2_46: + + testb %al, %al + jne .LBL_2_48 + + + movsd 1904+__datan2_la_CoutTab(%rip), %xmm0 + shlb $7, %dl + addsd 1912+__datan2_la_CoutTab(%rip), %xmm0 + movsd %xmm0, -24(%rsp) + movb -17(%rsp), %al + andb $127, %al + orb %dl, %al + movb %al, -17(%rsp) + movq -24(%rsp), %rdx + movq %rdx, (%rcx) + jmp .LBL_2_36 + +.LBL_2_48: + + movsd 1952+__datan2_la_CoutTab(%rip), %xmm0 + shlb $7, %dl + addsd 1960+__datan2_la_CoutTab(%rip), %xmm0 + movsd %xmm0, -24(%rsp) + movb -17(%rsp), %al + andb $127, %al + orb %dl, %al + movb %al, -17(%rsp) + movq -24(%rsp), %rdx + movq %rdx, (%rcx) + jmp .LBL_2_36 + +.LBL_2_49: + + testl $1048575, -44(%rsp) + jne .LBL_2_41 + + + cmpl $0, -48(%rsp) + jne .LBL_2_41 + + + cmpl $2047, %r8d + je .LBL_2_39 + +.LBL_2_53: + + movsd 1920+__datan2_la_CoutTab(%rip), %xmm0 + shlb $7, %dl + addsd 1928+__datan2_la_CoutTab(%rip), %xmm0 + movsd %xmm0, -24(%rsp) + movb -17(%rsp), %al + andb $127, %al + orb %dl, %al + movb %al, -17(%rsp) + movq -24(%rsp), %rdx + movq %rdx, (%rcx) + jmp .LBL_2_36 + +.LBL_2_57: + + cmpl $0, -48(%rsp) + jne .LBL_2_53 + jmp .LBL_2_33 + .align 16,0x90 + + .cfi_endproc + + .type __svml_datan2_cout_rare_internal,@function + .size __svml_datan2_cout_rare_internal,.-__svml_datan2_cout_rare_internal +..LN__svml_datan2_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_datan2_data_internal: + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 17919630 + .long 3202334474 + .long 17919630 + .long 3202334474 + .long 17919630 + .long 3202334474 + .long 17919630 + .long 3202334474 + .long 17919630 + .long 3202334474 + .long 17919630 + .long 3202334474 + .long 17919630 + .long 3202334474 + .long 17919630 + .long 3202334474 + .long 350522012 + .long 1058555694 + .long 350522012 + .long 1058555694 + .long 350522012 + .long 1058555694 + .long 350522012 + .long 1058555694 + .long 350522012 + .long 1058555694 + .long 350522012 + .long 1058555694 + .long 350522012 + .long 1058555694 + .long 350522012 + .long 1058555694 + .long 934004643 + .long 3203726773 + .long 934004643 + .long 3203726773 + .long 934004643 + .long 3203726773 + .long 934004643 + .long 3203726773 + .long 934004643 + .long 3203726773 + .long 934004643 + .long 3203726773 + .long 934004643 + .long 3203726773 + .long 934004643 + .long 3203726773 + .long 912675337 + .long 1059908874 + .long 912675337 + .long 1059908874 + .long 912675337 + .long 1059908874 + .long 912675337 + .long 1059908874 + .long 912675337 + .long 1059908874 + .long 912675337 + .long 1059908874 + .long 912675337 + .long 1059908874 + .long 912675337 + .long 1059908874 + .long 2476035107 + .long 3209881212 + .long 2476035107 + .long 3209881212 + .long 2476035107 + .long 3209881212 + .long 2476035107 + .long 3209881212 + .long 2476035107 + .long 3209881212 + .long 2476035107 + .long 3209881212 + .long 2476035107 + .long 3209881212 + .long 2476035107 + .long 3209881212 + .long 2927800243 + .long 1064262173 + .long 2927800243 + .long 1064262173 + .long 2927800243 + .long 1064262173 + .long 2927800243 + .long 1064262173 + .long 2927800243 + .long 1064262173 + .long 2927800243 + .long 1064262173 + .long 2927800243 + .long 1064262173 + .long 2927800243 + .long 1064262173 + .long 1636715437 + .long 3213013740 + .long 1636715437 + .long 3213013740 + .long 1636715437 + .long 3213013740 + .long 1636715437 + .long 3213013740 + .long 1636715437 + .long 3213013740 + .long 1636715437 + .long 3213013740 + .long 1636715437 + .long 3213013740 + .long 1636715437 + .long 3213013740 + .long 1712395941 + .long 1066487628 + .long 1712395941 + .long 1066487628 + .long 1712395941 + .long 1066487628 + .long 1712395941 + .long 1066487628 + .long 1712395941 + .long 1066487628 + .long 1712395941 + .long 1066487628 + .long 1712395941 + .long 1066487628 + .long 1712395941 + .long 1066487628 + .long 2961307292 + .long 3214564995 + .long 2961307292 + .long 3214564995 + .long 2961307292 + .long 3214564995 + .long 2961307292 + .long 3214564995 + .long 2961307292 + .long 3214564995 + .long 2961307292 + .long 3214564995 + .long 2961307292 + .long 3214564995 + .long 2961307292 + .long 3214564995 + .long 213298511 + .long 1067542936 + .long 213298511 + .long 1067542936 + .long 213298511 + .long 1067542936 + .long 213298511 + .long 1067542936 + .long 213298511 + .long 1067542936 + .long 213298511 + .long 1067542936 + .long 213298511 + .long 1067542936 + .long 213298511 + .long 1067542936 + .long 3848520124 + .long 3215257506 + .long 3848520124 + .long 3215257506 + .long 3848520124 + .long 3215257506 + .long 3848520124 + .long 3215257506 + .long 3848520124 + .long 3215257506 + .long 3848520124 + .long 3215257506 + .long 3848520124 + .long 3215257506 + .long 3848520124 + .long 3215257506 + .long 3159386171 + .long 1067969551 + .long 3159386171 + .long 1067969551 + .long 3159386171 + .long 1067969551 + .long 3159386171 + .long 1067969551 + .long 3159386171 + .long 1067969551 + .long 3159386171 + .long 1067969551 + .long 3159386171 + .long 1067969551 + .long 3159386171 + .long 1067969551 + .long 3936393556 + .long 3215643233 + .long 3936393556 + .long 3215643233 + .long 3936393556 + .long 3215643233 + .long 3936393556 + .long 3215643233 + .long 3936393556 + .long 3215643233 + .long 3936393556 + .long 3215643233 + .long 3936393556 + .long 3215643233 + .long 3936393556 + .long 3215643233 + .long 3177262543 + .long 1068373833 + .long 3177262543 + .long 1068373833 + .long 3177262543 + .long 1068373833 + .long 3177262543 + .long 1068373833 + .long 3177262543 + .long 1068373833 + .long 3177262543 + .long 1068373833 + .long 3177262543 + .long 1068373833 + .long 3177262543 + .long 1068373833 + .long 9713120 + .long 3216052356 + .long 9713120 + .long 3216052356 + .long 9713120 + .long 3216052356 + .long 9713120 + .long 3216052356 + .long 9713120 + .long 3216052356 + .long 9713120 + .long 3216052356 + .long 9713120 + .long 3216052356 + .long 9713120 + .long 3216052356 + .long 1227445841 + .long 1068740906 + .long 1227445841 + .long 1068740906 + .long 1227445841 + .long 1068740906 + .long 1227445841 + .long 1068740906 + .long 1227445841 + .long 1068740906 + .long 1227445841 + .long 1068740906 + .long 1227445841 + .long 1068740906 + .long 1227445841 + .long 1068740906 + .long 163240596 + .long 3216459216 + .long 163240596 + .long 3216459216 + .long 163240596 + .long 3216459216 + .long 163240596 + .long 3216459216 + .long 163240596 + .long 3216459216 + .long 163240596 + .long 3216459216 + .long 163240596 + .long 3216459216 + .long 163240596 + .long 3216459216 + .long 133682613 + .long 1069314503 + .long 133682613 + .long 1069314503 + .long 133682613 + .long 1069314503 + .long 133682613 + .long 1069314503 + .long 133682613 + .long 1069314503 + .long 133682613 + .long 1069314503 + .long 133682613 + .long 1069314503 + .long 133682613 + .long 1069314503 + .long 2448315847 + .long 3217180964 + .long 2448315847 + .long 3217180964 + .long 2448315847 + .long 3217180964 + .long 2448315847 + .long 3217180964 + .long 2448315847 + .long 3217180964 + .long 2448315847 + .long 3217180964 + .long 2448315847 + .long 3217180964 + .long 2448315847 + .long 3217180964 + .long 2576870964 + .long 1070176665 + .long 2576870964 + .long 1070176665 + .long 2576870964 + .long 1070176665 + .long 2576870964 + .long 1070176665 + .long 2576870964 + .long 1070176665 + .long 2576870964 + .long 1070176665 + .long 2576870964 + .long 1070176665 + .long 2576870964 + .long 1070176665 + .long 1431655365 + .long 3218429269 + .long 1431655365 + .long 3218429269 + .long 1431655365 + .long 3218429269 + .long 1431655365 + .long 3218429269 + .long 1431655365 + .long 3218429269 + .long 1431655365 + .long 3218429269 + .long 1431655365 + .long 3218429269 + .long 1431655365 + .long 3218429269 + .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 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 2150629376 + .long 2150629376 + .long 2150629376 + .long 2150629376 + .long 2150629376 + .long 2150629376 + .long 2150629376 + .long 2150629376 + .long 2150629376 + .long 2150629376 + .long 2150629376 + .long 2150629376 + .long 2150629376 + .long 2150629376 + .long 2150629376 + .long 2150629376 + .long 4258267136 + .long 4258267136 + .long 4258267136 + .long 4258267136 + .long 4258267136 + .long 4258267136 + .long 4258267136 + .long 4258267136 + .long 4258267136 + .long 4258267136 + .long 4258267136 + .long 4258267136 + .long 4258267136 + .long 4258267136 + .long 4258267136 + .long 4258267136 + .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 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 4293918720 + .long 4293918720 + .long 4293918720 + .long 4293918720 + .long 4293918720 + .long 4293918720 + .long 4293918720 + .long 4293918720 + .long 4293918720 + .long 4293918720 + .long 4293918720 + .long 4293918720 + .long 4293918720 + .long 4293918720 + .long 4293918720 + .long 4293918720 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .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 133169152 + .long 133169152 + .long 133169152 + .long 133169152 + .long 133169152 + .long 133169152 + .long 133169152 + .long 133169152 + .long 133169152 + .long 133169152 + .long 133169152 + .long 133169152 + .long 133169152 + .long 133169152 + .long 133169152 + .long 133169152 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .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 + .type __svml_datan2_data_internal,@object + .size __svml_datan2_data_internal,2304 + .align 32 +__datan2_la_CoutTab: + .long 3892314112 + .long 1069799150 + .long 2332892550 + .long 1039715405 + .long 1342177280 + .long 1070305495 + .long 270726690 + .long 1041535749 + .long 939524096 + .long 1070817911 + .long 2253973841 + .long 3188654726 + .long 3221225472 + .long 1071277294 + .long 3853927037 + .long 1043226911 + .long 2818572288 + .long 1071767563 + .long 2677759107 + .long 1044314101 + .long 3355443200 + .long 1072103591 + .long 1636578514 + .long 3191094734 + .long 1476395008 + .long 1072475260 + .long 1864703685 + .long 3188646936 + .long 805306368 + .long 1072747407 + .long 192551812 + .long 3192726267 + .long 2013265920 + .long 1072892781 + .long 2240369452 + .long 1043768538 + .long 0 + .long 1072999953 + .long 3665168337 + .long 3192705970 + .long 402653184 + .long 1073084787 + .long 1227953434 + .long 3192313277 + .long 2013265920 + .long 1073142981 + .long 3853283127 + .long 1045277487 + .long 805306368 + .long 1073187261 + .long 1676192264 + .long 3192868861 + .long 134217728 + .long 1073217000 + .long 4290763938 + .long 1042034855 + .long 671088640 + .long 1073239386 + .long 994303084 + .long 3189643768 + .long 402653184 + .long 1073254338 + .long 1878067156 + .long 1042652475 + .long 1610612736 + .long 1073265562 + .long 670314820 + .long 1045138554 + .long 3221225472 + .long 1073273048 + .long 691126919 + .long 3189987794 + .long 3489660928 + .long 1073278664 + .long 1618990832 + .long 3188194509 + .long 1207959552 + .long 1073282409 + .long 2198872939 + .long 1044806069 + .long 3489660928 + .long 1073285217 + .long 2633982383 + .long 1042307894 + .long 939524096 + .long 1073287090 + .long 1059367786 + .long 3189114230 + .long 2281701376 + .long 1073288494 + .long 3158525533 + .long 1044484961 + .long 3221225472 + .long 1073289430 + .long 286581777 + .long 1044893263 + .long 4026531840 + .long 1073290132 + .long 2000245215 + .long 3191647611 + .long 134217728 + .long 1073290601 + .long 4205071590 + .long 1045035927 + .long 536870912 + .long 1073290952 + .long 2334392229 + .long 1043447393 + .long 805306368 + .long 1073291186 + .long 2281458177 + .long 3188885569 + .long 3087007744 + .long 1073291361 + .long 691611507 + .long 1044733832 + .long 3221225472 + .long 1073291478 + .long 1816229550 + .long 1044363390 + .long 2281701376 + .long 1073291566 + .long 1993843750 + .long 3189837440 + .long 134217728 + .long 1073291625 + .long 3654754496 + .long 1044970837 + .long 4026531840 + .long 1073291668 + .long 3224300229 + .long 3191935390 + .long 805306368 + .long 1073291698 + .long 2988777976 + .long 3188950659 + .long 536870912 + .long 1073291720 + .long 1030371341 + .long 1043402665 + .long 3221225472 + .long 1073291734 + .long 1524463765 + .long 1044361356 + .long 3087007744 + .long 1073291745 + .long 2754295320 + .long 1044731036 + .long 134217728 + .long 1073291753 + .long 3099629057 + .long 1044970710 + .long 2281701376 + .long 1073291758 + .long 962914160 + .long 3189838838 + .long 805306368 + .long 1073291762 + .long 3543908206 + .long 3188950786 + .long 4026531840 + .long 1073291764 + .long 1849909620 + .long 3191935434 + .long 3221225472 + .long 1073291766 + .long 1641333636 + .long 1044361352 + .long 536870912 + .long 1073291768 + .long 1373968792 + .long 1043402654 + .long 134217728 + .long 1073291769 + .long 2033191599 + .long 1044970710 + .long 3087007744 + .long 1073291769 + .long 4117947437 + .long 1044731035 + .long 805306368 + .long 1073291770 + .long 315378368 + .long 3188950787 + .long 2281701376 + .long 1073291770 + .long 2428571750 + .long 3189838838 + .long 3221225472 + .long 1073291770 + .long 1608007466 + .long 1044361352 + .long 4026531840 + .long 1073291770 + .long 1895711420 + .long 3191935434 + .long 134217728 + .long 1073291771 + .long 2031108713 + .long 1044970710 + .long 536870912 + .long 1073291771 + .long 1362518342 + .long 1043402654 + .long 805306368 + .long 1073291771 + .long 317461253 + .long 3188950787 + .long 939524096 + .long 1073291771 + .long 4117231784 + .long 1044731035 + .long 1073741824 + .long 1073291771 + .long 1607942376 + .long 1044361352 + .long 1207959552 + .long 1073291771 + .long 2428929577 + .long 3189838838 + .long 1207959552 + .long 1073291771 + .long 2031104645 + .long 1044970710 + .long 1342177280 + .long 1073291771 + .long 1895722602 + .long 3191935434 + .long 1342177280 + .long 1073291771 + .long 317465322 + .long 3188950787 + .long 1342177280 + .long 1073291771 + .long 1362515546 + .long 1043402654 + .long 1342177280 + .long 1073291771 + .long 1607942248 + .long 1044361352 + .long 1342177280 + .long 1073291771 + .long 4117231610 + .long 1044731035 + .long 1342177280 + .long 1073291771 + .long 2031104637 + .long 1044970710 + .long 1342177280 + .long 1073291771 + .long 1540251232 + .long 1045150466 + .long 1342177280 + .long 1073291771 + .long 2644671394 + .long 1045270303 + .long 1342177280 + .long 1073291771 + .long 2399244691 + .long 1045360181 + .long 1342177280 + .long 1073291771 + .long 803971124 + .long 1045420100 + .long 1476395008 + .long 1073291771 + .long 3613709523 + .long 3192879152 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192849193 + .long 1476395008 + .long 1073291771 + .long 177735686 + .long 3192826724 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192811744 + .long 1476395008 + .long 1073291771 + .long 2754716064 + .long 3192800509 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192793019 + .long 1476395008 + .long 1073291771 + .long 1895722605 + .long 3192787402 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192783657 + .long 1476395008 + .long 1073291771 + .long 3613709523 + .long 3192780848 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192778976 + .long 1476395008 + .long 1073291771 + .long 177735686 + .long 3192777572 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192776635 + .long 1476395008 + .long 1073291771 + .long 2754716064 + .long 3192775933 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192775465 + .long 1476395008 + .long 1073291771 + .long 1895722605 + .long 3192775114 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192774880 + .long 1476395008 + .long 1073291771 + .long 3613709523 + .long 3192774704 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192774587 + .long 1476395008 + .long 1073291771 + .long 177735686 + .long 3192774500 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192774441 + .long 1476395008 + .long 1073291771 + .long 2754716064 + .long 3192774397 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192774368 + .long 1476395008 + .long 1073291771 + .long 1895722605 + .long 3192774346 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192774331 + .long 1476395008 + .long 1073291771 + .long 3613709523 + .long 3192774320 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192774313 + .long 1476395008 + .long 1073291771 + .long 177735686 + .long 3192774308 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192774304 + .long 1476395008 + .long 1073291771 + .long 2754716064 + .long 3192774301 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192774299 + .long 1476395008 + .long 1073291771 + .long 1895722605 + .long 3192774298 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192774297 + .long 1476395008 + .long 1073291771 + .long 3613709523 + .long 3192774296 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192774296 + .long 1476395008 + .long 1073291771 + .long 177735686 + .long 3192774296 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 2754716064 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1895722605 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1466225875 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1343512524 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1251477510 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1190120835 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1144103328 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1113424990 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1090416237 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1075077068 + .long 3192774295 + .long 1431655765 + .long 3218429269 + .long 2576978363 + .long 1070176665 + .long 2453154343 + .long 3217180964 + .long 4189149139 + .long 1069314502 + .long 1775019125 + .long 3216459198 + .long 273199057 + .long 1068739452 + .long 874748308 + .long 3215993277 + .long 0 + .long 1069547520 + .long 0 + .long 1072693248 + .long 0 + .long 1073741824 + .long 1413754136 + .long 1072243195 + .long 856972295 + .long 1015129638 + .long 1413754136 + .long 1073291771 + .long 856972295 + .long 1016178214 + .long 1413754136 + .long 1074340347 + .long 856972295 + .long 1017226790 + .long 2134057426 + .long 1073928572 + .long 1285458442 + .long 1016756537 + .long 0 + .long 3220176896 + .long 0 + .long 0 + .long 0 + .long 2144337920 + .long 0 + .long 1048576 + .long 33554432 + .long 1101004800 + .type __datan2_la_CoutTab,@object + .size __datan2_la_CoutTab,2008 + .align 8 +.L_2il0floatpacket.31: + .long 0xffffffff,0xffffffff + .type .L_2il0floatpacket.31,@object + .size .L_2il0floatpacket.31,8 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_atan2_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_atan2_s_la.s new file mode 100644 index 00000000..25f12f36 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_atan2_s_la.s @@ -0,0 +1,2074 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * For 0.0 <= x <= 7.0/16.0: atan(x) = atan(0.0) + atan(s), where s=(x-0.0)/(1.0+0.0*x) + * For 7.0/16.0 <= x <= 11.0/16.0: atan(x) = atan(0.5) + atan(s), where s=(x-0.5)/(1.0+0.5*x) + * For 11.0/16.0 <= x <= 19.0/16.0: atan(x) = atan(1.0) + atan(s), where s=(x-1.0)/(1.0+1.0*x) + * For 19.0/16.0 <= x <= 39.0/16.0: atan(x) = atan(1.5) + atan(s), where s=(x-1.5)/(1.0+1.5*x) + * For 39.0/16.0 <= x <= inf : atan(x) = atan(inf) + atan(s), where s=-1.0/x + * Where atan(s) ~= s+s^3*Poly11(s^2) on interval |s|<7.0/0.16. + * -- + * + */ + + + .text +.L_2__routine_start___svml_atan2f16_z0_0: + + .align 16,0x90 + .globl __svml_atan2f16 + +__svml_atan2f16: + + + .cfi_startproc +..L2: + + 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 + xorl %edx, %edx + + + vmovups 256+__svml_satan2_data_internal(%rip), %zmm6 + vmovups 64+__svml_satan2_data_internal(%rip), %zmm3 + +/* Testing on working interval. */ + vmovups 1024+__svml_satan2_data_internal(%rip), %zmm9 + vmovups 1088+__svml_satan2_data_internal(%rip), %zmm14 + +/* + * 1) If yx then a=-x, b=y, PIO2=Pi/2 + */ + vmovups 320+__svml_satan2_data_internal(%rip), %zmm4 + vpternlogd $255, %zmm13, %zmm13, %zmm13 + vmovaps %zmm1, %zmm8 + vandps %zmm6, %zmm8, %zmm2 + vandps %zmm6, %zmm0, %zmm1 + vorps 192+__svml_satan2_data_internal(%rip), %zmm2, %zmm5 + vpsubd %zmm9, %zmm2, %zmm10 + vpsubd %zmm9, %zmm1, %zmm12 + vxorps %zmm2, %zmm8, %zmm7 + vxorps %zmm1, %zmm0, %zmm6 + vcmpps $17, {sae}, %zmm2, %zmm1, %k1 + vpcmpgtd %zmm10, %zmm14, %k2 + vpcmpgtd %zmm12, %zmm14, %k3 + vmovups 576+__svml_satan2_data_internal(%rip), %zmm14 + vblendmps %zmm1, %zmm5, %zmm11{%k1} + vblendmps %zmm2, %zmm1, %zmm5{%k1} + vxorps %zmm4, %zmm4, %zmm4{%k1} + +/* + * Division a/b. + * Enabled when FMA is available and + * performance is better with NR iteration + */ + vrcp14ps %zmm5, %zmm15 + vfnmadd231ps {rn-sae}, %zmm5, %zmm15, %zmm3 + vfmadd213ps {rn-sae}, %zmm15, %zmm3, %zmm15 + vmulps {rn-sae}, %zmm15, %zmm11, %zmm3 + vfnmadd231ps {rn-sae}, %zmm5, %zmm3, %zmm11 + vfmadd213ps {rn-sae}, %zmm3, %zmm11, %zmm15 + vmovups 448+__svml_satan2_data_internal(%rip), %zmm11 + vpternlogd $255, %zmm3, %zmm3, %zmm3 + +/* Polynomial. */ + vmulps {rn-sae}, %zmm15, %zmm15, %zmm9 + vpandnd %zmm10, %zmm10, %zmm13{%k2} + vmulps {rn-sae}, %zmm9, %zmm9, %zmm10 + vfmadd231ps {rn-sae}, %zmm10, %zmm11, %zmm14 + vmovups 640+__svml_satan2_data_internal(%rip), %zmm11 + vpandnd %zmm12, %zmm12, %zmm3{%k3} + vpord %zmm3, %zmm13, %zmm3 + vmovups 704+__svml_satan2_data_internal(%rip), %zmm13 + vmovups 512+__svml_satan2_data_internal(%rip), %zmm12 + vptestmd %zmm3, %zmm3, %k0 + vfmadd213ps {rn-sae}, %zmm13, %zmm10, %zmm14 + vfmadd231ps {rn-sae}, %zmm10, %zmm12, %zmm11 + vmovups 768+__svml_satan2_data_internal(%rip), %zmm12 + vmovups 832+__svml_satan2_data_internal(%rip), %zmm13 + +/* =========== Special branch for fast (vector) processing of zero arguments ================ */ + kortestw %k0, %k0 + vfmadd213ps {rn-sae}, %zmm12, %zmm10, %zmm11 + vmovups 896+__svml_satan2_data_internal(%rip), %zmm12 + vfmadd213ps {rn-sae}, %zmm13, %zmm10, %zmm14 + vmovups 960+__svml_satan2_data_internal(%rip), %zmm13 + vfmadd213ps {rn-sae}, %zmm12, %zmm10, %zmm11 + vfmadd213ps {rn-sae}, %zmm13, %zmm10, %zmm14 + vfmadd213ps {rn-sae}, %zmm14, %zmm9, %zmm11 + +/* Reconstruction. */ + vfmadd213ps {rn-sae}, %zmm4, %zmm15, %zmm11 + +/* if x<0, sPI = Pi, else sPI =0 */ + vmovups __svml_satan2_data_internal(%rip), %zmm15 + vorps %zmm7, %zmm11, %zmm9 + vcmpps $18, {sae}, %zmm15, %zmm8, %k1 + vmovups 384+__svml_satan2_data_internal(%rip), %zmm11 + vaddps {rn-sae}, %zmm11, %zmm9, %zmm9{%k1} + vorps %zmm6, %zmm9, %zmm10 + jne .LBL_1_12 + +.LBL_1_2: + + +/* + * =========== Special branch for fast (vector) processing of zero arguments ================ + * -------------- The end of implementation ---------------- + */ + testl %edx, %edx + jne .LBL_1_4 + +.LBL_1_3: + + +/* no invcbrt in libm, so taking it out here */ + vmovaps %zmm10, %zmm0 + 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_4: + + vmovups %zmm0, 64(%rsp) + vmovups %zmm8, 128(%rsp) + vmovups %zmm10, 192(%rsp) + je .LBL_1_3 + + + 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, 0x28, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x38, 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, 0x30, 0xff, 0xff, 0xff, 0x22 + movl %edx, %r13d + .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x18, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x08, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22 + +.LBL_1_8: + + btl %r12d, %r13d + jc .LBL_1_11 + +.LBL_1_9: + + incl %r12d + cmpl $16, %r12d + jl .LBL_1_8 + + + 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 192(%rsp), %zmm10 + 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_3 + .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x28, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x38, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x18, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x08, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22 + +.LBL_1_11: + + lea 64(%rsp,%r12,4), %rdi + lea 128(%rsp,%r12,4), %rsi + lea 192(%rsp,%r12,4), %rdx + + call __svml_satan2_cout_rare_internal + jmp .LBL_1_9 + .cfi_restore 4 + .cfi_restore 5 + .cfi_restore 12 + .cfi_restore 13 + .cfi_restore 122 + .cfi_restore 123 + .cfi_restore 124 + .cfi_restore 125 + +.LBL_1_12: + + +/* Check if at least on of Y or Y is zero: iAXAYZERO */ + vmovups __svml_satan2_data_internal(%rip), %zmm9 + +/* Check if both X & Y are not NaNs: iXYnotNAN */ + vcmpps $3, {sae}, %zmm8, %zmm8, %k1 + vcmpps $3, {sae}, %zmm0, %zmm0, %k2 + vpcmpd $4, %zmm9, %zmm2, %k3 + vpternlogd $255, %zmm12, %zmm12, %zmm12 + vpternlogd $255, %zmm13, %zmm13, %zmm13 + vpternlogd $255, %zmm14, %zmm14, %zmm14 + vpandnd %zmm8, %zmm8, %zmm12{%k1} + vpcmpd $4, %zmm9, %zmm1, %k1 + vpandnd %zmm0, %zmm0, %zmm13{%k2} + +/* + * -------- Path for zero arguments (at least one of both) -------------- + * Check if both args are zeros (den. is zero) + */ + vcmpps $4, {sae}, %zmm9, %zmm5, %k2 + vandps %zmm13, %zmm12, %zmm12 + vpandnd %zmm2, %zmm2, %zmm14{%k3} + vpternlogd $255, %zmm2, %zmm2, %zmm2 + +/* Res = sign(Y)*(X<0)?(PIO2+PI):PIO2 */ + vpcmpgtd %zmm8, %zmm9, %k3 + vpandnd %zmm1, %zmm1, %zmm2{%k1} + vpord %zmm2, %zmm14, %zmm15 + vpternlogd $255, %zmm2, %zmm2, %zmm2 + vpandnd %zmm5, %zmm5, %zmm2{%k2} + +/* Set sPIO2 to zero if den. is zero */ + vpandnd %zmm4, %zmm2, %zmm4 + vpandd %zmm2, %zmm9, %zmm5 + vpord %zmm5, %zmm4, %zmm2 + vorps %zmm7, %zmm2, %zmm7 + vaddps {rn-sae}, %zmm11, %zmm7, %zmm7{%k3} + vorps %zmm6, %zmm7, %zmm6 + +/* Check if at least on of Y or Y is zero and not NaN: iAXAYZEROnotNAN */ + vpandd %zmm12, %zmm15, %zmm1 + +/* Exclude from previous callout mask zero (and not NaN) arguments */ + vpandnd %zmm3, %zmm1, %zmm3 + +/* Go to callout */ + vptestmd %zmm3, %zmm3, %k0 + kmovw %k0, %edx + +/* Merge results from main and spec path */ + vpandnd %zmm10, %zmm1, %zmm10 + vpandd %zmm1, %zmm6, %zmm11 + vpord %zmm11, %zmm10, %zmm10 + jmp .LBL_1_2 + .align 16,0x90 + + .cfi_endproc + + .type __svml_atan2f16,@function + .size __svml_atan2f16,.-__svml_atan2f16 +..LN__svml_atan2f16.0: + +.L_2__routine_start___svml_satan2_cout_rare_internal_1: + + .align 16,0x90 + +__svml_satan2_cout_rare_internal: + + + .cfi_startproc +..L61: + + pxor %xmm0, %xmm0 + movss (%rdi), %xmm3 + pxor %xmm1, %xmm1 + movss (%rsi), %xmm2 + movq %rdx, %r8 + cvtss2sd %xmm3, %xmm0 + cvtss2sd %xmm2, %xmm1 + movss %xmm3, -32(%rsp) + movss %xmm2, -28(%rsp) + movsd %xmm0, -48(%rsp) + movsd %xmm1, -40(%rsp) + movzwl -30(%rsp), %edi + andl $32640, %edi + movb -25(%rsp), %dl + movzwl -42(%rsp), %eax + andb $-128, %dl + movzwl -34(%rsp), %r9d + andl $32752, %eax + andl $32752, %r9d + shrl $7, %edi + movb -29(%rsp), %cl + shrb $7, %cl + shrb $7, %dl + shrl $4, %eax + shrl $4, %r9d + cmpl $255, %edi + je .LBL_2_35 + + + movzwl -26(%rsp), %esi + andl $32640, %esi + cmpl $32640, %esi + je .LBL_2_35 + + + testl %eax, %eax + jne .LBL_2_5 + + + testl $8388607, -32(%rsp) + je .LBL_2_30 + +.LBL_2_5: + + testl %r9d, %r9d + jne .LBL_2_7 + + + testl $8388607, -28(%rsp) + je .LBL_2_27 + +.LBL_2_7: + + negl %r9d + movsd %xmm0, -48(%rsp) + addl %eax, %r9d + movsd %xmm1, -40(%rsp) + movb -41(%rsp), %dil + movb -33(%rsp), %sil + andb $127, %dil + andb $127, %sil + cmpl $-54, %r9d + jle .LBL_2_22 + + + cmpl $54, %r9d + jge .LBL_2_19 + + + movb %sil, -33(%rsp) + movb %dil, -41(%rsp) + testb %dl, %dl + jne .LBL_2_11 + + + movsd 1976+__satan2_la_CoutTab(%rip), %xmm1 + movaps %xmm1, %xmm0 + jmp .LBL_2_12 + +.LBL_2_11: + + movsd 1936+__satan2_la_CoutTab(%rip), %xmm1 + movsd 1944+__satan2_la_CoutTab(%rip), %xmm0 + +.LBL_2_12: + + movsd -48(%rsp), %xmm4 + movsd -40(%rsp), %xmm2 + movaps %xmm4, %xmm5 + divsd %xmm2, %xmm5 + movzwl -42(%rsp), %esi + movsd %xmm5, -16(%rsp) + testl %eax, %eax + jle .LBL_2_34 + + + cmpl $2046, %eax + jge .LBL_2_15 + + + andl $-32753, %esi + addl $-1023, %eax + movsd %xmm4, -48(%rsp) + addl $16368, %esi + movw %si, -42(%rsp) + jmp .LBL_2_16 + +.LBL_2_15: + + movsd 1992+__satan2_la_CoutTab(%rip), %xmm3 + movl $1022, %eax + mulsd %xmm3, %xmm4 + movsd %xmm4, -48(%rsp) + +.LBL_2_16: + + negl %eax + movq 1888+__satan2_la_CoutTab(%rip), %rsi + addl $1023, %eax + movq %rsi, -40(%rsp) + andl $2047, %eax + shrq $48, %rsi + shll $4, %eax + andl $-32753, %esi + orl %eax, %esi + movw %si, -34(%rsp) + movsd -40(%rsp), %xmm3 + mulsd %xmm3, %xmm2 + comisd 1880+__satan2_la_CoutTab(%rip), %xmm5 + jb .LBL_2_18 + + + movsd 2000+__satan2_la_CoutTab(%rip), %xmm12 + movaps %xmm2, %xmm3 + mulsd %xmm2, %xmm12 + movsd %xmm12, -72(%rsp) + movsd -72(%rsp), %xmm13 + movsd %xmm5, -24(%rsp) + subsd %xmm2, %xmm13 + movsd %xmm13, -64(%rsp) + movsd -72(%rsp), %xmm15 + movsd -64(%rsp), %xmm14 + movl -20(%rsp), %edi + movl %edi, %r9d + andl $-524288, %edi + andl $-1048576, %r9d + addl $262144, %edi + subsd %xmm14, %xmm15 + movsd %xmm15, -72(%rsp) + andl $1048575, %edi + movsd -72(%rsp), %xmm4 + orl %edi, %r9d + movl $0, -24(%rsp) + subsd %xmm4, %xmm3 + movl %r9d, -20(%rsp) + movsd %xmm3, -64(%rsp) + movsd -72(%rsp), %xmm5 + movsd -24(%rsp), %xmm11 + movsd -64(%rsp), %xmm9 + mulsd %xmm11, %xmm5 + mulsd %xmm11, %xmm9 + movsd 1968+__satan2_la_CoutTab(%rip), %xmm8 + mulsd %xmm8, %xmm5 + mulsd %xmm8, %xmm9 + movaps %xmm5, %xmm7 + movzwl -10(%rsp), %esi + addsd %xmm9, %xmm7 + movsd %xmm7, -72(%rsp) + andl $32752, %esi + movsd -72(%rsp), %xmm6 + shrl $4, %esi + subsd %xmm6, %xmm5 + movl -12(%rsp), %eax + addsd %xmm5, %xmm9 + movsd %xmm9, -64(%rsp) + andl $1048575, %eax + movsd -48(%rsp), %xmm9 + movsd -72(%rsp), %xmm3 + movaps %xmm9, %xmm12 + movsd -64(%rsp), %xmm10 + movaps %xmm9, %xmm14 + movaps %xmm9, %xmm6 + addsd %xmm3, %xmm12 + movsd %xmm12, -72(%rsp) + movsd -72(%rsp), %xmm13 + shll $20, %esi + subsd %xmm13, %xmm14 + movsd %xmm14, -64(%rsp) + orl %eax, %esi + movsd -72(%rsp), %xmm4 + addl $-1069547520, %esi + movsd -64(%rsp), %xmm15 + movl $113, %eax + movsd 2000+__satan2_la_CoutTab(%rip), %xmm13 + addsd %xmm15, %xmm4 + movsd %xmm4, -56(%rsp) + movsd -64(%rsp), %xmm8 + sarl $19, %esi + addsd %xmm3, %xmm8 + movsd %xmm8, -64(%rsp) + cmpl $113, %esi + movsd -56(%rsp), %xmm7 + cmovl %esi, %eax + subsd %xmm7, %xmm6 + movsd %xmm6, -56(%rsp) + addl %eax, %eax + movsd -64(%rsp), %xmm12 + lea __satan2_la_CoutTab(%rip), %rsi + movsd -56(%rsp), %xmm5 + movslq %eax, %rax + addsd %xmm5, %xmm12 + movsd %xmm12, -56(%rsp) + movsd -72(%rsp), %xmm7 + mulsd %xmm7, %xmm13 + movsd -56(%rsp), %xmm8 + movsd %xmm13, -72(%rsp) + addsd %xmm10, %xmm8 + movsd -72(%rsp), %xmm4 + movaps %xmm9, %xmm10 + mulsd 2000+__satan2_la_CoutTab(%rip), %xmm10 + subsd %xmm7, %xmm4 + movsd %xmm4, -64(%rsp) + movsd -72(%rsp), %xmm3 + movsd -64(%rsp), %xmm14 + subsd %xmm14, %xmm3 + movsd %xmm3, -72(%rsp) + movsd -72(%rsp), %xmm15 + subsd %xmm15, %xmm7 + movsd %xmm7, -64(%rsp) + movsd -72(%rsp), %xmm7 + movsd -64(%rsp), %xmm4 + movsd %xmm10, -72(%rsp) + movaps %xmm2, %xmm10 + addsd %xmm4, %xmm8 + movsd -72(%rsp), %xmm4 + subsd -48(%rsp), %xmm4 + movsd %xmm4, -64(%rsp) + movsd -72(%rsp), %xmm6 + movsd -64(%rsp), %xmm3 + subsd %xmm3, %xmm6 + movaps %xmm2, %xmm3 + movsd %xmm6, -72(%rsp) + movsd -72(%rsp), %xmm5 + subsd %xmm5, %xmm9 + movsd %xmm9, -64(%rsp) + movsd -72(%rsp), %xmm12 + movsd -64(%rsp), %xmm9 + mulsd %xmm11, %xmm12 + mulsd %xmm11, %xmm9 + movaps %xmm12, %xmm11 + addsd %xmm9, %xmm11 + movsd %xmm11, -72(%rsp) + movsd -72(%rsp), %xmm4 + subsd %xmm4, %xmm12 + addsd %xmm9, %xmm12 + movsd %xmm12, -64(%rsp) + movsd -72(%rsp), %xmm15 + movsd -64(%rsp), %xmm6 + addsd %xmm15, %xmm3 + movsd %xmm3, -72(%rsp) + movsd -72(%rsp), %xmm5 + movsd 2000+__satan2_la_CoutTab(%rip), %xmm3 + subsd %xmm5, %xmm10 + movsd %xmm10, -64(%rsp) + movsd -72(%rsp), %xmm13 + movsd -64(%rsp), %xmm11 + addsd %xmm11, %xmm13 + movsd %xmm13, -56(%rsp) + movsd -64(%rsp), %xmm14 + movsd 2000+__satan2_la_CoutTab(%rip), %xmm13 + addsd %xmm14, %xmm15 + movsd %xmm15, -64(%rsp) + movsd -56(%rsp), %xmm4 + movsd 1888+__satan2_la_CoutTab(%rip), %xmm14 + subsd %xmm4, %xmm2 + movsd %xmm2, -56(%rsp) + movsd -64(%rsp), %xmm4 + movsd -56(%rsp), %xmm2 + addsd %xmm2, %xmm4 + movsd %xmm4, -56(%rsp) + movsd -72(%rsp), %xmm12 + mulsd %xmm12, %xmm3 + movsd -56(%rsp), %xmm5 + movsd %xmm3, -72(%rsp) + addsd %xmm6, %xmm5 + movsd -72(%rsp), %xmm9 + subsd %xmm12, %xmm9 + movsd %xmm9, -64(%rsp) + movsd -72(%rsp), %xmm10 + movsd -64(%rsp), %xmm2 + subsd %xmm2, %xmm10 + movsd %xmm10, -72(%rsp) + movsd -72(%rsp), %xmm11 + subsd %xmm11, %xmm12 + movsd %xmm12, -64(%rsp) + movsd -72(%rsp), %xmm9 + divsd %xmm9, %xmm14 + mulsd %xmm14, %xmm13 + movsd -64(%rsp), %xmm10 + movsd %xmm13, -64(%rsp) + addsd %xmm10, %xmm5 + movsd -64(%rsp), %xmm15 + movsd 1888+__satan2_la_CoutTab(%rip), %xmm12 + subsd %xmm14, %xmm15 + movsd %xmm15, -56(%rsp) + movsd -64(%rsp), %xmm2 + movsd -56(%rsp), %xmm4 + movsd 2000+__satan2_la_CoutTab(%rip), %xmm13 + subsd %xmm4, %xmm2 + movsd %xmm2, -56(%rsp) + movsd -56(%rsp), %xmm3 + mulsd %xmm3, %xmm9 + movsd -56(%rsp), %xmm11 + subsd %xmm9, %xmm12 + mulsd %xmm11, %xmm5 + movsd %xmm5, -64(%rsp) + movsd -64(%rsp), %xmm5 + subsd %xmm5, %xmm12 + movsd %xmm12, -64(%rsp) + movsd -64(%rsp), %xmm2 + movq -56(%rsp), %r10 + movsd -64(%rsp), %xmm6 + movsd -56(%rsp), %xmm4 + movq %r10, -40(%rsp) + movsd -40(%rsp), %xmm3 + movaps %xmm3, %xmm5 + addsd 1888+__satan2_la_CoutTab(%rip), %xmm2 + mulsd %xmm7, %xmm5 + mulsd %xmm6, %xmm2 + mulsd %xmm4, %xmm2 + mulsd %xmm2, %xmm7 + mulsd %xmm8, %xmm2 + mulsd %xmm3, %xmm8 + addsd %xmm2, %xmm7 + movsd 1872+__satan2_la_CoutTab(%rip), %xmm3 + addsd %xmm8, %xmm7 + movsd %xmm7, -72(%rsp) + movaps %xmm5, %xmm7 + movsd -72(%rsp), %xmm4 + movsd 2000+__satan2_la_CoutTab(%rip), %xmm6 + addsd %xmm4, %xmm7 + movsd %xmm7, -72(%rsp) + movsd -72(%rsp), %xmm8 + subsd %xmm8, %xmm5 + addsd %xmm4, %xmm5 + movsd %xmm5, -64(%rsp) + movsd -72(%rsp), %xmm11 + movaps %xmm11, %xmm2 + mulsd %xmm11, %xmm2 + mulsd %xmm11, %xmm6 + mulsd %xmm2, %xmm3 + movsd -64(%rsp), %xmm4 + movsd %xmm6, -72(%rsp) + movsd -72(%rsp), %xmm7 + addsd 1864+__satan2_la_CoutTab(%rip), %xmm3 + subsd %xmm11, %xmm7 + mulsd %xmm2, %xmm3 + movsd %xmm7, -64(%rsp) + movsd -72(%rsp), %xmm9 + movsd -64(%rsp), %xmm8 + addsd 1856+__satan2_la_CoutTab(%rip), %xmm3 + subsd %xmm8, %xmm9 + mulsd %xmm2, %xmm3 + movsd %xmm9, -72(%rsp) + movsd -72(%rsp), %xmm10 + addsd 1848+__satan2_la_CoutTab(%rip), %xmm3 + subsd %xmm10, %xmm11 + mulsd %xmm2, %xmm3 + movsd %xmm11, -64(%rsp) + addsd 1840+__satan2_la_CoutTab(%rip), %xmm3 + mulsd %xmm2, %xmm3 + addsd 1832+__satan2_la_CoutTab(%rip), %xmm3 + mulsd %xmm2, %xmm3 + addsd 1824+__satan2_la_CoutTab(%rip), %xmm3 + mulsd %xmm2, %xmm3 + mulsd %xmm3, %xmm13 + movsd -72(%rsp), %xmm2 + movsd -64(%rsp), %xmm12 + movsd %xmm13, -72(%rsp) + addsd %xmm12, %xmm4 + movsd -72(%rsp), %xmm14 + subsd %xmm3, %xmm14 + movsd %xmm14, -64(%rsp) + movsd -72(%rsp), %xmm5 + movsd -64(%rsp), %xmm15 + subsd %xmm15, %xmm5 + movsd %xmm5, -72(%rsp) + movsd -72(%rsp), %xmm6 + subsd %xmm6, %xmm3 + movsd %xmm3, -64(%rsp) + movsd -72(%rsp), %xmm6 + movsd -64(%rsp), %xmm5 + movaps %xmm6, %xmm12 + movaps %xmm5, %xmm3 + mulsd %xmm4, %xmm6 + mulsd %xmm4, %xmm3 + mulsd %xmm2, %xmm5 + mulsd %xmm2, %xmm12 + addsd %xmm3, %xmm6 + movaps %xmm12, %xmm7 + movaps %xmm12, %xmm8 + addsd %xmm5, %xmm6 + addsd %xmm2, %xmm7 + movsd %xmm6, -72(%rsp) + movsd -72(%rsp), %xmm5 + movsd %xmm7, -72(%rsp) + movsd -72(%rsp), %xmm3 + subsd %xmm3, %xmm8 + movsd %xmm8, -64(%rsp) + movsd -72(%rsp), %xmm10 + movsd -64(%rsp), %xmm9 + addsd %xmm9, %xmm10 + movsd %xmm10, -56(%rsp) + movsd -64(%rsp), %xmm11 + addsd %xmm11, %xmm2 + movsd %xmm2, -64(%rsp) + movsd -56(%rsp), %xmm2 + subsd %xmm2, %xmm12 + movsd %xmm12, -56(%rsp) + movsd -64(%rsp), %xmm14 + movsd -56(%rsp), %xmm13 + addsd %xmm13, %xmm14 + movsd %xmm14, -56(%rsp) + movq -72(%rsp), %r11 + movsd -56(%rsp), %xmm15 + movq %r11, -40(%rsp) + addsd %xmm15, %xmm4 + movsd -40(%rsp), %xmm8 + addsd %xmm5, %xmm4 + movsd %xmm4, -32(%rsp) + movaps %xmm8, %xmm4 + movaps %xmm8, %xmm2 + addsd (%rsi,%rax,8), %xmm4 + movsd %xmm4, -72(%rsp) + movsd -72(%rsp), %xmm4 + subsd %xmm4, %xmm2 + movsd %xmm2, -64(%rsp) + movsd -72(%rsp), %xmm5 + movsd -64(%rsp), %xmm3 + addsd %xmm3, %xmm5 + movsd %xmm5, -56(%rsp) + movsd -64(%rsp), %xmm6 + addsd (%rsi,%rax,8), %xmm6 + movsd %xmm6, -64(%rsp) + movsd -56(%rsp), %xmm7 + subsd %xmm7, %xmm8 + movsd %xmm8, -56(%rsp) + movsd -64(%rsp), %xmm10 + movsd -56(%rsp), %xmm9 + addsd %xmm9, %xmm10 + movsd %xmm10, -56(%rsp) + movq -72(%rsp), %rdi + movq %rdi, -40(%rsp) + + + movsd -56(%rsp), %xmm2 + movaps %xmm1, %xmm3 + shrq $56, %rdi + addsd -32(%rsp), %xmm2 + shlb $7, %cl + addsd 8(%rsi,%rax,8), %xmm2 + movb %dl, %al + andb $127, %dil + shlb $7, %al + movsd %xmm2, -32(%rsp) + orb %al, %dil + movb %dil, -33(%rsp) + movsd -40(%rsp), %xmm9 + movaps %xmm9, %xmm5 + addsd %xmm9, %xmm3 + movsd %xmm3, -72(%rsp) + movsd -72(%rsp), %xmm4 + movb -25(%rsp), %sil + movb %sil, %r9b + shrb $7, %sil + subsd %xmm4, %xmm5 + movsd %xmm5, -64(%rsp) + movsd -72(%rsp), %xmm7 + movsd -64(%rsp), %xmm6 + xorb %sil, %dl + andb $127, %r9b + shlb $7, %dl + addsd %xmm6, %xmm7 + movsd %xmm7, -56(%rsp) + movsd -64(%rsp), %xmm8 + addsd %xmm8, %xmm1 + movsd %xmm1, -64(%rsp) + orb %dl, %r9b + movsd -56(%rsp), %xmm1 + movb %r9b, -25(%rsp) + subsd %xmm1, %xmm9 + movsd %xmm9, -56(%rsp) + movsd -64(%rsp), %xmm11 + movsd -56(%rsp), %xmm10 + addsd %xmm10, %xmm11 + movsd %xmm11, -56(%rsp) + movq -72(%rsp), %rdx + movsd -56(%rsp), %xmm12 + movq %rdx, -40(%rsp) + addsd %xmm12, %xmm0 + movsd -40(%rsp), %xmm13 + addsd -32(%rsp), %xmm0 + movsd %xmm0, -32(%rsp) + addsd %xmm0, %xmm13 + movsd %xmm13, -24(%rsp) + movb -17(%rsp), %r10b + andb $127, %r10b + orb %cl, %r10b + movb %r10b, -17(%rsp) + movsd -24(%rsp), %xmm0 + cvtsd2ss %xmm0, %xmm0 + movss %xmm0, (%r8) + jmp .LBL_2_33 + +.LBL_2_18: + + movsd -48(%rsp), %xmm12 + movb %dl, %dil + movaps %xmm12, %xmm7 + mulsd 2000+__satan2_la_CoutTab(%rip), %xmm7 + shlb $7, %dil + shlb $7, %cl + movsd %xmm7, -72(%rsp) + movsd -72(%rsp), %xmm8 + movsd 2000+__satan2_la_CoutTab(%rip), %xmm13 + movsd 1888+__satan2_la_CoutTab(%rip), %xmm7 + mulsd %xmm2, %xmm13 + subsd -48(%rsp), %xmm8 + movsd %xmm8, -64(%rsp) + movsd -72(%rsp), %xmm10 + movsd -64(%rsp), %xmm9 + subsd %xmm9, %xmm10 + movsd %xmm10, -72(%rsp) + movsd -72(%rsp), %xmm11 + subsd %xmm11, %xmm12 + movsd %xmm12, -64(%rsp) + movsd -72(%rsp), %xmm6 + movsd -64(%rsp), %xmm5 + movsd %xmm13, -72(%rsp) + movsd -72(%rsp), %xmm14 + subsd %xmm2, %xmm14 + movsd %xmm14, -64(%rsp) + movsd -72(%rsp), %xmm4 + movsd -64(%rsp), %xmm15 + subsd %xmm15, %xmm4 + movsd %xmm4, -72(%rsp) + movsd -72(%rsp), %xmm3 + movsd 1888+__satan2_la_CoutTab(%rip), %xmm4 + subsd %xmm3, %xmm2 + movsd %xmm2, -64(%rsp) + movsd -72(%rsp), %xmm12 + divsd %xmm12, %xmm7 + movsd 2000+__satan2_la_CoutTab(%rip), %xmm2 + mulsd %xmm7, %xmm2 + movsd -64(%rsp), %xmm14 + movsd %xmm2, -64(%rsp) + movsd -64(%rsp), %xmm8 + subsd %xmm7, %xmm8 + movsd %xmm8, -56(%rsp) + movsd -64(%rsp), %xmm10 + movsd -56(%rsp), %xmm9 + subsd %xmm9, %xmm10 + movsd %xmm10, -56(%rsp) + movsd -56(%rsp), %xmm11 + mulsd %xmm11, %xmm12 + movsd -56(%rsp), %xmm13 + subsd %xmm12, %xmm4 + mulsd %xmm13, %xmm14 + movsd %xmm14, -64(%rsp) + movsd -64(%rsp), %xmm15 + movsd 2000+__satan2_la_CoutTab(%rip), %xmm13 + subsd %xmm15, %xmm4 + movsd %xmm4, -64(%rsp) + movsd -64(%rsp), %xmm7 + movq -56(%rsp), %rax + movsd -64(%rsp), %xmm2 + movsd -56(%rsp), %xmm3 + movq %rax, -40(%rsp) + movsd -40(%rsp), %xmm8 + movaps %xmm8, %xmm9 + addsd 1888+__satan2_la_CoutTab(%rip), %xmm7 + mulsd %xmm6, %xmm9 + mulsd %xmm5, %xmm8 + mulsd %xmm2, %xmm7 + movsd -16(%rsp), %xmm2 + mulsd %xmm2, %xmm2 + mulsd %xmm3, %xmm7 + movsd 1872+__satan2_la_CoutTab(%rip), %xmm3 + mulsd %xmm2, %xmm3 + mulsd %xmm7, %xmm6 + mulsd %xmm5, %xmm7 + addsd 1864+__satan2_la_CoutTab(%rip), %xmm3 + addsd %xmm7, %xmm6 + mulsd %xmm2, %xmm3 + addsd %xmm8, %xmm6 + addsd 1856+__satan2_la_CoutTab(%rip), %xmm3 + mulsd %xmm2, %xmm3 + movaps %xmm9, %xmm5 + movsd %xmm6, -72(%rsp) + movsd -72(%rsp), %xmm4 + addsd 1848+__satan2_la_CoutTab(%rip), %xmm3 + addsd %xmm4, %xmm5 + mulsd %xmm2, %xmm3 + movsd %xmm5, -72(%rsp) + movsd -72(%rsp), %xmm6 + movsd 2000+__satan2_la_CoutTab(%rip), %xmm5 + subsd %xmm6, %xmm9 + addsd 1840+__satan2_la_CoutTab(%rip), %xmm3 + addsd %xmm4, %xmm9 + mulsd %xmm2, %xmm3 + movsd %xmm9, -64(%rsp) + movsd -72(%rsp), %xmm11 + mulsd %xmm11, %xmm5 + addsd 1832+__satan2_la_CoutTab(%rip), %xmm3 + movsd -64(%rsp), %xmm4 + movsd %xmm5, -72(%rsp) + movsd -72(%rsp), %xmm7 + mulsd %xmm2, %xmm3 + subsd %xmm11, %xmm7 + movsd %xmm7, -64(%rsp) + movsd -72(%rsp), %xmm8 + movsd -64(%rsp), %xmm6 + addsd 1824+__satan2_la_CoutTab(%rip), %xmm3 + subsd %xmm6, %xmm8 + mulsd %xmm2, %xmm3 + movsd %xmm8, -72(%rsp) + movsd -72(%rsp), %xmm10 + mulsd %xmm3, %xmm13 + subsd %xmm10, %xmm11 + movsd %xmm11, -64(%rsp) + movsd -72(%rsp), %xmm2 + movsd -64(%rsp), %xmm12 + movsd %xmm13, -72(%rsp) + addsd %xmm12, %xmm4 + movsd -72(%rsp), %xmm14 + subsd %xmm3, %xmm14 + movsd %xmm14, -64(%rsp) + movsd -72(%rsp), %xmm5 + movsd -64(%rsp), %xmm15 + subsd %xmm15, %xmm5 + movsd %xmm5, -72(%rsp) + movsd -72(%rsp), %xmm6 + subsd %xmm6, %xmm3 + movsd %xmm3, -64(%rsp) + movsd -72(%rsp), %xmm6 + movsd -64(%rsp), %xmm5 + movaps %xmm6, %xmm12 + movaps %xmm5, %xmm3 + mulsd %xmm4, %xmm6 + mulsd %xmm4, %xmm3 + mulsd %xmm2, %xmm5 + mulsd %xmm2, %xmm12 + addsd %xmm3, %xmm6 + movaps %xmm12, %xmm7 + movaps %xmm12, %xmm8 + addsd %xmm5, %xmm6 + addsd %xmm2, %xmm7 + movsd %xmm6, -72(%rsp) + movsd -72(%rsp), %xmm5 + movsd %xmm7, -72(%rsp) + movsd -72(%rsp), %xmm3 + subsd %xmm3, %xmm8 + movsd %xmm8, -64(%rsp) + movsd -72(%rsp), %xmm10 + movsd -64(%rsp), %xmm9 + addsd %xmm9, %xmm10 + movsd %xmm10, -56(%rsp) + movsd -64(%rsp), %xmm11 + addsd %xmm11, %xmm2 + movsd %xmm2, -64(%rsp) + movsd -56(%rsp), %xmm2 + subsd %xmm2, %xmm12 + movsd %xmm12, -56(%rsp) + movsd -64(%rsp), %xmm14 + movsd -56(%rsp), %xmm13 + addsd %xmm13, %xmm14 + movsd %xmm14, -56(%rsp) + movq -72(%rsp), %rsi + movsd -56(%rsp), %xmm15 + movq %rsi, -40(%rsp) + addsd %xmm15, %xmm4 + shrq $56, %rsi + addsd %xmm5, %xmm4 + andb $127, %sil + orb %dil, %sil + movb %sil, -33(%rsp) + movsd %xmm4, -32(%rsp) + movaps %xmm1, %xmm4 + movsd -40(%rsp), %xmm7 + movaps %xmm7, %xmm2 + addsd %xmm7, %xmm4 + movsd %xmm4, -72(%rsp) + movsd -72(%rsp), %xmm4 + movb -25(%rsp), %r9b + movb %r9b, %r10b + shrb $7, %r9b + subsd %xmm4, %xmm2 + movsd %xmm2, -64(%rsp) + movsd -72(%rsp), %xmm5 + movsd -64(%rsp), %xmm3 + xorb %r9b, %dl + andb $127, %r10b + shlb $7, %dl + addsd %xmm3, %xmm5 + movsd %xmm5, -56(%rsp) + movsd -64(%rsp), %xmm6 + addsd %xmm6, %xmm1 + movsd %xmm1, -64(%rsp) + orb %dl, %r10b + movsd -56(%rsp), %xmm1 + movb %r10b, -25(%rsp) + subsd %xmm1, %xmm7 + movsd %xmm7, -56(%rsp) + movsd -64(%rsp), %xmm2 + movsd -56(%rsp), %xmm1 + addsd %xmm1, %xmm2 + movsd %xmm2, -56(%rsp) + movq -72(%rsp), %rdx + movsd -56(%rsp), %xmm3 + movq %rdx, -40(%rsp) + addsd %xmm3, %xmm0 + movsd -40(%rsp), %xmm4 + addsd -32(%rsp), %xmm0 + movsd %xmm0, -32(%rsp) + addsd %xmm0, %xmm4 + movsd %xmm4, -24(%rsp) + movb -17(%rsp), %r11b + andb $127, %r11b + orb %cl, %r11b + movb %r11b, -17(%rsp) + movsd -24(%rsp), %xmm0 + cvtsd2ss %xmm0, %xmm0 + movss %xmm0, (%r8) + jmp .LBL_2_33 + +.LBL_2_19: + + cmpl $74, %r9d + jge .LBL_2_21 + + + movb %dil, -41(%rsp) + divsd -48(%rsp), %xmm1 + movsd 1928+__satan2_la_CoutTab(%rip), %xmm0 + shlb $7, %cl + subsd %xmm1, %xmm0 + addsd 1920+__satan2_la_CoutTab(%rip), %xmm0 + movsd %xmm0, -24(%rsp) + movb -17(%rsp), %al + andb $127, %al + orb %cl, %al + movb %al, -17(%rsp) + movsd -24(%rsp), %xmm1 + cvtsd2ss %xmm1, %xmm1 + movss %xmm1, (%r8) + jmp .LBL_2_33 + +.LBL_2_21: + + movsd 1920+__satan2_la_CoutTab(%rip), %xmm0 + shlb $7, %cl + addsd 1928+__satan2_la_CoutTab(%rip), %xmm0 + movsd %xmm0, -24(%rsp) + movb -17(%rsp), %al + andb $127, %al + orb %cl, %al + movb %al, -17(%rsp) + movsd -24(%rsp), %xmm1 + cvtsd2ss %xmm1, %xmm1 + movss %xmm1, (%r8) + jmp .LBL_2_33 + +.LBL_2_22: + + testb %dl, %dl + jne .LBL_2_32 + + + movb %dil, -41(%rsp) + pxor %xmm0, %xmm0 + movb %sil, -33(%rsp) + movsd -48(%rsp), %xmm2 + divsd -40(%rsp), %xmm2 + cvtsd2ss %xmm2, %xmm0 + movss %xmm0, -8(%rsp) + movzwl -6(%rsp), %eax + movsd %xmm2, -24(%rsp) + testl $32640, %eax + je .LBL_2_25 + + + movsd 1888+__satan2_la_CoutTab(%rip), %xmm0 + shlb $7, %cl + addsd %xmm2, %xmm0 + movsd %xmm0, -72(%rsp) + movsd -72(%rsp), %xmm1 + mulsd %xmm1, %xmm2 + movsd %xmm2, -24(%rsp) + movb -17(%rsp), %al + andb $127, %al + orb %cl, %al + movb %al, -17(%rsp) + movsd -24(%rsp), %xmm2 + cvtsd2ss %xmm2, %xmm2 + movss %xmm2, (%r8) + jmp .LBL_2_33 + +.LBL_2_25: + + movsd -24(%rsp), %xmm0 + cvtsd2ss %xmm0, %xmm0 + shlb $7, %cl + movss %xmm0, -8(%rsp) + movss -8(%rsp), %xmm2 + movss -8(%rsp), %xmm1 + mulss %xmm1, %xmm2 + movss %xmm2, -8(%rsp) + movss -8(%rsp), %xmm3 + cvtss2sd %xmm3, %xmm3 + addsd -24(%rsp), %xmm3 + movsd %xmm3, -24(%rsp) + movb -17(%rsp), %al + andb $127, %al + orb %cl, %al + movb %al, -17(%rsp) + movsd -24(%rsp), %xmm4 + cvtsd2ss %xmm4, %xmm4 + movss %xmm4, (%r8) + jmp .LBL_2_33 + +.LBL_2_27: + + testl %eax, %eax + jne .LBL_2_21 + + + testl $8388607, -32(%rsp) + jne .LBL_2_21 + +.LBL_2_30: + + testb %dl, %dl + jne .LBL_2_32 + +.LBL_2_31: + + shlb $7, %cl + movq 1976+__satan2_la_CoutTab(%rip), %rax + movq %rax, -24(%rsp) + shrq $56, %rax + andb $127, %al + orb %cl, %al + movb %al, -17(%rsp) + movsd -24(%rsp), %xmm0 + cvtsd2ss %xmm0, %xmm0 + movss %xmm0, (%r8) + jmp .LBL_2_33 + +.LBL_2_32: + + movsd 1936+__satan2_la_CoutTab(%rip), %xmm0 + shlb $7, %cl + addsd 1944+__satan2_la_CoutTab(%rip), %xmm0 + movsd %xmm0, -24(%rsp) + movb -17(%rsp), %al + andb $127, %al + orb %cl, %al + movb %al, -17(%rsp) + movsd -24(%rsp), %xmm1 + cvtsd2ss %xmm1, %xmm1 + movss %xmm1, (%r8) + +.LBL_2_33: + + xorl %eax, %eax + ret + +.LBL_2_34: + + movsd 1984+__satan2_la_CoutTab(%rip), %xmm3 + movl $-1022, %eax + mulsd %xmm3, %xmm4 + movsd %xmm4, -48(%rsp) + jmp .LBL_2_16 + +.LBL_2_35: + + cmpl $2047, %eax + je .LBL_2_48 + +.LBL_2_36: + + cmpl $2047, %r9d + je .LBL_2_46 + +.LBL_2_37: + + movzwl -26(%rsp), %eax + andl $32640, %eax + cmpl $32640, %eax + jne .LBL_2_21 + + + cmpl $255, %edi + je .LBL_2_43 + + + testb %dl, %dl + je .LBL_2_31 + jmp .LBL_2_32 + +.LBL_2_43: + + testb %dl, %dl + jne .LBL_2_45 + + + movsd 1904+__satan2_la_CoutTab(%rip), %xmm0 + shlb $7, %cl + addsd 1912+__satan2_la_CoutTab(%rip), %xmm0 + movsd %xmm0, -24(%rsp) + movb -17(%rsp), %al + andb $127, %al + orb %cl, %al + movb %al, -17(%rsp) + movsd -24(%rsp), %xmm1 + cvtsd2ss %xmm1, %xmm1 + movss %xmm1, (%r8) + jmp .LBL_2_33 + +.LBL_2_45: + + movsd 1952+__satan2_la_CoutTab(%rip), %xmm0 + shlb $7, %cl + addsd 1960+__satan2_la_CoutTab(%rip), %xmm0 + movsd %xmm0, -24(%rsp) + movb -17(%rsp), %al + andb $127, %al + orb %cl, %al + movb %al, -17(%rsp) + movsd -24(%rsp), %xmm1 + cvtsd2ss %xmm1, %xmm1 + movss %xmm1, (%r8) + jmp .LBL_2_33 + +.LBL_2_46: + + testl $8388607, -28(%rsp) + je .LBL_2_37 + +.LBL_2_47: + + addss %xmm2, %xmm3 + movss %xmm3, (%r8) + jmp .LBL_2_33 + +.LBL_2_48: + + testl $8388607, -32(%rsp) + jne .LBL_2_47 + jmp .LBL_2_36 + .align 16,0x90 + + .cfi_endproc + + .type __svml_satan2_cout_rare_internal,@function + .size __svml_satan2_cout_rare_internal,.-__svml_satan2_cout_rare_internal +..LN__svml_satan2_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_satan2_data_internal: + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .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 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .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 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 993144000 + .long 993144000 + .long 993144000 + .long 993144000 + .long 993144000 + .long 993144000 + .long 993144000 + .long 993144000 + .long 993144000 + .long 993144000 + .long 993144000 + .long 993144000 + .long 993144000 + .long 993144000 + .long 993144000 + .long 993144000 + .long 3162449457 + .long 3162449457 + .long 3162449457 + .long 3162449457 + .long 3162449457 + .long 3162449457 + .long 3162449457 + .long 3162449457 + .long 3162449457 + .long 3162449457 + .long 3162449457 + .long 3162449457 + .long 3162449457 + .long 3162449457 + .long 3162449457 + .long 3162449457 + .long 1026278276 + .long 1026278276 + .long 1026278276 + .long 1026278276 + .long 1026278276 + .long 1026278276 + .long 1026278276 + .long 1026278276 + .long 1026278276 + .long 1026278276 + .long 1026278276 + .long 1026278276 + .long 1026278276 + .long 1026278276 + .long 1026278276 + .long 1026278276 + .long 3180885545 + .long 3180885545 + .long 3180885545 + .long 3180885545 + .long 3180885545 + .long 3180885545 + .long 3180885545 + .long 3180885545 + .long 3180885545 + .long 3180885545 + .long 3180885545 + .long 3180885545 + .long 3180885545 + .long 3180885545 + .long 3180885545 + .long 3180885545 + .long 1037657204 + .long 1037657204 + .long 1037657204 + .long 1037657204 + .long 1037657204 + .long 1037657204 + .long 1037657204 + .long 1037657204 + .long 1037657204 + .long 1037657204 + .long 1037657204 + .long 1037657204 + .long 1037657204 + .long 1037657204 + .long 1037657204 + .long 1037657204 + .long 3188810232 + .long 3188810232 + .long 3188810232 + .long 3188810232 + .long 3188810232 + .long 3188810232 + .long 3188810232 + .long 3188810232 + .long 3188810232 + .long 3188810232 + .long 3188810232 + .long 3188810232 + .long 3188810232 + .long 3188810232 + .long 3188810232 + .long 3188810232 + .long 1045215135 + .long 1045215135 + .long 1045215135 + .long 1045215135 + .long 1045215135 + .long 1045215135 + .long 1045215135 + .long 1045215135 + .long 1045215135 + .long 1045215135 + .long 1045215135 + .long 1045215135 + .long 1045215135 + .long 1045215135 + .long 1045215135 + .long 1045215135 + .long 3198855753 + .long 3198855753 + .long 3198855753 + .long 3198855753 + .long 3198855753 + .long 3198855753 + .long 3198855753 + .long 3198855753 + .long 3198855753 + .long 3198855753 + .long 3198855753 + .long 3198855753 + .long 3198855753 + .long 3198855753 + .long 3198855753 + .long 3198855753 + .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 2164260864 + .long 2164260864 + .long 2164260864 + .long 2164260864 + .long 2164260864 + .long 2164260864 + .long 2164260864 + .long 2164260864 + .long 2164260864 + .long 2164260864 + .long 2164260864 + .long 2164260864 + .long 2164260864 + .long 2164260864 + .long 2164260864 + .long 2164260864 + .long 4227858432 + .long 4227858432 + .long 4227858432 + .long 4227858432 + .long 4227858432 + .long 4227858432 + .long 4227858432 + .long 4227858432 + .long 4227858432 + .long 4227858432 + .long 4227858432 + .long 4227858432 + .long 4227858432 + .long 4227858432 + .long 4227858432 + .long 4227858432 + .type __svml_satan2_data_internal,@object + .size __svml_satan2_data_internal,1152 + .align 32 +__satan2_la_CoutTab: + .long 3892314112 + .long 1069799150 + .long 2332892550 + .long 1039715405 + .long 1342177280 + .long 1070305495 + .long 270726690 + .long 1041535749 + .long 939524096 + .long 1070817911 + .long 2253973841 + .long 3188654726 + .long 3221225472 + .long 1071277294 + .long 3853927037 + .long 1043226911 + .long 2818572288 + .long 1071767563 + .long 2677759107 + .long 1044314101 + .long 3355443200 + .long 1072103591 + .long 1636578514 + .long 3191094734 + .long 1476395008 + .long 1072475260 + .long 1864703685 + .long 3188646936 + .long 805306368 + .long 1072747407 + .long 192551812 + .long 3192726267 + .long 2013265920 + .long 1072892781 + .long 2240369452 + .long 1043768538 + .long 0 + .long 1072999953 + .long 3665168337 + .long 3192705970 + .long 402653184 + .long 1073084787 + .long 1227953434 + .long 3192313277 + .long 2013265920 + .long 1073142981 + .long 3853283127 + .long 1045277487 + .long 805306368 + .long 1073187261 + .long 1676192264 + .long 3192868861 + .long 134217728 + .long 1073217000 + .long 4290763938 + .long 1042034855 + .long 671088640 + .long 1073239386 + .long 994303084 + .long 3189643768 + .long 402653184 + .long 1073254338 + .long 1878067156 + .long 1042652475 + .long 1610612736 + .long 1073265562 + .long 670314820 + .long 1045138554 + .long 3221225472 + .long 1073273048 + .long 691126919 + .long 3189987794 + .long 3489660928 + .long 1073278664 + .long 1618990832 + .long 3188194509 + .long 1207959552 + .long 1073282409 + .long 2198872939 + .long 1044806069 + .long 3489660928 + .long 1073285217 + .long 2633982383 + .long 1042307894 + .long 939524096 + .long 1073287090 + .long 1059367786 + .long 3189114230 + .long 2281701376 + .long 1073288494 + .long 3158525533 + .long 1044484961 + .long 3221225472 + .long 1073289430 + .long 286581777 + .long 1044893263 + .long 4026531840 + .long 1073290132 + .long 2000245215 + .long 3191647611 + .long 134217728 + .long 1073290601 + .long 4205071590 + .long 1045035927 + .long 536870912 + .long 1073290952 + .long 2334392229 + .long 1043447393 + .long 805306368 + .long 1073291186 + .long 2281458177 + .long 3188885569 + .long 3087007744 + .long 1073291361 + .long 691611507 + .long 1044733832 + .long 3221225472 + .long 1073291478 + .long 1816229550 + .long 1044363390 + .long 2281701376 + .long 1073291566 + .long 1993843750 + .long 3189837440 + .long 134217728 + .long 1073291625 + .long 3654754496 + .long 1044970837 + .long 4026531840 + .long 1073291668 + .long 3224300229 + .long 3191935390 + .long 805306368 + .long 1073291698 + .long 2988777976 + .long 3188950659 + .long 536870912 + .long 1073291720 + .long 1030371341 + .long 1043402665 + .long 3221225472 + .long 1073291734 + .long 1524463765 + .long 1044361356 + .long 3087007744 + .long 1073291745 + .long 2754295320 + .long 1044731036 + .long 134217728 + .long 1073291753 + .long 3099629057 + .long 1044970710 + .long 2281701376 + .long 1073291758 + .long 962914160 + .long 3189838838 + .long 805306368 + .long 1073291762 + .long 3543908206 + .long 3188950786 + .long 4026531840 + .long 1073291764 + .long 1849909620 + .long 3191935434 + .long 3221225472 + .long 1073291766 + .long 1641333636 + .long 1044361352 + .long 536870912 + .long 1073291768 + .long 1373968792 + .long 1043402654 + .long 134217728 + .long 1073291769 + .long 2033191599 + .long 1044970710 + .long 3087007744 + .long 1073291769 + .long 4117947437 + .long 1044731035 + .long 805306368 + .long 1073291770 + .long 315378368 + .long 3188950787 + .long 2281701376 + .long 1073291770 + .long 2428571750 + .long 3189838838 + .long 3221225472 + .long 1073291770 + .long 1608007466 + .long 1044361352 + .long 4026531840 + .long 1073291770 + .long 1895711420 + .long 3191935434 + .long 134217728 + .long 1073291771 + .long 2031108713 + .long 1044970710 + .long 536870912 + .long 1073291771 + .long 1362518342 + .long 1043402654 + .long 805306368 + .long 1073291771 + .long 317461253 + .long 3188950787 + .long 939524096 + .long 1073291771 + .long 4117231784 + .long 1044731035 + .long 1073741824 + .long 1073291771 + .long 1607942376 + .long 1044361352 + .long 1207959552 + .long 1073291771 + .long 2428929577 + .long 3189838838 + .long 1207959552 + .long 1073291771 + .long 2031104645 + .long 1044970710 + .long 1342177280 + .long 1073291771 + .long 1895722602 + .long 3191935434 + .long 1342177280 + .long 1073291771 + .long 317465322 + .long 3188950787 + .long 1342177280 + .long 1073291771 + .long 1362515546 + .long 1043402654 + .long 1342177280 + .long 1073291771 + .long 1607942248 + .long 1044361352 + .long 1342177280 + .long 1073291771 + .long 4117231610 + .long 1044731035 + .long 1342177280 + .long 1073291771 + .long 2031104637 + .long 1044970710 + .long 1342177280 + .long 1073291771 + .long 1540251232 + .long 1045150466 + .long 1342177280 + .long 1073291771 + .long 2644671394 + .long 1045270303 + .long 1342177280 + .long 1073291771 + .long 2399244691 + .long 1045360181 + .long 1342177280 + .long 1073291771 + .long 803971124 + .long 1045420100 + .long 1476395008 + .long 1073291771 + .long 3613709523 + .long 3192879152 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192849193 + .long 1476395008 + .long 1073291771 + .long 177735686 + .long 3192826724 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192811744 + .long 1476395008 + .long 1073291771 + .long 2754716064 + .long 3192800509 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192793019 + .long 1476395008 + .long 1073291771 + .long 1895722605 + .long 3192787402 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192783657 + .long 1476395008 + .long 1073291771 + .long 3613709523 + .long 3192780848 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192778976 + .long 1476395008 + .long 1073291771 + .long 177735686 + .long 3192777572 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192776635 + .long 1476395008 + .long 1073291771 + .long 2754716064 + .long 3192775933 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192775465 + .long 1476395008 + .long 1073291771 + .long 1895722605 + .long 3192775114 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192774880 + .long 1476395008 + .long 1073291771 + .long 3613709523 + .long 3192774704 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192774587 + .long 1476395008 + .long 1073291771 + .long 177735686 + .long 3192774500 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192774441 + .long 1476395008 + .long 1073291771 + .long 2754716064 + .long 3192774397 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192774368 + .long 1476395008 + .long 1073291771 + .long 1895722605 + .long 3192774346 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192774331 + .long 1476395008 + .long 1073291771 + .long 3613709523 + .long 3192774320 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192774313 + .long 1476395008 + .long 1073291771 + .long 177735686 + .long 3192774308 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192774304 + .long 1476395008 + .long 1073291771 + .long 2754716064 + .long 3192774301 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192774299 + .long 1476395008 + .long 1073291771 + .long 1895722605 + .long 3192774298 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192774297 + .long 1476395008 + .long 1073291771 + .long 3613709523 + .long 3192774296 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192774296 + .long 1476395008 + .long 1073291771 + .long 177735686 + .long 3192774296 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 2754716064 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1895722605 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1466225875 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1343512524 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1251477510 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1190120835 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1144103328 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1113424990 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1090416237 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1075077068 + .long 3192774295 + .long 1431655765 + .long 3218429269 + .long 2576978363 + .long 1070176665 + .long 2453154343 + .long 3217180964 + .long 4189149139 + .long 1069314502 + .long 1775019125 + .long 3216459198 + .long 273199057 + .long 1068739452 + .long 874748308 + .long 3215993277 + .long 0 + .long 1069547520 + .long 0 + .long 1072693248 + .long 0 + .long 1073741824 + .long 1413754136 + .long 1072243195 + .long 856972295 + .long 1015129638 + .long 1413754136 + .long 1073291771 + .long 856972295 + .long 1016178214 + .long 1413754136 + .long 1074340347 + .long 856972295 + .long 1017226790 + .long 2134057426 + .long 1073928572 + .long 1285458442 + .long 1016756537 + .long 0 + .long 3220176896 + .long 0 + .long 0 + .long 0 + .long 2144337920 + .long 0 + .long 1048576 + .long 33554432 + .long 1101004800 + .type __satan2_la_CoutTab,@object + .size __satan2_la_CoutTab,2008 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_atan_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_atan_d_la.s new file mode 100644 index 00000000..01564372 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_atan_d_la.s @@ -0,0 +1,1352 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * + * For 0.0 <= x <= 7.0/16.0: atan(x) = atan(0.0) + atan(s), where s=(x-0.0)/(1.0+0.0*x) + * For 7.0/16.0 <= x <= 11.0/16.0: atan(x) = atan(0.5) + atan(s), where s=(x-0.5)/(1.0+0.5*x) + * For 11.0/16.0 <= x <= 19.0/16.0: atan(x) = atan(1.0) + atan(s), where s=(x-1.0)/(1.0+1.0*x) + * For 19.0/16.0 <= x <= 39.0/16.0: atan(x) = atan(1.5) + atan(s), where s=(x-1.5)/(1.0+1.5*x) + * For 39.0/16.0 <= x <= inf : atan(x) = atan(inf) + atan(s), where s=-1.0/x + * Where atan(s) ~= s+s^3*Poly11(s^2) on interval |s|<7.0/0.16. + * + */ + + + .text +.L_2__routine_start___svml_atan8_z0_0: + + .align 16,0x90 + .globl __svml_atan8 + +__svml_atan8: + + + .cfi_startproc +..L2: + + vmovups 64+__svml_datan_data_internal_avx512(%rip), %zmm4 + vmovups 128+__svml_datan_data_internal_avx512(%rip), %zmm3 + vmovups 256+__svml_datan_data_internal_avx512(%rip), %zmm9 + +/* saturate X range */ + vmovups 320+__svml_datan_data_internal_avx512(%rip), %zmm7 + + vandpd __svml_datan_data_internal_avx512(%rip), %zmm0, %zmm8 + +/* R+Rl = DiffX/Y */ + vbroadcastsd .L_2il0floatpacket.14(%rip), %zmm15 + vaddpd {rn-sae}, %zmm4, %zmm8, %zmm2 + vxorpd %zmm0, %zmm8, %zmm1 + vcmppd $29, {sae}, %zmm3, %zmm8, %k2 + +/* round to 2 bits after binary point */ + vreducepd $40, {sae}, %zmm8, %zmm6 + vsubpd {rn-sae}, %zmm4, %zmm2, %zmm5 + +/* + * if|X|>=MaxThreshold, set DiffX=-1 + * VMSUB(D, DiffX, LargeMask, Zero, One); + */ + vblendmpd 192+__svml_datan_data_internal_avx512(%rip), %zmm6, %zmm10{%k2} + vfmadd231pd {rn-sae}, %zmm8, %zmm5, %zmm9 + vmovups 960+__svml_datan_data_internal_avx512(%rip), %zmm5 + +/* table lookup sequence */ + vmovups 448+__svml_datan_data_internal_avx512(%rip), %zmm6 + vgetmantpd $0, {sae}, %zmm10, %zmm14 + vgetexppd {sae}, %zmm10, %zmm11 + vmovups 1408+__svml_datan_data_internal_avx512(%rip), %zmm10 + +/* + * if|X|>=MaxThreshold, set Y=X + * VMADD(D, Y, LargeMask, X, Zero); + */ + vminpd {sae}, %zmm8, %zmm7, %zmm9{%k2} + vcmppd $29, {sae}, %zmm5, %zmm2, %k1 + vmovups 576+__svml_datan_data_internal_avx512(%rip), %zmm7 + vmovups 1152+__svml_datan_data_internal_avx512(%rip), %zmm8 + vgetmantpd $0, {sae}, %zmm9, %zmm3 + vgetexppd {sae}, %zmm9, %zmm12 + vmovups 1280+__svml_datan_data_internal_avx512(%rip), %zmm9 + vpermt2pd 512+__svml_datan_data_internal_avx512(%rip), %zmm2, %zmm6 + vsubpd {rn-sae}, %zmm12, %zmm11, %zmm4 + vpermt2pd 640+__svml_datan_data_internal_avx512(%rip), %zmm2, %zmm7 + vrcp14pd %zmm3, %zmm13 + vmovups 1344+__svml_datan_data_internal_avx512(%rip), %zmm12 + vmovups 1472+__svml_datan_data_internal_avx512(%rip), %zmm11 + vblendmpd %zmm7, %zmm6, %zmm2{%k1} + vmulpd {rn-sae}, %zmm13, %zmm14, %zmm0 + vfnmadd231pd {rn-sae}, %zmm3, %zmm13, %zmm15 + vfnmadd213pd {rn-sae}, %zmm14, %zmm0, %zmm3 + vfmadd213pd {rn-sae}, %zmm15, %zmm15, %zmm15 + vfmadd213pd {rn-sae}, %zmm13, %zmm13, %zmm15 + vfmadd213pd {rn-sae}, %zmm0, %zmm15, %zmm3 + vscalefpd {rn-sae}, %zmm4, %zmm3, %zmm0 + +/* set table value to Pi/2 for large X */ + vblendmpd 1024+__svml_datan_data_internal_avx512(%rip), %zmm2, %zmm3{%k2} + vmovups 1216+__svml_datan_data_internal_avx512(%rip), %zmm2 + +/* polynomial evaluation */ + vmulpd {rn-sae}, %zmm0, %zmm0, %zmm14 + vmulpd {rn-sae}, %zmm14, %zmm14, %zmm13 + vmulpd {rn-sae}, %zmm0, %zmm14, %zmm15 + vfmadd231pd {rn-sae}, %zmm14, %zmm8, %zmm2 + vfmadd231pd {rn-sae}, %zmm14, %zmm9, %zmm12 + vfmadd213pd {rn-sae}, %zmm11, %zmm10, %zmm14 + vfmadd213pd {rn-sae}, %zmm12, %zmm13, %zmm2 + vfmadd213pd {rn-sae}, %zmm14, %zmm13, %zmm2 + vfmadd213pd {rn-sae}, %zmm0, %zmm15, %zmm2 + vaddpd {rn-sae}, %zmm3, %zmm2, %zmm0 + vxorpd %zmm1, %zmm0, %zmm0 + +/* no invcbrt in libm, so taking it out here */ + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_atan8,@function + .size __svml_atan8,.-__svml_atan8 +..LN__svml_atan8.0: + +.L_2__routine_start___svml_datan_cout_rare_internal_1: + + .align 16,0x90 + +__svml_datan_cout_rare_internal: + + + .cfi_startproc +..L5: + + movzwl 6(%rdi), %r8d + andl $32752, %r8d + shrl $4, %r8d + cmpl $2047, %r8d + je .LBL_2_12 + + + movq (%rdi), %rdx + movq %rdx, -16(%rsp) + shrq $56, %rdx + movb 7(%rdi), %al + andl $127, %edx + movb %dl, -9(%rsp) + movsd -16(%rsp), %xmm0 + shrb $7, %al + comisd 1888+__datan_la_CoutTab(%rip), %xmm0 + movl -12(%rsp), %ecx + jb .LBL_2_6 + + + movsd 1896+__datan_la_CoutTab(%rip), %xmm1 + comisd %xmm0, %xmm1 + jbe .LBL_2_5 + + + movl 4(%rdi), %edx + movl %ecx, %edi + andl $-524288, %ecx + andl $-1048576, %edi + addl $262144, %ecx + movaps %xmm0, %xmm9 + andl $1048575, %ecx + movaps %xmm0, %xmm10 + movsd %xmm0, -56(%rsp) + orl %ecx, %edi + movl $0, -56(%rsp) + andl $1048575, %edx + movl %edi, -52(%rsp) + lea __datan_la_CoutTab(%rip), %rcx + movsd 1928+__datan_la_CoutTab(%rip), %xmm4 + movsd -56(%rsp), %xmm15 + shll $20, %r8d + subsd -56(%rsp), %xmm9 + mulsd 1928+__datan_la_CoutTab(%rip), %xmm10 + shlb $7, %al + mulsd %xmm9, %xmm4 + movsd %xmm4, -48(%rsp) + orl %edx, %r8d + movsd -48(%rsp), %xmm5 + addl $-1069547520, %r8d + sarl $18, %r8d + subsd %xmm9, %xmm5 + movsd %xmm5, -40(%rsp) + andl $-2, %r8d + movsd -48(%rsp), %xmm7 + movsd -40(%rsp), %xmm6 + movslq %r8d, %r8 + subsd %xmm6, %xmm7 + movsd %xmm7, -48(%rsp) + movsd -48(%rsp), %xmm8 + movsd 1904+__datan_la_CoutTab(%rip), %xmm6 + subsd %xmm8, %xmm9 + movsd %xmm9, -40(%rsp) + movsd -48(%rsp), %xmm2 + movsd -40(%rsp), %xmm3 + movsd %xmm10, -48(%rsp) + movsd -48(%rsp), %xmm11 + movsd 1904+__datan_la_CoutTab(%rip), %xmm8 + subsd -16(%rsp), %xmm11 + movsd %xmm11, -40(%rsp) + movsd -48(%rsp), %xmm13 + movsd -40(%rsp), %xmm12 + subsd %xmm12, %xmm13 + movsd %xmm13, -48(%rsp) + movsd -48(%rsp), %xmm14 + subsd %xmm14, %xmm0 + movsd 1904+__datan_la_CoutTab(%rip), %xmm14 + movsd %xmm0, -40(%rsp) + movsd -48(%rsp), %xmm5 + movsd -40(%rsp), %xmm4 + mulsd %xmm15, %xmm5 + mulsd %xmm15, %xmm4 + movaps %xmm5, %xmm1 + addsd %xmm4, %xmm1 + movsd %xmm1, -48(%rsp) + movsd -48(%rsp), %xmm0 + subsd %xmm0, %xmm5 + addsd %xmm4, %xmm5 + movsd 1928+__datan_la_CoutTab(%rip), %xmm4 + movsd %xmm5, -40(%rsp) + movsd -48(%rsp), %xmm11 + movsd -40(%rsp), %xmm1 + addsd %xmm11, %xmm6 + movsd %xmm6, -48(%rsp) + movsd -48(%rsp), %xmm7 + subsd %xmm7, %xmm8 + movsd %xmm8, -40(%rsp) + movsd -48(%rsp), %xmm10 + movsd -40(%rsp), %xmm9 + addsd %xmm9, %xmm10 + movsd %xmm10, -32(%rsp) + movsd -40(%rsp), %xmm12 + movsd 1928+__datan_la_CoutTab(%rip), %xmm10 + addsd %xmm11, %xmm12 + movsd %xmm12, -40(%rsp) + movsd -32(%rsp), %xmm13 + movsd 1904+__datan_la_CoutTab(%rip), %xmm11 + subsd %xmm13, %xmm14 + movsd %xmm14, -32(%rsp) + movsd -40(%rsp), %xmm0 + movsd -32(%rsp), %xmm15 + addsd %xmm15, %xmm0 + movsd %xmm0, -32(%rsp) + movsd -48(%rsp), %xmm9 + mulsd %xmm9, %xmm4 + movsd -32(%rsp), %xmm0 + movsd %xmm4, -48(%rsp) + addsd %xmm1, %xmm0 + movsd -48(%rsp), %xmm5 + subsd %xmm9, %xmm5 + movsd %xmm5, -40(%rsp) + movsd -48(%rsp), %xmm7 + movsd -40(%rsp), %xmm6 + subsd %xmm6, %xmm7 + movsd 1904+__datan_la_CoutTab(%rip), %xmm6 + movsd %xmm7, -48(%rsp) + movsd -48(%rsp), %xmm8 + subsd %xmm8, %xmm9 + movsd %xmm9, -40(%rsp) + movsd -48(%rsp), %xmm4 + divsd %xmm4, %xmm11 + mulsd %xmm11, %xmm10 + movsd -40(%rsp), %xmm5 + movsd %xmm10, -40(%rsp) + addsd %xmm0, %xmm5 + movsd -40(%rsp), %xmm12 + subsd %xmm11, %xmm12 + movsd %xmm12, -32(%rsp) + movsd -40(%rsp), %xmm10 + movsd -32(%rsp), %xmm13 + subsd %xmm13, %xmm10 + movsd %xmm10, -32(%rsp) + movsd -32(%rsp), %xmm14 + mulsd %xmm14, %xmm4 + movsd -32(%rsp), %xmm15 + subsd %xmm4, %xmm6 + mulsd %xmm15, %xmm5 + movsd %xmm5, -40(%rsp) + movsd -40(%rsp), %xmm1 + subsd %xmm1, %xmm6 + movsd %xmm6, -40(%rsp) + movsd -40(%rsp), %xmm4 + movsd -32(%rsp), %xmm5 + movsd -40(%rsp), %xmm0 + movaps %xmm5, %xmm7 + movsd -32(%rsp), %xmm1 + mulsd %xmm3, %xmm5 + addsd 1904+__datan_la_CoutTab(%rip), %xmm4 + mulsd %xmm2, %xmm7 + mulsd %xmm0, %xmm4 + mulsd %xmm1, %xmm4 + mulsd %xmm4, %xmm3 + mulsd %xmm4, %xmm2 + addsd %xmm3, %xmm5 + movsd 1872+__datan_la_CoutTab(%rip), %xmm6 + addsd %xmm2, %xmm5 + movsd %xmm5, -48(%rsp) + movaps %xmm7, %xmm2 + movsd -48(%rsp), %xmm4 + addsd %xmm4, %xmm2 + movsd %xmm2, -48(%rsp) + movsd -48(%rsp), %xmm3 + movsd (%rcx,%r8,8), %xmm2 + subsd %xmm3, %xmm7 + addsd %xmm4, %xmm7 + movsd %xmm7, -40(%rsp) + movsd -48(%rsp), %xmm3 + movaps %xmm3, %xmm5 + movaps %xmm3, %xmm0 + mulsd %xmm3, %xmm5 + addsd %xmm2, %xmm0 + mulsd %xmm5, %xmm6 + movsd -40(%rsp), %xmm10 + movsd %xmm0, -48(%rsp) + movsd -48(%rsp), %xmm1 + addsd 1864+__datan_la_CoutTab(%rip), %xmm6 + subsd %xmm1, %xmm2 + mulsd %xmm5, %xmm6 + addsd %xmm3, %xmm2 + addsd 1856+__datan_la_CoutTab(%rip), %xmm6 + mulsd %xmm5, %xmm6 + movsd %xmm2, -40(%rsp) + movsd -48(%rsp), %xmm9 + movsd -40(%rsp), %xmm8 + addsd 1848+__datan_la_CoutTab(%rip), %xmm6 + mulsd %xmm5, %xmm6 + addsd 1840+__datan_la_CoutTab(%rip), %xmm6 + mulsd %xmm5, %xmm6 + addsd 1832+__datan_la_CoutTab(%rip), %xmm6 + mulsd %xmm5, %xmm6 + addsd 1824+__datan_la_CoutTab(%rip), %xmm6 + mulsd %xmm5, %xmm6 + mulsd %xmm3, %xmm6 + addsd %xmm6, %xmm10 + addsd 8(%rcx,%r8,8), %xmm10 + addsd %xmm8, %xmm10 + addsd %xmm9, %xmm10 + movsd %xmm10, -24(%rsp) + movb -17(%rsp), %r9b + andb $127, %r9b + orb %al, %r9b + movb %r9b, -17(%rsp) + movq -24(%rsp), %rax + movq %rax, (%rsi) + jmp .LBL_2_11 + +.LBL_2_5: + + movsd 1912+__datan_la_CoutTab(%rip), %xmm0 + shlb $7, %al + addsd 1920+__datan_la_CoutTab(%rip), %xmm0 + movsd %xmm0, -24(%rsp) + movb -17(%rsp), %dl + andb $127, %dl + orb %al, %dl + movb %dl, -17(%rsp) + movq -24(%rsp), %rax + movq %rax, (%rsi) + jmp .LBL_2_11 + +.LBL_2_6: + + comisd 1880+__datan_la_CoutTab(%rip), %xmm0 + jb .LBL_2_8 + + + movaps %xmm0, %xmm1 + mulsd %xmm0, %xmm1 + shlb $7, %al + movsd 1872+__datan_la_CoutTab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1864+__datan_la_CoutTab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1856+__datan_la_CoutTab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1848+__datan_la_CoutTab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1840+__datan_la_CoutTab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1832+__datan_la_CoutTab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1824+__datan_la_CoutTab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + mulsd %xmm0, %xmm2 + addsd %xmm0, %xmm2 + movsd %xmm2, -24(%rsp) + movb -17(%rsp), %dl + andb $127, %dl + orb %al, %dl + movb %dl, -17(%rsp) + movq -24(%rsp), %rax + movq %rax, (%rsi) + jmp .LBL_2_11 + +.LBL_2_8: + + movzwl -10(%rsp), %edx + testl $32752, %edx + je .LBL_2_10 + + + movsd 1904+__datan_la_CoutTab(%rip), %xmm1 + shlb $7, %al + addsd %xmm0, %xmm1 + movsd %xmm1, -48(%rsp) + movsd -48(%rsp), %xmm0 + mulsd -16(%rsp), %xmm0 + movsd %xmm0, -24(%rsp) + movb -17(%rsp), %dl + andb $127, %dl + orb %al, %dl + movb %dl, -17(%rsp) + movq -24(%rsp), %rax + movq %rax, (%rsi) + jmp .LBL_2_11 + +.LBL_2_10: + + mulsd %xmm0, %xmm0 + shlb $7, %al + movsd %xmm0, -48(%rsp) + movsd -48(%rsp), %xmm0 + addsd -16(%rsp), %xmm0 + movsd %xmm0, -24(%rsp) + movb -17(%rsp), %dl + andb $127, %dl + orb %al, %dl + movb %dl, -17(%rsp) + movq -24(%rsp), %rax + movq %rax, (%rsi) + +.LBL_2_11: + + xorl %eax, %eax + ret + +.LBL_2_12: + + testl $1048575, 4(%rdi) + jne .LBL_2_15 + + + cmpl $0, (%rdi) + jne .LBL_2_15 + + + movsd 1912+__datan_la_CoutTab(%rip), %xmm0 + movb 7(%rdi), %al + andb $-128, %al + addsd 1920+__datan_la_CoutTab(%rip), %xmm0 + movsd %xmm0, -24(%rsp) + movb -17(%rsp), %dl + andb $127, %dl + orb %al, %dl + movb %dl, -17(%rsp) + movq -24(%rsp), %rcx + movq %rcx, (%rsi) + jmp .LBL_2_11 + +.LBL_2_15: + + movsd (%rdi), %xmm0 + addsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + jmp .LBL_2_11 + .align 16,0x90 + + .cfi_endproc + + .type __svml_datan_cout_rare_internal,@function + .size __svml_datan_cout_rare_internal,.-__svml_datan_cout_rare_internal +..LN__svml_datan_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_datan_data_internal_avx512: + .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 1125646336 + .long 0 + .long 1125646336 + .long 0 + .long 1125646336 + .long 0 + .long 1125646336 + .long 0 + .long 1125646336 + .long 0 + .long 1125646336 + .long 0 + .long 1125646336 + .long 0 + .long 1125646336 + .long 0 + .long 1075806208 + .long 0 + .long 1075806208 + .long 0 + .long 1075806208 + .long 0 + .long 1075806208 + .long 0 + .long 1075806208 + .long 0 + .long 1075806208 + .long 0 + .long 1075806208 + .long 0 + .long 1075806208 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .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 0 + .long 1206910976 + .long 0 + .long 1206910976 + .long 0 + .long 1206910976 + .long 0 + .long 1206910976 + .long 0 + .long 1206910976 + .long 0 + .long 1206910976 + .long 0 + .long 1206910976 + .long 0 + .long 1206910976 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 4180443357 + .long 1070553973 + .long 90291023 + .long 1071492199 + .long 2737217249 + .long 1071945615 + .long 1413754136 + .long 1072243195 + .long 1468297118 + .long 1072475260 + .long 3531732635 + .long 1072657163 + .long 744202399 + .long 1072747407 + .long 2464923204 + .long 1072805601 + .long 1436891685 + .long 1072853231 + .long 2037009832 + .long 1072892781 + .long 1826698067 + .long 1072926058 + .long 1803191648 + .long 1072954391 + .long 2205372832 + .long 1072978772 + .long 4234512805 + .long 1072999952 + .long 3932628503 + .long 1073018509 + .long 2501811453 + .long 1073034892 + .long 866379431 + .long 1073049455 + .long 1376865888 + .long 1073062480 + .long 3290094269 + .long 1073074195 + .long 354764887 + .long 1073084787 + .long 3332975497 + .long 1073094406 + .long 1141460092 + .long 1073103181 + .long 745761286 + .long 1073111216 + .long 1673304509 + .long 1073118600 + .long 983388243 + .long 1073125409 + .long 3895509104 + .long 1073131706 + .long 2128523669 + .long 1073137548 + .long 2075485693 + .long 1073142981 + .long 121855980 + .long 1073148047 + .long 4181733783 + .long 1073152780 + .long 2887813284 + .long 1073157214 + .long 0 + .long 0 + .long 1022865341 + .long 1013492590 + .long 573531618 + .long 1014639487 + .long 2280825944 + .long 1014120858 + .long 856972295 + .long 1015129638 + .long 986810987 + .long 1015077601 + .long 2062601149 + .long 1013974920 + .long 589036912 + .long 3164328156 + .long 1787331214 + .long 1016798022 + .long 2942272763 + .long 3164235441 + .long 2956702105 + .long 1016472908 + .long 3903328092 + .long 3162582135 + .long 3175026820 + .long 3158589859 + .long 787328196 + .long 1014621351 + .long 2317874517 + .long 3163795518 + .long 4071621134 + .long 1016673529 + .long 2492111345 + .long 3164172103 + .long 3606178875 + .long 3162371821 + .long 3365790232 + .long 1014547152 + .long 2710887773 + .long 1017086651 + .long 2755350986 + .long 3162706257 + .long 198095269 + .long 3162802133 + .long 2791076759 + .long 3164364640 + .long 4214434319 + .long 3162164074 + .long 773754012 + .long 3164190653 + .long 139561443 + .long 3164313657 + .long 2197796619 + .long 3164066219 + .long 3592486882 + .long 1016669082 + .long 1148791015 + .long 3163724934 + .long 386789398 + .long 3163117479 + .long 2518816264 + .long 3162291736 + .long 2545101323 + .long 3164592727 + .long 16 + .long 1125646336 + .long 16 + .long 1125646336 + .long 16 + .long 1125646336 + .long 16 + .long 1125646336 + .long 16 + .long 1125646336 + .long 16 + .long 1125646336 + .long 16 + .long 1125646336 + .long 16 + .long 1125646336 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 856972295 + .long 1016178214 + .long 856972295 + .long 1016178214 + .long 856972295 + .long 1016178214 + .long 856972295 + .long 1016178214 + .long 856972295 + .long 1016178214 + .long 856972295 + .long 1016178214 + .long 856972295 + .long 1016178214 + .long 856972295 + .long 1016178214 + .long 4123328151 + .long 1068689849 + .long 4123328151 + .long 1068689849 + .long 4123328151 + .long 1068689849 + .long 4123328151 + .long 1068689849 + .long 4123328151 + .long 1068689849 + .long 4123328151 + .long 1068689849 + .long 4123328151 + .long 1068689849 + .long 4123328151 + .long 1068689849 + .long 3295121612 + .long 3216458327 + .long 3295121612 + .long 3216458327 + .long 3295121612 + .long 3216458327 + .long 3295121612 + .long 3216458327 + .long 3295121612 + .long 3216458327 + .long 3295121612 + .long 3216458327 + .long 3295121612 + .long 3216458327 + .long 3295121612 + .long 3216458327 + .long 4026078880 + .long 1069314495 + .long 4026078880 + .long 1069314495 + .long 4026078880 + .long 1069314495 + .long 4026078880 + .long 1069314495 + .long 4026078880 + .long 1069314495 + .long 4026078880 + .long 1069314495 + .long 4026078880 + .long 1069314495 + .long 4026078880 + .long 1069314495 + .long 2398029018 + .long 3217180964 + .long 2398029018 + .long 3217180964 + .long 2398029018 + .long 3217180964 + .long 2398029018 + .long 3217180964 + .long 2398029018 + .long 3217180964 + .long 2398029018 + .long 3217180964 + .long 2398029018 + .long 3217180964 + .long 2398029018 + .long 3217180964 + .long 2576905246 + .long 1070176665 + .long 2576905246 + .long 1070176665 + .long 2576905246 + .long 1070176665 + .long 2576905246 + .long 1070176665 + .long 2576905246 + .long 1070176665 + .long 2576905246 + .long 1070176665 + .long 2576905246 + .long 1070176665 + .long 2576905246 + .long 1070176665 + .long 1431655757 + .long 3218429269 + .long 1431655757 + .long 3218429269 + .long 1431655757 + .long 3218429269 + .long 1431655757 + .long 3218429269 + .long 1431655757 + .long 3218429269 + .long 1431655757 + .long 3218429269 + .long 1431655757 + .long 3218429269 + .long 1431655757 + .long 3218429269 + .type __svml_datan_data_internal_avx512,@object + .size __svml_datan_data_internal_avx512,1536 + .align 32 +__datan_la_CoutTab: + .long 3892314112 + .long 1069799150 + .long 2332892550 + .long 1039715405 + .long 1342177280 + .long 1070305495 + .long 270726690 + .long 1041535749 + .long 939524096 + .long 1070817911 + .long 2253973841 + .long 3188654726 + .long 3221225472 + .long 1071277294 + .long 3853927037 + .long 1043226911 + .long 2818572288 + .long 1071767563 + .long 2677759107 + .long 1044314101 + .long 3355443200 + .long 1072103591 + .long 1636578514 + .long 3191094734 + .long 1476395008 + .long 1072475260 + .long 1864703685 + .long 3188646936 + .long 805306368 + .long 1072747407 + .long 192551812 + .long 3192726267 + .long 2013265920 + .long 1072892781 + .long 2240369452 + .long 1043768538 + .long 0 + .long 1072999953 + .long 3665168337 + .long 3192705970 + .long 402653184 + .long 1073084787 + .long 1227953434 + .long 3192313277 + .long 2013265920 + .long 1073142981 + .long 3853283127 + .long 1045277487 + .long 805306368 + .long 1073187261 + .long 1676192264 + .long 3192868861 + .long 134217728 + .long 1073217000 + .long 4290763938 + .long 1042034855 + .long 671088640 + .long 1073239386 + .long 994303084 + .long 3189643768 + .long 402653184 + .long 1073254338 + .long 1878067156 + .long 1042652475 + .long 1610612736 + .long 1073265562 + .long 670314820 + .long 1045138554 + .long 3221225472 + .long 1073273048 + .long 691126919 + .long 3189987794 + .long 3489660928 + .long 1073278664 + .long 1618990832 + .long 3188194509 + .long 1207959552 + .long 1073282409 + .long 2198872939 + .long 1044806069 + .long 3489660928 + .long 1073285217 + .long 2633982383 + .long 1042307894 + .long 939524096 + .long 1073287090 + .long 1059367786 + .long 3189114230 + .long 2281701376 + .long 1073288494 + .long 3158525533 + .long 1044484961 + .long 3221225472 + .long 1073289430 + .long 286581777 + .long 1044893263 + .long 4026531840 + .long 1073290132 + .long 2000245215 + .long 3191647611 + .long 134217728 + .long 1073290601 + .long 4205071590 + .long 1045035927 + .long 536870912 + .long 1073290952 + .long 2334392229 + .long 1043447393 + .long 805306368 + .long 1073291186 + .long 2281458177 + .long 3188885569 + .long 3087007744 + .long 1073291361 + .long 691611507 + .long 1044733832 + .long 3221225472 + .long 1073291478 + .long 1816229550 + .long 1044363390 + .long 2281701376 + .long 1073291566 + .long 1993843750 + .long 3189837440 + .long 134217728 + .long 1073291625 + .long 3654754496 + .long 1044970837 + .long 4026531840 + .long 1073291668 + .long 3224300229 + .long 3191935390 + .long 805306368 + .long 1073291698 + .long 2988777976 + .long 3188950659 + .long 536870912 + .long 1073291720 + .long 1030371341 + .long 1043402665 + .long 3221225472 + .long 1073291734 + .long 1524463765 + .long 1044361356 + .long 3087007744 + .long 1073291745 + .long 2754295320 + .long 1044731036 + .long 134217728 + .long 1073291753 + .long 3099629057 + .long 1044970710 + .long 2281701376 + .long 1073291758 + .long 962914160 + .long 3189838838 + .long 805306368 + .long 1073291762 + .long 3543908206 + .long 3188950786 + .long 4026531840 + .long 1073291764 + .long 1849909620 + .long 3191935434 + .long 3221225472 + .long 1073291766 + .long 1641333636 + .long 1044361352 + .long 536870912 + .long 1073291768 + .long 1373968792 + .long 1043402654 + .long 134217728 + .long 1073291769 + .long 2033191599 + .long 1044970710 + .long 3087007744 + .long 1073291769 + .long 4117947437 + .long 1044731035 + .long 805306368 + .long 1073291770 + .long 315378368 + .long 3188950787 + .long 2281701376 + .long 1073291770 + .long 2428571750 + .long 3189838838 + .long 3221225472 + .long 1073291770 + .long 1608007466 + .long 1044361352 + .long 4026531840 + .long 1073291770 + .long 1895711420 + .long 3191935434 + .long 134217728 + .long 1073291771 + .long 2031108713 + .long 1044970710 + .long 536870912 + .long 1073291771 + .long 1362518342 + .long 1043402654 + .long 805306368 + .long 1073291771 + .long 317461253 + .long 3188950787 + .long 939524096 + .long 1073291771 + .long 4117231784 + .long 1044731035 + .long 1073741824 + .long 1073291771 + .long 1607942376 + .long 1044361352 + .long 1207959552 + .long 1073291771 + .long 2428929577 + .long 3189838838 + .long 1207959552 + .long 1073291771 + .long 2031104645 + .long 1044970710 + .long 1342177280 + .long 1073291771 + .long 1895722602 + .long 3191935434 + .long 1342177280 + .long 1073291771 + .long 317465322 + .long 3188950787 + .long 1342177280 + .long 1073291771 + .long 1362515546 + .long 1043402654 + .long 1342177280 + .long 1073291771 + .long 1607942248 + .long 1044361352 + .long 1342177280 + .long 1073291771 + .long 4117231610 + .long 1044731035 + .long 1342177280 + .long 1073291771 + .long 2031104637 + .long 1044970710 + .long 1342177280 + .long 1073291771 + .long 1540251232 + .long 1045150466 + .long 1342177280 + .long 1073291771 + .long 2644671394 + .long 1045270303 + .long 1342177280 + .long 1073291771 + .long 2399244691 + .long 1045360181 + .long 1342177280 + .long 1073291771 + .long 803971124 + .long 1045420100 + .long 1476395008 + .long 1073291771 + .long 3613709523 + .long 3192879152 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192849193 + .long 1476395008 + .long 1073291771 + .long 177735686 + .long 3192826724 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192811744 + .long 1476395008 + .long 1073291771 + .long 2754716064 + .long 3192800509 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192793019 + .long 1476395008 + .long 1073291771 + .long 1895722605 + .long 3192787402 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192783657 + .long 1476395008 + .long 1073291771 + .long 3613709523 + .long 3192780848 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192778976 + .long 1476395008 + .long 1073291771 + .long 177735686 + .long 3192777572 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192776635 + .long 1476395008 + .long 1073291771 + .long 2754716064 + .long 3192775933 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192775465 + .long 1476395008 + .long 1073291771 + .long 1895722605 + .long 3192775114 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192774880 + .long 1476395008 + .long 1073291771 + .long 3613709523 + .long 3192774704 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192774587 + .long 1476395008 + .long 1073291771 + .long 177735686 + .long 3192774500 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192774441 + .long 1476395008 + .long 1073291771 + .long 2754716064 + .long 3192774397 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192774368 + .long 1476395008 + .long 1073291771 + .long 1895722605 + .long 3192774346 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192774331 + .long 1476395008 + .long 1073291771 + .long 3613709523 + .long 3192774320 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192774313 + .long 1476395008 + .long 1073291771 + .long 177735686 + .long 3192774308 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192774304 + .long 1476395008 + .long 1073291771 + .long 2754716064 + .long 3192774301 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192774299 + .long 1476395008 + .long 1073291771 + .long 1895722605 + .long 3192774298 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192774297 + .long 1476395008 + .long 1073291771 + .long 3613709523 + .long 3192774296 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192774296 + .long 1476395008 + .long 1073291771 + .long 177735686 + .long 3192774296 + .long 1476395008 + .long 1073291771 + .long 3490996172 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 2754716064 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 2263862659 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1895722605 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1650295902 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1466225875 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1343512524 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1251477510 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1190120835 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1144103328 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1113424990 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1090416237 + .long 3192774295 + .long 1476395008 + .long 1073291771 + .long 1075077068 + .long 3192774295 + .long 1431655765 + .long 3218429269 + .long 2576978363 + .long 1070176665 + .long 2453154343 + .long 3217180964 + .long 4189149139 + .long 1069314502 + .long 1775019125 + .long 3216459198 + .long 273199057 + .long 1068739452 + .long 874748308 + .long 3215993277 + .long 0 + .long 1017118720 + .long 0 + .long 1069547520 + .long 0 + .long 1129316352 + .long 0 + .long 1072693248 + .long 1413754136 + .long 1073291771 + .long 856972295 + .long 1016178214 + .long 33554432 + .long 1101004800 + .type __datan_la_CoutTab,@object + .size __datan_la_CoutTab,1936 + .align 8 +.L_2il0floatpacket.14: + .long 0x00000000,0x3ff00000 + .type .L_2il0floatpacket.14,@object + .size .L_2il0floatpacket.14,8 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_atan_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_atan_s_la.s new file mode 100644 index 00000000..c1386beb --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_atan_s_la.s @@ -0,0 +1,355 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * + * For 0.0 <= x <= 7.0/16.0: atan(x) = atan(0.0) + atan(s), where s=(x-0.0)/(1.0+0.0*x) + * For 7.0/16.0 <= x <= 11.0/16.0: atan(x) = atan(0.5) + atan(s), where s=(x-0.5)/(1.0+0.5*x) + * For 11.0/16.0 <= x <= 19.0/16.0: atan(x) = atan(1.0) + atan(s), where s=(x-1.0)/(1.0+1.0*x) + * For 19.0/16.0 <= x <= 39.0/16.0: atan(x) = atan(1.5) + atan(s), where s=(x-1.5)/(1.0+1.5*x) + * For 39.0/16.0 <= x <= inf : atan(x) = atan(inf) + atan(s), where s=-1.0/x + * Where atan(s) ~= s+s^3*Poly11(s^2) on interval |s|<7.0/0.16. + * + */ + + + .text +.L_2__routine_start___svml_atanf16_z0_0: + + .align 16,0x90 + .globl __svml_atanf16 + +__svml_atanf16: + + + .cfi_startproc +..L2: + + vandps __svml_satan_data_internal_avx512(%rip), %zmm0, %zmm7 + vmovups 128+__svml_satan_data_internal_avx512(%rip), %zmm3 + vmovups 256+__svml_satan_data_internal_avx512(%rip), %zmm8 + +/* round to 2 bits after binary point */ + vreduceps $40, {sae}, %zmm7, %zmm5 + +/* saturate X range */ + vmovups 320+__svml_satan_data_internal_avx512(%rip), %zmm6 + vmovups 64+__svml_satan_data_internal_avx512(%rip), %zmm2 + vcmpps $29, {sae}, %zmm3, %zmm7, %k1 + +/* table lookup sequence */ + vmovups 448+__svml_satan_data_internal_avx512(%rip), %zmm3 + vsubps {rn-sae}, %zmm5, %zmm7, %zmm4 + vaddps {rn-sae}, %zmm2, %zmm7, %zmm1 + vxorps %zmm0, %zmm7, %zmm0 + vfmadd231ps {rn-sae}, %zmm7, %zmm4, %zmm8 + vmovups 896+__svml_satan_data_internal_avx512(%rip), %zmm4 + +/* if|X|>=MaxThreshold, set DiffX=-1 */ + vblendmps 192+__svml_satan_data_internal_avx512(%rip), %zmm5, %zmm9{%k1} + vmovups 960+__svml_satan_data_internal_avx512(%rip), %zmm5 + +/* if|X|>=MaxThreshold, set Y=X */ + vminps {sae}, %zmm7, %zmm6, %zmm8{%k1} + +/* R+Rl = DiffX/Y */ + vgetmantps $0, {sae}, %zmm9, %zmm12 + vgetexpps {sae}, %zmm9, %zmm10 + vpermt2ps 512+__svml_satan_data_internal_avx512(%rip), %zmm1, %zmm3 + vgetmantps $0, {sae}, %zmm8, %zmm15 + vgetexpps {sae}, %zmm8, %zmm11 + vmovups 832+__svml_satan_data_internal_avx512(%rip), %zmm1 + +/* set table value to Pi/2 for large X */ + vblendmps 704+__svml_satan_data_internal_avx512(%rip), %zmm3, %zmm9{%k1} + vrcp14ps %zmm15, %zmm13 + vsubps {rn-sae}, %zmm11, %zmm10, %zmm2 + vmulps {rn-sae}, %zmm13, %zmm12, %zmm14 + vfnmadd213ps {rn-sae}, %zmm12, %zmm14, %zmm15 + vfmadd213ps {rn-sae}, %zmm14, %zmm13, %zmm15 + vscalefps {rn-sae}, %zmm2, %zmm15, %zmm7 + +/* polynomial evaluation */ + vmulps {rn-sae}, %zmm7, %zmm7, %zmm8 + vmulps {rn-sae}, %zmm7, %zmm8, %zmm6 + vfmadd231ps {rn-sae}, %zmm8, %zmm1, %zmm4 + vfmadd213ps {rn-sae}, %zmm5, %zmm4, %zmm8 + vfmadd213ps {rn-sae}, %zmm7, %zmm6, %zmm8 + vaddps {rn-sae}, %zmm9, %zmm8, %zmm10 + vxorps %zmm0, %zmm10, %zmm0 + +/* no invcbrt in libm, so taking it out here */ + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_atanf16,@function + .size __svml_atanf16,.-__svml_atanf16 +..LN__svml_atanf16.0: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_satan_data_internal_avx512: + .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 1241513984 + .long 1241513984 + .long 1241513984 + .long 1241513984 + .long 1241513984 + .long 1241513984 + .long 1241513984 + .long 1241513984 + .long 1241513984 + .long 1241513984 + .long 1241513984 + .long 1241513984 + .long 1241513984 + .long 1241513984 + .long 1241513984 + .long 1241513984 + .long 1089994752 + .long 1089994752 + .long 1089994752 + .long 1089994752 + .long 1089994752 + .long 1089994752 + .long 1089994752 + .long 1089994752 + .long 1089994752 + .long 1089994752 + .long 1089994752 + .long 1089994752 + .long 1089994752 + .long 1089994752 + .long 1089994752 + .long 1089994752 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .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 1333788672 + .long 1333788672 + .long 1333788672 + .long 1333788672 + .long 1333788672 + .long 1333788672 + .long 1333788672 + .long 1333788672 + .long 1333788672 + .long 1333788672 + .long 1333788672 + .long 1333788672 + .long 1333788672 + .long 1333788672 + .long 1333788672 + .long 1333788672 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1048239024 + .long 1055744824 + .long 1059372157 + .long 1061752795 + .long 1063609315 + .long 1065064543 + .long 1065786489 + .long 1066252045 + .long 1066633083 + .long 1066949484 + .long 1067215699 + .long 1067442363 + .long 1067637412 + .long 1067806856 + .long 1067955311 + .long 1068086373 + .long 1068202874 + .long 1068307075 + .long 1068400798 + .long 1068485529 + .long 1068562486 + .long 1068632682 + .long 1068696961 + .long 1068756035 + .long 1068810506 + .long 1068860887 + .long 1068907620 + .long 1068951084 + .long 1068991608 + .long 1069029480 + .long 1069064949 + .long 0 + .long 2975494116 + .long 833369962 + .long 835299256 + .long 2998648110 + .long 2995239174 + .long 3000492182 + .long 860207626 + .long 3008447516 + .long 3005590622 + .long 3000153675 + .long 860754741 + .long 859285590 + .long 844944488 + .long 2993069463 + .long 858157665 + .long 3006142000 + .long 3007693206 + .long 3009342234 + .long 847469400 + .long 3006114683 + .long 852829553 + .long 847325583 + .long 860305056 + .long 846145135 + .long 2997638646 + .long 855837703 + .long 2979047222 + .long 2995344192 + .long 854092798 + .long 3000498637 + .long 859965578 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3188697310 + .long 3188697310 + .long 3188697310 + .long 3188697310 + .long 3188697310 + .long 3188697310 + .long 3188697310 + .long 3188697310 + .long 3188697310 + .long 3188697310 + .long 3188697310 + .long 3188697310 + .long 3188697310 + .long 3188697310 + .long 3188697310 + .long 3188697310 + .long 1045219554 + .long 1045219554 + .long 1045219554 + .long 1045219554 + .long 1045219554 + .long 1045219554 + .long 1045219554 + .long 1045219554 + .long 1045219554 + .long 1045219554 + .long 1045219554 + .long 1045219554 + .long 1045219554 + .long 1045219554 + .long 1045219554 + .long 1045219554 + .long 3198855850 + .long 3198855850 + .long 3198855850 + .long 3198855850 + .long 3198855850 + .long 3198855850 + .long 3198855850 + .long 3198855850 + .long 3198855850 + .long 3198855850 + .long 3198855850 + .long 3198855850 + .long 3198855850 + .long 3198855850 + .long 3198855850 + .long 3198855850 + .type __svml_satan_data_internal_avx512,@object + .size __svml_satan_data_internal_avx512,1024 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_atanh_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_atanh_d_la.s new file mode 100644 index 00000000..fbcd1501 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_atanh_d_la.s @@ -0,0 +1,656 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * * + * * Compute 0.5*[log(1+x)-log(1-x)], using small table + * * lookups that map to AVX3 permute instructions + * * + * + */ + + + .text +.L_2__routine_start___svml_atanh8_z0_0: + + .align 16,0x90 + .globl __svml_atanh8 + +__svml_atanh8: + + + .cfi_startproc +..L2: + + 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_datanh_data_internal_avx512(%rip), %zmm15 + +/* round reciprocals to 1+4b mantissas */ + vmovups 384+__svml_datanh_data_internal_avx512(%rip), %zmm6 + vmovups 448+__svml_datanh_data_internal_avx512(%rip), %zmm9 + vmovaps %zmm0, %zmm2 + vandpd 320+__svml_datanh_data_internal_avx512(%rip), %zmm2, %zmm13 + +/* 1+y */ + vaddpd {rn-sae}, %zmm15, %zmm13, %zmm0 + +/* 1-y */ + vsubpd {rn-sae}, %zmm13, %zmm15, %zmm4 + vxorpd %zmm13, %zmm2, %zmm1 + +/* Yp_high */ + vsubpd {rn-sae}, %zmm15, %zmm0, %zmm7 + +/* -Ym_high */ + vsubpd {rn-sae}, %zmm15, %zmm4, %zmm12 + +/* RcpP ~ 1/Yp */ + vrcp14pd %zmm0, %zmm3 + +/* RcpM ~ 1/Ym */ + vrcp14pd %zmm4, %zmm5 + +/* input outside (-1, 1) ? */ + vcmppd $21, {sae}, %zmm15, %zmm13, %k0 + vpaddq %zmm6, %zmm3, %zmm11 + vpaddq %zmm6, %zmm5, %zmm10 + +/* Yp_low */ + vsubpd {rn-sae}, %zmm7, %zmm13, %zmm8 + vandpd %zmm9, %zmm11, %zmm14 + vandpd %zmm9, %zmm10, %zmm3 + +/* Ym_low */ + vaddpd {rn-sae}, %zmm12, %zmm13, %zmm12 + +/* Reduced argument: Rp = (RcpP*Yp - 1)+RcpP*Yp_low */ + vfmsub213pd {rn-sae}, %zmm15, %zmm14, %zmm0 + +/* Reduced argument: Rm = (RcpM*Ym - 1)+RcpM*Ym_low */ + vfmsub231pd {rn-sae}, %zmm3, %zmm4, %zmm15 + +/* exponents */ + vgetexppd {sae}, %zmm14, %zmm5 + vgetexppd {sae}, %zmm3, %zmm4 + +/* Table lookups */ + vmovups __svml_datanh_data_internal_avx512(%rip), %zmm9 + vmovups 64+__svml_datanh_data_internal_avx512(%rip), %zmm13 + vmovups 128+__svml_datanh_data_internal_avx512(%rip), %zmm7 + vfmadd231pd {rn-sae}, %zmm14, %zmm8, %zmm0 + vfnmadd231pd {rn-sae}, %zmm3, %zmm12, %zmm15 + +/* Prepare table index */ + vpsrlq $48, %zmm14, %zmm11 + vpsrlq $48, %zmm3, %zmm8 + vmovups 192+__svml_datanh_data_internal_avx512(%rip), %zmm14 + +/* polynomials */ + vmovups 512+__svml_datanh_data_internal_avx512(%rip), %zmm3 + +/* Km-Kp */ + vsubpd {rn-sae}, %zmm5, %zmm4, %zmm5 + vmovups 576+__svml_datanh_data_internal_avx512(%rip), %zmm4 + kmovw %k0, %edx + vmovaps %zmm11, %zmm10 + vmovaps %zmm4, %zmm6 + vpermi2pd %zmm13, %zmm9, %zmm10 + vpermi2pd %zmm14, %zmm7, %zmm11 + vpermt2pd %zmm13, %zmm8, %zmm9 + vpermt2pd %zmm14, %zmm8, %zmm7 + vmovups 640+__svml_datanh_data_internal_avx512(%rip), %zmm8 + vfmadd231pd {rn-sae}, %zmm0, %zmm3, %zmm6 + vfmadd231pd {rn-sae}, %zmm15, %zmm3, %zmm4 + vmovups 832+__svml_datanh_data_internal_avx512(%rip), %zmm13 + vmovups 896+__svml_datanh_data_internal_avx512(%rip), %zmm14 + vfmadd213pd {rn-sae}, %zmm8, %zmm0, %zmm6 + vfmadd213pd {rn-sae}, %zmm8, %zmm15, %zmm4 + vmovups 1024+__svml_datanh_data_internal_avx512(%rip), %zmm8 + vsubpd {rn-sae}, %zmm11, %zmm7, %zmm12 + +/* table values */ + vsubpd {rn-sae}, %zmm10, %zmm9, %zmm3 + vmovups 704+__svml_datanh_data_internal_avx512(%rip), %zmm7 + vmovups 768+__svml_datanh_data_internal_avx512(%rip), %zmm9 + +/* K*L2H + Th */ + vmovups 1152+__svml_datanh_data_internal_avx512(%rip), %zmm10 + +/* K*L2L + Tl */ + vmovups 1216+__svml_datanh_data_internal_avx512(%rip), %zmm11 + vfmadd213pd {rn-sae}, %zmm7, %zmm0, %zmm6 + vfmadd213pd {rn-sae}, %zmm7, %zmm15, %zmm4 + vmovups 960+__svml_datanh_data_internal_avx512(%rip), %zmm7 + vfmadd231pd {rn-sae}, %zmm5, %zmm10, %zmm3 + vfmadd213pd {rn-sae}, %zmm12, %zmm11, %zmm5 + vfmadd213pd {rn-sae}, %zmm9, %zmm0, %zmm6 + vfmadd213pd {rn-sae}, %zmm9, %zmm15, %zmm4 + vfmadd213pd {rn-sae}, %zmm13, %zmm0, %zmm6 + vfmadd213pd {rn-sae}, %zmm13, %zmm15, %zmm4 + vfmadd213pd {rn-sae}, %zmm14, %zmm0, %zmm6 + vfmadd213pd {rn-sae}, %zmm14, %zmm15, %zmm4 + vfmadd213pd {rn-sae}, %zmm7, %zmm0, %zmm6 + vfmadd213pd {rn-sae}, %zmm7, %zmm15, %zmm4 + vfmadd213pd {rn-sae}, %zmm8, %zmm0, %zmm6 + vfmadd213pd {rn-sae}, %zmm8, %zmm15, %zmm4 + +/* (K*L2L + Tl) + Rp*PolyP */ + vfmadd213pd {rn-sae}, %zmm5, %zmm0, %zmm6 + vorpd 1088+__svml_datanh_data_internal_avx512(%rip), %zmm1, %zmm0 + +/* (K*L2L + Tl) + Rp*PolyP -Rm*PolyM */ + vfnmadd213pd {rn-sae}, %zmm6, %zmm15, %zmm4 + vaddpd {rn-sae}, %zmm4, %zmm3, %zmm1 + vmulpd {rn-sae}, %zmm0, %zmm1, %zmm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + 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 %zmm2, 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_datanh_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_atanh8,@function + .size __svml_atanh8,.-__svml_atanh8 +..LN__svml_atanh8.0: + +.L_2__routine_start___svml_datanh_cout_rare_internal_1: + + .align 16,0x90 + +__svml_datanh_cout_rare_internal: + + + .cfi_startproc +..L53: + + movzwl 6(%rdi), %eax + andl $32752, %eax + movsd (%rdi), %xmm0 + movb 7(%rdi), %dl + andb $127, %dl + movsd %xmm0, -8(%rsp) + cmpl $32752, %eax + je .LBL_2_6 + +.LBL_2_2: + + cmpl $0, -8(%rsp) + jne .LBL_2_5 + + + movb %dl, -1(%rsp) + cmpl $1072693248, -4(%rsp) + jne .LBL_2_5 + + + divsd 8+__datanh_la_CoutTab(%rip), %xmm0 + movsd %xmm0, (%rsi) + movl $2, %eax + ret + +.LBL_2_5: + + movsd 8+__datanh_la_CoutTab(%rip), %xmm0 + movl $1, %eax + mulsd 16+__datanh_la_CoutTab(%rip), %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_6: + + testl $1048575, 4(%rdi) + jne .LBL_2_8 + + + cmpl $0, (%rdi) + je .LBL_2_2 + +.LBL_2_8: + + mulsd %xmm0, %xmm0 + xorl %eax, %eax + movsd %xmm0, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_datanh_cout_rare_internal,@function + .size __svml_datanh_cout_rare_internal,.-__svml_datanh_cout_rare_internal +..LN__svml_datanh_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_datanh_data_internal_avx512: + .long 0 + .long 0 + .long 3222274048 + .long 1068436016 + .long 1848246272 + .long 1069426439 + .long 1890058240 + .long 1069940528 + .long 3348824064 + .long 1070370807 + .long 2880143360 + .long 1070688092 + .long 3256647680 + .long 1070883211 + .long 4139515904 + .long 1071069655 + .long 3971973120 + .long 1071248163 + .long 3348791296 + .long 1071419383 + .long 1605304320 + .long 1071583887 + .long 3827646464 + .long 1071693426 + .long 1584414720 + .long 1071769695 + .long 860815360 + .long 1071843287 + .long 3896934400 + .long 1071914383 + .long 643547136 + .long 1071983149 + .long 0 + .long 0 + .long 399283991 + .long 1030105702 + .long 1028718588 + .long 1030642877 + .long 3808918910 + .long 3177909005 + .long 4136237123 + .long 3177805716 + .long 3462654649 + .long 1029900033 + .long 2051171366 + .long 3177225921 + .long 2396640771 + .long 3177708721 + .long 3062724207 + .long 1029196786 + .long 634920691 + .long 1029317036 + .long 1913570380 + .long 1027322573 + .long 1734886604 + .long 3177545033 + .long 2335489660 + .long 1025116093 + .long 3046154741 + .long 1029750303 + .long 914782743 + .long 3176833847 + .long 3743595607 + .long 1028041657 + .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 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 1087603010 + .long 1069318621 + .long 1087603010 + .long 1069318621 + .long 1087603010 + .long 1069318621 + .long 1087603010 + .long 1069318621 + .long 1087603010 + .long 1069318621 + .long 1087603010 + .long 1069318621 + .long 1087603010 + .long 1069318621 + .long 1087603010 + .long 1069318621 + .long 3090058096 + .long 3217033020 + .long 3090058096 + .long 3217033020 + .long 3090058096 + .long 3217033020 + .long 3090058096 + .long 3217033020 + .long 3090058096 + .long 3217033020 + .long 3090058096 + .long 3217033020 + .long 3090058096 + .long 3217033020 + .long 3090058096 + .long 3217033020 + .long 2566904552 + .long 1069697314 + .long 2566904552 + .long 1069697314 + .long 2566904552 + .long 1069697314 + .long 2566904552 + .long 1069697314 + .long 2566904552 + .long 1069697314 + .long 2566904552 + .long 1069697314 + .long 2566904552 + .long 1069697314 + .long 2566904552 + .long 1069697314 + .long 4168213957 + .long 3217380691 + .long 4168213957 + .long 3217380691 + .long 4168213957 + .long 3217380691 + .long 4168213957 + .long 3217380691 + .long 4168213957 + .long 3217380691 + .long 4168213957 + .long 3217380691 + .long 4168213957 + .long 3217380691 + .long 4168213957 + .long 3217380691 + .long 2580363594 + .long 1070176665 + .long 2580363594 + .long 1070176665 + .long 2580363594 + .long 1070176665 + .long 2580363594 + .long 1070176665 + .long 2580363594 + .long 1070176665 + .long 2580363594 + .long 1070176665 + .long 2580363594 + .long 1070176665 + .long 2580363594 + .long 1070176665 + .long 797185 + .long 3218079744 + .long 797185 + .long 3218079744 + .long 797185 + .long 3218079744 + .long 797185 + .long 3218079744 + .long 797185 + .long 3218079744 + .long 797185 + .long 3218079744 + .long 797185 + .long 3218079744 + .long 797185 + .long 3218079744 + .long 1431655522 + .long 1070945621 + .long 1431655522 + .long 1070945621 + .long 1431655522 + .long 1070945621 + .long 1431655522 + .long 1070945621 + .long 1431655522 + .long 1070945621 + .long 1431655522 + .long 1070945621 + .long 1431655522 + .long 1070945621 + .long 1431655522 + .long 1070945621 + .long 4294967237 + .long 3219128319 + .long 4294967237 + .long 3219128319 + .long 4294967237 + .long 3219128319 + .long 4294967237 + .long 3219128319 + .long 4294967237 + .long 3219128319 + .long 4294967237 + .long 3219128319 + .long 4294967237 + .long 3219128319 + .long 4294967237 + .long 3219128319 + .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 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 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_datanh_data_internal_avx512,@object + .size __svml_datanh_data_internal_avx512,1280 + .align 8 +__datanh_la_CoutTab: + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 2146435072 + .long 0 + .long 4293918720 + .type __datanh_la_CoutTab,@object + .size __datanh_la_CoutTab,32 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_atanh_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_atanh_s_la.s new file mode 100644 index 00000000..9177c0d9 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_atanh_s_la.s @@ -0,0 +1,558 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * * + * * Compute 0.5*[log(1+x)-log(1-x)], using small table + * * lookups that map to AVX3 permute instructions + * * + * + */ + + + .text +.L_2__routine_start___svml_atanhf16_z0_0: + + .align 16,0x90 + .globl __svml_atanhf16 + +__svml_atanhf16: + + + .cfi_startproc +..L2: + + 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_satanh_data_internal_avx512(%rip), %zmm4 + +/* round reciprocals to 1+5b mantissas */ + vmovups 384+__svml_satanh_data_internal_avx512(%rip), %zmm14 + vmovups 448+__svml_satanh_data_internal_avx512(%rip), %zmm1 + vmovaps %zmm0, %zmm11 + vandps 320+__svml_satanh_data_internal_avx512(%rip), %zmm11, %zmm6 + +/* 1+y */ + vaddps {rn-sae}, %zmm4, %zmm6, %zmm9 + +/* 1-y */ + vsubps {rn-sae}, %zmm6, %zmm4, %zmm8 + vxorps %zmm6, %zmm11, %zmm10 + +/* Yp_high */ + vsubps {rn-sae}, %zmm4, %zmm9, %zmm2 + +/* -Ym_high */ + vsubps {rn-sae}, %zmm4, %zmm8, %zmm5 + +/* RcpP ~ 1/Yp */ + vrcp14ps %zmm9, %zmm12 + +/* RcpM ~ 1/Ym */ + vrcp14ps %zmm8, %zmm13 + +/* input outside (-1, 1) ? */ + vcmpps $21, {sae}, %zmm4, %zmm6, %k0 + vpaddd %zmm14, %zmm12, %zmm15 + vpaddd %zmm14, %zmm13, %zmm0 + +/* Yp_low */ + vsubps {rn-sae}, %zmm2, %zmm6, %zmm3 + vandps %zmm1, %zmm15, %zmm7 + vandps %zmm1, %zmm0, %zmm12 + +/* Ym_low */ + vaddps {rn-sae}, %zmm5, %zmm6, %zmm5 + +/* Reduced argument: Rp = (RcpP*Yp - 1)+RcpP*Yp_low */ + vfmsub213ps {rn-sae}, %zmm4, %zmm7, %zmm9 + +/* Reduced argument: Rm = (RcpM*Ym - 1)+RcpM*Ym_low */ + vfmsub231ps {rn-sae}, %zmm12, %zmm8, %zmm4 + vmovups 128+__svml_satanh_data_internal_avx512(%rip), %zmm8 + vmovups 192+__svml_satanh_data_internal_avx512(%rip), %zmm13 + +/* exponents */ + vgetexpps {sae}, %zmm7, %zmm15 + vfmadd231ps {rn-sae}, %zmm7, %zmm3, %zmm9 + +/* Table lookups */ + vmovups __svml_satanh_data_internal_avx512(%rip), %zmm6 + vgetexpps {sae}, %zmm12, %zmm14 + vfnmadd231ps {rn-sae}, %zmm12, %zmm5, %zmm4 + +/* Prepare table index */ + vpsrld $18, %zmm7, %zmm3 + vpsrld $18, %zmm12, %zmm2 + vmovups 64+__svml_satanh_data_internal_avx512(%rip), %zmm7 + vmovups 640+__svml_satanh_data_internal_avx512(%rip), %zmm12 + +/* Km-Kp */ + vsubps {rn-sae}, %zmm15, %zmm14, %zmm1 + kmovw %k0, %edx + vmovaps %zmm3, %zmm0 + vpermi2ps %zmm13, %zmm8, %zmm3 + vpermt2ps %zmm13, %zmm2, %zmm8 + vpermi2ps %zmm7, %zmm6, %zmm0 + vpermt2ps %zmm7, %zmm2, %zmm6 + vsubps {rn-sae}, %zmm3, %zmm8, %zmm5 + +/* K*L2H + Th */ + vmovups 832+__svml_satanh_data_internal_avx512(%rip), %zmm2 + +/* K*L2L + Tl */ + vmovups 896+__svml_satanh_data_internal_avx512(%rip), %zmm3 + +/* polynomials */ + vmovups 512+__svml_satanh_data_internal_avx512(%rip), %zmm7 + vmovups 704+__svml_satanh_data_internal_avx512(%rip), %zmm13 + +/* table values */ + vsubps {rn-sae}, %zmm0, %zmm6, %zmm0 + vfmadd231ps {rn-sae}, %zmm1, %zmm2, %zmm0 + vfmadd213ps {rn-sae}, %zmm5, %zmm3, %zmm1 + vmovups 576+__svml_satanh_data_internal_avx512(%rip), %zmm3 + vmovaps %zmm3, %zmm2 + vfmadd231ps {rn-sae}, %zmm9, %zmm7, %zmm2 + vfmadd231ps {rn-sae}, %zmm4, %zmm7, %zmm3 + vfmadd213ps {rn-sae}, %zmm12, %zmm9, %zmm2 + vfmadd213ps {rn-sae}, %zmm12, %zmm4, %zmm3 + vfmadd213ps {rn-sae}, %zmm13, %zmm9, %zmm2 + vfmadd213ps {rn-sae}, %zmm13, %zmm4, %zmm3 + +/* (K*L2L + Tl) + Rp*PolyP */ + vfmadd213ps {rn-sae}, %zmm1, %zmm9, %zmm2 + vorps 768+__svml_satanh_data_internal_avx512(%rip), %zmm10, %zmm9 + +/* (K*L2L + Tl) + Rp*PolyP -Rm*PolyM */ + vfnmadd213ps {rn-sae}, %zmm2, %zmm4, %zmm3 + vaddps {rn-sae}, %zmm3, %zmm0, %zmm4 + vmulps {rn-sae}, %zmm9, %zmm4, %zmm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + 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 %zmm11, 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_satanh_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_atanhf16,@function + .size __svml_atanhf16,.-__svml_atanhf16 +..LN__svml_atanhf16.0: + +.L_2__routine_start___svml_satanh_cout_rare_internal_1: + + .align 16,0x90 + +__svml_satanh_cout_rare_internal: + + + .cfi_startproc +..L53: + + movzwl 2(%rdi), %edx + movss (%rdi), %xmm1 + andl $32640, %edx + movb 3(%rdi), %al + andb $127, %al + movss %xmm1, -8(%rsp) + movb %al, -5(%rsp) + cmpl $32640, %edx + je .LBL_2_6 + + + cmpl $1065353216, -8(%rsp) + jne .LBL_2_4 + + + divss 4+__satanh_la__imlsAtanhTab(%rip), %xmm1 + movss %xmm1, (%rsi) + movl $2, %eax + ret + +.LBL_2_4: + + movss 8+__satanh_la__imlsAtanhTab(%rip), %xmm0 + movl $1, %eax + mulss 4+__satanh_la__imlsAtanhTab(%rip), %xmm0 + movss %xmm0, (%rsi) + + + ret + +.LBL_2_6: + + cmpl $2139095040, -8(%rsp) + jne .LBL_2_8 + + + movss 4+__satanh_la__imlsAtanhTab(%rip), %xmm0 + movl $1, %eax + mulss %xmm0, %xmm1 + movss %xmm1, (%rsi) + ret + +.LBL_2_8: + + mulss (%rdi), %xmm1 + xorl %eax, %eax + movss %xmm1, (%rsi) + + + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_satanh_cout_rare_internal,@function + .size __svml_satanh_cout_rare_internal,.-__svml_satanh_cout_rare_internal +..LN__svml_satanh_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_satanh_data_internal_avx512: + .long 0 + .long 1023148032 + .long 1031274496 + .long 1035436032 + .long 1039204352 + .long 1041547264 + .long 1043333120 + .long 1045069824 + .long 1046773760 + .long 1048428544 + .long 1049313280 + .long 1050099712 + .long 1050869760 + .long 1051623424 + .long 1052360704 + .long 1053089792 + .long 1053794304 + .long 1054482432 + .long 1055162368 + .long 1055825920 + .long 1056481280 + .long 1057042432 + .long 1057353728 + .long 1057660928 + .long 1057964032 + .long 1058263040 + .long 1058553856 + .long 1058840576 + .long 1059123200 + .long 1059397632 + .long 1059672064 + .long 1059942400 + .long 0 + .long 925287326 + .long 950209537 + .long 928156389 + .long 954265029 + .long 3098231288 + .long 3083833176 + .long 949397309 + .long 3045295702 + .long 940324527 + .long 3089323092 + .long 945994465 + .long 952492302 + .long 954130348 + .long 954989406 + .long 3102096543 + .long 3093041984 + .long 947354573 + .long 3053684310 + .long 936642948 + .long 3099086888 + .long 3098368602 + .long 946194506 + .long 952357621 + .long 943635681 + .long 3097619830 + .long 3080925892 + .long 3078186319 + .long 3093311347 + .long 955801008 + .long 934582639 + .long 3099571146 + .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 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 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 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 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 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_satanh_data_internal_avx512,@object + .size __svml_satanh_data_internal_avx512,960 + .align 4 +__satanh_la__imlsAtanhTab: + .long 1065353216 + .long 0 + .long 2139095040 + .type __satanh_la__imlsAtanhTab,@object + .size __satanh_la__imlsAtanhTab,12 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_cbrt_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_cbrt_d_la.s new file mode 100644 index 00000000..e9aa2559 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_cbrt_d_la.s @@ -0,0 +1,911 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * + * x=2^{3*k+j} * 1.b1 b2 ... b5 b6 ... b52 + * Let r=(x*2^{-3k-j} - 1.b1 b2 ... b5 1)* rcp[b1 b2 ..b5], + * where rcp[b1 b2 .. b5]=1/(1.b1 b2 b3 b4 b5 1) in double precision + * cbrt(2^j * 1. b1 b2 .. b5 1) is approximated as T[j][b1..b5]+D[j][b1..b5] + * (T stores the high 53 bits, D stores the low order bits) + * Result=2^k*T+(2^k*T*r)*P+2^k*D + * where P=p1+p2*r+..+p8*r^7 + * + */ + + + .text +.L_2__routine_start___svml_cbrt8_z0_0: + + .align 16,0x90 + .globl __svml_cbrt8 + +__svml_cbrt8: + + + .cfi_startproc +..L2: + + vgetmantpd $0, {sae}, %zmm0, %zmm14 + +/* GetExp(x) */ + vgetexppd {sae}, %zmm0, %zmm7 + vmovups 384+__svml_dcbrt_data_internal_avx512(%rip), %zmm8 + +/* exponent/3 */ + vmovups 512+__svml_dcbrt_data_internal_avx512(%rip), %zmm9 + vmovups 576+__svml_dcbrt_data_internal_avx512(%rip), %zmm10 + +/* Reduced argument: R = DblRcp*Mantissa - 1 */ + vmovups 704+__svml_dcbrt_data_internal_avx512(%rip), %zmm2 + +/* exponent%3 (to be used as index) */ + vmovups 640+__svml_dcbrt_data_internal_avx512(%rip), %zmm11 + +/* DblRcp ~ 1/Mantissa */ + vrcp14pd %zmm14, %zmm13 + vaddpd {rn-sae}, %zmm8, %zmm7, %zmm12 + vandpd 448+__svml_dcbrt_data_internal_avx512(%rip), %zmm0, %zmm6 + +/* round DblRcp to 3 fractional bits (RN mode, no Precision exception) */ + vrndscalepd $72, {sae}, %zmm13, %zmm15 + vfmsub231pd {rn-sae}, %zmm12, %zmm9, %zmm10 + +/* polynomial */ + vmovups 768+__svml_dcbrt_data_internal_avx512(%rip), %zmm0 + vmovups 896+__svml_dcbrt_data_internal_avx512(%rip), %zmm7 + vmovups 960+__svml_dcbrt_data_internal_avx512(%rip), %zmm9 + vfmsub231pd {rn-sae}, %zmm15, %zmm14, %zmm2 + vrndscalepd $9, {sae}, %zmm10, %zmm5 + +/* Table lookup */ + vmovups 128+__svml_dcbrt_data_internal_avx512(%rip), %zmm10 + vmovups 1024+__svml_dcbrt_data_internal_avx512(%rip), %zmm8 + vmovups 1216+__svml_dcbrt_data_internal_avx512(%rip), %zmm13 + vfmadd231pd {rn-sae}, %zmm2, %zmm7, %zmm9 + vfnmadd231pd {rn-sae}, %zmm5, %zmm11, %zmm12 + vmovups 1088+__svml_dcbrt_data_internal_avx512(%rip), %zmm11 + vmovups 1344+__svml_dcbrt_data_internal_avx512(%rip), %zmm14 + +/* Prepare table index */ + vpsrlq $49, %zmm15, %zmm1 + +/* Table lookup: 2^(exponent%3) */ + vpermpd __svml_dcbrt_data_internal_avx512(%rip), %zmm12, %zmm4 + vpermpd 64+__svml_dcbrt_data_internal_avx512(%rip), %zmm12, %zmm3 + vpermt2pd 192+__svml_dcbrt_data_internal_avx512(%rip), %zmm1, %zmm10 + vmovups 832+__svml_dcbrt_data_internal_avx512(%rip), %zmm1 + vfmadd231pd {rn-sae}, %zmm2, %zmm8, %zmm11 + vmovups 1280+__svml_dcbrt_data_internal_avx512(%rip), %zmm12 + vscalefpd {rn-sae}, %zmm5, %zmm10, %zmm15 + vfmadd231pd {rn-sae}, %zmm2, %zmm0, %zmm1 + vmovups 1152+__svml_dcbrt_data_internal_avx512(%rip), %zmm5 + vfmadd231pd {rn-sae}, %zmm2, %zmm12, %zmm14 + vmulpd {rn-sae}, %zmm2, %zmm2, %zmm0 + vfmadd231pd {rn-sae}, %zmm2, %zmm5, %zmm13 + +/* Sh*R */ + vmulpd {rn-sae}, %zmm2, %zmm4, %zmm2 + vfmadd213pd {rn-sae}, %zmm9, %zmm0, %zmm1 + vfmadd213pd {rn-sae}, %zmm11, %zmm0, %zmm1 + vfmadd213pd {rn-sae}, %zmm13, %zmm0, %zmm1 + vfmadd213pd {rn-sae}, %zmm14, %zmm0, %zmm1 + +/* Sl + (Sh*R)*Poly */ + vfmadd213pd {rn-sae}, %zmm3, %zmm1, %zmm2 + +/* + * branch-free + * scaled_Th*(Sh+Sl+Sh*R*Poly) + */ + vaddpd {rn-sae}, %zmm4, %zmm2, %zmm3 + vmulpd {rn-sae}, %zmm15, %zmm3, %zmm4 + vorpd %zmm6, %zmm4, %zmm0 + +/* no invcbrt in libm, so taking it out here */ + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_cbrt8,@function + .size __svml_cbrt8,.-__svml_cbrt8 +..LN__svml_cbrt8.0: + +.L_2__routine_start___svml_dcbrt_cout_rare_internal_1: + + .align 16,0x90 + +__svml_dcbrt_cout_rare_internal: + + + .cfi_startproc +..L5: + + movq %rsi, %r8 + movzwl 6(%rdi), %r9d + andl $32752, %r9d + shrl $4, %r9d + movb 7(%rdi), %sil + movsd (%rdi), %xmm1 + cmpl $2047, %r9d + je .LBL_2_9 + + + ucomisd 432+__dcbrt_la__vmldCbrtTab(%rip), %xmm1 + jp .LBL_2_3 + je .LBL_2_8 + +.LBL_2_3: + + movb %sil, %al + lea 440+__dcbrt_la__vmldCbrtTab(%rip), %rdx + andb $-128, %al + andb $127, %sil + shrb $7, %al + xorl %edi, %edi + movsd %xmm1, -56(%rsp) + movzbl %al, %ecx + movb %sil, -49(%rsp) + movsd (%rdx,%rcx,8), %xmm5 + testl %r9d, %r9d + jne .LBL_2_5 + + + movsd -56(%rsp), %xmm0 + movl $100, %edi + mulsd 360+__dcbrt_la__vmldCbrtTab(%rip), %xmm0 + movsd %xmm0, -56(%rsp) + jmp .LBL_2_6 + +.LBL_2_5: + + movsd -56(%rsp), %xmm0 + +.LBL_2_6: + + movzwl -50(%rsp), %esi + movl $1431655766, %eax + andl $32752, %esi + lea __dcbrt_la__vmldCbrtTab(%rip), %r11 + shrl $4, %esi + movsd %xmm0, -40(%rsp) + movsd 368+__dcbrt_la__vmldCbrtTab(%rip), %xmm14 + imull %esi + movl $1431655766, %eax + lea (%rdx,%rdx,2), %ecx + negl %ecx + addl %esi, %ecx + subl %ecx, %esi + addl %ecx, %ecx + addl $-1023, %esi + imull %esi + sarl $31, %esi + subl %esi, %edx + addl $1023, %edx + subl %edi, %edx + movzwl -34(%rsp), %edi + andl $2047, %edx + andl $-32753, %edi + addl $16368, %edi + movw %di, -34(%rsp) + movsd -40(%rsp), %xmm11 + movaps %xmm11, %xmm6 + mulsd 376+__dcbrt_la__vmldCbrtTab(%rip), %xmm6 + movsd %xmm6, -32(%rsp) + movsd -32(%rsp), %xmm7 + movl -36(%rsp), %r10d + andl $1048575, %r10d + subsd -40(%rsp), %xmm7 + movsd %xmm7, -24(%rsp) + movsd -32(%rsp), %xmm9 + movsd -24(%rsp), %xmm8 + shrl $15, %r10d + subsd %xmm8, %xmm9 + movsd %xmm9, -32(%rsp) + movsd -32(%rsp), %xmm10 + movsd (%r11,%r10,8), %xmm4 + subsd %xmm10, %xmm11 + movaps %xmm4, %xmm12 + movaps %xmm4, %xmm13 + mulsd %xmm4, %xmm12 + movsd %xmm11, -24(%rsp) + movsd -32(%rsp), %xmm2 + mulsd %xmm12, %xmm2 + mulsd %xmm2, %xmm13 + movsd 440+__dcbrt_la__vmldCbrtTab(%rip), %xmm6 + movsd -24(%rsp), %xmm3 + subsd %xmm13, %xmm6 + mulsd %xmm12, %xmm3 + mulsd %xmm6, %xmm14 + mulsd %xmm3, %xmm4 + movsd %xmm14, -32(%rsp) + movsd -32(%rsp), %xmm15 + xorps .L_2il0floatpacket.81(%rip), %xmm4 + subsd %xmm6, %xmm15 + movsd %xmm15, -24(%rsp) + movsd -32(%rsp), %xmm1 + movsd -24(%rsp), %xmm0 + movsd 256+__dcbrt_la__vmldCbrtTab(%rip), %xmm9 + subsd %xmm0, %xmm1 + movsd %xmm1, -32(%rsp) + movsd -32(%rsp), %xmm13 + movsd 352+__dcbrt_la__vmldCbrtTab(%rip), %xmm0 + subsd %xmm13, %xmm6 + movsd %xmm6, -24(%rsp) + movsd -32(%rsp), %xmm1 + movsd -24(%rsp), %xmm7 + movaps %xmm1, %xmm8 + movsd 256+__dcbrt_la__vmldCbrtTab(%rip), %xmm11 + addsd %xmm7, %xmm4 + movsd 256+__dcbrt_la__vmldCbrtTab(%rip), %xmm7 + addsd %xmm4, %xmm8 + mulsd %xmm8, %xmm0 + movslq %ecx, %rcx + addsd 344+__dcbrt_la__vmldCbrtTab(%rip), %xmm0 + mulsd %xmm8, %xmm0 + movq 440+__dcbrt_la__vmldCbrtTab(%rip), %r9 + movq %r9, -48(%rsp) + shrq $48, %r9 + addsd 336+__dcbrt_la__vmldCbrtTab(%rip), %xmm0 + mulsd %xmm8, %xmm0 + andl $-32753, %r9d + shll $4, %edx + addsd 328+__dcbrt_la__vmldCbrtTab(%rip), %xmm0 + mulsd %xmm8, %xmm0 + orl %edx, %r9d + movw %r9w, -42(%rsp) + addsd 320+__dcbrt_la__vmldCbrtTab(%rip), %xmm0 + mulsd %xmm8, %xmm0 + addsd 312+__dcbrt_la__vmldCbrtTab(%rip), %xmm0 + mulsd %xmm8, %xmm0 + addsd 304+__dcbrt_la__vmldCbrtTab(%rip), %xmm0 + mulsd %xmm8, %xmm0 + addsd 296+__dcbrt_la__vmldCbrtTab(%rip), %xmm0 + mulsd %xmm8, %xmm0 + addsd 288+__dcbrt_la__vmldCbrtTab(%rip), %xmm0 + mulsd %xmm8, %xmm0 + addsd 280+__dcbrt_la__vmldCbrtTab(%rip), %xmm0 + mulsd %xmm8, %xmm0 + addsd 272+__dcbrt_la__vmldCbrtTab(%rip), %xmm0 + mulsd %xmm8, %xmm0 + addsd %xmm0, %xmm9 + movsd %xmm9, -32(%rsp) + movsd -32(%rsp), %xmm10 + movsd 368+__dcbrt_la__vmldCbrtTab(%rip), %xmm9 + subsd %xmm10, %xmm11 + movsd %xmm11, -24(%rsp) + movsd -32(%rsp), %xmm14 + movsd -24(%rsp), %xmm12 + addsd %xmm12, %xmm14 + movsd %xmm14, -16(%rsp) + movaps %xmm2, %xmm14 + movsd -24(%rsp), %xmm6 + addsd %xmm0, %xmm6 + movsd %xmm6, -24(%rsp) + movsd -16(%rsp), %xmm15 + subsd %xmm15, %xmm7 + movsd %xmm7, -16(%rsp) + movsd -24(%rsp), %xmm8 + movsd -16(%rsp), %xmm0 + addsd %xmm0, %xmm8 + movsd %xmm8, -16(%rsp) + movaps %xmm1, %xmm8 + movsd -32(%rsp), %xmm13 + mulsd %xmm13, %xmm9 + movsd -16(%rsp), %xmm0 + movsd %xmm9, -32(%rsp) + movsd -32(%rsp), %xmm10 + subsd %xmm13, %xmm10 + addsd 264+__dcbrt_la__vmldCbrtTab(%rip), %xmm0 + movsd %xmm10, -24(%rsp) + movsd -32(%rsp), %xmm11 + movsd -24(%rsp), %xmm6 + subsd %xmm6, %xmm11 + movsd %xmm11, -32(%rsp) + movsd -32(%rsp), %xmm12 + subsd %xmm12, %xmm13 + movsd %xmm13, -24(%rsp) + movsd -32(%rsp), %xmm7 + movsd -24(%rsp), %xmm6 + mulsd %xmm7, %xmm8 + addsd %xmm0, %xmm6 + mulsd %xmm4, %xmm7 + mulsd %xmm6, %xmm4 + mulsd %xmm6, %xmm1 + addsd %xmm4, %xmm7 + movsd 368+__dcbrt_la__vmldCbrtTab(%rip), %xmm4 + addsd %xmm1, %xmm7 + mulsd %xmm8, %xmm4 + movsd %xmm7, -32(%rsp) + movsd -32(%rsp), %xmm10 + movsd %xmm4, -32(%rsp) + movsd -32(%rsp), %xmm0 + subsd %xmm8, %xmm0 + movsd %xmm0, -24(%rsp) + movsd -32(%rsp), %xmm1 + movsd -24(%rsp), %xmm4 + subsd %xmm4, %xmm1 + movsd %xmm1, -32(%rsp) + movsd -32(%rsp), %xmm6 + subsd %xmm6, %xmm8 + movsd %xmm8, -24(%rsp) + movsd -32(%rsp), %xmm9 + movsd -24(%rsp), %xmm7 + movaps %xmm9, %xmm1 + mulsd %xmm3, %xmm9 + addsd %xmm7, %xmm10 + mulsd %xmm2, %xmm1 + movaps %xmm10, %xmm11 + movaps %xmm1, %xmm12 + mulsd %xmm3, %xmm10 + addsd %xmm2, %xmm12 + mulsd %xmm2, %xmm11 + addsd %xmm9, %xmm10 + addsd %xmm10, %xmm11 + movsd %xmm11, -32(%rsp) + movsd -32(%rsp), %xmm0 + movsd %xmm12, -32(%rsp) + movsd -32(%rsp), %xmm13 + subsd %xmm13, %xmm14 + movsd %xmm14, -24(%rsp) + movsd -32(%rsp), %xmm9 + movsd -24(%rsp), %xmm15 + addsd %xmm15, %xmm9 + movsd %xmm9, -16(%rsp) + movsd -24(%rsp), %xmm10 + addsd %xmm10, %xmm1 + movsd %xmm1, -24(%rsp) + movsd -16(%rsp), %xmm4 + subsd %xmm4, %xmm2 + movsd 368+__dcbrt_la__vmldCbrtTab(%rip), %xmm4 + movsd %xmm2, -16(%rsp) + movsd -24(%rsp), %xmm1 + movsd -16(%rsp), %xmm2 + addsd %xmm2, %xmm1 + movsd %xmm1, -16(%rsp) + movsd -32(%rsp), %xmm9 + mulsd %xmm9, %xmm4 + movsd -16(%rsp), %xmm11 + movsd %xmm4, -32(%rsp) + movsd -32(%rsp), %xmm6 + subsd %xmm9, %xmm6 + movsd %xmm6, -24(%rsp) + movsd -32(%rsp), %xmm7 + movsd -24(%rsp), %xmm2 + subsd %xmm2, %xmm7 + movsd %xmm7, -32(%rsp) + movsd -32(%rsp), %xmm8 + subsd %xmm8, %xmm9 + movsd %xmm9, -24(%rsp) + movsd -32(%rsp), %xmm12 + movsd -24(%rsp), %xmm10 + addsd %xmm0, %xmm10 + addsd %xmm3, %xmm10 + movsd 392(%r11,%rcx,8), %xmm3 + movaps %xmm3, %xmm0 + addsd %xmm10, %xmm11 + mulsd %xmm12, %xmm3 + mulsd %xmm11, %xmm0 + movsd 384(%r11,%rcx,8), %xmm10 + addsd %xmm3, %xmm0 + mulsd %xmm10, %xmm11 + mulsd %xmm10, %xmm12 + addsd %xmm11, %xmm0 + movsd %xmm0, -32(%rsp) + movsd -32(%rsp), %xmm3 + addsd %xmm3, %xmm12 + mulsd -48(%rsp), %xmm12 + mulsd %xmm12, %xmm5 + movsd %xmm5, (%r8) + +.LBL_2_7: + + xorl %eax, %eax + ret + +.LBL_2_8: + + movsd 440+__dcbrt_la__vmldCbrtTab(%rip), %xmm0 + mulsd %xmm0, %xmm1 + movsd %xmm1, (%r8) + jmp .LBL_2_7 + +.LBL_2_9: + + addsd %xmm1, %xmm1 + movsd %xmm1, (%r8) + jmp .LBL_2_7 + .align 16,0x90 + + .cfi_endproc + + .type __svml_dcbrt_cout_rare_internal,@function + .size __svml_dcbrt_cout_rare_internal,.-__svml_dcbrt_cout_rare_internal +..LN__svml_dcbrt_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_dcbrt_data_internal_avx512: + .long 0 + .long 1072693248 + .long 4186796683 + .long 1072965794 + .long 2772266557 + .long 1073309182 + .long 0 + .long 0 + .long 0 + .long 3220176896 + .long 4186796683 + .long 3220449442 + .long 2772266557 + .long 3220792830 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1418634270 + .long 3162364962 + .long 2576690953 + .long 3164558313 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1418634270 + .long 1014881314 + .long 2576690953 + .long 1017074665 + .long 0 + .long 0 + .long 4186796683 + .long 1072965794 + .long 1554061055 + .long 1072914931 + .long 3992368458 + .long 1072871093 + .long 3714535808 + .long 1072832742 + .long 954824104 + .long 1072798779 + .long 3256858690 + .long 1072768393 + .long 3858344660 + .long 1072740974 + .long 1027250248 + .long 1072716050 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1418634270 + .long 3162364962 + .long 629721892 + .long 1016287007 + .long 1776620500 + .long 3163956186 + .long 648592220 + .long 1016269578 + .long 1295766103 + .long 3161896715 + .long 1348094586 + .long 3164476360 + .long 2407028709 + .long 1015925873 + .long 497428409 + .long 1014435402 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 1431655766 + .long 1070945621 + .long 1431655766 + .long 1070945621 + .long 1431655766 + .long 1070945621 + .long 1431655766 + .long 1070945621 + .long 1431655766 + .long 1070945621 + .long 1431655766 + .long 1070945621 + .long 1431655766 + .long 1070945621 + .long 1431655766 + .long 1070945621 + .long 0 + .long 1126170624 + .long 0 + .long 1126170624 + .long 0 + .long 1126170624 + .long 0 + .long 1126170624 + .long 0 + .long 1126170624 + .long 0 + .long 1126170624 + .long 0 + .long 1126170624 + .long 0 + .long 1126170624 + .long 0 + .long 1074266112 + .long 0 + .long 1074266112 + .long 0 + .long 1074266112 + .long 0 + .long 1074266112 + .long 0 + .long 1074266112 + .long 0 + .long 1074266112 + .long 0 + .long 1074266112 + .long 0 + .long 1074266112 + .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 1792985698 + .long 3213372987 + .long 1792985698 + .long 3213372987 + .long 1792985698 + .long 3213372987 + .long 1792985698 + .long 3213372987 + .long 1792985698 + .long 3213372987 + .long 1792985698 + .long 3213372987 + .long 1792985698 + .long 3213372987 + .long 1792985698 + .long 3213372987 + .long 3135539317 + .long 1066129956 + .long 3135539317 + .long 1066129956 + .long 3135539317 + .long 1066129956 + .long 3135539317 + .long 1066129956 + .long 3135539317 + .long 1066129956 + .long 3135539317 + .long 1066129956 + .long 3135539317 + .long 1066129956 + .long 3135539317 + .long 1066129956 + .long 2087834975 + .long 3213899448 + .long 2087834975 + .long 3213899448 + .long 2087834975 + .long 3213899448 + .long 2087834975 + .long 3213899448 + .long 2087834975 + .long 3213899448 + .long 2087834975 + .long 3213899448 + .long 2087834975 + .long 3213899448 + .long 2087834975 + .long 3213899448 + .long 2476259604 + .long 1066628333 + .long 2476259604 + .long 1066628333 + .long 2476259604 + .long 1066628333 + .long 2476259604 + .long 1066628333 + .long 2476259604 + .long 1066628333 + .long 2476259604 + .long 1066628333 + .long 2476259604 + .long 1066628333 + .long 2476259604 + .long 1066628333 + .long 2012366478 + .long 3214412045 + .long 2012366478 + .long 3214412045 + .long 2012366478 + .long 3214412045 + .long 2012366478 + .long 3214412045 + .long 2012366478 + .long 3214412045 + .long 2012366478 + .long 3214412045 + .long 2012366478 + .long 3214412045 + .long 2012366478 + .long 3214412045 + .long 1104999785 + .long 1067378449 + .long 1104999785 + .long 1067378449 + .long 1104999785 + .long 1067378449 + .long 1104999785 + .long 1067378449 + .long 1104999785 + .long 1067378449 + .long 1104999785 + .long 1067378449 + .long 1104999785 + .long 1067378449 + .long 1104999785 + .long 1067378449 + .long 3534763582 + .long 3215266280 + .long 3534763582 + .long 3215266280 + .long 3534763582 + .long 3215266280 + .long 3534763582 + .long 3215266280 + .long 3534763582 + .long 3215266280 + .long 3534763582 + .long 3215266280 + .long 3534763582 + .long 3215266280 + .long 3534763582 + .long 3215266280 + .long 1007386161 + .long 1068473053 + .long 1007386161 + .long 1068473053 + .long 1007386161 + .long 1068473053 + .long 1007386161 + .long 1068473053 + .long 1007386161 + .long 1068473053 + .long 1007386161 + .long 1068473053 + .long 1007386161 + .long 1068473053 + .long 1007386161 + .long 1068473053 + .long 477218625 + .long 3216798151 + .long 477218625 + .long 3216798151 + .long 477218625 + .long 3216798151 + .long 477218625 + .long 3216798151 + .long 477218625 + .long 3216798151 + .long 477218625 + .long 3216798151 + .long 477218625 + .long 3216798151 + .long 477218625 + .long 3216798151 + .long 1431655767 + .long 1070945621 + .long 1431655767 + .long 1070945621 + .long 1431655767 + .long 1070945621 + .long 1431655767 + .long 1070945621 + .long 1431655767 + .long 1070945621 + .long 1431655767 + .long 1070945621 + .long 1431655767 + .long 1070945621 + .long 1431655767 + .long 1070945621 + .type __svml_dcbrt_data_internal_avx512,@object + .size __svml_dcbrt_data_internal_avx512,1408 + .align 32 +__dcbrt_la__vmldCbrtTab: + .long 0 + .long 1072693248 + .long 0 + .long 1072668672 + .long 0 + .long 1072644096 + .long 0 + .long 1072627712 + .long 0 + .long 1072611328 + .long 0 + .long 1072586752 + .long 0 + .long 1072570368 + .long 0 + .long 1072553984 + .long 0 + .long 1072537600 + .long 0 + .long 1072521216 + .long 0 + .long 1072504832 + .long 0 + .long 1072488448 + .long 0 + .long 1072480256 + .long 0 + .long 1072463872 + .long 0 + .long 1072447488 + .long 0 + .long 1072439296 + .long 0 + .long 1072422912 + .long 0 + .long 1072414720 + .long 0 + .long 1072398336 + .long 0 + .long 1072390144 + .long 0 + .long 1072373760 + .long 0 + .long 1072365568 + .long 0 + .long 1072357376 + .long 0 + .long 1072340992 + .long 0 + .long 1072332800 + .long 0 + .long 1072324608 + .long 0 + .long 1072308224 + .long 0 + .long 1072300032 + .long 0 + .long 1072291840 + .long 0 + .long 1072283648 + .long 0 + .long 1072275456 + .long 0 + .long 1072267264 + .long 1431655765 + .long 1071994197 + .long 1431655765 + .long 1015371093 + .long 1908874354 + .long 1071761180 + .long 1007461464 + .long 1071618781 + .long 565592401 + .long 1071446176 + .long 241555088 + .long 1071319599 + .long 943963244 + .long 1071221150 + .long 2330668378 + .long 1071141453 + .long 2770428108 + .long 1071075039 + .long 3622256836 + .long 1071018464 + .long 1497196870 + .long 1070969433 + .long 280472551 + .long 1070926345 + .long 1585032765 + .long 1070888044 + .long 0 + .long 1387266048 + .long 33554432 + .long 1101004800 + .long 512 + .long 1117782016 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 4160749568 + .long 1072965794 + .long 2921479643 + .long 1043912488 + .long 2684354560 + .long 1073309182 + .long 4060791142 + .long 1045755320 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 3220176896 + .type __dcbrt_la__vmldCbrtTab,@object + .size __dcbrt_la__vmldCbrtTab,456 + .space 8, 0x00 + .align 16 +.L_2il0floatpacket.81: + .long 0x00000000,0x80000000,0x00000000,0x00000000 + .type .L_2il0floatpacket.81,@object + .size .L_2il0floatpacket.81,16 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_cbrt_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_cbrt_s_la.s new file mode 100644 index 00000000..b257437e --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_cbrt_s_la.s @@ -0,0 +1,1012 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * + * x=2^{3*k+j} * 1.b1 b2 ... b5 b6 ... b52 + * Let r=(x*2^{-3k-j} - 1.b1 b2 ... b5 1)* rcp[b1 b2 ..b5], + * where rcp[b1 b2 .. b5]=1/(1.b1 b2 b3 b4 b5 1) in single precision + * cbrtf(2^j * 1. b1 b2 .. b5 1) is approximated as T[j][b1..b5]+D[j][b1..b5] + * (T stores the high 24 bits, D stores the low order bits) + * Result=2^k*T+(2^k*T*r)*P+2^k*D + * where P=p1+p2*r+.. + * + */ + + + .text +.L_2__routine_start___svml_cbrtf16_z0_0: + + .align 16,0x90 + .globl __svml_cbrtf16 + +__svml_cbrtf16: + + + .cfi_startproc +..L2: + + vgetmantps $0, {sae}, %zmm0, %zmm8 + +/* GetExp(x) */ + vgetexpps {sae}, %zmm0, %zmm1 + vmovups 384+__svml_scbrt_data_internal_avx512(%rip), %zmm2 + +/* exponent/3 */ + vmovups 512+__svml_scbrt_data_internal_avx512(%rip), %zmm3 + vmovups 576+__svml_scbrt_data_internal_avx512(%rip), %zmm4 + vmovups 704+__svml_scbrt_data_internal_avx512(%rip), %zmm15 + +/* exponent%3 (to be used as index) */ + vmovups 640+__svml_scbrt_data_internal_avx512(%rip), %zmm5 + +/* polynomial */ + vmovups 768+__svml_scbrt_data_internal_avx512(%rip), %zmm11 + vmovups 896+__svml_scbrt_data_internal_avx512(%rip), %zmm14 + +/* Table lookup */ + vmovups 128+__svml_scbrt_data_internal_avx512(%rip), %zmm12 + +/* DblRcp ~ 1/Mantissa */ + vrcp14ps %zmm8, %zmm7 + vaddps {rn-sae}, %zmm2, %zmm1, %zmm6 + vandps 448+__svml_scbrt_data_internal_avx512(%rip), %zmm0, %zmm0 + +/* round DblRcp to 3 fractional bits (RN mode, no Precision exception) */ + vrndscaleps $88, {sae}, %zmm7, %zmm9 + vfmsub231ps {rn-sae}, %zmm6, %zmm3, %zmm4 + vmovups 832+__svml_scbrt_data_internal_avx512(%rip), %zmm7 + +/* Reduced argument: R = DblRcp*Mantissa - 1 */ + vfmsub231ps {rn-sae}, %zmm9, %zmm8, %zmm15 + vrndscaleps $9, {sae}, %zmm4, %zmm13 + +/* Prepare table index */ + vpsrld $19, %zmm9, %zmm10 + vfmadd231ps {rn-sae}, %zmm15, %zmm11, %zmm7 + vfnmadd231ps {rn-sae}, %zmm13, %zmm5, %zmm6 + vpermt2ps 192+__svml_scbrt_data_internal_avx512(%rip), %zmm10, %zmm12 + vfmadd213ps {rn-sae}, %zmm14, %zmm15, %zmm7 + vscalefps {rn-sae}, %zmm13, %zmm12, %zmm2 + +/* Table lookup: 2^(exponent%3) */ + vpermps __svml_scbrt_data_internal_avx512(%rip), %zmm6, %zmm1 + vpermps 64+__svml_scbrt_data_internal_avx512(%rip), %zmm6, %zmm6 + +/* Sh*R */ + vmulps {rn-sae}, %zmm15, %zmm1, %zmm14 + +/* Sl + (Sh*R)*Poly */ + vfmadd213ps {rn-sae}, %zmm6, %zmm7, %zmm14 + +/* + * branch-free + * scaled_Th*(Sh+Sl+Sh*R*Poly) + */ + vaddps {rn-sae}, %zmm1, %zmm14, %zmm15 + vmulps {rn-sae}, %zmm2, %zmm15, %zmm3 + vorps %zmm0, %zmm3, %zmm0 + +/* no invcbrt in libm, so taking it out here */ + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_cbrtf16,@function + .size __svml_cbrtf16,.-__svml_cbrtf16 +..LN__svml_cbrtf16.0: + +.L_2__routine_start___svml_scbrt_cout_rare_internal_1: + + .align 16,0x90 + +__svml_scbrt_cout_rare_internal: + + + .cfi_startproc +..L5: + + movq %rsi, %r9 + movl $1065353216, -24(%rsp) + movss (%rdi), %xmm0 + movss -24(%rsp), %xmm1 + mulss %xmm0, %xmm1 + movss %xmm1, -4(%rsp) + movzwl -2(%rsp), %eax + andl $32640, %eax + shrl $7, %eax + cmpl $255, %eax + je .LBL_2_9 + + + pxor %xmm0, %xmm0 + ucomiss %xmm0, %xmm1 + jp .LBL_2_3 + je .LBL_2_8 + +.LBL_2_3: + + testl %eax, %eax + jne .LBL_2_5 + + + movl $2122317824, -24(%rsp) + movl $713031680, -20(%rsp) + jmp .LBL_2_6 + +.LBL_2_5: + + movl $1065353216, %eax + movl %eax, -24(%rsp) + movl %eax, -20(%rsp) + +.LBL_2_6: + + movss -24(%rsp), %xmm0 + lea __scbrt_la_vscbrt_ha_cout_data(%rip), %rsi + mulss %xmm0, %xmm1 + movd %xmm1, %ecx + movss %xmm1, -4(%rsp) + movl %ecx, %r10d + movl %ecx, %edi + andl $8388607, %r10d + movl %ecx, %r11d + shrl $23, %edi + andl $8257536, %r11d + orl $-1082130432, %r10d + orl $-1081999360, %r11d + movl %r10d, -16(%rsp) + movl %ecx, %edx + movzbl %dil, %r8d + andl $2147483647, %ecx + movl %r11d, -12(%rsp) + andl $-256, %edi + movss -16(%rsp), %xmm1 + addl $2139095040, %ecx + shrl $16, %edx + subss -12(%rsp), %xmm1 + andl $124, %edx + lea (%r8,%r8,4), %r10d + mulss (%rsi,%rdx), %xmm1 + lea (%r10,%r10), %r11d + movss .L_2il0floatpacket.35(%rip), %xmm4 + lea (%r11,%r11), %eax + addl %eax, %eax + lea (%r10,%r11,8), %r10d + addl %eax, %eax + decl %r8d + mulss %xmm1, %xmm4 + shll $7, %r8d + lea (%r10,%rax,8), %r11d + lea (%r11,%rax,8), %r10d + shrl $12, %r10d + addss .L_2il0floatpacket.34(%rip), %xmm4 + mulss %xmm1, %xmm4 + lea 85(%r10), %eax + orl %edi, %eax + xorl %edi, %edi + cmpl $-16777217, %ecx + addss .L_2il0floatpacket.33(%rip), %xmm4 + setg %dil + shll $7, %r10d + negl %edi + subl %r10d, %r8d + addl %r10d, %r10d + subl %r10d, %r8d + notl %edi + addl %r8d, %edx + andl %edx, %edi + shll $23, %eax + addl %edi, %edi + movl %eax, -8(%rsp) + movss 128(%rdi,%rsi), %xmm5 + movss -8(%rsp), %xmm2 + mulss %xmm1, %xmm4 + mulss %xmm2, %xmm5 + addss .L_2il0floatpacket.32(%rip), %xmm4 + mulss %xmm5, %xmm1 + movss 132(%rsi,%rdi), %xmm3 + mulss %xmm1, %xmm4 + mulss %xmm2, %xmm3 + addss %xmm3, %xmm4 + addss %xmm4, %xmm5 + mulss -20(%rsp), %xmm5 + movss %xmm5, (%r9) + +.LBL_2_7: + + xorl %eax, %eax + ret + +.LBL_2_8: + + movss %xmm1, (%r9) + jmp .LBL_2_7 + +.LBL_2_9: + + addss %xmm0, %xmm0 + movss %xmm0, (%r9) + jmp .LBL_2_7 + .align 16,0x90 + + .cfi_endproc + + .type __svml_scbrt_cout_rare_internal,@function + .size __svml_scbrt_cout_rare_internal,.-__svml_scbrt_cout_rare_internal +..LN__svml_scbrt_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_scbrt_data_internal_avx512: + .long 1065353216 + .long 1067533592 + .long 1070280693 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2999865775 + .long 849849800 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1067533592 + .long 1067322155 + .long 1067126683 + .long 1066945178 + .long 1066775983 + .long 1066617708 + .long 1066469175 + .long 1066329382 + .long 1066197466 + .long 1066072682 + .long 1065954382 + .long 1065841998 + .long 1065735031 + .long 1065633040 + .long 1065535634 + .long 1065442463 + .long 1065353216 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2999865775 + .long 849353281 + .long 2992093760 + .long 858369405 + .long 861891413 + .long 3001900484 + .long 2988845984 + .long 3009185201 + .long 3001209163 + .long 847824101 + .long 839380496 + .long 845124191 + .long 851391835 + .long 856440803 + .long 2989578734 + .long 852890174 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1249902592 + .long 1249902592 + .long 1249902592 + .long 1249902592 + .long 1249902592 + .long 1249902592 + .long 1249902592 + .long 1249902592 + .long 1249902592 + .long 1249902592 + .long 1249902592 + .long 1249902592 + .long 1249902592 + .long 1249902592 + .long 1249902592 + .long 1249902592 + .long 1077936128 + .long 1077936128 + .long 1077936128 + .long 1077936128 + .long 1077936128 + .long 1077936128 + .long 1077936128 + .long 1077936128 + .long 1077936128 + .long 1077936128 + .long 1077936128 + .long 1077936128 + .long 1077936128 + .long 1077936128 + .long 1077936128 + .long 1077936128 + .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 1031603580 + .long 1031603580 + .long 1031603580 + .long 1031603580 + .long 1031603580 + .long 1031603580 + .long 1031603580 + .long 1031603580 + .long 1031603580 + .long 1031603580 + .long 1031603580 + .long 1031603580 + .long 1031603580 + .long 1031603580 + .long 1031603580 + .long 1031603580 + .long 3185812323 + .long 3185812323 + .long 3185812323 + .long 3185812323 + .long 3185812323 + .long 3185812323 + .long 3185812323 + .long 3185812323 + .long 3185812323 + .long 3185812323 + .long 3185812323 + .long 3185812323 + .long 3185812323 + .long 3185812323 + .long 3185812323 + .long 3185812323 + .long 1051372202 + .long 1051372202 + .long 1051372202 + .long 1051372202 + .long 1051372202 + .long 1051372202 + .long 1051372202 + .long 1051372202 + .long 1051372202 + .long 1051372202 + .long 1051372202 + .long 1051372202 + .long 1051372202 + .long 1051372202 + .long 1051372202 + .long 1051372202 + .type __svml_scbrt_data_internal_avx512,@object + .size __svml_scbrt_data_internal_avx512,960 + .align 64 +__scbrt_la_vscbrt_ha_cout_data: + .long 3212578753 + .long 3212085645 + .long 3211621124 + .long 3211182772 + .long 3210768440 + .long 3210376206 + .long 3210004347 + .long 3209651317 + .long 3209315720 + .long 3208996296 + .long 3208691905 + .long 3208401508 + .long 3208124163 + .long 3207859009 + .long 3207605259 + .long 3207362194 + .long 3207129151 + .long 3206905525 + .long 3206690755 + .long 3206484326 + .long 3206285761 + .long 3206094618 + .long 3205910490 + .long 3205732998 + .long 3205561788 + .long 3205396533 + .long 3205236929 + .long 3205082689 + .long 3204933547 + .long 3204789256 + .long 3204649583 + .long 3204514308 + .long 1065396681 + .long 839340838 + .long 1065482291 + .long 867750258 + .long 1065566215 + .long 851786446 + .long 1065648532 + .long 853949398 + .long 1065729317 + .long 864938789 + .long 1065808640 + .long 864102364 + .long 1065886565 + .long 864209792 + .long 1065963152 + .long 865422805 + .long 1066038457 + .long 867593594 + .long 1066112533 + .long 854482593 + .long 1066185428 + .long 848298042 + .long 1066257188 + .long 860064854 + .long 1066327857 + .long 844792593 + .long 1066397474 + .long 870701309 + .long 1066466079 + .long 872023170 + .long 1066533708 + .long 860255342 + .long 1066600394 + .long 849966899 + .long 1066666169 + .long 863561479 + .long 1066731064 + .long 869115319 + .long 1066795108 + .long 871961375 + .long 1066858329 + .long 859537336 + .long 1066920751 + .long 871954398 + .long 1066982401 + .long 863817578 + .long 1067043301 + .long 861687921 + .long 1067103474 + .long 849594757 + .long 1067162941 + .long 816486846 + .long 1067221722 + .long 858183533 + .long 1067279837 + .long 864500406 + .long 1067337305 + .long 850523240 + .long 1067394143 + .long 808125243 + .long 1067450368 + .long 0 + .long 1067505996 + .long 861173761 + .long 1067588354 + .long 859000219 + .long 1067696217 + .long 823158129 + .long 1067801953 + .long 871826232 + .long 1067905666 + .long 871183196 + .long 1068007450 + .long 839030530 + .long 1068107390 + .long 867690638 + .long 1068205570 + .long 840440923 + .long 1068302063 + .long 868033274 + .long 1068396942 + .long 855856030 + .long 1068490271 + .long 865094453 + .long 1068582113 + .long 860418487 + .long 1068672525 + .long 866225006 + .long 1068761562 + .long 866458226 + .long 1068849275 + .long 865124659 + .long 1068935712 + .long 864837702 + .long 1069020919 + .long 811742505 + .long 1069104937 + .long 869432099 + .long 1069187809 + .long 864584201 + .long 1069269572 + .long 864183978 + .long 1069350263 + .long 844810573 + .long 1069429915 + .long 869245699 + .long 1069508563 + .long 859556409 + .long 1069586236 + .long 870675446 + .long 1069662966 + .long 814190139 + .long 1069738778 + .long 870686941 + .long 1069813702 + .long 861800510 + .long 1069887762 + .long 855649163 + .long 1069960982 + .long 869347119 + .long 1070033387 + .long 864252033 + .long 1070104998 + .long 867276215 + .long 1070175837 + .long 868189817 + .long 1070245925 + .long 849541095 + .long 1070349689 + .long 866633177 + .long 1070485588 + .long 843967686 + .long 1070618808 + .long 857522493 + .long 1070749478 + .long 862339487 + .long 1070877717 + .long 850054662 + .long 1071003634 + .long 864048556 + .long 1071127332 + .long 868027089 + .long 1071248907 + .long 848093931 + .long 1071368446 + .long 865355299 + .long 1071486034 + .long 848111485 + .long 1071601747 + .long 865557362 + .long 1071715659 + .long 870297525 + .long 1071827839 + .long 863416216 + .long 1071938350 + .long 869675693 + .long 1072047254 + .long 865888071 + .long 1072154608 + .long 825332584 + .long 1072260465 + .long 843309506 + .long 1072364876 + .long 870885636 + .long 1072467891 + .long 869119784 + .long 1072569555 + .long 865466648 + .long 1072669911 + .long 867459244 + .long 1072769001 + .long 861192764 + .long 1072866863 + .long 871247716 + .long 1072963536 + .long 864927982 + .long 1073059054 + .long 869195129 + .long 1073153452 + .long 864849564 + .long 1073246762 + .long 840005936 + .long 1073339014 + .long 852579258 + .long 1073430238 + .long 860852782 + .long 1073520462 + .long 869711141 + .long 1073609714 + .long 862506141 + .long 1073698019 + .long 837959274 + .long 3173551943 + .long 3173551943 + .long 3173551943 + .long 3173551943 + .long 3173551943 + .long 3173551943 + .long 3173551943 + .long 3173551943 + .long 3173551943 + .long 3173551943 + .long 3173551943 + .long 3173551943 + .long 3173551943 + .long 3173551943 + .long 3173551943 + .long 3173551943 + .long 1031591658 + .long 1031591658 + .long 1031591658 + .long 1031591658 + .long 1031591658 + .long 1031591658 + .long 1031591658 + .long 1031591658 + .long 1031591658 + .long 1031591658 + .long 1031591658 + .long 1031591658 + .long 1031591658 + .long 1031591658 + .long 1031591658 + .long 1031591658 + .long 3185806905 + .long 3185806905 + .long 3185806905 + .long 3185806905 + .long 3185806905 + .long 3185806905 + .long 3185806905 + .long 3185806905 + .long 3185806905 + .long 3185806905 + .long 3185806905 + .long 3185806905 + .long 3185806905 + .long 3185806905 + .long 3185806905 + .long 3185806905 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 1051372203 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8257536 + .long 8257536 + .long 8257536 + .long 8257536 + .long 8257536 + .long 8257536 + .long 8257536 + .long 8257536 + .long 8257536 + .long 8257536 + .long 8257536 + .long 8257536 + .long 8257536 + .long 8257536 + .long 8257536 + .long 8257536 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212967936 + .long 3212967936 + .long 3212967936 + .long 3212967936 + .long 3212967936 + .long 3212967936 + .long 3212967936 + .long 3212967936 + .long 3212967936 + .long 3212967936 + .long 3212967936 + .long 3212967936 + .long 3212967936 + .long 3212967936 + .long 3212967936 + .long 3212967936 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 85 + .long 85 + .long 85 + .long 85 + .long 85 + .long 85 + .long 85 + .long 85 + .long 85 + .long 85 + .long 85 + .long 85 + .long 85 + .long 85 + .long 85 + .long 85 + .long 1 + .long 1 + .long 1 + .long 1 + .long 1 + .long 1 + .long 1 + .long 1 + .long 1 + .long 1 + .long 1 + .long 1 + .long 1 + .long 1 + .long 1 + .long 1 + .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 2155872256 + .long 2155872256 + .long 2155872256 + .long 2155872256 + .long 2155872256 + .long 2155872256 + .long 2155872256 + .long 2155872256 + .long 2155872256 + .long 2155872256 + .long 2155872256 + .long 2155872256 + .long 2155872256 + .long 2155872256 + .long 2155872256 + .long 2155872256 + .long 4278190079 + .long 4278190079 + .long 4278190079 + .long 4278190079 + .long 4278190079 + .long 4278190079 + .long 4278190079 + .long 4278190079 + .long 4278190079 + .long 4278190079 + .long 4278190079 + .long 4278190079 + .long 4278190079 + .long 4278190079 + .long 4278190079 + .long 4278190079 + .type __scbrt_la_vscbrt_ha_cout_data,@object + .size __scbrt_la_vscbrt_ha_cout_data,1920 + .align 4 +.L_2il0floatpacket.28: + .long 0x007fffff + .type .L_2il0floatpacket.28,@object + .size .L_2il0floatpacket.28,4 + .align 4 +.L_2il0floatpacket.29: + .long 0x007e0000 + .type .L_2il0floatpacket.29,@object + .size .L_2il0floatpacket.29,4 + .align 4 +.L_2il0floatpacket.30: + .long 0xbf800000 + .type .L_2il0floatpacket.30,@object + .size .L_2il0floatpacket.30,4 + .align 4 +.L_2il0floatpacket.31: + .long 0xbf820000 + .type .L_2il0floatpacket.31,@object + .size .L_2il0floatpacket.31,4 + .align 4 +.L_2il0floatpacket.32: + .long 0x3eaaaaab + .type .L_2il0floatpacket.32,@object + .size .L_2il0floatpacket.32,4 + .align 4 +.L_2il0floatpacket.33: + .long 0xbde38e39 + .type .L_2il0floatpacket.33,@object + .size .L_2il0floatpacket.33,4 + .align 4 +.L_2il0floatpacket.34: + .long 0x3d7cd6ea + .type .L_2il0floatpacket.34,@object + .size .L_2il0floatpacket.34,4 + .align 4 +.L_2il0floatpacket.35: + .long 0xbd288f47 + .type .L_2il0floatpacket.35,@object + .size .L_2il0floatpacket.35,4 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_cos_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_cos_d_la.s new file mode 100644 index 00000000..51d72fe1 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_cos_d_la.s @@ -0,0 +1,17674 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * + * ( low accuracy ( < 4ulp ) or enhanced performance ( half of correct mantissa ) implementation ) + * + * Argument representation: + * arg + Pi/2 = (N*Pi + R) + * + * Result calculation: + * cos(arg) = sin(arg+Pi/2) = sin(N*Pi + R) = (-1)^N * sin(R) + * sin(R) is approximated by corresponding polynomial + * + */ + + + .text +.L_2__routine_start___svml_cos8_z0_0: + + .align 16,0x90 + .globl __svml_cos8 + +__svml_cos8: + + + .cfi_startproc +..L2: + + 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 + xorl %edx, %edx + vmovups 1472+__svml_dcos_data_internal(%rip), %zmm2 + vmovups 1536+__svml_dcos_data_internal(%rip), %zmm5 + +/* dN + .5 */ + vmovups 1600+__svml_dcos_data_internal(%rip), %zmm3 + +/* mask will be used to decide whether long arg. reduction is needed */ + vmovups 640+__svml_dcos_data_internal(%rip), %zmm8 + vmovups 704+__svml_dcos_data_internal(%rip), %zmm6 + +/* ............... Polynomial approximation ................... */ + vmovups 1280+__svml_dcos_data_internal(%rip), %zmm9 + vmovups 1152+__svml_dcos_data_internal(%rip), %zmm10 + vmovups 1088+__svml_dcos_data_internal(%rip), %zmm12 + vmovups 768+__svml_dcos_data_internal(%rip), %zmm7 + vmovups 1024+__svml_dcos_data_internal(%rip), %zmm13 + +/* large arg. condition mask */ + vmovups 1664+__svml_dcos_data_internal(%rip), %zmm4 + vmovaps %zmm0, %zmm11 + vandpd 1408+__svml_dcos_data_internal(%rip), %zmm11, %zmm1 + vmovups 1728+__svml_dcos_data_internal(%rip), %zmm0 + vfmadd231pd {rz-sae}, %zmm1, %zmm2, %zmm5 + vcmppd $17, {sae}, %zmm0, %zmm1, %k2 + vcmppd $22, {sae}, %zmm4, %zmm5, %k1 + vpsllq $63, %zmm5, %zmm15 + vsubpd {rn-sae}, %zmm3, %zmm5, %zmm14 + vmovups 1216+__svml_dcos_data_internal(%rip), %zmm3 + vfmsub213pd {rn-sae}, %zmm1, %zmm14, %zmm8 + +/* will branch if long arg. reduction needed */ + kortestw %k1, %k1 + vfmadd231pd {rn-sae}, %zmm14, %zmm6, %zmm8 + vmulpd {rn-sae}, %zmm8, %zmm8, %zmm2 + vfmadd213pd {rn-sae}, %zmm8, %zmm7, %zmm14 + vfmadd231pd {rn-sae}, %zmm2, %zmm9, %zmm3 + vmovups 960+__svml_dcos_data_internal(%rip), %zmm9 + vfmadd213pd {rn-sae}, %zmm10, %zmm2, %zmm3 + vmovups 832+__svml_dcos_data_internal(%rip), %zmm10 + vfmadd213pd {rn-sae}, %zmm12, %zmm2, %zmm3 + vfmadd213pd {rn-sae}, %zmm13, %zmm2, %zmm3 + vxorpd %zmm15, %zmm14, %zmm13 + vfmadd213pd {rn-sae}, %zmm9, %zmm2, %zmm3 + vmulpd {rn-sae}, %zmm2, %zmm13, %zmm12 + vfmadd213pd {rn-sae}, %zmm10, %zmm2, %zmm3 + vfmadd213pd {rn-sae}, %zmm13, %zmm12, %zmm3 + +/* result = minabs(result, 1.0) with sign of result preserved */ + vblendmpd 1344+__svml_dcos_data_internal(%rip), %zmm3, %zmm0{%k2} + jne .LBL_1_12 + +.LBL_1_2: + + testl %edx, %edx + jne .LBL_1_4 + +.LBL_1_3: + + +/* no invcbrt in libm, so taking it out here */ + 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_4: + + vmovups %zmm11, 64(%rsp) + vmovups %zmm0, 128(%rsp) + je .LBL_1_3 + + + 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_8: + + btl %r12d, %r13d + jc .LBL_1_11 + +.LBL_1_9: + + incl %r12d + cmpl $8, %r12d + jl .LBL_1_8 + + + 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_3 + .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_11: + + lea 64(%rsp,%r12,8), %rdi + lea 128(%rsp,%r12,8), %rsi + + call __svml_dcos_cout_rare_internal + jmp .LBL_1_9 + .cfi_restore 4 + .cfi_restore 5 + .cfi_restore 12 + .cfi_restore 13 + .cfi_restore 122 + .cfi_restore 123 + .cfi_restore 124 + .cfi_restore 125 + +.LBL_1_12: + + +/* ............Check for Inf and NaNs................. */ + vmovups 16512+__svml_dcos_data_internal_ha(%rip), %zmm7 + +/* + * Get the (2^a / 2pi) mod 1 values from the table. + * Because VLANG doesn't have L-type gather, we need a trivial cast + */ + lea __svml_dcos_reduction_data_internal(%rip), %rax + vpbroadcastq .L_2il0floatpacket.28(%rip), %zmm9 + vmovups %zmm0, (%rsp) + vandpd %zmm11, %zmm7, %zmm8 + vcmppd $4, {sae}, %zmm7, %zmm8, %k2 + +/* + * The output is _VRES_Z (high) + _VRES_E (low), and the integer part is _VRES_IND + * Now resume the original code. + * ..................... Table look-up ........................ + */ + lea __svml_dcos_data_internal_ha(%rip), %rcx + vmovaps %zmm9, %zmm6 + vpandq .L_2il0floatpacket.29(%rip){1to8}, %zmm11, %zmm3 + vpsrlq $52, %zmm3, %zmm12 + vpsllq $1, %zmm12, %zmm1 + vpaddq %zmm12, %zmm1, %zmm10 + vpsllq $3, %zmm10, %zmm4 + vpmovqd %zmm4, %ymm0 + vpandnq %zmm8, %zmm8, %zmm6{%k2} + vcmppd $3, {sae}, %zmm6, %zmm6, %k0 + +/* + * Break the P_xxx and m into 32-bit chunks ready for + * the long multiplication via 32x32->64 multiplications + */ + vpbroadcastq .L_2il0floatpacket.32(%rip), %zmm6 + kxnorw %k0, %k0, %k3 + kxnorw %k0, %k0, %k2 + kmovw %k0, %edx + vpxord %zmm7, %zmm7, %zmm7 + vgatherdpd (%rax,%ymm0), %zmm7{%k3} + kxnorw %k0, %k0, %k3 + vpxord %zmm8, %zmm8, %zmm8 + vpxord %zmm2, %zmm2, %zmm2 + vgatherdpd 8(%rax,%ymm0), %zmm8{%k2} + vgatherdpd 16(%rax,%ymm0), %zmm2{%k3} + vpsrlq $32, %zmm7, %zmm0 + vpsrlq $32, %zmm8, %zmm15 + vpsrlq $32, %zmm2, %zmm13 + +/* + * Also get the significand as an integer + * NB: adding in the integer bit is wrong for denorms! + * To make this work for denorms we should do something slightly different + */ + vpandq .L_2il0floatpacket.30(%rip){1to8}, %zmm11, %zmm5 + vpaddq .L_2il0floatpacket.31(%rip){1to8}, %zmm5, %zmm3 + vpsrlq $32, %zmm3, %zmm10 + vpmullq %zmm13, %zmm10, %zmm1 + vpandq %zmm6, %zmm7, %zmm5 + vpandq %zmm6, %zmm8, %zmm12 + vpandq %zmm6, %zmm2, %zmm7 + vpandq %zmm6, %zmm3, %zmm14 + +/* Now do the big multiplication and carry propagation */ + vpmullq %zmm5, %zmm10, %zmm4 + vpmullq %zmm15, %zmm10, %zmm3 + vpmullq %zmm12, %zmm10, %zmm2 + vpmullq %zmm7, %zmm10, %zmm8 + vpmullq %zmm15, %zmm14, %zmm10 + vpmullq %zmm13, %zmm14, %zmm15 + vpmullq %zmm0, %zmm14, %zmm7 + vpmullq %zmm12, %zmm14, %zmm0 + vpmullq %zmm5, %zmm14, %zmm5 + vpsrlq $32, %zmm15, %zmm13 + vpsrlq $32, %zmm0, %zmm14 + vpsrlq $32, %zmm5, %zmm12 + vpsrlq $32, %zmm10, %zmm15 + vpaddq %zmm13, %zmm1, %zmm1 + vpaddq %zmm14, %zmm2, %zmm13 + vpaddq %zmm12, %zmm4, %zmm4 + vpaddq %zmm15, %zmm3, %zmm2 + vpandq %zmm6, %zmm0, %zmm14 + vpandq %zmm6, %zmm10, %zmm12 + vpandq %zmm6, %zmm5, %zmm10 + vpaddq %zmm1, %zmm14, %zmm5 + vpaddq %zmm2, %zmm10, %zmm2 + vpsrlq $32, %zmm8, %zmm1 + vpaddq %zmm5, %zmm1, %zmm8 + vpsrlq $32, %zmm8, %zmm10 + vpandq %zmm6, %zmm7, %zmm0 + vpaddq %zmm13, %zmm12, %zmm7 + vpaddq %zmm4, %zmm0, %zmm3 + vpaddq %zmm7, %zmm10, %zmm14 + +/* + * Now round at the 2^-9 bit position for reduction mod pi/2^8 + * instead of the original 2pi (but still with the same 2pi scaling). + * Use a shifter of 2^43 + 2^42. + * The N we get is our final version; it has an offset of + * 2^9 because of the implicit integer bit, and anyway for negative + * starting value it's a 2s complement thing. But we need to mask + * off the exponent part anyway so it's fine. + */ + vpbroadcastq .L_2il0floatpacket.35(%rip), %zmm7 + vpsrlq $32, %zmm14, %zmm4 + vpaddq %zmm2, %zmm4, %zmm15 + vpsllq $32, %zmm14, %zmm4 + vpsrlq $32, %zmm15, %zmm0 + vpaddq %zmm3, %zmm0, %zmm13 + +/* Assemble reduced argument from the pieces */ + vpandq %zmm6, %zmm8, %zmm1 + vpandq %zmm6, %zmm15, %zmm10 + vpsllq $32, %zmm13, %zmm6 + vpaddq %zmm1, %zmm4, %zmm13 + vpaddq %zmm10, %zmm6, %zmm10 + vpsrlq $12, %zmm10, %zmm0 + vpandq .L_2il0floatpacket.38(%rip){1to8}, %zmm13, %zmm3 + vpsllq $28, %zmm3, %zmm12 + vpsrlq $24, %zmm13, %zmm13 + +/* + * We want to incorporate the original sign now too. + * Do it here for convenience in getting the right N value, + * though we could wait right to the end if we were prepared + * to modify the sign of N later too. + * So get the appropriate sign mask now (or sooner). + */ + vpandq .L_2il0floatpacket.33(%rip){1to8}, %zmm11, %zmm14 + +/* + * Create floating-point high part, implicitly adding integer bit 1 + * Incorporate overall sign at this stage too. + */ + vpxorq .L_2il0floatpacket.34(%rip){1to8}, %zmm14, %zmm5 + vporq %zmm5, %zmm0, %zmm8 + vaddpd {rn-sae}, %zmm8, %zmm7, %zmm2 + vsubpd {rn-sae}, %zmm7, %zmm2, %zmm6 + vsubpd {rn-sae}, %zmm6, %zmm8, %zmm15 + +/* + * If the magnitude of the input is <= 2^-20, then + * just pass through the input, since no reduction will be needed and + * the main path will only work accurately if the reduced argument is + * about >= 2^-70 (which it is for all large pi multiples) + */ + vpbroadcastq .L_2il0floatpacket.44(%rip), %zmm8 + vandpd .L_2il0floatpacket.43(%rip){1to8}, %zmm11, %zmm6 + vcmppd $26, {sae}, %zmm8, %zmm6, %k2 + vcmppd $22, {sae}, %zmm8, %zmm6, %k3 + +/* + * Create floating-point low and medium parts, respectively + * lo_23, ... lo_0, 0, ..., 0 + * hi_11, ... hi_0, lo_63, ..., lo_24 + * then subtract off the implicitly added integer bits, + * 2^-104 and 2^-52, respectively. + * Put the original sign into all of them at this stage. + */ + vpxorq .L_2il0floatpacket.37(%rip){1to8}, %zmm14, %zmm0 + vporq %zmm0, %zmm12, %zmm4 + vsubpd {rn-sae}, %zmm0, %zmm4, %zmm3 + vpxorq .L_2il0floatpacket.39(%rip){1to8}, %zmm14, %zmm0 + vpandq .L_2il0floatpacket.40(%rip){1to8}, %zmm10, %zmm14 + vpsllq $40, %zmm14, %zmm10 + vmovups 17152+__svml_dcos_data_internal_ha(%rip), %zmm14 + vporq %zmm13, %zmm10, %zmm10 + vporq %zmm0, %zmm10, %zmm4 + vsubpd {rn-sae}, %zmm0, %zmm4, %zmm5 + vpbroadcastq .L_2il0floatpacket.42(%rip), %zmm4 + +/* Now add them up into 2 reasonably aligned pieces */ + vaddpd {rn-sae}, %zmm5, %zmm15, %zmm7 + vsubpd {rn-sae}, %zmm7, %zmm15, %zmm15 + vaddpd {rn-sae}, %zmm15, %zmm5, %zmm10 + +/* + * Now multiply those numbers all by 2 pi, reasonably accurately. + * (RHi + RLo) * (pi_lead + pi_trail) ~= + * RHi * pi_lead + (RHi * pi_trail + RLo * pi_lead) + */ + vpbroadcastq .L_2il0floatpacket.41(%rip), %zmm5 + vaddpd {rn-sae}, %zmm3, %zmm10, %zmm12 + vmulpd {rn-sae}, %zmm5, %zmm7, %zmm1 + vmovaps %zmm5, %zmm0 + vfmsub213pd {rn-sae}, %zmm1, %zmm7, %zmm0 + vfmadd213pd {rn-sae}, %zmm0, %zmm4, %zmm7 + vfmadd213pd {rn-sae}, %zmm7, %zmm5, %zmm12 + vmovaps %zmm9, %zmm3 + +/* Grab our final N value as an integer, appropriately masked mod 2^9 */ + vpandq .L_2il0floatpacket.36(%rip){1to8}, %zmm2, %zmm2 + vpsllq $5, %zmm2, %zmm5 + vpmovqd %zmm5, %ymm5 + vpandnq %zmm6, %zmm6, %zmm3{%k2} + kxnorw %k0, %k0, %k2 + vandpd %zmm1, %zmm3, %zmm4 + vandpd %zmm12, %zmm3, %zmm0 + vmovups 16960+__svml_dcos_data_internal_ha(%rip), %zmm3 + vpandnq %zmm6, %zmm6, %zmm9{%k3} + vandpd %zmm11, %zmm9, %zmm10 + kxnorw %k0, %k0, %k3 + vorpd %zmm4, %zmm10, %zmm4 + +/* ................. Reconstruction: res_hi ................... */ + vmovaps %zmm4, %zmm2 + vmovaps %zmm4, %zmm10 + vpxord %zmm9, %zmm9, %zmm9 + vgatherdpd (%rcx,%ymm5), %zmm9{%k2} + +/* VGATHER_TABLE( L2D, dSLo, TAB_HA._dT, lIndex, 0, T_ITEM_SIZE, T_ITEM_GRAN, 3 ); */ + kxnorw %k0, %k0, %k2 + vpxord %zmm7, %zmm7, %zmm7 + vpxord %zmm6, %zmm6, %zmm6 + vgatherdpd 16(%rcx,%ymm5), %zmm7{%k3} + vgatherdpd 8(%rcx,%ymm5), %zmm6{%k2} + kxnorw %k0, %k0, %k3 + vfmadd213pd {rn-sae}, %zmm7, %zmm6, %zmm2 + vfmadd132pd {rn-sae}, %zmm9, %zmm2, %zmm10 + +/* ................. Reconstruction: res_lo ................... */ + vsubpd {rn-sae}, %zmm2, %zmm7, %zmm1 + vsubpd {rn-sae}, %zmm10, %zmm2, %zmm8 + vfmadd231pd {rn-sae}, %zmm4, %zmm6, %zmm1 + vmovups 17024+__svml_dcos_data_internal_ha(%rip), %zmm2 + vfmadd231pd {rn-sae}, %zmm9, %zmm4, %zmm8 + vaddpd {rn-sae}, %zmm1, %zmm8, %zmm13 + vaddpd {rn-sae}, %zmm6, %zmm9, %zmm1 + +/* ............... Polynomial approximation ................... */ + vmulpd {rn-sae}, %zmm4, %zmm4, %zmm8 + vmovups 17216+__svml_dcos_data_internal_ha(%rip), %zmm6 + vmovups 17088+__svml_dcos_data_internal_ha(%rip), %zmm9 + vfmadd231pd {rn-sae}, %zmm8, %zmm2, %zmm3 + vfmadd231pd {rn-sae}, %zmm8, %zmm6, %zmm14 + vmulpd {rn-sae}, %zmm8, %zmm3, %zmm12 + vfmadd213pd {rn-sae}, %zmm9, %zmm8, %zmm14 + vmulpd {rn-sae}, %zmm4, %zmm12, %zmm15 + vmulpd {rn-sae}, %zmm8, %zmm14, %zmm2 + +/* ................. Reconstruction: res_lo+corr ................... */ + vfnmadd213pd {rn-sae}, %zmm1, %zmm7, %zmm4 + vfmadd213pd {rn-sae}, %zmm13, %zmm1, %zmm15 + vfmadd213pd {rn-sae}, %zmm15, %zmm7, %zmm2 + vpxord %zmm7, %zmm7, %zmm7 + vgatherdpd 24(%rcx,%ymm5), %zmm7{%k3} + vfmadd213pd {rn-sae}, %zmm7, %zmm4, %zmm0 + vaddpd {rn-sae}, %zmm0, %zmm2, %zmm1 + +/* .................. Final reconstruction ................... */ + vmovups (%rsp), %zmm0 + vaddpd {rn-sae}, %zmm1, %zmm10, %zmm0{%k1} + jmp .LBL_1_2 + .align 16,0x90 + + .cfi_endproc + + .type __svml_cos8,@function + .size __svml_cos8,.-__svml_cos8 +..LN__svml_cos8.0: + +.L_2__routine_start___svml_dcos_cout_rare_internal_1: + + .align 16,0x90 + +__svml_dcos_cout_rare_internal: + + + .cfi_startproc +..L63: + + movzwl 6(%rdi), %eax + andl $32752, %eax + movsd (%rdi), %xmm1 + movb 7(%rdi), %dl + andb $127, %dl + movsd %xmm1, -8(%rsp) + cmpl $32752, %eax + jne .LBL_2_6 + + + cmpl $0, -8(%rsp) + jne .LBL_2_5 + + + movb %dl, -1(%rsp) + cmpl $2146435072, -4(%rsp) + jne .LBL_2_5 + + + movsd __dcos_la_CoutTab(%rip), %xmm0 + movl $1, %eax + mulsd %xmm0, %xmm1 + movsd %xmm1, (%rsi) + ret + +.LBL_2_5: + + mulsd %xmm1, %xmm1 + xorl %eax, %eax + movsd %xmm1, (%rsi) + ret + +.LBL_2_6: + + xorl %eax, %eax + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_dcos_cout_rare_internal,@function + .size __svml_dcos_cout_rare_internal,.-__svml_dcos_cout_rare_internal +..LN__svml_dcos_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_dcos_data_internal: + .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 1096810496 + .long 0 + .long 1096810496 + .long 0 + .long 1096810496 + .long 0 + .long 1096810496 + .long 0 + .long 1096810496 + .long 0 + .long 1096810496 + .long 0 + .long 1096810496 + .long 0 + .long 1096810496 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .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 1073741824 + .long 1074340347 + .long 1073741824 + .long 1074340347 + .long 1073741824 + .long 1074340347 + .long 1073741824 + .long 1074340347 + .long 1073741824 + .long 1074340347 + .long 1073741824 + .long 1074340347 + .long 1073741824 + .long 1074340347 + .long 1073741824 + .long 1074340347 + .long 0 + .long 1048855597 + .long 0 + .long 1048855597 + .long 0 + .long 1048855597 + .long 0 + .long 1048855597 + .long 0 + .long 1048855597 + .long 0 + .long 1048855597 + .long 0 + .long 1048855597 + .long 0 + .long 1048855597 + .long 2147483648 + .long 1023952536 + .long 2147483648 + .long 1023952536 + .long 2147483648 + .long 1023952536 + .long 2147483648 + .long 1023952536 + .long 2147483648 + .long 1023952536 + .long 2147483648 + .long 1023952536 + .long 2147483648 + .long 1023952536 + .long 2147483648 + .long 1023952536 + .long 1880851354 + .long 998820945 + .long 1880851354 + .long 998820945 + .long 1880851354 + .long 998820945 + .long 1880851354 + .long 998820945 + .long 1880851354 + .long 998820945 + .long 1880851354 + .long 998820945 + .long 1880851354 + .long 998820945 + .long 1880851354 + .long 998820945 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 856972294 + .long 1017226790 + .long 856972294 + .long 1017226790 + .long 856972294 + .long 1017226790 + .long 856972294 + .long 1017226790 + .long 856972294 + .long 1017226790 + .long 856972294 + .long 1017226790 + .long 856972294 + .long 1017226790 + .long 856972294 + .long 1017226790 + .long 688016905 + .long 962338001 + .long 688016905 + .long 962338001 + .long 688016905 + .long 962338001 + .long 688016905 + .long 962338001 + .long 688016905 + .long 962338001 + .long 688016905 + .long 962338001 + .long 688016905 + .long 962338001 + .long 688016905 + .long 962338001 + .long 1431655591 + .long 3217380693 + .long 1431655591 + .long 3217380693 + .long 1431655591 + .long 3217380693 + .long 1431655591 + .long 3217380693 + .long 1431655591 + .long 3217380693 + .long 1431655591 + .long 3217380693 + .long 1431655591 + .long 3217380693 + .long 1431655591 + .long 3217380693 + .long 286303399 + .long 1065423121 + .long 286303399 + .long 1065423121 + .long 286303399 + .long 1065423121 + .long 286303399 + .long 1065423121 + .long 286303399 + .long 1065423121 + .long 286303399 + .long 1065423121 + .long 286303399 + .long 1065423121 + .long 286303399 + .long 1065423121 + .long 286303400 + .long 1065423121 + .long 286303400 + .long 1065423121 + .long 286303400 + .long 1065423121 + .long 286303400 + .long 1065423121 + .long 286303400 + .long 1065423121 + .long 286303400 + .long 1065423121 + .long 286303400 + .long 1065423121 + .long 286303400 + .long 1065423121 + .long 430291067 + .long 3207201184 + .long 430291067 + .long 3207201184 + .long 430291067 + .long 3207201184 + .long 430291067 + .long 3207201184 + .long 430291067 + .long 3207201184 + .long 430291067 + .long 3207201184 + .long 430291067 + .long 3207201184 + .long 430291067 + .long 3207201184 + .long 2150694560 + .long 1053236707 + .long 2150694560 + .long 1053236707 + .long 2150694560 + .long 1053236707 + .long 2150694560 + .long 1053236707 + .long 2150694560 + .long 1053236707 + .long 2150694560 + .long 1053236707 + .long 2150694560 + .long 1053236707 + .long 2150694560 + .long 1053236707 + .long 1174413873 + .long 3193628213 + .long 1174413873 + .long 3193628213 + .long 1174413873 + .long 3193628213 + .long 1174413873 + .long 3193628213 + .long 1174413873 + .long 3193628213 + .long 1174413873 + .long 3193628213 + .long 1174413873 + .long 3193628213 + .long 1174413873 + .long 3193628213 + .long 1470296608 + .long 1038487144 + .long 1470296608 + .long 1038487144 + .long 1470296608 + .long 1038487144 + .long 1470296608 + .long 1038487144 + .long 1470296608 + .long 1038487144 + .long 1470296608 + .long 1038487144 + .long 1470296608 + .long 1038487144 + .long 1470296608 + .long 1038487144 + .long 135375560 + .long 3177836758 + .long 135375560 + .long 3177836758 + .long 135375560 + .long 3177836758 + .long 135375560 + .long 3177836758 + .long 135375560 + .long 3177836758 + .long 135375560 + .long 3177836758 + .long 135375560 + .long 3177836758 + .long 135375560 + .long 3177836758 + .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 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 0 + .long 1127219200 + .long 0 + .long 1127219200 + .long 0 + .long 1127219200 + .long 0 + .long 1127219200 + .long 0 + .long 1127219200 + .long 0 + .long 1127219200 + .long 0 + .long 1127219200 + .long 0 + .long 1127219200 + .long 4294967295 + .long 1127219199 + .long 4294967295 + .long 1127219199 + .long 4294967295 + .long 1127219199 + .long 4294967295 + .long 1127219199 + .long 4294967295 + .long 1127219199 + .long 4294967295 + .long 1127219199 + .long 4294967295 + .long 1127219199 + .long 4294967295 + .long 1127219199 + .long 8388606 + .long 1127219200 + .long 8388606 + .long 1127219200 + .long 8388606 + .long 1127219200 + .long 8388606 + .long 1127219200 + .long 8388606 + .long 1127219200 + .long 8388606 + .long 1127219200 + .long 8388606 + .long 1127219200 + .long 8388606 + .long 1127219200 + .long 0 + .long 1044381696 + .long 0 + .long 1044381696 + .long 0 + .long 1044381696 + .long 0 + .long 1044381696 + .long 0 + .long 1044381696 + .long 0 + .long 1044381696 + .long 0 + .long 1044381696 + .long 0 + .long 1044381696 + .type __svml_dcos_data_internal,@object + .size __svml_dcos_data_internal,1792 + .align 64 +__svml_dcos_data_internal_ha: + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 210035182 + .long 1064007864 + .long 0 + .long 3213885440 + .long 379294427 + .long 1072693090 + .long 3221225472 + .long 1015405987 + .long 561145352 + .long 1065056936 + .long 0 + .long 3214934016 + .long 1619315981 + .long 1072692616 + .long 1073741824 + .long 3162584397 + .long 2896342633 + .long 3212231467 + .long 0 + .long 3214934016 + .long 4026464093 + .long 1072691826 + .long 3221225472 + .long 3163075789 + .long 1003003824 + .long 1066107496 + .long 0 + .long 3215982592 + .long 3816385918 + .long 1072690721 + .long 536870912 + .long 3161216956 + .long 3237733378 + .long 1062425136 + .long 0 + .long 3215982592 + .long 1703834029 + .long 1072689301 + .long 3758096384 + .long 1015028364 + .long 2523975598 + .long 3213273348 + .long 0 + .long 3215982592 + .long 2902558778 + .long 1072687565 + .long 3221225472 + .long 1013260780 + .long 711626851 + .long 3214400320 + .long 0 + .long 3215982592 + .long 4240268041 + .long 1072685514 + .long 536870912 + .long 1013588963 + .long 257503056 + .long 1067164005 + .long 0 + .long 3217031168 + .long 2748392742 + .long 1072683149 + .long 536870912 + .long 3163061750 + .long 3272206680 + .long 1066288081 + .long 0 + .long 3217031168 + .long 4251821691 + .long 1072680469 + .long 2147483648 + .long 3161841007 + .long 718380601 + .long 1063597621 + .long 0 + .long 3217031168 + .long 1893834707 + .long 1072677476 + .long 1610612736 + .long 1015147654 + .long 3987691371 + .long 3213074188 + .long 0 + .long 3217031168 + .long 1905645377 + .long 1072674169 + .long 1610612736 + .long 1014087596 + .long 1953696209 + .long 3214295171 + .long 0 + .long 3217031168 + .long 2131272983 + .long 1072670549 + .long 3221225472 + .long 3163005096 + .long 3299146087 + .long 3215021530 + .long 0 + .long 3217031168 + .long 617154971 + .long 1072666617 + .long 3758096384 + .long 3163433696 + .long 304938777 + .long 3215427665 + .long 0 + .long 3217031168 + .long 4201728937 + .long 1072662372 + .long 1610612736 + .long 1014674006 + .long 2034433221 + .long 3215832935 + .long 0 + .long 3217031168 + .long 2745245815 + .long 1072657817 + .long 3221225472 + .long 1015566129 + .long 240740309 + .long 1068244255 + .long 0 + .long 3218079744 + .long 3489094832 + .long 1072652951 + .long 536870912 + .long 1014325783 + .long 1765797566 + .long 1067840895 + .long 0 + .long 3218079744 + .long 990588717 + .long 1072647776 + .long 3758096384 + .long 3162041857 + .long 2886567144 + .long 1067426796 + .long 0 + .long 3218079744 + .long 2892293513 + .long 1072642291 + .long 2684354560 + .long 3162340271 + .long 3587565429 + .long 1066624384 + .long 0 + .long 3218079744 + .long 4151720666 + .long 1072636498 + .long 0 + .long 3162639544 + .long 2614369450 + .long 1065140432 + .long 0 + .long 3218079744 + .long 4220661975 + .long 1072630398 + .long 3221225472 + .long 1014312058 + .long 2382326656 + .long 3212045827 + .long 0 + .long 3218079744 + .long 2749658050 + .long 1072623992 + .long 1610612736 + .long 1015427338 + .long 723478390 + .long 3213958438 + .long 0 + .long 3218079744 + .long 3882371427 + .long 1072617280 + .long 2147483648 + .long 1014923975 + .long 4107121629 + .long 3214750787 + .long 0 + .long 3218079744 + .long 3370060660 + .long 1072610264 + .long 1610612736 + .long 1014787212 + .long 1991047213 + .long 3215237169 + .long 0 + .long 3218079744 + .long 1455828442 + .long 1072602945 + .long 3758096384 + .long 1015505073 + .long 386665102 + .long 3215630470 + .long 0 + .long 3218079744 + .long 2873938189 + .long 1072595323 + .long 1610612736 + .long 3162311422 + .long 1348311045 + .long 3216002418 + .long 0 + .long 3218079744 + .long 3964199186 + .long 1072587400 + .long 3758096384 + .long 3160501078 + .long 165911977 + .long 3216197513 + .long 0 + .long 3218079744 + .long 1261158782 + .long 1072579178 + .long 2147483648 + .long 1015711544 + .long 3601629044 + .long 3216391785 + .long 0 + .long 3218079744 + .long 83265253 + .long 1072570657 + .long 1610612736 + .long 3162510535 + .long 1962712856 + .long 3216585207 + .long 0 + .long 3218079744 + .long 1647164971 + .long 1072561838 + .long 2147483648 + .long 3162838250 + .long 3286832763 + .long 3216777748 + .long 0 + .long 3218079744 + .long 3066872380 + .long 1072552723 + .long 3221225472 + .long 1015561271 + .long 3296146332 + .long 3216969380 + .long 0 + .long 3218079744 + .long 1647878299 + .long 1072543314 + .long 3758096384 + .long 3162169063 + .long 1699043957 + .long 1069418613 + .long 0 + .long 3219128320 + .long 3476196678 + .long 1072533611 + .long 0 + .long 1014257638 + .long 1896722595 + .long 1069228886 + .long 0 + .long 3219128320 + .long 1942611595 + .long 1072523617 + .long 3221225472 + .long 3162410081 + .long 4049357271 + .long 1069040154 + .long 0 + .long 3219128320 + .long 3511535930 + .long 1072513332 + .long 2147483648 + .long 3162828626 + .long 1380647130 + .long 1068852447 + .long 0 + .long 3219128320 + .long 1950234076 + .long 1072502759 + .long 536870912 + .long 3159425498 + .long 3631910143 + .long 1068665791 + .long 0 + .long 3219128320 + .long 4097623923 + .long 1072491898 + .long 2684354560 + .long 3160308587 + .long 1073154251 + .long 1068461489 + .long 0 + .long 3219128320 + .long 4093443164 + .long 1072480752 + .long 536870912 + .long 1014912865 + .long 913431823 + .long 1068092555 + .long 0 + .long 3219128320 + .long 557060597 + .long 1072469323 + .long 0 + .long 3159554934 + .long 600368053 + .long 1067725893 + .long 0 + .long 3219128320 + .long 881357723 + .long 1072457611 + .long 3221225472 + .long 1013810890 + .long 2140183630 + .long 1067272748 + .long 0 + .long 3219128320 + .long 4051746225 + .long 1072445618 + .long 1610612736 + .long 3161907377 + .long 3506991783 + .long 1066548842 + .long 0 + .long 3219128320 + .long 645027145 + .long 1072433348 + .long 3221225472 + .long 1012602239 + .long 31019393 + .long 1065162441 + .long 0 + .long 3219128320 + .long 2892993834 + .long 1072420800 + .long 536870912 + .long 3163039143 + .long 1279178457 + .long 3211590791 + .long 0 + .long 3219128320 + .long 1731563730 + .long 1072407978 + .long 536870912 + .long 1015540302 + .long 1220541286 + .long 3213681126 + .long 0 + .long 3219128320 + .long 1159294526 + .long 1072394883 + .long 536870912 + .long 3163276959 + .long 2880516564 + .long 3214487049 + .long 0 + .long 3219128320 + .long 1056266002 + .long 1072381517 + .long 2684354560 + .long 3163469496 + .long 1102361128 + .long 3215059765 + .long 0 + .long 3219128320 + .long 1477771776 + .long 1072367882 + .long 536870912 + .long 3163104986 + .long 1038988426 + .long 3215406294 + .long 0 + .long 3219128320 + .long 2653017361 + .long 1072353980 + .long 0 + .long 3162800062 + .long 2598800519 + .long 3215750067 + .long 0 + .long 3219128320 + .long 688824739 + .long 1072339814 + .long 3758096384 + .long 1010431536 + .long 3382663878 + .long 3216036812 + .long 0 + .long 3219128320 + .long 453180130 + .long 1072325385 + .long 1073741824 + .long 3162411281 + .long 1726519029 + .long 3216205866 + .long 0 + .long 3219128320 + .long 2688952194 + .long 1072310695 + .long 0 + .long 3161532603 + .long 802660176 + .long 3216373465 + .long 0 + .long 3219128320 + .long 4012486548 + .long 1072295747 + .long 2684354560 + .long 1014701564 + .long 3876290983 + .long 3216539583 + .long 0 + .long 3219128320 + .long 1207142209 + .long 1072280544 + .long 2147483648 + .long 3162705634 + .long 2285031318 + .long 3216704197 + .long 0 + .long 3219128320 + .long 4106737474 + .long 1072265086 + .long 2684354560 + .long 3162592377 + .long 1224902090 + .long 3216867281 + .long 0 + .long 3219128320 + .long 1234330619 + .long 1072249378 + .long 2684354560 + .long 1015272473 + .long 2586490530 + .long 3217028810 + .long 0 + .long 3219128320 + .long 2750387213 + .long 1072233420 + .long 2147483648 + .long 3160858537 + .long 2485417816 + .long 3217109964 + .long 0 + .long 3219128320 + .long 1796544321 + .long 1072217216 + .long 536870912 + .long 3162686945 + .long 1852581091 + .long 3217189138 + .long 0 + .long 3219128320 + .long 263859903 + .long 1072200768 + .long 0 + .long 3162692284 + .long 4019165092 + .long 3217267498 + .long 0 + .long 3219128320 + .long 201299822 + .long 1072184078 + .long 3758096384 + .long 3161912352 + .long 1250776663 + .long 3217345034 + .long 0 + .long 3219128320 + .long 3814135665 + .long 1072167148 + .long 3221225472 + .long 3163146456 + .long 3526603391 + .long 3217421732 + .long 0 + .long 3219128320 + .long 577417135 + .long 1072149983 + .long 2684354560 + .long 3161519415 + .long 4187227697 + .long 3217497582 + .long 0 + .long 3219128320 + .long 1594061409 + .long 1072132583 + .long 2147483648 + .long 1014353870 + .long 1416934267 + .long 3217572573 + .long 0 + .long 3219128320 + .long 938475414 + .long 1072114952 + .long 0 + .long 1015076079 + .long 2546065654 + .long 3217646692 + .long 0 + .long 3219128320 + .long 1424664751 + .long 1072097092 + .long 3221225472 + .long 3163405315 + .long 2583490354 + .long 3217719929 + .long 0 + .long 3219128320 + .long 1719614413 + .long 1072079006 + .long 0 + .long 3163282740 + .long 1403691706 + .long 3217792273 + .long 0 + .long 3219128320 + .long 636516413 + .long 1072060697 + .long 3758096384 + .long 1015823716 + .long 3753901657 + .long 3217863712 + .long 0 + .long 3219128320 + .long 1427975391 + .long 1072042167 + .long 1073741824 + .long 3161608627 + .long 2081278341 + .long 3217934237 + .long 0 + .long 3219128320 + .long 3194290572 + .long 1072023419 + .long 2147483648 + .long 1015048682 + .long 2309668539 + .long 3218003836 + .long 0 + .long 3219128320 + .long 881650848 + .long 1072004457 + .long 2147483648 + .long 3162986272 + .long 2371640770 + .long 3218072499 + .long 0 + .long 3219128320 + .long 2460177814 + .long 1071985282 + .long 2147483648 + .long 3162116843 + .long 3489768009 + .long 1070535623 + .long 0 + .long 3220176896 + .long 3152274921 + .long 1071965898 + .long 3758096384 + .long 1013170835 + .long 3239527685 + .long 1070468863 + .long 0 + .long 3220176896 + .long 2610628921 + .long 1071946308 + .long 1610612736 + .long 3162668769 + .long 1403757309 + .long 1070403070 + .long 0 + .long 3220176896 + .long 621354454 + .long 1071926515 + .long 536870912 + .long 1013450602 + .long 1883353036 + .long 1070338253 + .long 0 + .long 3220176896 + .long 1397053140 + .long 1071906521 + .long 1610612736 + .long 1015245078 + .long 3652612115 + .long 1070274422 + .long 0 + .long 3220176896 + .long 689983673 + .long 1071886330 + .long 3758096384 + .long 1014906405 + .long 752919289 + .long 1070211588 + .long 0 + .long 3220176896 + .long 2969983475 + .long 1071865944 + .long 2684354560 + .long 3162635443 + .long 3761365757 + .long 1070149758 + .long 0 + .long 3220176896 + .long 4242632757 + .long 1071845367 + .long 536870912 + .long 3161390278 + .long 1129922991 + .long 1070088944 + .long 0 + .long 3220176896 + .long 637203434 + .long 1071824603 + .long 3221225472 + .long 3159443841 + .long 2129093113 + .long 1070029153 + .long 0 + .long 3220176896 + .long 1289556703 + .long 1071803653 + .long 536870912 + .long 3162888820 + .long 2482246777 + .long 1069970395 + .long 0 + .long 3220176896 + .long 2570316633 + .long 1071782521 + .long 1610612736 + .long 3162744753 + .long 1539668340 + .long 1069912679 + .long 0 + .long 3220176896 + .long 967731400 + .long 1071761211 + .long 536870912 + .long 1015752157 + .long 2272832445 + .long 1069856013 + .long 0 + .long 3220176896 + .long 1675549513 + .long 1071739725 + .long 3221225472 + .long 3163025138 + .long 2678847490 + .long 1069800406 + .long 0 + .long 3220176896 + .long 1411074851 + .long 1071718067 + .long 1610612736 + .long 3163484731 + .long 69903290 + .long 1069745867 + .long 0 + .long 3220176896 + .long 1297975695 + .long 1071696240 + .long 3221225472 + .long 3163083735 + .long 3952756490 + .long 1069692402 + .long 0 + .long 3220176896 + .long 2569207790 + .long 1071674247 + .long 1073741824 + .long 3163183617 + .long 1663679671 + .long 1069640022 + .long 0 + .long 3220176896 + .long 2269920951 + .long 1071652092 + .long 3758096384 + .long 3161672245 + .long 1312926554 + .long 1069588733 + .long 0 + .long 3220176896 + .long 3690502842 + .long 1071614884 + .long 3221225472 + .long 3157453855 + .long 3429717432 + .long 1069529566 + .long 0 + .long 3220176896 + .long 1391425750 + .long 1071569945 + .long 3221225472 + .long 3162362103 + .long 1945768569 + .long 1069431400 + .long 0 + .long 3220176896 + .long 939980347 + .long 1071524701 + .long 0 + .long 1012796809 + .long 1539072807 + .long 1069335462 + .long 0 + .long 3220176896 + .long 1535566729 + .long 1071479159 + .long 2147483648 + .long 1014321388 + .long 4133449816 + .long 1069241766 + .long 0 + .long 3220176896 + .long 2570175582 + .long 1071433326 + .long 1073741824 + .long 1012303118 + .long 1612193054 + .long 1069150328 + .long 0 + .long 3220176896 + .long 3623952103 + .long 1071387209 + .long 2684354560 + .long 3161985962 + .long 1578746984 + .long 1069061160 + .long 0 + .long 3220176896 + .long 165764288 + .long 1071340816 + .long 3221225472 + .long 1013298018 + .long 1577996576 + .long 1068974276 + .long 0 + .long 3220176896 + .long 728580042 + .long 1071294152 + .long 1610612736 + .long 3162332944 + .long 1972483635 + .long 1068889689 + .long 0 + .long 3220176896 + .long 1135144330 + .long 1071247225 + .long 536870912 + .long 1013373569 + .long 1638976426 + .long 1068807412 + .long 0 + .long 3220176896 + .long 1673302999 + .long 1071200042 + .long 2147483648 + .long 1013351473 + .long 2255197647 + .long 1068727457 + .long 0 + .long 3220176896 + .long 2796464483 + .long 1071152610 + .long 3221225472 + .long 3160878317 + .long 3996842794 + .long 1068649836 + .long 0 + .long 3220176896 + .long 824036583 + .long 1071104937 + .long 0 + .long 1008313330 + .long 1234824733 + .long 1068574562 + .long 0 + .long 3220176896 + .long 821708191 + .long 1071057029 + .long 3758096384 + .long 3161738009 + .long 4002549419 + .long 1068501644 + .long 0 + .long 3220176896 + .long 3711903686 + .long 1071008893 + .long 1073741824 + .long 1011944747 + .long 2962723252 + .long 1068363247 + .long 0 + .long 3220176896 + .long 1974149085 + .long 1070960538 + .long 3221225472 + .long 3156147648 + .long 1296295961 + .long 1068226907 + .long 0 + .long 3220176896 + .long 1115219818 + .long 1070911970 + .long 0 + .long 1013072242 + .long 997322465 + .long 1068095345 + .long 0 + .long 3220176896 + .long 2484561409 + .long 1070863196 + .long 1073741824 + .long 1014024572 + .long 1261629236 + .long 1067968581 + .long 0 + .long 3220176896 + .long 3269558610 + .long 1070814224 + .long 536870912 + .long 3161705216 + .long 2476548698 + .long 1067846634 + .long 0 + .long 3220176896 + .long 785751814 + .long 1070765062 + .long 2684354560 + .long 3161838221 + .long 1913604284 + .long 1067729523 + .long 0 + .long 3220176896 + .long 1062001470 + .long 1070715716 + .long 0 + .long 3160875220 + .long 2306566604 + .long 1067617265 + .long 0 + .long 3220176896 + .long 1655830135 + .long 1070666194 + .long 0 + .long 1014506690 + .long 3250111450 + .long 1067509877 + .long 0 + .long 3220176896 + .long 238550446 + .long 1070616504 + .long 2684354560 + .long 3154383565 + .long 2377770267 + .long 1067364384 + .long 0 + .long 3220176896 + .long 2065784603 + .long 1070537209 + .long 3758096384 + .long 3160681966 + .long 288924873 + .long 1067169185 + .long 0 + .long 3220176896 + .long 3846521617 + .long 1070437199 + .long 536870912 + .long 1013406610 + .long 1935888103 + .long 1066983818 + .long 0 + .long 3220176896 + .long 1786662755 + .long 1070336898 + .long 2147483648 + .long 3155882307 + .long 2660899430 + .long 1066808312 + .long 0 + .long 3220176896 + .long 632292433 + .long 1070236320 + .long 3758096384 + .long 3160963333 + .long 18115067 + .long 1066642694 + .long 0 + .long 3220176896 + .long 1013556747 + .long 1070135480 + .long 2684354560 + .long 3160567065 + .long 2346447124 + .long 1066486987 + .long 0 + .long 3220176896 + .long 3729833777 + .long 1070034393 + .long 3758096384 + .long 1013044718 + .long 1672287667 + .long 1066280641 + .long 0 + .long 3220176896 + .long 1149976518 + .long 1069933076 + .long 1610612736 + .long 1013264895 + .long 3451754846 + .long 1066009014 + .long 0 + .long 3220176896 + .long 2972270170 + .long 1069831542 + .long 1073741824 + .long 3159524770 + .long 1037482584 + .long 1065757344 + .long 0 + .long 3220176896 + .long 1854824762 + .long 1069729808 + .long 2684354560 + .long 1011953664 + .long 2592747447 + .long 1065525667 + .long 0 + .long 3220176896 + .long 3470456183 + .long 1069627888 + .long 1073741824 + .long 3160744771 + .long 2402293340 + .long 1065274823 + .long 0 + .long 3220176896 + .long 1453945614 + .long 1069504078 + .long 1610612736 + .long 1011492612 + .long 1227670166 + .long 1064891649 + .long 0 + .long 3220176896 + .long 3349070549 + .long 1069299589 + .long 3758096384 + .long 3156538269 + .long 393047345 + .long 1064548654 + .long 0 + .long 3220176896 + .long 3156849708 + .long 1069094822 + .long 3221225472 + .long 3158189848 + .long 1118107366 + .long 1064187139 + .long 0 + .long 3220176896 + .long 177906713 + .long 1068889808 + .long 3221225472 + .long 3159310370 + .long 4269262315 + .long 1063662162 + .long 0 + .long 3220176896 + .long 2462980598 + .long 1068684576 + .long 2684354560 + .long 3158941832 + .long 3810305407 + .long 1063179572 + .long 0 + .long 3220176896 + .long 2046304480 + .long 1068459374 + .long 3758096384 + .long 3156402667 + .long 220529721 + .long 1062452281 + .long 0 + .long 3220176896 + .long 4044216340 + .long 1068048229 + .long 0 + .long 3156808381 + .long 69373323 + .long 1061565504 + .long 0 + .long 3220176896 + .long 1972655565 + .long 1067636837 + .long 1073741824 + .long 1009157878 + .long 3650591271 + .long 1060355323 + .long 0 + .long 3220176896 + .long 4154680958 + .long 1067000149 + .long 0 + .long 3153796451 + .long 2376373521 + .long 1058258220 + .long 0 + .long 3220176896 + .long 4242458500 + .long 1065951697 + .long 2684354560 + .long 1009354638 + .long 0 + .long 0 + .long 0 + .long 3220176896 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2376373521 + .long 1058258220 + .long 0 + .long 3220176896 + .long 4242458500 + .long 3213435345 + .long 2684354560 + .long 3156838286 + .long 3650591271 + .long 1060355323 + .long 0 + .long 3220176896 + .long 4154680958 + .long 3214483797 + .long 0 + .long 1006312803 + .long 69373323 + .long 1061565504 + .long 0 + .long 3220176896 + .long 1972655565 + .long 3215120485 + .long 1073741824 + .long 3156641526 + .long 220529721 + .long 1062452281 + .long 0 + .long 3220176896 + .long 4044216340 + .long 3215531877 + .long 0 + .long 1009324733 + .long 3810305407 + .long 1063179572 + .long 0 + .long 3220176896 + .long 2046304480 + .long 3215943022 + .long 3758096384 + .long 1008919019 + .long 4269262315 + .long 1063662162 + .long 0 + .long 3220176896 + .long 2462980598 + .long 3216168224 + .long 2684354560 + .long 1011458184 + .long 1118107366 + .long 1064187139 + .long 0 + .long 3220176896 + .long 177906713 + .long 3216373456 + .long 3221225472 + .long 1011826722 + .long 393047345 + .long 1064548654 + .long 0 + .long 3220176896 + .long 3156849708 + .long 3216578470 + .long 3221225472 + .long 1010706200 + .long 1227670166 + .long 1064891649 + .long 0 + .long 3220176896 + .long 3349070549 + .long 3216783237 + .long 3758096384 + .long 1009054621 + .long 2402293340 + .long 1065274823 + .long 0 + .long 3220176896 + .long 1453945614 + .long 3216987726 + .long 1610612736 + .long 3158976260 + .long 2592747447 + .long 1065525667 + .long 0 + .long 3220176896 + .long 3470456183 + .long 3217111536 + .long 1073741824 + .long 1013261123 + .long 1037482584 + .long 1065757344 + .long 0 + .long 3220176896 + .long 1854824762 + .long 3217213456 + .long 2684354560 + .long 3159437312 + .long 3451754846 + .long 1066009014 + .long 0 + .long 3220176896 + .long 2972270170 + .long 3217315190 + .long 1073741824 + .long 1012041122 + .long 1672287667 + .long 1066280641 + .long 0 + .long 3220176896 + .long 1149976518 + .long 3217416724 + .long 1610612736 + .long 3160748543 + .long 2346447124 + .long 1066486987 + .long 0 + .long 3220176896 + .long 3729833777 + .long 3217518041 + .long 3758096384 + .long 3160528366 + .long 18115067 + .long 1066642694 + .long 0 + .long 3220176896 + .long 1013556747 + .long 3217619128 + .long 2684354560 + .long 1013083417 + .long 2660899430 + .long 1066808312 + .long 0 + .long 3220176896 + .long 632292433 + .long 3217719968 + .long 3758096384 + .long 1013479685 + .long 1935888103 + .long 1066983818 + .long 0 + .long 3220176896 + .long 1786662755 + .long 3217820546 + .long 2147483648 + .long 1008398659 + .long 288924873 + .long 1067169185 + .long 0 + .long 3220176896 + .long 3846521617 + .long 3217920847 + .long 536870912 + .long 3160890258 + .long 2377770267 + .long 1067364384 + .long 0 + .long 3220176896 + .long 2065784603 + .long 3218020857 + .long 3758096384 + .long 1013198318 + .long 3250111450 + .long 1067509877 + .long 0 + .long 3220176896 + .long 238550446 + .long 3218100152 + .long 2684354560 + .long 1006899917 + .long 2306566604 + .long 1067617265 + .long 0 + .long 3220176896 + .long 1655830135 + .long 3218149842 + .long 0 + .long 3161990338 + .long 1913604284 + .long 1067729523 + .long 0 + .long 3220176896 + .long 1062001470 + .long 3218199364 + .long 0 + .long 1013391572 + .long 2476548698 + .long 1067846634 + .long 0 + .long 3220176896 + .long 785751814 + .long 3218248710 + .long 2684354560 + .long 1014354573 + .long 1261629236 + .long 1067968581 + .long 0 + .long 3220176896 + .long 3269558610 + .long 3218297872 + .long 536870912 + .long 1014221568 + .long 997322465 + .long 1068095345 + .long 0 + .long 3220176896 + .long 2484561409 + .long 3218346844 + .long 1073741824 + .long 3161508220 + .long 1296295961 + .long 1068226907 + .long 0 + .long 3220176896 + .long 1115219818 + .long 3218395618 + .long 0 + .long 3160555890 + .long 2962723252 + .long 1068363247 + .long 0 + .long 3220176896 + .long 1974149085 + .long 3218444186 + .long 3221225472 + .long 1008664000 + .long 4002549419 + .long 1068501644 + .long 0 + .long 3220176896 + .long 3711903686 + .long 3218492541 + .long 1073741824 + .long 3159428395 + .long 1234824733 + .long 1068574562 + .long 0 + .long 3220176896 + .long 821708191 + .long 3218540677 + .long 3758096384 + .long 1014254361 + .long 3996842794 + .long 1068649836 + .long 0 + .long 3220176896 + .long 824036583 + .long 3218588585 + .long 0 + .long 3155796978 + .long 2255197647 + .long 1068727457 + .long 0 + .long 3220176896 + .long 2796464483 + .long 3218636258 + .long 3221225472 + .long 1013394669 + .long 1638976426 + .long 1068807412 + .long 0 + .long 3220176896 + .long 1673302999 + .long 3218683690 + .long 2147483648 + .long 3160835121 + .long 1972483635 + .long 1068889689 + .long 0 + .long 3220176896 + .long 1135144330 + .long 3218730873 + .long 536870912 + .long 3160857217 + .long 1577996576 + .long 1068974276 + .long 0 + .long 3220176896 + .long 728580042 + .long 3218777800 + .long 1610612736 + .long 1014849296 + .long 1578746984 + .long 1069061160 + .long 0 + .long 3220176896 + .long 165764288 + .long 3218824464 + .long 3221225472 + .long 3160781666 + .long 1612193054 + .long 1069150328 + .long 0 + .long 3220176896 + .long 3623952103 + .long 3218870857 + .long 2684354560 + .long 1014502314 + .long 4133449816 + .long 1069241766 + .long 0 + .long 3220176896 + .long 2570175582 + .long 3218916974 + .long 1073741824 + .long 3159786766 + .long 1539072807 + .long 1069335462 + .long 0 + .long 3220176896 + .long 1535566729 + .long 3218962807 + .long 2147483648 + .long 3161805036 + .long 1945768569 + .long 1069431400 + .long 0 + .long 3220176896 + .long 939980347 + .long 3219008349 + .long 0 + .long 3160280457 + .long 3429717432 + .long 1069529566 + .long 0 + .long 3220176896 + .long 1391425750 + .long 3219053593 + .long 3221225472 + .long 1014878455 + .long 1312926554 + .long 1069588733 + .long 0 + .long 3220176896 + .long 3690502842 + .long 3219098532 + .long 3221225472 + .long 1009970207 + .long 1663679671 + .long 1069640022 + .long 0 + .long 3220176896 + .long 2269920951 + .long 3219135740 + .long 3758096384 + .long 1014188597 + .long 3952756490 + .long 1069692402 + .long 0 + .long 3220176896 + .long 2569207790 + .long 3219157895 + .long 1073741824 + .long 1015699969 + .long 69903290 + .long 1069745867 + .long 0 + .long 3220176896 + .long 1297975695 + .long 3219179888 + .long 3221225472 + .long 1015600087 + .long 2678847490 + .long 1069800406 + .long 0 + .long 3220176896 + .long 1411074851 + .long 3219201715 + .long 1610612736 + .long 1016001083 + .long 2272832445 + .long 1069856013 + .long 0 + .long 3220176896 + .long 1675549513 + .long 3219223373 + .long 3221225472 + .long 1015541490 + .long 1539668340 + .long 1069912679 + .long 0 + .long 3220176896 + .long 967731400 + .long 3219244859 + .long 536870912 + .long 3163235805 + .long 2482246777 + .long 1069970395 + .long 0 + .long 3220176896 + .long 2570316633 + .long 3219266169 + .long 1610612736 + .long 1015261105 + .long 2129093113 + .long 1070029153 + .long 0 + .long 3220176896 + .long 1289556703 + .long 3219287301 + .long 536870912 + .long 1015405172 + .long 1129922991 + .long 1070088944 + .long 0 + .long 3220176896 + .long 637203434 + .long 3219308251 + .long 3221225472 + .long 1011960193 + .long 3761365757 + .long 1070149758 + .long 0 + .long 3220176896 + .long 4242632757 + .long 3219329015 + .long 536870912 + .long 1013906630 + .long 752919289 + .long 1070211588 + .long 0 + .long 3220176896 + .long 2969983475 + .long 3219349592 + .long 2684354560 + .long 1015151795 + .long 3652612115 + .long 1070274422 + .long 0 + .long 3220176896 + .long 689983673 + .long 3219369978 + .long 3758096384 + .long 3162390053 + .long 1883353036 + .long 1070338253 + .long 0 + .long 3220176896 + .long 1397053140 + .long 3219390169 + .long 1610612736 + .long 3162728726 + .long 1403757309 + .long 1070403070 + .long 0 + .long 3220176896 + .long 621354454 + .long 3219410163 + .long 536870912 + .long 3160934250 + .long 3239527685 + .long 1070468863 + .long 0 + .long 3220176896 + .long 2610628921 + .long 3219429956 + .long 1610612736 + .long 1015185121 + .long 3489768009 + .long 1070535623 + .long 0 + .long 3220176896 + .long 3152274921 + .long 3219449546 + .long 3758096384 + .long 3160654483 + .long 2371640770 + .long 3218072499 + .long 0 + .long 3219128320 + .long 2460177814 + .long 3219468930 + .long 2147483648 + .long 1014633195 + .long 2309668539 + .long 3218003836 + .long 0 + .long 3219128320 + .long 881650848 + .long 3219488105 + .long 2147483648 + .long 1015502624 + .long 2081278341 + .long 3217934237 + .long 0 + .long 3219128320 + .long 3194290572 + .long 3219507067 + .long 2147483648 + .long 3162532330 + .long 3753901657 + .long 3217863712 + .long 0 + .long 3219128320 + .long 1427975391 + .long 3219525815 + .long 1073741824 + .long 1014124979 + .long 1403691706 + .long 3217792273 + .long 0 + .long 3219128320 + .long 636516413 + .long 3219544345 + .long 3758096384 + .long 3163307364 + .long 2583490354 + .long 3217719929 + .long 0 + .long 3219128320 + .long 1719614413 + .long 3219562654 + .long 0 + .long 1015799092 + .long 2546065654 + .long 3217646692 + .long 0 + .long 3219128320 + .long 1424664751 + .long 3219580740 + .long 3221225472 + .long 1015921667 + .long 1416934267 + .long 3217572573 + .long 0 + .long 3219128320 + .long 938475414 + .long 3219598600 + .long 0 + .long 3162559727 + .long 4187227697 + .long 3217497582 + .long 0 + .long 3219128320 + .long 1594061409 + .long 3219616231 + .long 2147483648 + .long 3161837518 + .long 3526603391 + .long 3217421732 + .long 0 + .long 3219128320 + .long 577417135 + .long 3219633631 + .long 2684354560 + .long 1014035767 + .long 1250776663 + .long 3217345034 + .long 0 + .long 3219128320 + .long 3814135665 + .long 3219650796 + .long 3221225472 + .long 1015662808 + .long 4019165092 + .long 3217267498 + .long 0 + .long 3219128320 + .long 201299822 + .long 3219667726 + .long 3758096384 + .long 1014428704 + .long 1852581091 + .long 3217189138 + .long 0 + .long 3219128320 + .long 263859903 + .long 3219684416 + .long 0 + .long 1015208636 + .long 2485417816 + .long 3217109964 + .long 0 + .long 3219128320 + .long 1796544321 + .long 3219700864 + .long 536870912 + .long 1015203297 + .long 2586490530 + .long 3217028810 + .long 0 + .long 3219128320 + .long 2750387213 + .long 3219717068 + .long 2147483648 + .long 1013374889 + .long 1224902090 + .long 3216867281 + .long 0 + .long 3219128320 + .long 1234330619 + .long 3219733026 + .long 2684354560 + .long 3162756121 + .long 2285031318 + .long 3216704197 + .long 0 + .long 3219128320 + .long 4106737474 + .long 3219748734 + .long 2684354560 + .long 1015108729 + .long 3876290983 + .long 3216539583 + .long 0 + .long 3219128320 + .long 1207142209 + .long 3219764192 + .long 2147483648 + .long 1015221986 + .long 802660176 + .long 3216373465 + .long 0 + .long 3219128320 + .long 4012486548 + .long 3219779395 + .long 2684354560 + .long 3162185212 + .long 1726519029 + .long 3216205866 + .long 0 + .long 3219128320 + .long 2688952194 + .long 3219794343 + .long 0 + .long 1014048955 + .long 3382663878 + .long 3216036812 + .long 0 + .long 3219128320 + .long 453180130 + .long 3219809033 + .long 1073741824 + .long 1014927633 + .long 2598800519 + .long 3215750067 + .long 0 + .long 3219128320 + .long 688824739 + .long 3219823462 + .long 3758096384 + .long 3157915184 + .long 1038988426 + .long 3215406294 + .long 0 + .long 3219128320 + .long 2653017361 + .long 3219837628 + .long 0 + .long 1015316414 + .long 1102361128 + .long 3215059765 + .long 0 + .long 3219128320 + .long 1477771776 + .long 3219851530 + .long 536870912 + .long 1015621338 + .long 2880516564 + .long 3214487049 + .long 0 + .long 3219128320 + .long 1056266002 + .long 3219865165 + .long 2684354560 + .long 1015985848 + .long 1220541286 + .long 3213681126 + .long 0 + .long 3219128320 + .long 1159294526 + .long 3219878531 + .long 536870912 + .long 1015793311 + .long 1279178457 + .long 3211590791 + .long 0 + .long 3219128320 + .long 1731563730 + .long 3219891626 + .long 536870912 + .long 3163023950 + .long 31019393 + .long 1065162441 + .long 0 + .long 3219128320 + .long 2892993834 + .long 3219904448 + .long 536870912 + .long 1015555495 + .long 3506991783 + .long 1066548842 + .long 0 + .long 3219128320 + .long 645027145 + .long 3219916996 + .long 3221225472 + .long 3160085887 + .long 2140183630 + .long 1067272748 + .long 0 + .long 3219128320 + .long 4051746225 + .long 3219929266 + .long 1610612736 + .long 1014423729 + .long 600368053 + .long 1067725893 + .long 0 + .long 3219128320 + .long 881357723 + .long 3219941259 + .long 3221225472 + .long 3161294538 + .long 913431823 + .long 1068092555 + .long 0 + .long 3219128320 + .long 557060597 + .long 3219952971 + .long 0 + .long 1012071286 + .long 1073154251 + .long 1068461489 + .long 0 + .long 3219128320 + .long 4093443164 + .long 3219964400 + .long 536870912 + .long 3162396513 + .long 3631910143 + .long 1068665791 + .long 0 + .long 3219128320 + .long 4097623923 + .long 3219975546 + .long 2684354560 + .long 1012824939 + .long 1380647130 + .long 1068852447 + .long 0 + .long 3219128320 + .long 1950234076 + .long 3219986407 + .long 536870912 + .long 1011941850 + .long 4049357271 + .long 1069040154 + .long 0 + .long 3219128320 + .long 3511535930 + .long 3219996980 + .long 2147483648 + .long 1015344978 + .long 1896722595 + .long 1069228886 + .long 0 + .long 3219128320 + .long 1942611595 + .long 3220007265 + .long 3221225472 + .long 1014926433 + .long 1699043957 + .long 1069418613 + .long 0 + .long 3219128320 + .long 3476196678 + .long 3220017259 + .long 0 + .long 3161741286 + .long 3296146332 + .long 3216969380 + .long 0 + .long 3218079744 + .long 1647878299 + .long 3220026962 + .long 3758096384 + .long 1014685415 + .long 3286832763 + .long 3216777748 + .long 0 + .long 3218079744 + .long 3066872380 + .long 3220036371 + .long 3221225472 + .long 3163044919 + .long 1962712856 + .long 3216585207 + .long 0 + .long 3218079744 + .long 1647164971 + .long 3220045486 + .long 2147483648 + .long 1015354602 + .long 3601629044 + .long 3216391785 + .long 0 + .long 3218079744 + .long 83265253 + .long 3220054305 + .long 1610612736 + .long 1015026887 + .long 165911977 + .long 3216197513 + .long 0 + .long 3218079744 + .long 1261158782 + .long 3220062826 + .long 2147483648 + .long 3163195192 + .long 1348311045 + .long 3216002418 + .long 0 + .long 3218079744 + .long 3964199186 + .long 3220071048 + .long 3758096384 + .long 1013017430 + .long 386665102 + .long 3215630470 + .long 0 + .long 3218079744 + .long 2873938189 + .long 3220078971 + .long 1610612736 + .long 1014827774 + .long 1991047213 + .long 3215237169 + .long 0 + .long 3218079744 + .long 1455828442 + .long 3220086593 + .long 3758096384 + .long 3162988721 + .long 4107121629 + .long 3214750787 + .long 0 + .long 3218079744 + .long 3370060660 + .long 3220093912 + .long 1610612736 + .long 3162270860 + .long 723478390 + .long 3213958438 + .long 0 + .long 3218079744 + .long 3882371427 + .long 3220100928 + .long 2147483648 + .long 3162407623 + .long 2382326656 + .long 3212045827 + .long 0 + .long 3218079744 + .long 2749658050 + .long 3220107640 + .long 1610612736 + .long 3162910986 + .long 2614369450 + .long 1065140432 + .long 0 + .long 3218079744 + .long 4220661975 + .long 3220114046 + .long 3221225472 + .long 3161795706 + .long 3587565429 + .long 1066624384 + .long 0 + .long 3218079744 + .long 4151720666 + .long 3220120146 + .long 0 + .long 1015155896 + .long 2886567144 + .long 1067426796 + .long 0 + .long 3218079744 + .long 2892293513 + .long 3220125939 + .long 2684354560 + .long 1014856623 + .long 1765797566 + .long 1067840895 + .long 0 + .long 3218079744 + .long 990588717 + .long 3220131424 + .long 3758096384 + .long 1014558209 + .long 240740309 + .long 1068244255 + .long 0 + .long 3218079744 + .long 3489094832 + .long 3220136599 + .long 536870912 + .long 3161809431 + .long 2034433221 + .long 3215832935 + .long 0 + .long 3217031168 + .long 2745245815 + .long 3220141465 + .long 3221225472 + .long 3163049777 + .long 304938777 + .long 3215427665 + .long 0 + .long 3217031168 + .long 4201728937 + .long 3220146020 + .long 1610612736 + .long 3162157654 + .long 3299146087 + .long 3215021530 + .long 0 + .long 3217031168 + .long 617154971 + .long 3220150265 + .long 3758096384 + .long 1015950048 + .long 1953696209 + .long 3214295171 + .long 0 + .long 3217031168 + .long 2131272983 + .long 3220154197 + .long 3221225472 + .long 1015521448 + .long 3987691371 + .long 3213074188 + .long 0 + .long 3217031168 + .long 1905645377 + .long 3220157817 + .long 1610612736 + .long 3161571244 + .long 718380601 + .long 1063597621 + .long 0 + .long 3217031168 + .long 1893834707 + .long 3220161124 + .long 1610612736 + .long 3162631302 + .long 3272206680 + .long 1066288081 + .long 0 + .long 3217031168 + .long 4251821691 + .long 3220164117 + .long 2147483648 + .long 1014357359 + .long 257503056 + .long 1067164005 + .long 0 + .long 3217031168 + .long 2748392742 + .long 3220166797 + .long 536870912 + .long 1015578102 + .long 711626851 + .long 3214400320 + .long 0 + .long 3215982592 + .long 4240268041 + .long 3220169162 + .long 536870912 + .long 3161072611 + .long 2523975598 + .long 3213273348 + .long 0 + .long 3215982592 + .long 2902558778 + .long 3220171213 + .long 3221225472 + .long 3160744428 + .long 3237733378 + .long 1062425136 + .long 0 + .long 3215982592 + .long 1703834029 + .long 3220172949 + .long 3758096384 + .long 3162512012 + .long 1003003824 + .long 1066107496 + .long 0 + .long 3215982592 + .long 3816385918 + .long 3220174369 + .long 536870912 + .long 1013733308 + .long 2896342633 + .long 3212231467 + .long 0 + .long 3214934016 + .long 4026464093 + .long 3220175474 + .long 3221225472 + .long 1015592141 + .long 561145352 + .long 1065056936 + .long 0 + .long 3214934016 + .long 1619315981 + .long 3220176264 + .long 1073741824 + .long 1015100749 + .long 210035182 + .long 1064007864 + .long 0 + .long 3213885440 + .long 379294427 + .long 3220176738 + .long 3221225472 + .long 3162889635 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3220176896 + .long 0 + .long 0 + .long 210035182 + .long 3211491512 + .long 0 + .long 1066401792 + .long 379294427 + .long 3220176738 + .long 3221225472 + .long 3162889635 + .long 561145352 + .long 3212540584 + .long 0 + .long 1067450368 + .long 1619315981 + .long 3220176264 + .long 1073741824 + .long 1015100749 + .long 2896342633 + .long 1064747819 + .long 0 + .long 1067450368 + .long 4026464093 + .long 3220175474 + .long 3221225472 + .long 1015592141 + .long 1003003824 + .long 3213591144 + .long 0 + .long 1068498944 + .long 3816385918 + .long 3220174369 + .long 536870912 + .long 1013733308 + .long 3237733378 + .long 3209908784 + .long 0 + .long 1068498944 + .long 1703834029 + .long 3220172949 + .long 3758096384 + .long 3162512012 + .long 2523975598 + .long 1065789700 + .long 0 + .long 1068498944 + .long 2902558778 + .long 3220171213 + .long 3221225472 + .long 3160744428 + .long 711626851 + .long 1066916672 + .long 0 + .long 1068498944 + .long 4240268041 + .long 3220169162 + .long 536870912 + .long 3161072611 + .long 257503056 + .long 3214647653 + .long 0 + .long 1069547520 + .long 2748392742 + .long 3220166797 + .long 536870912 + .long 1015578102 + .long 3272206680 + .long 3213771729 + .long 0 + .long 1069547520 + .long 4251821691 + .long 3220164117 + .long 2147483648 + .long 1014357359 + .long 718380601 + .long 3211081269 + .long 0 + .long 1069547520 + .long 1893834707 + .long 3220161124 + .long 1610612736 + .long 3162631302 + .long 3987691371 + .long 1065590540 + .long 0 + .long 1069547520 + .long 1905645377 + .long 3220157817 + .long 1610612736 + .long 3161571244 + .long 1953696209 + .long 1066811523 + .long 0 + .long 1069547520 + .long 2131272983 + .long 3220154197 + .long 3221225472 + .long 1015521448 + .long 3299146087 + .long 1067537882 + .long 0 + .long 1069547520 + .long 617154971 + .long 3220150265 + .long 3758096384 + .long 1015950048 + .long 304938777 + .long 1067944017 + .long 0 + .long 1069547520 + .long 4201728937 + .long 3220146020 + .long 1610612736 + .long 3162157654 + .long 2034433221 + .long 1068349287 + .long 0 + .long 1069547520 + .long 2745245815 + .long 3220141465 + .long 3221225472 + .long 3163049777 + .long 240740309 + .long 3215727903 + .long 0 + .long 1070596096 + .long 3489094832 + .long 3220136599 + .long 536870912 + .long 3161809431 + .long 1765797566 + .long 3215324543 + .long 0 + .long 1070596096 + .long 990588717 + .long 3220131424 + .long 3758096384 + .long 1014558209 + .long 2886567144 + .long 3214910444 + .long 0 + .long 1070596096 + .long 2892293513 + .long 3220125939 + .long 2684354560 + .long 1014856623 + .long 3587565429 + .long 3214108032 + .long 0 + .long 1070596096 + .long 4151720666 + .long 3220120146 + .long 0 + .long 1015155896 + .long 2614369450 + .long 3212624080 + .long 0 + .long 1070596096 + .long 4220661975 + .long 3220114046 + .long 3221225472 + .long 3161795706 + .long 2382326656 + .long 1064562179 + .long 0 + .long 1070596096 + .long 2749658050 + .long 3220107640 + .long 1610612736 + .long 3162910986 + .long 723478390 + .long 1066474790 + .long 0 + .long 1070596096 + .long 3882371427 + .long 3220100928 + .long 2147483648 + .long 3162407623 + .long 4107121629 + .long 1067267139 + .long 0 + .long 1070596096 + .long 3370060660 + .long 3220093912 + .long 1610612736 + .long 3162270860 + .long 1991047213 + .long 1067753521 + .long 0 + .long 1070596096 + .long 1455828442 + .long 3220086593 + .long 3758096384 + .long 3162988721 + .long 386665102 + .long 1068146822 + .long 0 + .long 1070596096 + .long 2873938189 + .long 3220078971 + .long 1610612736 + .long 1014827774 + .long 1348311045 + .long 1068518770 + .long 0 + .long 1070596096 + .long 3964199186 + .long 3220071048 + .long 3758096384 + .long 1013017430 + .long 165911977 + .long 1068713865 + .long 0 + .long 1070596096 + .long 1261158782 + .long 3220062826 + .long 2147483648 + .long 3163195192 + .long 3601629044 + .long 1068908137 + .long 0 + .long 1070596096 + .long 83265253 + .long 3220054305 + .long 1610612736 + .long 1015026887 + .long 1962712856 + .long 1069101559 + .long 0 + .long 1070596096 + .long 1647164971 + .long 3220045486 + .long 2147483648 + .long 1015354602 + .long 3286832763 + .long 1069294100 + .long 0 + .long 1070596096 + .long 3066872380 + .long 3220036371 + .long 3221225472 + .long 3163044919 + .long 3296146332 + .long 1069485732 + .long 0 + .long 1070596096 + .long 1647878299 + .long 3220026962 + .long 3758096384 + .long 1014685415 + .long 1699043957 + .long 3216902261 + .long 0 + .long 1071644672 + .long 3476196678 + .long 3220017259 + .long 0 + .long 3161741286 + .long 1896722595 + .long 3216712534 + .long 0 + .long 1071644672 + .long 1942611595 + .long 3220007265 + .long 3221225472 + .long 1014926433 + .long 4049357271 + .long 3216523802 + .long 0 + .long 1071644672 + .long 3511535930 + .long 3219996980 + .long 2147483648 + .long 1015344978 + .long 1380647130 + .long 3216336095 + .long 0 + .long 1071644672 + .long 1950234076 + .long 3219986407 + .long 536870912 + .long 1011941850 + .long 3631910143 + .long 3216149439 + .long 0 + .long 1071644672 + .long 4097623923 + .long 3219975546 + .long 2684354560 + .long 1012824939 + .long 1073154251 + .long 3215945137 + .long 0 + .long 1071644672 + .long 4093443164 + .long 3219964400 + .long 536870912 + .long 3162396513 + .long 913431823 + .long 3215576203 + .long 0 + .long 1071644672 + .long 557060597 + .long 3219952971 + .long 0 + .long 1012071286 + .long 600368053 + .long 3215209541 + .long 0 + .long 1071644672 + .long 881357723 + .long 3219941259 + .long 3221225472 + .long 3161294538 + .long 2140183630 + .long 3214756396 + .long 0 + .long 1071644672 + .long 4051746225 + .long 3219929266 + .long 1610612736 + .long 1014423729 + .long 3506991783 + .long 3214032490 + .long 0 + .long 1071644672 + .long 645027145 + .long 3219916996 + .long 3221225472 + .long 3160085887 + .long 31019393 + .long 3212646089 + .long 0 + .long 1071644672 + .long 2892993834 + .long 3219904448 + .long 536870912 + .long 1015555495 + .long 1279178457 + .long 1064107143 + .long 0 + .long 1071644672 + .long 1731563730 + .long 3219891626 + .long 536870912 + .long 3163023950 + .long 1220541286 + .long 1066197478 + .long 0 + .long 1071644672 + .long 1159294526 + .long 3219878531 + .long 536870912 + .long 1015793311 + .long 2880516564 + .long 1067003401 + .long 0 + .long 1071644672 + .long 1056266002 + .long 3219865165 + .long 2684354560 + .long 1015985848 + .long 1102361128 + .long 1067576117 + .long 0 + .long 1071644672 + .long 1477771776 + .long 3219851530 + .long 536870912 + .long 1015621338 + .long 1038988426 + .long 1067922646 + .long 0 + .long 1071644672 + .long 2653017361 + .long 3219837628 + .long 0 + .long 1015316414 + .long 2598800519 + .long 1068266419 + .long 0 + .long 1071644672 + .long 688824739 + .long 3219823462 + .long 3758096384 + .long 3157915184 + .long 3382663878 + .long 1068553164 + .long 0 + .long 1071644672 + .long 453180130 + .long 3219809033 + .long 1073741824 + .long 1014927633 + .long 1726519029 + .long 1068722218 + .long 0 + .long 1071644672 + .long 2688952194 + .long 3219794343 + .long 0 + .long 1014048955 + .long 802660176 + .long 1068889817 + .long 0 + .long 1071644672 + .long 4012486548 + .long 3219779395 + .long 2684354560 + .long 3162185212 + .long 3876290983 + .long 1069055935 + .long 0 + .long 1071644672 + .long 1207142209 + .long 3219764192 + .long 2147483648 + .long 1015221986 + .long 2285031318 + .long 1069220549 + .long 0 + .long 1071644672 + .long 4106737474 + .long 3219748734 + .long 2684354560 + .long 1015108729 + .long 1224902090 + .long 1069383633 + .long 0 + .long 1071644672 + .long 1234330619 + .long 3219733026 + .long 2684354560 + .long 3162756121 + .long 2586490530 + .long 1069545162 + .long 0 + .long 1071644672 + .long 2750387213 + .long 3219717068 + .long 2147483648 + .long 1013374889 + .long 2485417816 + .long 1069626316 + .long 0 + .long 1071644672 + .long 1796544321 + .long 3219700864 + .long 536870912 + .long 1015203297 + .long 1852581091 + .long 1069705490 + .long 0 + .long 1071644672 + .long 263859903 + .long 3219684416 + .long 0 + .long 1015208636 + .long 4019165092 + .long 1069783850 + .long 0 + .long 1071644672 + .long 201299822 + .long 3219667726 + .long 3758096384 + .long 1014428704 + .long 1250776663 + .long 1069861386 + .long 0 + .long 1071644672 + .long 3814135665 + .long 3219650796 + .long 3221225472 + .long 1015662808 + .long 3526603391 + .long 1069938084 + .long 0 + .long 1071644672 + .long 577417135 + .long 3219633631 + .long 2684354560 + .long 1014035767 + .long 4187227697 + .long 1070013934 + .long 0 + .long 1071644672 + .long 1594061409 + .long 3219616231 + .long 2147483648 + .long 3161837518 + .long 1416934267 + .long 1070088925 + .long 0 + .long 1071644672 + .long 938475414 + .long 3219598600 + .long 0 + .long 3162559727 + .long 2546065654 + .long 1070163044 + .long 0 + .long 1071644672 + .long 1424664751 + .long 3219580740 + .long 3221225472 + .long 1015921667 + .long 2583490354 + .long 1070236281 + .long 0 + .long 1071644672 + .long 1719614413 + .long 3219562654 + .long 0 + .long 1015799092 + .long 1403691706 + .long 1070308625 + .long 0 + .long 1071644672 + .long 636516413 + .long 3219544345 + .long 3758096384 + .long 3163307364 + .long 3753901657 + .long 1070380064 + .long 0 + .long 1071644672 + .long 1427975391 + .long 3219525815 + .long 1073741824 + .long 1014124979 + .long 2081278341 + .long 1070450589 + .long 0 + .long 1071644672 + .long 3194290572 + .long 3219507067 + .long 2147483648 + .long 3162532330 + .long 2309668539 + .long 1070520188 + .long 0 + .long 1071644672 + .long 881650848 + .long 3219488105 + .long 2147483648 + .long 1015502624 + .long 2371640770 + .long 1070588851 + .long 0 + .long 1071644672 + .long 2460177814 + .long 3219468930 + .long 2147483648 + .long 1014633195 + .long 3489768009 + .long 3218019271 + .long 0 + .long 1072693248 + .long 3152274921 + .long 3219449546 + .long 3758096384 + .long 3160654483 + .long 3239527685 + .long 3217952511 + .long 0 + .long 1072693248 + .long 2610628921 + .long 3219429956 + .long 1610612736 + .long 1015185121 + .long 1403757309 + .long 3217886718 + .long 0 + .long 1072693248 + .long 621354454 + .long 3219410163 + .long 536870912 + .long 3160934250 + .long 1883353036 + .long 3217821901 + .long 0 + .long 1072693248 + .long 1397053140 + .long 3219390169 + .long 1610612736 + .long 3162728726 + .long 3652612115 + .long 3217758070 + .long 0 + .long 1072693248 + .long 689983673 + .long 3219369978 + .long 3758096384 + .long 3162390053 + .long 752919289 + .long 3217695236 + .long 0 + .long 1072693248 + .long 2969983475 + .long 3219349592 + .long 2684354560 + .long 1015151795 + .long 3761365757 + .long 3217633406 + .long 0 + .long 1072693248 + .long 4242632757 + .long 3219329015 + .long 536870912 + .long 1013906630 + .long 1129922991 + .long 3217572592 + .long 0 + .long 1072693248 + .long 637203434 + .long 3219308251 + .long 3221225472 + .long 1011960193 + .long 2129093113 + .long 3217512801 + .long 0 + .long 1072693248 + .long 1289556703 + .long 3219287301 + .long 536870912 + .long 1015405172 + .long 2482246777 + .long 3217454043 + .long 0 + .long 1072693248 + .long 2570316633 + .long 3219266169 + .long 1610612736 + .long 1015261105 + .long 1539668340 + .long 3217396327 + .long 0 + .long 1072693248 + .long 967731400 + .long 3219244859 + .long 536870912 + .long 3163235805 + .long 2272832445 + .long 3217339661 + .long 0 + .long 1072693248 + .long 1675549513 + .long 3219223373 + .long 3221225472 + .long 1015541490 + .long 2678847490 + .long 3217284054 + .long 0 + .long 1072693248 + .long 1411074851 + .long 3219201715 + .long 1610612736 + .long 1016001083 + .long 69903290 + .long 3217229515 + .long 0 + .long 1072693248 + .long 1297975695 + .long 3219179888 + .long 3221225472 + .long 1015600087 + .long 3952756490 + .long 3217176050 + .long 0 + .long 1072693248 + .long 2569207790 + .long 3219157895 + .long 1073741824 + .long 1015699969 + .long 1663679671 + .long 3217123670 + .long 0 + .long 1072693248 + .long 2269920951 + .long 3219135740 + .long 3758096384 + .long 1014188597 + .long 1312926554 + .long 3217072381 + .long 0 + .long 1072693248 + .long 3690502842 + .long 3219098532 + .long 3221225472 + .long 1009970207 + .long 3429717432 + .long 3217013214 + .long 0 + .long 1072693248 + .long 1391425750 + .long 3219053593 + .long 3221225472 + .long 1014878455 + .long 1945768569 + .long 3216915048 + .long 0 + .long 1072693248 + .long 939980347 + .long 3219008349 + .long 0 + .long 3160280457 + .long 1539072807 + .long 3216819110 + .long 0 + .long 1072693248 + .long 1535566729 + .long 3218962807 + .long 2147483648 + .long 3161805036 + .long 4133449816 + .long 3216725414 + .long 0 + .long 1072693248 + .long 2570175582 + .long 3218916974 + .long 1073741824 + .long 3159786766 + .long 1612193054 + .long 3216633976 + .long 0 + .long 1072693248 + .long 3623952103 + .long 3218870857 + .long 2684354560 + .long 1014502314 + .long 1578746984 + .long 3216544808 + .long 0 + .long 1072693248 + .long 165764288 + .long 3218824464 + .long 3221225472 + .long 3160781666 + .long 1577996576 + .long 3216457924 + .long 0 + .long 1072693248 + .long 728580042 + .long 3218777800 + .long 1610612736 + .long 1014849296 + .long 1972483635 + .long 3216373337 + .long 0 + .long 1072693248 + .long 1135144330 + .long 3218730873 + .long 536870912 + .long 3160857217 + .long 1638976426 + .long 3216291060 + .long 0 + .long 1072693248 + .long 1673302999 + .long 3218683690 + .long 2147483648 + .long 3160835121 + .long 2255197647 + .long 3216211105 + .long 0 + .long 1072693248 + .long 2796464483 + .long 3218636258 + .long 3221225472 + .long 1013394669 + .long 3996842794 + .long 3216133484 + .long 0 + .long 1072693248 + .long 824036583 + .long 3218588585 + .long 0 + .long 3155796978 + .long 1234824733 + .long 3216058210 + .long 0 + .long 1072693248 + .long 821708191 + .long 3218540677 + .long 3758096384 + .long 1014254361 + .long 4002549419 + .long 3215985292 + .long 0 + .long 1072693248 + .long 3711903686 + .long 3218492541 + .long 1073741824 + .long 3159428395 + .long 2962723252 + .long 3215846895 + .long 0 + .long 1072693248 + .long 1974149085 + .long 3218444186 + .long 3221225472 + .long 1008664000 + .long 1296295961 + .long 3215710555 + .long 0 + .long 1072693248 + .long 1115219818 + .long 3218395618 + .long 0 + .long 3160555890 + .long 997322465 + .long 3215578993 + .long 0 + .long 1072693248 + .long 2484561409 + .long 3218346844 + .long 1073741824 + .long 3161508220 + .long 1261629236 + .long 3215452229 + .long 0 + .long 1072693248 + .long 3269558610 + .long 3218297872 + .long 536870912 + .long 1014221568 + .long 2476548698 + .long 3215330282 + .long 0 + .long 1072693248 + .long 785751814 + .long 3218248710 + .long 2684354560 + .long 1014354573 + .long 1913604284 + .long 3215213171 + .long 0 + .long 1072693248 + .long 1062001470 + .long 3218199364 + .long 0 + .long 1013391572 + .long 2306566604 + .long 3215100913 + .long 0 + .long 1072693248 + .long 1655830135 + .long 3218149842 + .long 0 + .long 3161990338 + .long 3250111450 + .long 3214993525 + .long 0 + .long 1072693248 + .long 238550446 + .long 3218100152 + .long 2684354560 + .long 1006899917 + .long 2377770267 + .long 3214848032 + .long 0 + .long 1072693248 + .long 2065784603 + .long 3218020857 + .long 3758096384 + .long 1013198318 + .long 288924873 + .long 3214652833 + .long 0 + .long 1072693248 + .long 3846521617 + .long 3217920847 + .long 536870912 + .long 3160890258 + .long 1935888103 + .long 3214467466 + .long 0 + .long 1072693248 + .long 1786662755 + .long 3217820546 + .long 2147483648 + .long 1008398659 + .long 2660899430 + .long 3214291960 + .long 0 + .long 1072693248 + .long 632292433 + .long 3217719968 + .long 3758096384 + .long 1013479685 + .long 18115067 + .long 3214126342 + .long 0 + .long 1072693248 + .long 1013556747 + .long 3217619128 + .long 2684354560 + .long 1013083417 + .long 2346447124 + .long 3213970635 + .long 0 + .long 1072693248 + .long 3729833777 + .long 3217518041 + .long 3758096384 + .long 3160528366 + .long 1672287667 + .long 3213764289 + .long 0 + .long 1072693248 + .long 1149976518 + .long 3217416724 + .long 1610612736 + .long 3160748543 + .long 3451754846 + .long 3213492662 + .long 0 + .long 1072693248 + .long 2972270170 + .long 3217315190 + .long 1073741824 + .long 1012041122 + .long 1037482584 + .long 3213240992 + .long 0 + .long 1072693248 + .long 1854824762 + .long 3217213456 + .long 2684354560 + .long 3159437312 + .long 2592747447 + .long 3213009315 + .long 0 + .long 1072693248 + .long 3470456183 + .long 3217111536 + .long 1073741824 + .long 1013261123 + .long 2402293340 + .long 3212758471 + .long 0 + .long 1072693248 + .long 1453945614 + .long 3216987726 + .long 1610612736 + .long 3158976260 + .long 1227670166 + .long 3212375297 + .long 0 + .long 1072693248 + .long 3349070549 + .long 3216783237 + .long 3758096384 + .long 1009054621 + .long 393047345 + .long 3212032302 + .long 0 + .long 1072693248 + .long 3156849708 + .long 3216578470 + .long 3221225472 + .long 1010706200 + .long 1118107366 + .long 3211670787 + .long 0 + .long 1072693248 + .long 177906713 + .long 3216373456 + .long 3221225472 + .long 1011826722 + .long 4269262315 + .long 3211145810 + .long 0 + .long 1072693248 + .long 2462980598 + .long 3216168224 + .long 2684354560 + .long 1011458184 + .long 3810305407 + .long 3210663220 + .long 0 + .long 1072693248 + .long 2046304480 + .long 3215943022 + .long 3758096384 + .long 1008919019 + .long 220529721 + .long 3209935929 + .long 0 + .long 1072693248 + .long 4044216340 + .long 3215531877 + .long 0 + .long 1009324733 + .long 69373323 + .long 3209049152 + .long 0 + .long 1072693248 + .long 1972655565 + .long 3215120485 + .long 1073741824 + .long 3156641526 + .long 3650591271 + .long 3207838971 + .long 0 + .long 1072693248 + .long 4154680958 + .long 3214483797 + .long 0 + .long 1006312803 + .long 2376373521 + .long 3205741868 + .long 0 + .long 1072693248 + .long 4242458500 + .long 3213435345 + .long 2684354560 + .long 3156838286 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2376373521 + .long 3205741868 + .long 0 + .long 1072693248 + .long 4242458500 + .long 1065951697 + .long 2684354560 + .long 1009354638 + .long 3650591271 + .long 3207838971 + .long 0 + .long 1072693248 + .long 4154680958 + .long 1067000149 + .long 0 + .long 3153796451 + .long 69373323 + .long 3209049152 + .long 0 + .long 1072693248 + .long 1972655565 + .long 1067636837 + .long 1073741824 + .long 1009157878 + .long 220529721 + .long 3209935929 + .long 0 + .long 1072693248 + .long 4044216340 + .long 1068048229 + .long 0 + .long 3156808381 + .long 3810305407 + .long 3210663220 + .long 0 + .long 1072693248 + .long 2046304480 + .long 1068459374 + .long 3758096384 + .long 3156402667 + .long 4269262315 + .long 3211145810 + .long 0 + .long 1072693248 + .long 2462980598 + .long 1068684576 + .long 2684354560 + .long 3158941832 + .long 1118107366 + .long 3211670787 + .long 0 + .long 1072693248 + .long 177906713 + .long 1068889808 + .long 3221225472 + .long 3159310370 + .long 393047345 + .long 3212032302 + .long 0 + .long 1072693248 + .long 3156849708 + .long 1069094822 + .long 3221225472 + .long 3158189848 + .long 1227670166 + .long 3212375297 + .long 0 + .long 1072693248 + .long 3349070549 + .long 1069299589 + .long 3758096384 + .long 3156538269 + .long 2402293340 + .long 3212758471 + .long 0 + .long 1072693248 + .long 1453945614 + .long 1069504078 + .long 1610612736 + .long 1011492612 + .long 2592747447 + .long 3213009315 + .long 0 + .long 1072693248 + .long 3470456183 + .long 1069627888 + .long 1073741824 + .long 3160744771 + .long 1037482584 + .long 3213240992 + .long 0 + .long 1072693248 + .long 1854824762 + .long 1069729808 + .long 2684354560 + .long 1011953664 + .long 3451754846 + .long 3213492662 + .long 0 + .long 1072693248 + .long 2972270170 + .long 1069831542 + .long 1073741824 + .long 3159524770 + .long 1672287667 + .long 3213764289 + .long 0 + .long 1072693248 + .long 1149976518 + .long 1069933076 + .long 1610612736 + .long 1013264895 + .long 2346447124 + .long 3213970635 + .long 0 + .long 1072693248 + .long 3729833777 + .long 1070034393 + .long 3758096384 + .long 1013044718 + .long 18115067 + .long 3214126342 + .long 0 + .long 1072693248 + .long 1013556747 + .long 1070135480 + .long 2684354560 + .long 3160567065 + .long 2660899430 + .long 3214291960 + .long 0 + .long 1072693248 + .long 632292433 + .long 1070236320 + .long 3758096384 + .long 3160963333 + .long 1935888103 + .long 3214467466 + .long 0 + .long 1072693248 + .long 1786662755 + .long 1070336898 + .long 2147483648 + .long 3155882307 + .long 288924873 + .long 3214652833 + .long 0 + .long 1072693248 + .long 3846521617 + .long 1070437199 + .long 536870912 + .long 1013406610 + .long 2377770267 + .long 3214848032 + .long 0 + .long 1072693248 + .long 2065784603 + .long 1070537209 + .long 3758096384 + .long 3160681966 + .long 3250111450 + .long 3214993525 + .long 0 + .long 1072693248 + .long 238550446 + .long 1070616504 + .long 2684354560 + .long 3154383565 + .long 2306566604 + .long 3215100913 + .long 0 + .long 1072693248 + .long 1655830135 + .long 1070666194 + .long 0 + .long 1014506690 + .long 1913604284 + .long 3215213171 + .long 0 + .long 1072693248 + .long 1062001470 + .long 1070715716 + .long 0 + .long 3160875220 + .long 2476548698 + .long 3215330282 + .long 0 + .long 1072693248 + .long 785751814 + .long 1070765062 + .long 2684354560 + .long 3161838221 + .long 1261629236 + .long 3215452229 + .long 0 + .long 1072693248 + .long 3269558610 + .long 1070814224 + .long 536870912 + .long 3161705216 + .long 997322465 + .long 3215578993 + .long 0 + .long 1072693248 + .long 2484561409 + .long 1070863196 + .long 1073741824 + .long 1014024572 + .long 1296295961 + .long 3215710555 + .long 0 + .long 1072693248 + .long 1115219818 + .long 1070911970 + .long 0 + .long 1013072242 + .long 2962723252 + .long 3215846895 + .long 0 + .long 1072693248 + .long 1974149085 + .long 1070960538 + .long 3221225472 + .long 3156147648 + .long 4002549419 + .long 3215985292 + .long 0 + .long 1072693248 + .long 3711903686 + .long 1071008893 + .long 1073741824 + .long 1011944747 + .long 1234824733 + .long 3216058210 + .long 0 + .long 1072693248 + .long 821708191 + .long 1071057029 + .long 3758096384 + .long 3161738009 + .long 3996842794 + .long 3216133484 + .long 0 + .long 1072693248 + .long 824036583 + .long 1071104937 + .long 0 + .long 1008313330 + .long 2255197647 + .long 3216211105 + .long 0 + .long 1072693248 + .long 2796464483 + .long 1071152610 + .long 3221225472 + .long 3160878317 + .long 1638976426 + .long 3216291060 + .long 0 + .long 1072693248 + .long 1673302999 + .long 1071200042 + .long 2147483648 + .long 1013351473 + .long 1972483635 + .long 3216373337 + .long 0 + .long 1072693248 + .long 1135144330 + .long 1071247225 + .long 536870912 + .long 1013373569 + .long 1577996576 + .long 3216457924 + .long 0 + .long 1072693248 + .long 728580042 + .long 1071294152 + .long 1610612736 + .long 3162332944 + .long 1578746984 + .long 3216544808 + .long 0 + .long 1072693248 + .long 165764288 + .long 1071340816 + .long 3221225472 + .long 1013298018 + .long 1612193054 + .long 3216633976 + .long 0 + .long 1072693248 + .long 3623952103 + .long 1071387209 + .long 2684354560 + .long 3161985962 + .long 4133449816 + .long 3216725414 + .long 0 + .long 1072693248 + .long 2570175582 + .long 1071433326 + .long 1073741824 + .long 1012303118 + .long 1539072807 + .long 3216819110 + .long 0 + .long 1072693248 + .long 1535566729 + .long 1071479159 + .long 2147483648 + .long 1014321388 + .long 1945768569 + .long 3216915048 + .long 0 + .long 1072693248 + .long 939980347 + .long 1071524701 + .long 0 + .long 1012796809 + .long 3429717432 + .long 3217013214 + .long 0 + .long 1072693248 + .long 1391425750 + .long 1071569945 + .long 3221225472 + .long 3162362103 + .long 1312926554 + .long 3217072381 + .long 0 + .long 1072693248 + .long 3690502842 + .long 1071614884 + .long 3221225472 + .long 3157453855 + .long 1663679671 + .long 3217123670 + .long 0 + .long 1072693248 + .long 2269920951 + .long 1071652092 + .long 3758096384 + .long 3161672245 + .long 3952756490 + .long 3217176050 + .long 0 + .long 1072693248 + .long 2569207790 + .long 1071674247 + .long 1073741824 + .long 3163183617 + .long 69903290 + .long 3217229515 + .long 0 + .long 1072693248 + .long 1297975695 + .long 1071696240 + .long 3221225472 + .long 3163083735 + .long 2678847490 + .long 3217284054 + .long 0 + .long 1072693248 + .long 1411074851 + .long 1071718067 + .long 1610612736 + .long 3163484731 + .long 2272832445 + .long 3217339661 + .long 0 + .long 1072693248 + .long 1675549513 + .long 1071739725 + .long 3221225472 + .long 3163025138 + .long 1539668340 + .long 3217396327 + .long 0 + .long 1072693248 + .long 967731400 + .long 1071761211 + .long 536870912 + .long 1015752157 + .long 2482246777 + .long 3217454043 + .long 0 + .long 1072693248 + .long 2570316633 + .long 1071782521 + .long 1610612736 + .long 3162744753 + .long 2129093113 + .long 3217512801 + .long 0 + .long 1072693248 + .long 1289556703 + .long 1071803653 + .long 536870912 + .long 3162888820 + .long 1129922991 + .long 3217572592 + .long 0 + .long 1072693248 + .long 637203434 + .long 1071824603 + .long 3221225472 + .long 3159443841 + .long 3761365757 + .long 3217633406 + .long 0 + .long 1072693248 + .long 4242632757 + .long 1071845367 + .long 536870912 + .long 3161390278 + .long 752919289 + .long 3217695236 + .long 0 + .long 1072693248 + .long 2969983475 + .long 1071865944 + .long 2684354560 + .long 3162635443 + .long 3652612115 + .long 3217758070 + .long 0 + .long 1072693248 + .long 689983673 + .long 1071886330 + .long 3758096384 + .long 1014906405 + .long 1883353036 + .long 3217821901 + .long 0 + .long 1072693248 + .long 1397053140 + .long 1071906521 + .long 1610612736 + .long 1015245078 + .long 1403757309 + .long 3217886718 + .long 0 + .long 1072693248 + .long 621354454 + .long 1071926515 + .long 536870912 + .long 1013450602 + .long 3239527685 + .long 3217952511 + .long 0 + .long 1072693248 + .long 2610628921 + .long 1071946308 + .long 1610612736 + .long 3162668769 + .long 3489768009 + .long 3218019271 + .long 0 + .long 1072693248 + .long 3152274921 + .long 1071965898 + .long 3758096384 + .long 1013170835 + .long 2371640770 + .long 1070588851 + .long 0 + .long 1071644672 + .long 2460177814 + .long 1071985282 + .long 2147483648 + .long 3162116843 + .long 2309668539 + .long 1070520188 + .long 0 + .long 1071644672 + .long 881650848 + .long 1072004457 + .long 2147483648 + .long 3162986272 + .long 2081278341 + .long 1070450589 + .long 0 + .long 1071644672 + .long 3194290572 + .long 1072023419 + .long 2147483648 + .long 1015048682 + .long 3753901657 + .long 1070380064 + .long 0 + .long 1071644672 + .long 1427975391 + .long 1072042167 + .long 1073741824 + .long 3161608627 + .long 1403691706 + .long 1070308625 + .long 0 + .long 1071644672 + .long 636516413 + .long 1072060697 + .long 3758096384 + .long 1015823716 + .long 2583490354 + .long 1070236281 + .long 0 + .long 1071644672 + .long 1719614413 + .long 1072079006 + .long 0 + .long 3163282740 + .long 2546065654 + .long 1070163044 + .long 0 + .long 1071644672 + .long 1424664751 + .long 1072097092 + .long 3221225472 + .long 3163405315 + .long 1416934267 + .long 1070088925 + .long 0 + .long 1071644672 + .long 938475414 + .long 1072114952 + .long 0 + .long 1015076079 + .long 4187227697 + .long 1070013934 + .long 0 + .long 1071644672 + .long 1594061409 + .long 1072132583 + .long 2147483648 + .long 1014353870 + .long 3526603391 + .long 1069938084 + .long 0 + .long 1071644672 + .long 577417135 + .long 1072149983 + .long 2684354560 + .long 3161519415 + .long 1250776663 + .long 1069861386 + .long 0 + .long 1071644672 + .long 3814135665 + .long 1072167148 + .long 3221225472 + .long 3163146456 + .long 4019165092 + .long 1069783850 + .long 0 + .long 1071644672 + .long 201299822 + .long 1072184078 + .long 3758096384 + .long 3161912352 + .long 1852581091 + .long 1069705490 + .long 0 + .long 1071644672 + .long 263859903 + .long 1072200768 + .long 0 + .long 3162692284 + .long 2485417816 + .long 1069626316 + .long 0 + .long 1071644672 + .long 1796544321 + .long 1072217216 + .long 536870912 + .long 3162686945 + .long 2586490530 + .long 1069545162 + .long 0 + .long 1071644672 + .long 2750387213 + .long 1072233420 + .long 2147483648 + .long 3160858537 + .long 1224902090 + .long 1069383633 + .long 0 + .long 1071644672 + .long 1234330619 + .long 1072249378 + .long 2684354560 + .long 1015272473 + .long 2285031318 + .long 1069220549 + .long 0 + .long 1071644672 + .long 4106737474 + .long 1072265086 + .long 2684354560 + .long 3162592377 + .long 3876290983 + .long 1069055935 + .long 0 + .long 1071644672 + .long 1207142209 + .long 1072280544 + .long 2147483648 + .long 3162705634 + .long 802660176 + .long 1068889817 + .long 0 + .long 1071644672 + .long 4012486548 + .long 1072295747 + .long 2684354560 + .long 1014701564 + .long 1726519029 + .long 1068722218 + .long 0 + .long 1071644672 + .long 2688952194 + .long 1072310695 + .long 0 + .long 3161532603 + .long 3382663878 + .long 1068553164 + .long 0 + .long 1071644672 + .long 453180130 + .long 1072325385 + .long 1073741824 + .long 3162411281 + .long 2598800519 + .long 1068266419 + .long 0 + .long 1071644672 + .long 688824739 + .long 1072339814 + .long 3758096384 + .long 1010431536 + .long 1038988426 + .long 1067922646 + .long 0 + .long 1071644672 + .long 2653017361 + .long 1072353980 + .long 0 + .long 3162800062 + .long 1102361128 + .long 1067576117 + .long 0 + .long 1071644672 + .long 1477771776 + .long 1072367882 + .long 536870912 + .long 3163104986 + .long 2880516564 + .long 1067003401 + .long 0 + .long 1071644672 + .long 1056266002 + .long 1072381517 + .long 2684354560 + .long 3163469496 + .long 1220541286 + .long 1066197478 + .long 0 + .long 1071644672 + .long 1159294526 + .long 1072394883 + .long 536870912 + .long 3163276959 + .long 1279178457 + .long 1064107143 + .long 0 + .long 1071644672 + .long 1731563730 + .long 1072407978 + .long 536870912 + .long 1015540302 + .long 31019393 + .long 3212646089 + .long 0 + .long 1071644672 + .long 2892993834 + .long 1072420800 + .long 536870912 + .long 3163039143 + .long 3506991783 + .long 3214032490 + .long 0 + .long 1071644672 + .long 645027145 + .long 1072433348 + .long 3221225472 + .long 1012602239 + .long 2140183630 + .long 3214756396 + .long 0 + .long 1071644672 + .long 4051746225 + .long 1072445618 + .long 1610612736 + .long 3161907377 + .long 600368053 + .long 3215209541 + .long 0 + .long 1071644672 + .long 881357723 + .long 1072457611 + .long 3221225472 + .long 1013810890 + .long 913431823 + .long 3215576203 + .long 0 + .long 1071644672 + .long 557060597 + .long 1072469323 + .long 0 + .long 3159554934 + .long 1073154251 + .long 3215945137 + .long 0 + .long 1071644672 + .long 4093443164 + .long 1072480752 + .long 536870912 + .long 1014912865 + .long 3631910143 + .long 3216149439 + .long 0 + .long 1071644672 + .long 4097623923 + .long 1072491898 + .long 2684354560 + .long 3160308587 + .long 1380647130 + .long 3216336095 + .long 0 + .long 1071644672 + .long 1950234076 + .long 1072502759 + .long 536870912 + .long 3159425498 + .long 4049357271 + .long 3216523802 + .long 0 + .long 1071644672 + .long 3511535930 + .long 1072513332 + .long 2147483648 + .long 3162828626 + .long 1896722595 + .long 3216712534 + .long 0 + .long 1071644672 + .long 1942611595 + .long 1072523617 + .long 3221225472 + .long 3162410081 + .long 1699043957 + .long 3216902261 + .long 0 + .long 1071644672 + .long 3476196678 + .long 1072533611 + .long 0 + .long 1014257638 + .long 3296146332 + .long 1069485732 + .long 0 + .long 1070596096 + .long 1647878299 + .long 1072543314 + .long 3758096384 + .long 3162169063 + .long 3286832763 + .long 1069294100 + .long 0 + .long 1070596096 + .long 3066872380 + .long 1072552723 + .long 3221225472 + .long 1015561271 + .long 1962712856 + .long 1069101559 + .long 0 + .long 1070596096 + .long 1647164971 + .long 1072561838 + .long 2147483648 + .long 3162838250 + .long 3601629044 + .long 1068908137 + .long 0 + .long 1070596096 + .long 83265253 + .long 1072570657 + .long 1610612736 + .long 3162510535 + .long 165911977 + .long 1068713865 + .long 0 + .long 1070596096 + .long 1261158782 + .long 1072579178 + .long 2147483648 + .long 1015711544 + .long 1348311045 + .long 1068518770 + .long 0 + .long 1070596096 + .long 3964199186 + .long 1072587400 + .long 3758096384 + .long 3160501078 + .long 386665102 + .long 1068146822 + .long 0 + .long 1070596096 + .long 2873938189 + .long 1072595323 + .long 1610612736 + .long 3162311422 + .long 1991047213 + .long 1067753521 + .long 0 + .long 1070596096 + .long 1455828442 + .long 1072602945 + .long 3758096384 + .long 1015505073 + .long 4107121629 + .long 1067267139 + .long 0 + .long 1070596096 + .long 3370060660 + .long 1072610264 + .long 1610612736 + .long 1014787212 + .long 723478390 + .long 1066474790 + .long 0 + .long 1070596096 + .long 3882371427 + .long 1072617280 + .long 2147483648 + .long 1014923975 + .long 2382326656 + .long 1064562179 + .long 0 + .long 1070596096 + .long 2749658050 + .long 1072623992 + .long 1610612736 + .long 1015427338 + .long 2614369450 + .long 3212624080 + .long 0 + .long 1070596096 + .long 4220661975 + .long 1072630398 + .long 3221225472 + .long 1014312058 + .long 3587565429 + .long 3214108032 + .long 0 + .long 1070596096 + .long 4151720666 + .long 1072636498 + .long 0 + .long 3162639544 + .long 2886567144 + .long 3214910444 + .long 0 + .long 1070596096 + .long 2892293513 + .long 1072642291 + .long 2684354560 + .long 3162340271 + .long 1765797566 + .long 3215324543 + .long 0 + .long 1070596096 + .long 990588717 + .long 1072647776 + .long 3758096384 + .long 3162041857 + .long 240740309 + .long 3215727903 + .long 0 + .long 1070596096 + .long 3489094832 + .long 1072652951 + .long 536870912 + .long 1014325783 + .long 2034433221 + .long 1068349287 + .long 0 + .long 1069547520 + .long 2745245815 + .long 1072657817 + .long 3221225472 + .long 1015566129 + .long 304938777 + .long 1067944017 + .long 0 + .long 1069547520 + .long 4201728937 + .long 1072662372 + .long 1610612736 + .long 1014674006 + .long 3299146087 + .long 1067537882 + .long 0 + .long 1069547520 + .long 617154971 + .long 1072666617 + .long 3758096384 + .long 3163433696 + .long 1953696209 + .long 1066811523 + .long 0 + .long 1069547520 + .long 2131272983 + .long 1072670549 + .long 3221225472 + .long 3163005096 + .long 3987691371 + .long 1065590540 + .long 0 + .long 1069547520 + .long 1905645377 + .long 1072674169 + .long 1610612736 + .long 1014087596 + .long 718380601 + .long 3211081269 + .long 0 + .long 1069547520 + .long 1893834707 + .long 1072677476 + .long 1610612736 + .long 1015147654 + .long 3272206680 + .long 3213771729 + .long 0 + .long 1069547520 + .long 4251821691 + .long 1072680469 + .long 2147483648 + .long 3161841007 + .long 257503056 + .long 3214647653 + .long 0 + .long 1069547520 + .long 2748392742 + .long 1072683149 + .long 536870912 + .long 3163061750 + .long 711626851 + .long 1066916672 + .long 0 + .long 1068498944 + .long 4240268041 + .long 1072685514 + .long 536870912 + .long 1013588963 + .long 2523975598 + .long 1065789700 + .long 0 + .long 1068498944 + .long 2902558778 + .long 1072687565 + .long 3221225472 + .long 1013260780 + .long 3237733378 + .long 3209908784 + .long 0 + .long 1068498944 + .long 1703834029 + .long 1072689301 + .long 3758096384 + .long 1015028364 + .long 1003003824 + .long 3213591144 + .long 0 + .long 1068498944 + .long 3816385918 + .long 1072690721 + .long 536870912 + .long 3161216956 + .long 2896342633 + .long 1064747819 + .long 0 + .long 1067450368 + .long 4026464093 + .long 1072691826 + .long 3221225472 + .long 3163075789 + .long 561145352 + .long 3212540584 + .long 0 + .long 1067450368 + .long 1619315981 + .long 1072692616 + .long 1073741824 + .long 3162584397 + .long 210035182 + .long 3211491512 + .long 0 + .long 1066401792 + .long 379294427 + .long 1072693090 + .long 3221225472 + .long 1015405987 + .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 239972940 + .long 1089470464 + .long 239972940 + .long 1089470464 + .long 239972940 + .long 1089470464 + .long 239972940 + .long 1089470464 + .long 239972940 + .long 1089470464 + .long 239972940 + .long 1089470464 + .long 239972940 + .long 1089470464 + .long 239972940 + .long 1089470464 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 1431651400 + .long 3217380693 + .long 1431651400 + .long 3217380693 + .long 1431651400 + .long 3217380693 + .long 1431651400 + .long 3217380693 + .long 1431651400 + .long 3217380693 + .long 1431651400 + .long 3217380693 + .long 1431651400 + .long 3217380693 + .long 1431651400 + .long 3217380693 + .long 2880656668 + .long 1065423119 + .long 2880656668 + .long 1065423119 + .long 2880656668 + .long 1065423119 + .long 2880656668 + .long 1065423119 + .long 2880656668 + .long 1065423119 + .long 2880656668 + .long 1065423119 + .long 2880656668 + .long 1065423119 + .long 2880656668 + .long 1065423119 + .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 1431653583 + .long 1067799893 + .long 1431653583 + .long 1067799893 + .long 1431653583 + .long 1067799893 + .long 1431653583 + .long 1067799893 + .long 1431653583 + .long 1067799893 + .long 1431653583 + .long 1067799893 + .long 1431653583 + .long 1067799893 + .long 1431653583 + .long 1067799893 + .long 2976101079 + .long 3210133866 + .long 2976101079 + .long 3210133866 + .long 2976101079 + .long 3210133866 + .long 2976101079 + .long 3210133866 + .long 2976101079 + .long 3210133866 + .long 2976101079 + .long 3210133866 + .long 2976101079 + .long 3210133866 + .long 2976101079 + .long 3210133866 + .type __svml_dcos_data_internal_ha,@object + .size __svml_dcos_data_internal_ha,17280 + .align 64 +__svml_dcos_reduction_data_internal: + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 5 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 10 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 20 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 40 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 81 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 162 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 325 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 651 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1303 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2607 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 5215 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 10430 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 20860 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 41721 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 83443 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 166886 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 333772 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 667544 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1335088 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2670176 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 5340353 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 10680707 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 21361414 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 42722829 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 85445659 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 170891318 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 341782637 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 683565275 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1367130551 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2734261102 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1173554908 + .long 1 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2347109817 + .long 2 + .long 0 + .long 0 + .long 0 + .long 0 + .long 399252338 + .long 5 + .long 0 + .long 0 + .long 0 + .long 0 + .long 798504676 + .long 10 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1597009353 + .long 20 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3194018707 + .long 40 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2093070119 + .long 81 + .long 0 + .long 0 + .long 0 + .long 0 + .long 4186140238 + .long 162 + .long 0 + .long 0 + .long 0 + .long 0 + .long 4077313180 + .long 325 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3859659065 + .long 651 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3424350834 + .long 1303 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2553734372 + .long 2607 + .long 0 + .long 0 + .long 0 + .long 0 + .long 812501448 + .long 5215 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1625002897 + .long 10430 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3250005794 + .long 20860 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2205044292 + .long 41721 + .long 0 + .long 0 + .long 0 + .long 0 + .long 115121288 + .long 83443 + .long 0 + .long 0 + .long 0 + .long 0 + .long 230242576 + .long 166886 + .long 0 + .long 0 + .long 0 + .long 0 + .long 460485152 + .long 333772 + .long 0 + .long 0 + .long 0 + .long 0 + .long 920970305 + .long 667544 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1841940610 + .long 1335088 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3683881221 + .long 2670176 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3072795146 + .long 5340353 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1850622997 + .long 10680707 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3701245994 + .long 21361414 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3107524692 + .long 42722829 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1920082089 + .long 85445659 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3840164178 + .long 170891318 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3385361061 + .long 341782637 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2475754826 + .long 683565275 + .long 0 + .long 0 + .long 0 + .long 0 + .long 656542356 + .long 1367130551 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1313084713 + .long 2734261102 + .long 0 + .long 0 + .long 1 + .long 0 + .long 2626169427 + .long 1173554908 + .long 0 + .long 0 + .long 2 + .long 0 + .long 957371559 + .long 2347109817 + .long 0 + .long 0 + .long 5 + .long 0 + .long 1914743119 + .long 399252338 + .long 0 + .long 0 + .long 10 + .long 0 + .long 3829486239 + .long 798504676 + .long 0 + .long 0 + .long 20 + .long 0 + .long 3364005183 + .long 1597009353 + .long 0 + .long 0 + .long 40 + .long 0 + .long 2433043071 + .long 3194018707 + .long 0 + .long 0 + .long 81 + .long 0 + .long 571118846 + .long 2093070119 + .long 0 + .long 0 + .long 162 + .long 0 + .long 1142237692 + .long 4186140238 + .long 0 + .long 0 + .long 325 + .long 0 + .long 2284475384 + .long 4077313180 + .long 0 + .long 0 + .long 651 + .long 0 + .long 273983472 + .long 3859659065 + .long 0 + .long 0 + .long 1303 + .long 0 + .long 547966945 + .long 3424350834 + .long 0 + .long 0 + .long 2607 + .long 0 + .long 1095933890 + .long 2553734372 + .long 0 + .long 0 + .long 5215 + .long 0 + .long 2191867780 + .long 812501448 + .long 0 + .long 0 + .long 10430 + .long 0 + .long 88768265 + .long 1625002897 + .long 0 + .long 0 + .long 20860 + .long 0 + .long 177536531 + .long 3250005794 + .long 0 + .long 0 + .long 41721 + .long 0 + .long 355073063 + .long 2205044292 + .long 0 + .long 0 + .long 83443 + .long 0 + .long 710146126 + .long 115121288 + .long 0 + .long 0 + .long 166886 + .long 0 + .long 1420292253 + .long 230242576 + .long 0 + .long 0 + .long 333772 + .long 0 + .long 2840584506 + .long 460485152 + .long 0 + .long 0 + .long 667544 + .long 0 + .long 1386201717 + .long 920970305 + .long 0 + .long 0 + .long 1335088 + .long 0 + .long 2772403434 + .long 1841940610 + .long 0 + .long 0 + .long 2670176 + .long 0 + .long 1249839573 + .long 3683881221 + .long 0 + .long 0 + .long 5340353 + .long 0 + .long 2499679147 + .long 3072795146 + .long 0 + .long 0 + .long 10680707 + .long 0 + .long 704390999 + .long 1850622997 + .long 0 + .long 0 + .long 21361414 + .long 0 + .long 1408781999 + .long 3701245994 + .long 0 + .long 0 + .long 42722829 + .long 0 + .long 2817563999 + .long 3107524692 + .long 0 + .long 0 + .long 85445659 + .long 0 + .long 1340160702 + .long 1920082089 + .long 0 + .long 0 + .long 170891318 + .long 0 + .long 2680321405 + .long 3840164178 + .long 0 + .long 0 + .long 341782637 + .long 0 + .long 1065675514 + .long 3385361061 + .long 0 + .long 0 + .long 683565275 + .long 0 + .long 2131351028 + .long 2475754826 + .long 0 + .long 0 + .long 1367130551 + .long 0 + .long 4262702056 + .long 656542356 + .long 0 + .long 0 + .long 2734261102 + .long 0 + .long 4230436817 + .long 1313084713 + .long 0 + .long 0 + .long 1173554908 + .long 1 + .long 4165906339 + .long 2626169427 + .long 0 + .long 0 + .long 2347109817 + .long 2 + .long 4036845383 + .long 957371559 + .long 0 + .long 0 + .long 399252338 + .long 5 + .long 3778723471 + .long 1914743119 + .long 0 + .long 0 + .long 798504676 + .long 10 + .long 3262479647 + .long 3829486239 + .long 0 + .long 0 + .long 1597009353 + .long 20 + .long 2229991998 + .long 3364005183 + .long 0 + .long 0 + .long 3194018707 + .long 40 + .long 165016701 + .long 2433043071 + .long 0 + .long 0 + .long 2093070119 + .long 81 + .long 330033402 + .long 571118846 + .long 0 + .long 0 + .long 4186140238 + .long 162 + .long 660066805 + .long 1142237692 + .long 0 + .long 0 + .long 4077313180 + .long 325 + .long 1320133610 + .long 2284475384 + .long 0 + .long 0 + .long 3859659065 + .long 651 + .long 2640267220 + .long 273983472 + .long 0 + .long 0 + .long 3424350834 + .long 1303 + .long 985567145 + .long 547966945 + .long 0 + .long 0 + .long 2553734372 + .long 2607 + .long 1971134291 + .long 1095933890 + .long 0 + .long 0 + .long 812501448 + .long 5215 + .long 3942268582 + .long 2191867780 + .long 0 + .long 0 + .long 1625002897 + .long 10430 + .long 3589569869 + .long 88768265 + .long 0 + .long 0 + .long 3250005794 + .long 20860 + .long 2884172442 + .long 177536531 + .long 0 + .long 0 + .long 2205044292 + .long 41721 + .long 1473377588 + .long 355073063 + .long 0 + .long 0 + .long 115121288 + .long 83443 + .long 2946755177 + .long 710146126 + .long 0 + .long 0 + .long 230242576 + .long 166886 + .long 1598543059 + .long 1420292253 + .long 0 + .long 0 + .long 460485152 + .long 333772 + .long 3197086118 + .long 2840584506 + .long 0 + .long 0 + .long 920970305 + .long 667544 + .long 2099204941 + .long 1386201717 + .long 0 + .long 0 + .long 1841940610 + .long 1335088 + .long 4198409883 + .long 2772403434 + .long 0 + .long 0 + .long 3683881221 + .long 2670176 + .long 4101852471 + .long 1249839573 + .long 0 + .long 0 + .long 3072795146 + .long 5340353 + .long 3908737646 + .long 2499679147 + .long 0 + .long 0 + .long 1850622997 + .long 10680707 + .long 3522507997 + .long 704390999 + .long 0 + .long 0 + .long 3701245994 + .long 21361414 + .long 2750048699 + .long 1408781999 + .long 0 + .long 0 + .long 3107524692 + .long 42722829 + .long 1205130103 + .long 2817563999 + .long 0 + .long 0 + .long 1920082089 + .long 85445659 + .long 2410260206 + .long 1340160702 + .long 0 + .long 0 + .long 3840164178 + .long 170891318 + .long 525553116 + .long 2680321405 + .long 0 + .long 0 + .long 3385361061 + .long 341782637 + .long 1051106232 + .long 1065675514 + .long 0 + .long 0 + .long 2475754826 + .long 683565275 + .long 2102212464 + .long 2131351028 + .long 0 + .long 0 + .long 656542356 + .long 1367130551 + .long 4204424928 + .long 4262702056 + .long 0 + .long 0 + .long 1313084713 + .long 2734261102 + .long 4113882560 + .long 4230436817 + .long 1 + .long 0 + .long 2626169427 + .long 1173554908 + .long 3932797825 + .long 4165906339 + .long 2 + .long 0 + .long 957371559 + .long 2347109817 + .long 3570628355 + .long 4036845383 + .long 5 + .long 0 + .long 1914743119 + .long 399252338 + .long 2846289414 + .long 3778723471 + .long 10 + .long 0 + .long 3829486239 + .long 798504676 + .long 1397611533 + .long 3262479647 + .long 20 + .long 0 + .long 3364005183 + .long 1597009353 + .long 2795223067 + .long 2229991998 + .long 40 + .long 0 + .long 2433043071 + .long 3194018707 + .long 1295478838 + .long 165016701 + .long 81 + .long 0 + .long 571118846 + .long 2093070119 + .long 2590957677 + .long 330033402 + .long 162 + .long 0 + .long 1142237692 + .long 4186140238 + .long 886948059 + .long 660066805 + .long 325 + .long 0 + .long 2284475384 + .long 4077313180 + .long 1773896118 + .long 1320133610 + .long 651 + .long 0 + .long 273983472 + .long 3859659065 + .long 3547792237 + .long 2640267220 + .long 1303 + .long 0 + .long 547966945 + .long 3424350834 + .long 2800617179 + .long 985567145 + .long 2607 + .long 0 + .long 1095933890 + .long 2553734372 + .long 1306267062 + .long 1971134291 + .long 5215 + .long 0 + .long 2191867780 + .long 812501448 + .long 2612534124 + .long 3942268582 + .long 10430 + .long 0 + .long 88768265 + .long 1625002897 + .long 930100952 + .long 3589569869 + .long 20860 + .long 0 + .long 177536531 + .long 3250005794 + .long 1860201905 + .long 2884172442 + .long 41721 + .long 0 + .long 355073063 + .long 2205044292 + .long 3720403810 + .long 1473377588 + .long 83443 + .long 0 + .long 710146126 + .long 115121288 + .long 3145840325 + .long 2946755177 + .long 166886 + .long 0 + .long 1420292253 + .long 230242576 + .long 1996713354 + .long 1598543059 + .long 333772 + .long 0 + .long 2840584506 + .long 460485152 + .long 3993426708 + .long 3197086118 + .long 667544 + .long 0 + .long 1386201717 + .long 920970305 + .long 3691886121 + .long 2099204941 + .long 1335088 + .long 0 + .long 2772403434 + .long 1841940610 + .long 3088804946 + .long 4198409883 + .long 2670176 + .long 0 + .long 1249839573 + .long 3683881221 + .long 1882642597 + .long 4101852471 + .long 5340353 + .long 0 + .long 2499679147 + .long 3072795146 + .long 3765285194 + .long 3908737646 + .long 10680707 + .long 0 + .long 704390999 + .long 1850622997 + .long 3235603093 + .long 3522507997 + .long 21361414 + .long 0 + .long 1408781999 + .long 3701245994 + .long 2176238891 + .long 2750048699 + .long 42722829 + .long 0 + .long 2817563999 + .long 3107524692 + .long 57510486 + .long 1205130103 + .long 85445659 + .long 0 + .long 1340160702 + .long 1920082089 + .long 115020972 + .long 2410260206 + .long 170891318 + .long 0 + .long 2680321405 + .long 3840164178 + .long 230041945 + .long 525553116 + .long 341782637 + .long 0 + .long 1065675514 + .long 3385361061 + .long 460083891 + .long 1051106232 + .long 683565275 + .long 0 + .long 2131351028 + .long 2475754826 + .long 920167782 + .long 2102212464 + .long 1367130551 + .long 0 + .long 4262702056 + .long 656542356 + .long 1840335564 + .long 4204424928 + .long 2734261102 + .long 0 + .long 4230436817 + .long 1313084713 + .long 3680671129 + .long 4113882560 + .long 1173554908 + .long 1 + .long 4165906339 + .long 2626169427 + .long 3066374962 + .long 3932797825 + .long 2347109817 + .long 2 + .long 4036845383 + .long 957371559 + .long 1837782628 + .long 3570628355 + .long 399252338 + .long 5 + .long 3778723471 + .long 1914743119 + .long 3675565257 + .long 2846289414 + .long 798504676 + .long 10 + .long 3262479647 + .long 3829486239 + .long 3056163219 + .long 1397611533 + .long 1597009353 + .long 20 + .long 2229991998 + .long 3364005183 + .long 1817359143 + .long 2795223067 + .long 3194018707 + .long 40 + .long 165016701 + .long 2433043071 + .long 3634718287 + .long 1295478838 + .long 2093070119 + .long 81 + .long 330033402 + .long 571118846 + .long 2974469278 + .long 2590957677 + .long 4186140238 + .long 162 + .long 660066805 + .long 1142237692 + .long 1653971260 + .long 886948059 + .long 4077313180 + .long 325 + .long 1320133610 + .long 2284475384 + .long 3307942520 + .long 1773896118 + .long 3859659065 + .long 651 + .long 2640267220 + .long 273983472 + .long 2320917745 + .long 3547792237 + .long 3424350834 + .long 1303 + .long 985567145 + .long 547966945 + .long 346868194 + .long 2800617179 + .long 2553734372 + .long 2607 + .long 1971134291 + .long 1095933890 + .long 693736388 + .long 1306267062 + .long 812501448 + .long 5215 + .long 3942268582 + .long 2191867780 + .long 1387472776 + .long 2612534124 + .long 1625002897 + .long 10430 + .long 3589569869 + .long 88768265 + .long 2774945552 + .long 930100952 + .long 3250005794 + .long 20860 + .long 2884172442 + .long 177536531 + .long 1254923809 + .long 1860201905 + .long 2205044292 + .long 41721 + .long 1473377588 + .long 355073063 + .long 2509847619 + .long 3720403810 + .long 115121288 + .long 83443 + .long 2946755177 + .long 710146126 + .long 724727943 + .long 3145840325 + .long 230242576 + .long 166886 + .long 1598543059 + .long 1420292253 + .long 1449455886 + .long 1996713354 + .long 460485152 + .long 333772 + .long 3197086118 + .long 2840584506 + .long 2898911772 + .long 3993426708 + .long 920970305 + .long 667544 + .long 2099204941 + .long 1386201717 + .long 1502856249 + .long 3691886121 + .long 1841940610 + .long 1335088 + .long 4198409883 + .long 2772403434 + .long 3005712498 + .long 3088804946 + .long 3683881221 + .long 2670176 + .long 4101852471 + .long 1249839573 + .long 1716457700 + .long 1882642597 + .long 3072795146 + .long 5340353 + .long 3908737646 + .long 2499679147 + .long 3432915400 + .long 3765285194 + .long 1850622997 + .long 10680707 + .long 3522507997 + .long 704390999 + .long 2570863504 + .long 3235603093 + .long 3701245994 + .long 21361414 + .long 2750048699 + .long 1408781999 + .long 846759712 + .long 2176238891 + .long 3107524692 + .long 42722829 + .long 1205130103 + .long 2817563999 + .long 1693519425 + .long 57510486 + .long 1920082089 + .long 85445659 + .long 2410260206 + .long 1340160702 + .long 3387038850 + .long 115020972 + .long 3840164178 + .long 170891318 + .long 525553116 + .long 2680321405 + .long 2479110404 + .long 230041945 + .long 3385361061 + .long 341782637 + .long 1051106232 + .long 1065675514 + .long 663253512 + .long 460083891 + .long 2475754826 + .long 683565275 + .long 2102212464 + .long 2131351028 + .long 1326507024 + .long 920167782 + .long 656542356 + .long 1367130551 + .long 4204424928 + .long 4262702056 + .long 2653014048 + .long 1840335564 + .long 1313084713 + .long 2734261102 + .long 4113882560 + .long 4230436817 + .long 1011060801 + .long 3680671129 + .long 2626169427 + .long 1173554908 + .long 3932797825 + .long 4165906339 + .long 2022121603 + .long 3066374962 + .long 957371559 + .long 2347109817 + .long 3570628355 + .long 4036845383 + .long 4044243207 + .long 1837782628 + .long 1914743119 + .long 399252338 + .long 2846289414 + .long 3778723471 + .long 3793519119 + .long 3675565257 + .long 3829486239 + .long 798504676 + .long 1397611533 + .long 3262479647 + .long 3292070943 + .long 3056163219 + .long 3364005183 + .long 1597009353 + .long 2795223067 + .long 2229991998 + .long 2289174591 + .long 1817359143 + .long 2433043071 + .long 3194018707 + .long 1295478838 + .long 165016701 + .long 283381887 + .long 3634718287 + .long 571118846 + .long 2093070119 + .long 2590957677 + .long 330033402 + .long 566763775 + .long 2974469278 + .long 1142237692 + .long 4186140238 + .long 886948059 + .long 660066805 + .long 1133527550 + .long 1653971260 + .long 2284475384 + .long 4077313180 + .long 1773896118 + .long 1320133610 + .long 2267055100 + .long 3307942520 + .long 273983472 + .long 3859659065 + .long 3547792237 + .long 2640267220 + .long 239142905 + .long 2320917745 + .long 547966945 + .long 3424350834 + .long 2800617179 + .long 985567145 + .long 478285810 + .long 346868194 + .long 1095933890 + .long 2553734372 + .long 1306267062 + .long 1971134291 + .long 956571621 + .long 693736388 + .long 2191867780 + .long 812501448 + .long 2612534124 + .long 3942268582 + .long 1913143242 + .long 1387472776 + .long 88768265 + .long 1625002897 + .long 930100952 + .long 3589569869 + .long 3826286484 + .long 2774945552 + .long 177536531 + .long 3250005794 + .long 1860201905 + .long 2884172442 + .long 3357605672 + .long 1254923809 + .long 355073063 + .long 2205044292 + .long 3720403810 + .long 1473377588 + .long 2420244049 + .long 2509847619 + .long 710146126 + .long 115121288 + .long 3145840325 + .long 2946755177 + .long 545520802 + .long 724727943 + .long 1420292253 + .long 230242576 + .long 1996713354 + .long 1598543059 + .long 1091041605 + .long 1449455886 + .long 2840584506 + .long 460485152 + .long 3993426708 + .long 3197086118 + .long 2182083211 + .long 2898911772 + .long 1386201717 + .long 920970305 + .long 3691886121 + .long 2099204941 + .long 69199126 + .long 1502856249 + .long 2772403434 + .long 1841940610 + .long 3088804946 + .long 4198409883 + .long 138398252 + .long 3005712498 + .long 1249839573 + .long 3683881221 + .long 1882642597 + .long 4101852471 + .long 276796504 + .long 1716457700 + .long 2499679147 + .long 3072795146 + .long 3765285194 + .long 3908737646 + .long 553593009 + .long 3432915400 + .long 704390999 + .long 1850622997 + .long 3235603093 + .long 3522507997 + .long 1107186019 + .long 2570863504 + .long 1408781999 + .long 3701245994 + .long 2176238891 + .long 2750048699 + .long 2214372039 + .long 846759712 + .long 2817563999 + .long 3107524692 + .long 57510486 + .long 1205130103 + .long 133776782 + .long 1693519425 + .long 1340160702 + .long 1920082089 + .long 115020972 + .long 2410260206 + .long 267553565 + .long 3387038850 + .long 2680321405 + .long 3840164178 + .long 230041945 + .long 525553116 + .long 535107130 + .long 2479110404 + .long 1065675514 + .long 3385361061 + .long 460083891 + .long 1051106232 + .long 1070214261 + .long 663253512 + .long 2131351028 + .long 2475754826 + .long 920167782 + .long 2102212464 + .long 2140428522 + .long 1326507024 + .long 4262702056 + .long 656542356 + .long 1840335564 + .long 4204424928 + .long 4280857045 + .long 2653014048 + .long 4230436817 + .long 1313084713 + .long 3680671129 + .long 4113882560 + .long 4266746795 + .long 1011060801 + .long 4165906339 + .long 2626169427 + .long 3066374962 + .long 3932797825 + .long 4238526295 + .long 2022121603 + .long 4036845383 + .long 957371559 + .long 1837782628 + .long 3570628355 + .long 4182085295 + .long 4044243207 + .long 3778723471 + .long 1914743119 + .long 3675565257 + .long 2846289414 + .long 4069203294 + .long 3793519119 + .long 3262479647 + .long 3829486239 + .long 3056163219 + .long 1397611533 + .long 3843439293 + .long 3292070943 + .long 2229991998 + .long 3364005183 + .long 1817359143 + .long 2795223067 + .long 3391911291 + .long 2289174591 + .long 165016701 + .long 2433043071 + .long 3634718287 + .long 1295478838 + .long 2488855287 + .long 283381887 + .long 330033402 + .long 571118846 + .long 2974469278 + .long 2590957677 + .long 682743279 + .long 566763775 + .long 660066805 + .long 1142237692 + .long 1653971260 + .long 886948059 + .long 1365486558 + .long 1133527550 + .long 1320133610 + .long 2284475384 + .long 3307942520 + .long 1773896118 + .long 2730973117 + .long 2267055100 + .long 2640267220 + .long 273983472 + .long 2320917745 + .long 3547792237 + .long 1166978938 + .long 239142905 + .long 985567145 + .long 547966945 + .long 346868194 + .long 2800617179 + .long 2333957877 + .long 478285810 + .long 1971134291 + .long 1095933890 + .long 693736388 + .long 1306267062 + .long 372948459 + .long 956571621 + .long 3942268582 + .long 2191867780 + .long 1387472776 + .long 2612534124 + .long 745896919 + .long 1913143242 + .long 3589569869 + .long 88768265 + .long 2774945552 + .long 930100952 + .long 1491793838 + .long 3826286484 + .long 2884172442 + .long 177536531 + .long 1254923809 + .long 1860201905 + .long 2983587677 + .long 3357605672 + .long 1473377588 + .long 355073063 + .long 2509847619 + .long 3720403810 + .long 1672208059 + .long 2420244049 + .long 2946755177 + .long 710146126 + .long 724727943 + .long 3145840325 + .long 3344416119 + .long 545520802 + .long 1598543059 + .long 1420292253 + .long 1449455886 + .long 1996713354 + .long 2393864943 + .long 1091041605 + .long 3197086118 + .long 2840584506 + .long 2898911772 + .long 3993426708 + .long 492762590 + .long 2182083211 + .long 2099204941 + .long 1386201717 + .long 1502856249 + .long 3691886121 + .long 985525180 + .long 69199126 + .long 4198409883 + .long 2772403434 + .long 3005712498 + .long 3088804946 + .long 1971050360 + .long 138398252 + .long 4101852471 + .long 1249839573 + .long 1716457700 + .long 1882642597 + .long 3942100721 + .long 276796504 + .long 3908737646 + .long 2499679147 + .long 3432915400 + .long 3765285194 + .long 3589234146 + .long 553593009 + .long 3522507997 + .long 704390999 + .long 2570863504 + .long 3235603093 + .long 2883500997 + .long 1107186019 + .long 2750048699 + .long 1408781999 + .long 846759712 + .long 2176238891 + .long 1472034698 + .long 2214372039 + .long 1205130103 + .long 2817563999 + .long 1693519425 + .long 57510486 + .long 2944069397 + .long 133776782 + .long 2410260206 + .long 1340160702 + .long 3387038850 + .long 115020972 + .long 1593171499 + .long 267553565 + .long 525553116 + .long 2680321405 + .long 2479110404 + .long 230041945 + .long 3186342998 + .long 535107130 + .long 1051106232 + .long 1065675514 + .long 663253512 + .long 460083891 + .long 2077718700 + .long 1070214261 + .long 2102212464 + .long 2131351028 + .long 1326507024 + .long 920167782 + .long 4155437400 + .long 2140428522 + .long 4204424928 + .long 4262702056 + .long 2653014048 + .long 1840335564 + .long 4015907504 + .long 4280857045 + .long 4113882560 + .long 4230436817 + .long 1011060801 + .long 3680671129 + .long 3736847713 + .long 4266746795 + .long 3932797825 + .long 4165906339 + .long 2022121603 + .long 3066374962 + .long 3178728131 + .long 4238526295 + .long 3570628355 + .long 4036845383 + .long 4044243207 + .long 1837782628 + .long 2062488966 + .long 4182085295 + .long 2846289414 + .long 3778723471 + .long 3793519119 + .long 3675565257 + .long 4124977933 + .long 4069203294 + .long 1397611533 + .long 3262479647 + .long 3292070943 + .long 3056163219 + .long 3954988571 + .long 3843439293 + .long 2795223067 + .long 2229991998 + .long 2289174591 + .long 1817359143 + .long 3615009846 + .long 3391911291 + .long 1295478838 + .long 165016701 + .long 283381887 + .long 3634718287 + .long 2935052397 + .long 2488855287 + .long 2590957677 + .long 330033402 + .long 566763775 + .long 2974469278 + .long 1575137499 + .long 682743279 + .long 886948059 + .long 660066805 + .long 1133527550 + .long 1653971260 + .long 3150274999 + .long 1365486558 + .long 1773896118 + .long 1320133610 + .long 2267055100 + .long 3307942520 + .long 2005582702 + .long 2730973117 + .long 3547792237 + .long 2640267220 + .long 239142905 + .long 2320917745 + .long 4011165404 + .long 1166978938 + .long 2800617179 + .long 985567145 + .long 478285810 + .long 346868194 + .long 3727363513 + .long 2333957877 + .long 1306267062 + .long 1971134291 + .long 956571621 + .long 693736388 + .long 3159759730 + .long 372948459 + .long 2612534124 + .long 3942268582 + .long 1913143242 + .long 1387472776 + .long 2024552164 + .long 745896919 + .long 930100952 + .long 3589569869 + .long 3826286484 + .long 2774945552 + .long 4049104329 + .long 1491793838 + .long 1860201905 + .long 2884172442 + .long 3357605672 + .long 1254923809 + .long 3803241362 + .long 2983587677 + .long 3720403810 + .long 1473377588 + .long 2420244049 + .long 2509847619 + .long 3311515428 + .long 1672208059 + .long 3145840325 + .long 2946755177 + .long 545520802 + .long 724727943 + .long 2328063560 + .long 3344416119 + .long 1996713354 + .long 1598543059 + .long 1091041605 + .long 1449455886 + .long 361159825 + .long 2393864943 + .long 3993426708 + .long 3197086118 + .long 2182083211 + .long 2898911772 + .long 722319651 + .long 492762590 + .long 3691886121 + .long 2099204941 + .long 69199126 + .long 1502856249 + .long 1444639302 + .long 985525180 + .long 3088804946 + .long 4198409883 + .long 138398252 + .long 3005712498 + .long 2889278605 + .long 1971050360 + .long 1882642597 + .long 4101852471 + .long 276796504 + .long 1716457700 + .long 1483589915 + .long 3942100721 + .long 3765285194 + .long 3908737646 + .long 553593009 + .long 3432915400 + .long 2967179831 + .long 3589234146 + .long 3235603093 + .long 3522507997 + .long 1107186019 + .long 2570863504 + .long 1639392366 + .long 2883500997 + .long 2176238891 + .long 2750048699 + .long 2214372039 + .long 846759712 + .long 3278784732 + .long 1472034698 + .long 57510486 + .long 1205130103 + .long 133776782 + .long 1693519425 + .long 2262602168 + .long 2944069397 + .long 115020972 + .long 2410260206 + .long 267553565 + .long 3387038850 + .long 230237041 + .long 1593171499 + .long 230041945 + .long 525553116 + .long 535107130 + .long 2479110404 + .long 460474083 + .long 3186342998 + .long 460083891 + .long 1051106232 + .long 1070214261 + .long 663253512 + .long 920948167 + .long 2077718700 + .long 920167782 + .long 2102212464 + .long 2140428522 + .long 1326507024 + .long 1841896334 + .long 4155437400 + .long 1840335564 + .long 4204424928 + .long 4280857045 + .long 2653014048 + .long 3683792669 + .long 4015907504 + .long 3680671129 + .long 4113882560 + .long 4266746795 + .long 1011060801 + .long 3072618042 + .long 3736847713 + .long 3066374962 + .long 3932797825 + .long 4238526295 + .long 2022121603 + .long 1850268788 + .long 3178728131 + .long 1837782628 + .long 3570628355 + .long 4182085295 + .long 4044243207 + .long 3700537577 + .long 2062488966 + .long 3675565257 + .long 2846289414 + .long 4069203294 + .long 3793519119 + .long 3106107858 + .long 4124977933 + .long 3056163219 + .long 1397611533 + .long 3843439293 + .long 3292070943 + .long 1917248420 + .long 3954988571 + .long 1817359143 + .long 2795223067 + .long 3391911291 + .long 2289174591 + .long 3834496840 + .long 3615009846 + .long 3634718287 + .long 1295478838 + .long 2488855287 + .long 283381887 + .long 3374026384 + .long 2935052397 + .long 2974469278 + .long 2590957677 + .long 682743279 + .long 566763775 + .long 2453085473 + .long 1575137499 + .long 1653971260 + .long 886948059 + .long 1365486558 + .long 1133527550 + .long 611203650 + .long 3150274999 + .long 3307942520 + .long 1773896118 + .long 2730973117 + .long 2267055100 + .long 1222407300 + .long 2005582702 + .long 2320917745 + .long 3547792237 + .long 1166978938 + .long 239142905 + .long 2444814601 + .long 4011165404 + .long 346868194 + .long 2800617179 + .long 2333957877 + .long 478285810 + .long 594661906 + .long 3727363513 + .long 693736388 + .long 1306267062 + .long 372948459 + .long 956571621 + .long 1189323812 + .long 3159759730 + .long 1387472776 + .long 2612534124 + .long 745896919 + .long 1913143242 + .long 2378647625 + .long 2024552164 + .long 2774945552 + .long 930100952 + .long 1491793838 + .long 3826286484 + .long 462327955 + .long 4049104329 + .long 1254923809 + .long 1860201905 + .long 2983587677 + .long 3357605672 + .long 924655910 + .long 3803241362 + .long 2509847619 + .long 3720403810 + .long 1672208059 + .long 2420244049 + .long 1849311821 + .long 3311515428 + .long 724727943 + .long 3145840325 + .long 3344416119 + .long 545520802 + .long 3698623643 + .long 2328063560 + .long 1449455886 + .long 1996713354 + .long 2393864943 + .long 1091041605 + .long 3102279991 + .long 361159825 + .long 2898911772 + .long 3993426708 + .long 492762590 + .long 2182083211 + .long 1909592686 + .long 722319651 + .long 1502856249 + .long 3691886121 + .long 985525180 + .long 69199126 + .long 3819185373 + .long 1444639302 + .long 3005712498 + .long 3088804946 + .long 1971050360 + .long 138398252 + .long 3343403450 + .long 2889278605 + .long 1716457700 + .long 1882642597 + .long 3942100721 + .long 276796504 + .long 2391839604 + .long 1483589915 + .long 3432915400 + .long 3765285194 + .long 3589234146 + .long 553593009 + .long 488711913 + .long 2967179831 + .long 2570863504 + .long 3235603093 + .long 2883500997 + .long 1107186019 + .long 977423826 + .long 1639392366 + .long 846759712 + .long 2176238891 + .long 1472034698 + .long 2214372039 + .long 1954847653 + .long 3278784732 + .long 1693519425 + .long 57510486 + .long 2944069397 + .long 133776782 + .long 3909695307 + .long 2262602168 + .long 3387038850 + .long 115020972 + .long 1593171499 + .long 267553565 + .long 3524423319 + .long 230237041 + .long 2479110404 + .long 230041945 + .long 3186342998 + .long 535107130 + .long 2753879342 + .long 460474083 + .long 663253512 + .long 460083891 + .long 2077718700 + .long 1070214261 + .long 1212791388 + .long 920948167 + .long 1326507024 + .long 920167782 + .long 4155437400 + .long 2140428522 + .long 2425582776 + .long 1841896334 + .long 2653014048 + .long 1840335564 + .long 4015907504 + .long 4280857045 + .long 556198256 + .long 3683792669 + .long 1011060801 + .long 3680671129 + .long 3736847713 + .long 4266746795 + .long 1112396512 + .long 3072618042 + .long 2022121603 + .long 3066374962 + .long 3178728131 + .long 4238526295 + .long 2224793024 + .long 1850268788 + .long 4044243207 + .long 1837782628 + .long 2062488966 + .long 4182085295 + .long 154618752 + .long 3700537577 + .long 3793519119 + .long 3675565257 + .long 4124977933 + .long 4069203294 + .long 309237504 + .long 3106107858 + .long 3292070943 + .long 3056163219 + .long 3954988571 + .long 3843439293 + .long 618475008 + .long 1917248420 + .long 2289174591 + .long 1817359143 + .long 3615009846 + .long 3391911291 + .long 1236950016 + .long 3834496840 + .long 283381887 + .long 3634718287 + .long 2935052397 + .long 2488855287 + .long 2473900033 + .long 3374026384 + .long 566763775 + .long 2974469278 + .long 1575137499 + .long 682743279 + .long 652832771 + .long 2453085473 + .long 1133527550 + .long 1653971260 + .long 3150274999 + .long 1365486558 + .long 1305665542 + .long 611203650 + .long 2267055100 + .long 3307942520 + .long 2005582702 + .long 2730973117 + .long 2611331084 + .long 1222407300 + .long 239142905 + .long 2320917745 + .long 4011165404 + .long 1166978938 + .long 927694873 + .long 2444814601 + .long 478285810 + .long 346868194 + .long 3727363513 + .long 2333957877 + .long 1855389746 + .long 594661906 + .long 956571621 + .long 693736388 + .long 3159759730 + .long 372948459 + .long 3710779492 + .long 1189323812 + .long 1913143242 + .long 1387472776 + .long 2024552164 + .long 745896919 + .long 3126591689 + .long 2378647625 + .long 3826286484 + .long 2774945552 + .long 4049104329 + .long 1491793838 + .long 1958216082 + .long 462327955 + .long 3357605672 + .long 1254923809 + .long 3803241362 + .long 2983587677 + .long 3916432164 + .long 924655910 + .long 2420244049 + .long 2509847619 + .long 3311515428 + .long 1672208059 + .long 3537897033 + .long 1849311821 + .long 545520802 + .long 724727943 + .long 2328063560 + .long 3344416119 + .long 2780826770 + .long 3698623643 + .long 1091041605 + .long 1449455886 + .long 361159825 + .long 2393864943 + .long 1266686244 + .long 3102279991 + .long 2182083211 + .long 2898911772 + .long 722319651 + .long 492762590 + .long 2533372489 + .long 1909592686 + .long 69199126 + .long 1502856249 + .long 1444639302 + .long 985525180 + .long 771777682 + .long 3819185373 + .long 138398252 + .long 3005712498 + .long 2889278605 + .long 1971050360 + .long 1543555365 + .long 3343403450 + .long 276796504 + .long 1716457700 + .long 1483589915 + .long 3942100721 + .long 3087110731 + .long 2391839604 + .long 553593009 + .long 3432915400 + .long 2967179831 + .long 3589234146 + .long 1879254167 + .long 488711913 + .long 1107186019 + .long 2570863504 + .long 1639392366 + .long 2883500997 + .long 3758508334 + .long 977423826 + .long 2214372039 + .long 846759712 + .long 3278784732 + .long 1472034698 + .long 3222049373 + .long 1954847653 + .long 133776782 + .long 1693519425 + .long 2262602168 + .long 2944069397 + .long 2149131451 + .long 3909695307 + .long 267553565 + .long 3387038850 + .long 230237041 + .long 1593171499 + .long 3295607 + .long 3524423319 + .long 535107130 + .long 2479110404 + .long 460474083 + .long 3186342998 + .long 6591214 + .long 2753879342 + .long 1070214261 + .long 663253512 + .long 920948167 + .long 2077718700 + .long 13182429 + .long 1212791388 + .long 2140428522 + .long 1326507024 + .long 1841896334 + .long 4155437400 + .long 26364858 + .long 2425582776 + .long 4280857045 + .long 2653014048 + .long 3683792669 + .long 4015907504 + .long 52729717 + .long 556198256 + .long 4266746795 + .long 1011060801 + .long 3072618042 + .long 3736847713 + .long 105459434 + .long 1112396512 + .long 4238526295 + .long 2022121603 + .long 1850268788 + .long 3178728131 + .long 210918868 + .long 2224793024 + .long 4182085295 + .long 4044243207 + .long 3700537577 + .long 2062488966 + .long 421837736 + .long 154618752 + .long 4069203294 + .long 3793519119 + .long 3106107858 + .long 4124977933 + .long 843675472 + .long 309237504 + .long 3843439293 + .long 3292070943 + .long 1917248420 + .long 3954988571 + .long 1687350944 + .long 618475008 + .long 3391911291 + .long 2289174591 + .long 3834496840 + .long 3615009846 + .long 3374701889 + .long 1236950016 + .long 2488855287 + .long 283381887 + .long 3374026384 + .long 2935052397 + .long 2454436482 + .long 2473900033 + .long 682743279 + .long 566763775 + .long 2453085473 + .long 1575137499 + .long 613905668 + .long 652832771 + .long 1365486558 + .long 1133527550 + .long 611203650 + .long 3150274999 + .long 1227811337 + .long 1305665542 + .long 2730973117 + .long 2267055100 + .long 1222407300 + .long 2005582702 + .long 2455622675 + .long 2611331084 + .long 1166978938 + .long 239142905 + .long 2444814601 + .long 4011165404 + .long 616278055 + .long 927694873 + .long 2333957877 + .long 478285810 + .long 594661906 + .long 3727363513 + .long 1232556110 + .long 1855389746 + .long 372948459 + .long 956571621 + .long 1189323812 + .long 3159759730 + .long 2465112221 + .long 3710779492 + .long 745896919 + .long 1913143242 + .long 2378647625 + .long 2024552164 + .long 635257146 + .long 3126591689 + .long 1491793838 + .long 3826286484 + .long 462327955 + .long 4049104329 + .long 1270514292 + .long 1958216082 + .long 2983587677 + .long 3357605672 + .long 924655910 + .long 3803241362 + .long 2541028584 + .long 3916432164 + .long 1672208059 + .long 2420244049 + .long 1849311821 + .long 3311515428 + .long 787089873 + .long 3537897033 + .long 3344416119 + .long 545520802 + .long 3698623643 + .long 2328063560 + .long 1574179747 + .long 2780826770 + .long 2393864943 + .long 1091041605 + .long 3102279991 + .long 361159825 + .long 3148359494 + .long 1266686244 + .long 492762590 + .long 2182083211 + .long 1909592686 + .long 722319651 + .long 2001751692 + .long 2533372489 + .long 985525180 + .long 69199126 + .long 3819185373 + .long 1444639302 + .long 4003503385 + .long 771777682 + .long 1971050360 + .long 138398252 + .long 3343403450 + .long 2889278605 + .long 3712039474 + .long 1543555365 + .long 3942100721 + .long 276796504 + .long 2391839604 + .long 1483589915 + .long 3129111652 + .long 3087110731 + .long 3589234146 + .long 553593009 + .long 488711913 + .long 2967179831 + .long 1963256009 + .long 1879254167 + .long 2883500997 + .long 1107186019 + .long 977423826 + .long 1639392366 + .long 3926512018 + .long 3758508334 + .long 1472034698 + .long 2214372039 + .long 1954847653 + .long 3278784732 + .long 3558056740 + .long 3222049373 + .long 2944069397 + .long 133776782 + .long 3909695307 + .long 2262602168 + .long 2821146184 + .long 2149131451 + .long 1593171499 + .long 267553565 + .long 3524423319 + .long 230237041 + .long 1347325072 + .long 3295607 + .long 3186342998 + .long 535107130 + .long 2753879342 + .long 460474083 + .long 2694650145 + .long 6591214 + .long 2077718700 + .long 1070214261 + .long 1212791388 + .long 920948167 + .long 1094332995 + .long 13182429 + .long 4155437400 + .long 2140428522 + .long 2425582776 + .long 1841896334 + .long 2188665991 + .long 26364858 + .long 4015907504 + .long 4280857045 + .long 556198256 + .long 3683792669 + .long 82364686 + .long 52729717 + .long 3736847713 + .long 4266746795 + .long 1112396512 + .long 3072618042 + .long 164729372 + .long 105459434 + .long 3178728131 + .long 4238526295 + .long 2224793024 + .long 1850268788 + .long 329458745 + .long 210918868 + .long 2062488966 + .long 4182085295 + .long 154618752 + .long 3700537577 + .long 658917491 + .long 421837736 + .long 4124977933 + .long 4069203294 + .long 309237504 + .long 3106107858 + .long 1317834983 + .long 843675472 + .long 3954988571 + .long 3843439293 + .long 618475008 + .long 1917248420 + .long 2635669967 + .long 1687350944 + .long 3615009846 + .long 3391911291 + .long 1236950016 + .long 3834496840 + .long 976372639 + .long 3374701889 + .long 2935052397 + .long 2488855287 + .long 2473900033 + .long 3374026384 + .long 1952745279 + .long 2454436482 + .long 1575137499 + .long 682743279 + .long 652832771 + .long 2453085473 + .long 3905490559 + .long 613905668 + .long 3150274999 + .long 1365486558 + .long 1305665542 + .long 611203650 + .long 3516013822 + .long 1227811337 + .long 2005582702 + .long 2730973117 + .long 2611331084 + .long 1222407300 + .long 2737060348 + .long 2455622675 + .long 4011165404 + .long 1166978938 + .long 927694873 + .long 2444814601 + .long 1179153400 + .long 616278055 + .long 3727363513 + .long 2333957877 + .long 1855389746 + .long 594661906 + .long 2358306800 + .long 1232556110 + .long 3159759730 + .long 372948459 + .long 3710779492 + .long 1189323812 + .long 421646305 + .long 2465112221 + .long 2024552164 + .long 745896919 + .long 3126591689 + .long 2378647625 + .long 843292611 + .long 635257146 + .long 4049104329 + .long 1491793838 + .long 1958216082 + .long 462327955 + .long 1686585223 + .long 1270514292 + .long 3803241362 + .long 2983587677 + .long 3916432164 + .long 924655910 + .long 3373170446 + .long 2541028584 + .long 3311515428 + .long 1672208059 + .long 3537897033 + .long 1849311821 + .long 2451373597 + .long 787089873 + .long 2328063560 + .long 3344416119 + .long 2780826770 + .long 3698623643 + .long 607779899 + .long 1574179747 + .long 361159825 + .long 2393864943 + .long 1266686244 + .long 3102279991 + .long 1215559799 + .long 3148359494 + .long 722319651 + .long 492762590 + .long 2533372489 + .long 1909592686 + .long 2431119599 + .long 2001751692 + .long 1444639302 + .long 985525180 + .long 771777682 + .long 3819185373 + .long 567271902 + .long 4003503385 + .long 2889278605 + .long 1971050360 + .long 1543555365 + .long 3343403450 + .long 1134543805 + .long 3712039474 + .long 1483589915 + .long 3942100721 + .long 3087110731 + .long 2391839604 + .long 2269087610 + .long 3129111652 + .long 2967179831 + .long 3589234146 + .long 1879254167 + .long 488711913 + .long 243207925 + .long 1963256009 + .long 1639392366 + .long 2883500997 + .long 3758508334 + .long 977423826 + .long 486415851 + .long 3926512018 + .long 3278784732 + .long 1472034698 + .long 3222049373 + .long 1954847653 + .long 972831702 + .long 3558056740 + .long 2262602168 + .long 2944069397 + .long 2149131451 + .long 3909695307 + .long 1945663404 + .long 2821146184 + .long 230237041 + .long 1593171499 + .long 3295607 + .long 3524423319 + .long 3891326808 + .long 1347325072 + .long 460474083 + .long 3186342998 + .long 6591214 + .long 2753879342 + .long 3487686321 + .long 2694650145 + .long 920948167 + .long 2077718700 + .long 13182429 + .long 1212791388 + .long 2680405347 + .long 1094332995 + .long 1841896334 + .long 4155437400 + .long 26364858 + .long 2425582776 + .long 1065843399 + .long 2188665991 + .long 3683792669 + .long 4015907504 + .long 52729717 + .long 556198256 + .long 2131686798 + .long 82364686 + .long 3072618042 + .long 3736847713 + .long 105459434 + .long 1112396512 + .long 4263373596 + .long 164729372 + .long 1850268788 + .long 3178728131 + .long 210918868 + .long 2224793024 + .long 4231779897 + .long 329458745 + .long 3700537577 + .long 2062488966 + .long 421837736 + .long 154618752 + .long 4168592498 + .long 658917491 + .long 3106107858 + .long 4124977933 + .long 843675472 + .long 309237504 + .long 4042217701 + .long 1317834983 + .long 1917248420 + .long 3954988571 + .long 1687350944 + .long 618475008 + .long 3789468107 + .long 2635669967 + .long 3834496840 + .long 3615009846 + .long 3374701889 + .long 1236950016 + .long 3283968918 + .long 976372639 + .long 3374026384 + .long 2935052397 + .long 2454436482 + .long 2473900033 + .long 2272970540 + .long 1952745279 + .long 2453085473 + .long 1575137499 + .long 613905668 + .long 652832771 + .long 250973784 + .long 3905490559 + .long 611203650 + .long 3150274999 + .long 1227811337 + .long 1305665542 + .long 501947569 + .long 3516013822 + .long 1222407300 + .long 2005582702 + .long 2455622675 + .long 2611331084 + .long 1003895138 + .long 2737060348 + .long 2444814601 + .long 4011165404 + .long 616278055 + .long 927694873 + .long 2007790276 + .long 1179153400 + .long 594661906 + .long 3727363513 + .long 1232556110 + .long 1855389746 + .long 4015580553 + .long 2358306800 + .long 1189323812 + .long 3159759730 + .long 2465112221 + .long 3710779492 + .long 3736193810 + .long 421646305 + .long 2378647625 + .long 2024552164 + .long 635257146 + .long 3126591689 + .long 3177420325 + .long 843292611 + .long 462327955 + .long 4049104329 + .long 1270514292 + .long 1958216082 + .long 2059873354 + .long 1686585223 + .long 924655910 + .long 3803241362 + .long 2541028584 + .long 3916432164 + .long 4119746708 + .long 3373170446 + .long 1849311821 + .long 3311515428 + .long 787089873 + .long 3537897033 + .long 3944526121 + .long 2451373597 + .long 3698623643 + .long 2328063560 + .long 1574179747 + .long 2780826770 + .long 3594084947 + .long 607779899 + .long 3102279991 + .long 361159825 + .long 3148359494 + .long 1266686244 + .long 2893202598 + .long 1215559799 + .long 1909592686 + .long 722319651 + .long 2001751692 + .long 2533372489 + .long 1491437901 + .long 2431119599 + .long 3819185373 + .long 1444639302 + .long 4003503385 + .long 771777682 + .long 2982875802 + .long 567271902 + .long 3343403450 + .long 2889278605 + .long 3712039474 + .long 1543555365 + .long 1670784308 + .long 1134543805 + .long 2391839604 + .long 1483589915 + .long 3129111652 + .long 3087110731 + .long 3341568617 + .long 2269087610 + .long 488711913 + .long 2967179831 + .long 1963256009 + .long 1879254167 + .long 2388169939 + .long 243207925 + .long 977423826 + .long 1639392366 + .long 3926512018 + .long 3758508334 + .long 481372583 + .long 486415851 + .long 1954847653 + .long 3278784732 + .long 3558056740 + .long 3222049373 + .long 962745166 + .long 972831702 + .long 3909695307 + .long 2262602168 + .long 2821146184 + .long 2149131451 + .long 1925490332 + .long 1945663404 + .long 3524423319 + .long 230237041 + .long 1347325072 + .long 3295607 + .long 3850980665 + .long 3891326808 + .long 2753879342 + .long 460474083 + .long 2694650145 + .long 6591214 + .long 3406994035 + .long 3487686321 + .long 1212791388 + .long 920948167 + .long 1094332995 + .long 13182429 + .long 2519020775 + .long 2680405347 + .long 2425582776 + .long 1841896334 + .long 2188665991 + .long 26364858 + .long 743074255 + .long 1065843399 + .long 556198256 + .long 3683792669 + .long 82364686 + .long 52729717 + .long 1486148511 + .long 2131686798 + .long 1112396512 + .long 3072618042 + .long 164729372 + .long 105459434 + .long 2972297022 + .long 4263373596 + .long 2224793024 + .long 1850268788 + .long 329458745 + .long 210918868 + .long 1649626749 + .long 4231779897 + .long 154618752 + .long 3700537577 + .long 658917491 + .long 421837736 + .long 3299253499 + .long 4168592498 + .long 309237504 + .long 3106107858 + .long 1317834983 + .long 843675472 + .long 2303539703 + .long 4042217701 + .long 618475008 + .long 1917248420 + .long 2635669967 + .long 1687350944 + .long 312112110 + .long 3789468107 + .long 1236950016 + .long 3834496840 + .long 976372639 + .long 3374701889 + .long 624224221 + .long 3283968918 + .long 2473900033 + .long 3374026384 + .long 1952745279 + .long 2454436482 + .long 1248448442 + .long 2272970540 + .long 652832771 + .long 2453085473 + .long 3905490559 + .long 613905668 + .long 2496896884 + .long 250973784 + .long 1305665542 + .long 611203650 + .long 3516013822 + .long 1227811337 + .long 698826472 + .long 501947569 + .long 2611331084 + .long 1222407300 + .long 2737060348 + .long 2455622675 + .long 1397652945 + .long 1003895138 + .long 927694873 + .long 2444814601 + .long 1179153400 + .long 616278055 + .long 2795305890 + .long 2007790276 + .long 1855389746 + .long 594661906 + .long 2358306800 + .long 1232556110 + .long 1295644484 + .long 4015580553 + .long 3710779492 + .long 1189323812 + .long 421646305 + .long 2465112221 + .long 2591288968 + .long 3736193810 + .long 3126591689 + .long 2378647625 + .long 843292611 + .long 635257146 + .long 887610640 + .long 3177420325 + .long 1958216082 + .long 462327955 + .long 1686585223 + .long 1270514292 + .long 1775221280 + .long 2059873354 + .long 3916432164 + .long 924655910 + .long 3373170446 + .long 2541028584 + .long 3550442561 + .long 4119746708 + .long 3537897033 + .long 1849311821 + .long 2451373597 + .long 787089873 + .long 2805917826 + .long 3944526121 + .long 2780826770 + .long 3698623643 + .long 607779899 + .long 1574179747 + .long 1316868356 + .long 3594084947 + .long 1266686244 + .long 3102279991 + .long 1215559799 + .long 3148359494 + .long 2633736712 + .long 2893202598 + .long 2533372489 + .long 1909592686 + .long 2431119599 + .long 2001751692 + .long 972506129 + .long 1491437901 + .long 771777682 + .long 3819185373 + .long 567271902 + .long 4003503385 + .long 1945012259 + .long 2982875802 + .long 1543555365 + .long 3343403450 + .long 1134543805 + .long 3712039474 + .long 3890024518 + .long 1670784308 + .long 3087110731 + .long 2391839604 + .long 2269087610 + .long 3129111652 + .long 3485081741 + .long 3341568617 + .long 1879254167 + .long 488711913 + .long 243207925 + .long 1963256009 + .long 2675196186 + .long 2388169939 + .long 3758508334 + .long 977423826 + .long 486415851 + .long 3926512018 + .long 1055425077 + .long 481372583 + .long 3222049373 + .long 1954847653 + .long 972831702 + .long 3558056740 + .long 2110850155 + .long 962745166 + .long 2149131451 + .long 3909695307 + .long 1945663404 + .long 2821146184 + .long 4221700311 + .long 1925490332 + .long 3295607 + .long 3524423319 + .long 3891326808 + .long 1347325072 + .long 4148433327 + .long 3850980665 + .long 6591214 + .long 2753879342 + .long 3487686321 + .long 2694650145 + .long 4001899359 + .long 3406994035 + .long 13182429 + .long 1212791388 + .long 2680405347 + .long 1094332995 + .long 3708831422 + .long 2519020775 + .long 26364858 + .long 2425582776 + .long 1065843399 + .long 2188665991 + .long 3122695549 + .long 743074255 + .long 52729717 + .long 556198256 + .long 2131686798 + .long 82364686 + .long 1950423802 + .long 1486148511 + .long 105459434 + .long 1112396512 + .long 4263373596 + .long 164729372 + .long 3900847605 + .long 2972297022 + .long 210918868 + .long 2224793024 + .long 4231779897 + .long 329458745 + .long 3506727914 + .long 1649626749 + .long 421837736 + .long 154618752 + .long 4168592498 + .long 658917491 + .long 2718488532 + .long 3299253499 + .long 843675472 + .long 309237504 + .long 4042217701 + .long 1317834983 + .long 1142009769 + .long 2303539703 + .long 1687350944 + .long 618475008 + .long 3789468107 + .long 2635669967 + .long 2284019538 + .long 312112110 + .long 3374701889 + .long 1236950016 + .long 3283968918 + .long 976372639 + .long 273071781 + .long 624224221 + .long 2454436482 + .long 2473900033 + .long 2272970540 + .long 1952745279 + .long 546143563 + .long 1248448442 + .long 613905668 + .long 652832771 + .long 250973784 + .long 3905490559 + .long 1092287127 + .long 2496896884 + .long 1227811337 + .long 1305665542 + .long 501947569 + .long 3516013822 + .long 2184574254 + .long 698826472 + .long 2455622675 + .long 2611331084 + .long 1003895138 + .long 2737060348 + .long 74181213 + .long 1397652945 + .long 616278055 + .long 927694873 + .long 2007790276 + .long 1179153400 + .long 148362426 + .long 2795305890 + .long 1232556110 + .long 1855389746 + .long 4015580553 + .long 2358306800 + .long 296724853 + .long 1295644484 + .long 2465112221 + .long 3710779492 + .long 3736193810 + .long 421646305 + .long 593449707 + .long 2591288968 + .long 635257146 + .long 3126591689 + .long 3177420325 + .long 843292611 + .long 1186899415 + .long 887610640 + .long 1270514292 + .long 1958216082 + .long 2059873354 + .long 1686585223 + .long 2373798830 + .long 1775221280 + .long 2541028584 + .long 3916432164 + .long 4119746708 + .long 3373170446 + .long 452630365 + .long 3550442561 + .long 787089873 + .long 3537897033 + .long 3944526121 + .long 2451373597 + .long 905260731 + .long 2805917826 + .long 1574179747 + .long 2780826770 + .long 3594084947 + .long 607779899 + .long 1810521462 + .long 1316868356 + .long 3148359494 + .long 1266686244 + .long 2893202598 + .long 1215559799 + .long 3621042925 + .long 2633736712 + .long 2001751692 + .long 2533372489 + .long 1491437901 + .long 2431119599 + .long 2947118554 + .long 972506129 + .long 4003503385 + .long 771777682 + .long 2982875802 + .long 567271902 + .long 1599269812 + .long 1945012259 + .long 3712039474 + .long 1543555365 + .long 1670784308 + .long 1134543805 + .long 3198539624 + .long 3890024518 + .long 3129111652 + .long 3087110731 + .long 3341568617 + .long 2269087610 + .long 2102111953 + .long 3485081741 + .long 1963256009 + .long 1879254167 + .long 2388169939 + .long 243207925 + .long 4204223906 + .long 2675196186 + .long 3926512018 + .long 3758508334 + .long 481372583 + .long 486415851 + .long 4113480516 + .long 1055425077 + .long 3558056740 + .long 3222049373 + .long 962745166 + .long 972831702 + .long 3931993737 + .long 2110850155 + .long 2821146184 + .long 2149131451 + .long 1925490332 + .long 1945663404 + .long 3569020178 + .long 4221700311 + .long 1347325072 + .long 3295607 + .long 3850980665 + .long 3891326808 + .long 2843073060 + .long 4148433327 + .long 2694650145 + .long 6591214 + .long 3406994035 + .long 3487686321 + .long 1391178824 + .long 4001899359 + .long 1094332995 + .long 13182429 + .long 2519020775 + .long 2680405347 + .long 2782357648 + .long 3708831422 + .long 2188665991 + .long 26364858 + .long 743074255 + .long 1065843399 + .long 1269748001 + .long 3122695549 + .long 82364686 + .long 52729717 + .long 1486148511 + .long 2131686798 + .long 2539496002 + .long 1950423802 + .long 164729372 + .long 105459434 + .long 2972297022 + .long 4263373596 + .long 784024708 + .long 3900847605 + .long 329458745 + .long 210918868 + .long 1649626749 + .long 4231779897 + .long 1568049417 + .long 3506727914 + .long 658917491 + .long 421837736 + .long 3299253499 + .long 4168592498 + .long 3136098835 + .long 2718488532 + .long 1317834983 + .long 843675472 + .long 2303539703 + .long 4042217701 + .long 1977230375 + .long 1142009769 + .long 2635669967 + .long 1687350944 + .long 312112110 + .long 3789468107 + .long 3954460750 + .long 2284019538 + .long 976372639 + .long 3374701889 + .long 624224221 + .long 3283968918 + .long 3613954205 + .long 273071781 + .long 1952745279 + .long 2454436482 + .long 1248448442 + .long 2272970540 + .long 2932941114 + .long 546143563 + .long 3905490559 + .long 613905668 + .long 2496896884 + .long 250973784 + .long 1570914932 + .long 1092287127 + .long 3516013822 + .long 1227811337 + .long 698826472 + .long 501947569 + .long 3141829865 + .long 2184574254 + .long 2737060348 + .long 2455622675 + .long 1397652945 + .long 1003895138 + .long 1988692435 + .long 74181213 + .long 1179153400 + .long 616278055 + .long 2795305890 + .long 2007790276 + .long 3977384870 + .long 148362426 + .long 2358306800 + .long 1232556110 + .long 1295644484 + .long 4015580553 + .long 3659802444 + .long 296724853 + .long 421646305 + .long 2465112221 + .long 2591288968 + .long 3736193810 + .long 3024637593 + .long 593449707 + .long 843292611 + .long 635257146 + .long 887610640 + .long 3177420325 + .long 1754307891 + .long 1186899415 + .long 1686585223 + .long 1270514292 + .long 1775221280 + .long 2059873354 + .long 3508615783 + .long 2373798830 + .long 3373170446 + .long 2541028584 + .long 3550442561 + .long 4119746708 + .long 2722264270 + .long 452630365 + .long 2451373597 + .long 787089873 + .long 2805917826 + .long 3944526121 + .long 1149561244 + .long 905260731 + .long 607779899 + .long 1574179747 + .long 1316868356 + .long 3594084947 + .long 2299122488 + .long 1810521462 + .long 1215559799 + .long 3148359494 + .long 2633736712 + .long 2893202598 + .long 303277681 + .long 3621042925 + .long 2431119599 + .long 2001751692 + .long 972506129 + .long 1491437901 + .long 606555363 + .long 2947118554 + .long 567271902 + .long 4003503385 + .long 1945012259 + .long 2982875802 + .long 1213110727 + .long 1599269812 + .long 1134543805 + .long 3712039474 + .long 3890024518 + .long 1670784308 + .long 2426221454 + .long 3198539624 + .long 2269087610 + .long 3129111652 + .long 3485081741 + .long 3341568617 + .long 557475612 + .long 2102111953 + .long 243207925 + .long 1963256009 + .long 2675196186 + .long 2388169939 + .long 1114951224 + .long 4204223906 + .long 486415851 + .long 3926512018 + .long 1055425077 + .long 481372583 + .long 2229902448 + .long 4113480516 + .long 972831702 + .long 3558056740 + .long 2110850155 + .long 962745166 + .long 164837600 + .long 3931993737 + .long 1945663404 + .long 2821146184 + .long 4221700311 + .long 1925490332 + .long 329675200 + .long 3569020178 + .long 3891326808 + .long 1347325072 + .long 4148433327 + .long 3850980665 + .long 659350401 + .long 2843073060 + .long 3487686321 + .long 2694650145 + .long 4001899359 + .long 3406994035 + .long 1318700802 + .long 1391178824 + .long 2680405347 + .long 1094332995 + .long 3708831422 + .long 2519020775 + .long 2637401604 + .long 2782357648 + .long 1065843399 + .long 2188665991 + .long 3122695549 + .long 743074255 + .long 979835913 + .long 1269748001 + .long 2131686798 + .long 82364686 + .long 1950423802 + .long 1486148511 + .long 1959671827 + .long 2539496002 + .long 4263373596 + .long 164729372 + .long 3900847605 + .long 2972297022 + .long 3919343654 + .long 784024708 + .long 4231779897 + .long 329458745 + .long 3506727914 + .long 1649626749 + .long 3543720013 + .long 1568049417 + .long 4168592498 + .long 658917491 + .long 2718488532 + .long 3299253499 + .long 2792472730 + .long 3136098835 + .long 4042217701 + .long 1317834983 + .long 1142009769 + .long 2303539703 + .long 1289978165 + .long 1977230375 + .long 3789468107 + .long 2635669967 + .long 2284019538 + .long 312112110 + .long 2579956331 + .long 3954460750 + .long 3283968918 + .long 976372639 + .long 273071781 + .long 624224221 + .long 864945366 + .long 3613954205 + .long 2272970540 + .long 1952745279 + .long 546143563 + .long 1248448442 + .long 1729890733 + .long 2932941114 + .long 250973784 + .long 3905490559 + .long 1092287127 + .long 2496896884 + .long 3459781466 + .long 1570914932 + .long 501947569 + .long 3516013822 + .long 2184574254 + .long 698826472 + .long 2624595636 + .long 3141829865 + .long 1003895138 + .long 2737060348 + .long 74181213 + .long 1397652945 + .long 954223976 + .long 1988692435 + .long 2007790276 + .long 1179153400 + .long 148362426 + .long 2795305890 + .long 1908447953 + .long 3977384870 + .long 4015580553 + .long 2358306800 + .long 296724853 + .long 1295644484 + .long 3816895906 + .long 3659802444 + .long 3736193810 + .long 421646305 + .long 593449707 + .long 2591288968 + .long 3338824517 + .long 3024637593 + .long 3177420325 + .long 843292611 + .long 1186899415 + .long 887610640 + .long 2382681739 + .long 1754307891 + .long 2059873354 + .long 1686585223 + .long 2373798830 + .long 1775221280 + .long 470396183 + .long 3508615783 + .long 4119746708 + .long 3373170446 + .long 452630365 + .long 3550442561 + .long 940792367 + .long 2722264270 + .long 3944526121 + .long 2451373597 + .long 905260731 + .long 2805917826 + .long 1881584735 + .long 1149561244 + .long 3594084947 + .long 607779899 + .long 1810521462 + .long 1316868356 + .long 3763169470 + .long 2299122488 + .long 2893202598 + .long 1215559799 + .long 3621042925 + .long 2633736712 + .long 3231371645 + .long 303277681 + .long 1491437901 + .long 2431119599 + .long 2947118554 + .long 972506129 + .long 2167775995 + .long 606555363 + .long 2982875802 + .long 567271902 + .long 1599269812 + .long 1945012259 + .long 40584695 + .long 1213110727 + .long 1670784308 + .long 1134543805 + .long 3198539624 + .long 3890024518 + .long 81169391 + .long 2426221454 + .long 3341568617 + .long 2269087610 + .long 2102111953 + .long 3485081741 + .long 162338783 + .long 557475612 + .long 2388169939 + .long 243207925 + .long 4204223906 + .long 2675196186 + .long 324677567 + .long 1114951224 + .long 481372583 + .long 486415851 + .long 4113480516 + .long 1055425077 + .long 649355134 + .long 2229902448 + .long 962745166 + .long 972831702 + .long 3931993737 + .long 2110850155 + .long 1298710268 + .long 164837600 + .long 1925490332 + .long 1945663404 + .long 3569020178 + .long 4221700311 + .long 2597420537 + .long 329675200 + .long 3850980665 + .long 3891326808 + .long 2843073060 + .long 4148433327 + .long 899873778 + .long 659350401 + .long 3406994035 + .long 3487686321 + .long 1391178824 + .long 4001899359 + .long 1799747556 + .long 1318700802 + .long 2519020775 + .long 2680405347 + .long 2782357648 + .long 3708831422 + .long 3599495112 + .long 2637401604 + .long 743074255 + .long 1065843399 + .long 1269748001 + .long 3122695549 + .long 2904022928 + .long 979835913 + .long 1486148511 + .long 2131686798 + .long 2539496002 + .long 1950423802 + .long 1513078560 + .long 1959671827 + .long 2972297022 + .long 4263373596 + .long 784024708 + .long 3900847605 + .long 3026157121 + .long 3919343654 + .long 1649626749 + .long 4231779897 + .long 1568049417 + .long 3506727914 + .long 1757346946 + .long 3543720013 + .long 3299253499 + .long 4168592498 + .long 3136098835 + .long 2718488532 + .long 3514693892 + .long 2792472730 + .long 2303539703 + .long 4042217701 + .long 1977230375 + .long 1142009769 + .long 2734420489 + .long 1289978165 + .long 312112110 + .long 3789468107 + .long 3954460750 + .long 2284019538 + .long 1173873683 + .long 2579956331 + .long 624224221 + .long 3283968918 + .long 3613954205 + .long 273071781 + .long 2347747367 + .long 864945366 + .long 1248448442 + .long 2272970540 + .long 2932941114 + .long 546143563 + .long 400527438 + .long 1729890733 + .long 2496896884 + .long 250973784 + .long 1570914932 + .long 1092287127 + .long 801054876 + .long 3459781466 + .long 698826472 + .long 501947569 + .long 3141829865 + .long 2184574254 + .long 1602109753 + .long 2624595636 + .long 1397652945 + .long 1003895138 + .long 1988692435 + .long 74181213 + .long 3204219507 + .long 954223976 + .long 2795305890 + .long 2007790276 + .long 3977384870 + .long 148362426 + .long 2113471718 + .long 1908447953 + .long 1295644484 + .long 4015580553 + .long 3659802444 + .long 296724853 + .long 4226943436 + .long 3816895906 + .long 2591288968 + .long 3736193810 + .long 3024637593 + .long 593449707 + .long 4158919577 + .long 3338824517 + .long 887610640 + .long 3177420325 + .long 1754307891 + .long 1186899415 + .long 4022871858 + .long 2382681739 + .long 1775221280 + .long 2059873354 + .long 3508615783 + .long 2373798830 + .long 3750776420 + .long 470396183 + .long 3550442561 + .long 4119746708 + .long 2722264270 + .long 452630365 + .long 3206585544 + .long 940792367 + .long 2805917826 + .long 3944526121 + .long 1149561244 + .long 905260731 + .long 2118203793 + .long 1881584735 + .long 1316868356 + .long 3594084947 + .long 2299122488 + .long 1810521462 + .long 4236407587 + .long 3763169470 + .long 2633736712 + .long 2893202598 + .long 303277681 + .long 3621042925 + .long 4177847879 + .long 3231371645 + .long 972506129 + .long 1491437901 + .long 606555363 + .long 2947118554 + .long 4060728462 + .long 2167775995 + .long 1945012259 + .long 2982875802 + .long 1213110727 + .long 1599269812 + .long 3826489629 + .long 40584695 + .long 3890024518 + .long 1670784308 + .long 2426221454 + .long 3198539624 + .long 3358011962 + .long 81169391 + .long 3485081741 + .long 3341568617 + .long 557475612 + .long 2102111953 + .long 2421056629 + .long 162338783 + .long 2675196186 + .long 2388169939 + .long 1114951224 + .long 4204223906 + .long 547145963 + .long 324677567 + .long 1055425077 + .long 481372583 + .long 2229902448 + .long 4113480516 + .long 1094291926 + .long 649355134 + .long 2110850155 + .long 962745166 + .long 164837600 + .long 3931993737 + .long 2188583852 + .long 1298710268 + .long 4221700311 + .long 1925490332 + .long 329675200 + .long 3569020178 + .long 82200408 + .long 2597420537 + .long 4148433327 + .long 3850980665 + .long 659350401 + .long 2843073060 + .long 164400817 + .long 899873778 + .long 4001899359 + .long 3406994035 + .long 1318700802 + .long 1391178824 + .long 328801635 + .long 1799747556 + .long 3708831422 + .long 2519020775 + .long 2637401604 + .long 2782357648 + .long 657603271 + .long 3599495112 + .long 3122695549 + .long 743074255 + .long 979835913 + .long 1269748001 + .long 1315206542 + .long 2904022928 + .long 1950423802 + .long 1486148511 + .long 1959671827 + .long 2539496002 + .long 2630413084 + .long 1513078560 + .long 3900847605 + .long 2972297022 + .long 3919343654 + .long 784024708 + .long 965858873 + .long 3026157121 + .long 3506727914 + .long 1649626749 + .long 3543720013 + .long 1568049417 + .long 1931717747 + .long 1757346946 + .long 2718488532 + .long 3299253499 + .long 2792472730 + .long 3136098835 + .long 3863435494 + .long 3514693892 + .long 1142009769 + .long 2303539703 + .long 1289978165 + .long 1977230375 + .long 3431903692 + .long 2734420489 + .long 2284019538 + .long 312112110 + .long 2579956331 + .long 3954460750 + .long 2568840088 + .long 1173873683 + .long 273071781 + .long 624224221 + .long 864945366 + .long 3613954205 + .long 842712880 + .long 2347747367 + .long 546143563 + .long 1248448442 + .long 1729890733 + .long 2932941114 + .long 1685425760 + .long 400527438 + .long 1092287127 + .long 2496896884 + .long 3459781466 + .long 1570914932 + .long 3370851521 + .long 801054876 + .long 2184574254 + .long 698826472 + .long 2624595636 + .long 3141829865 + .long 2446735747 + .long 1602109753 + .long 74181213 + .long 1397652945 + .long 954223976 + .long 1988692435 + .long 598504198 + .long 3204219507 + .long 148362426 + .long 2795305890 + .long 1908447953 + .long 3977384870 + .long 1197008397 + .long 2113471718 + .long 296724853 + .long 1295644484 + .long 3816895906 + .long 3659802444 + .long 2394016794 + .long 4226943436 + .long 593449707 + .long 2591288968 + .long 3338824517 + .long 3024637593 + .long 493066293 + .long 4158919577 + .long 1186899415 + .long 887610640 + .long 2382681739 + .long 1754307891 + .long 986132586 + .long 4022871858 + .long 2373798830 + .long 1775221280 + .long 470396183 + .long 3508615783 + .long 1972265172 + .long 3750776420 + .long 452630365 + .long 3550442561 + .long 940792367 + .long 2722264270 + .long 3944530345 + .long 3206585544 + .long 905260731 + .long 2805917826 + .long 1881584735 + .long 1149561244 + .long 3594093395 + .long 2118203793 + .long 1810521462 + .long 1316868356 + .long 3763169470 + .long 2299122488 + .long 2893219494 + .long 4236407587 + .long 3621042925 + .long 2633736712 + .long 3231371645 + .long 303277681 + .long 1491471692 + .long 4177847879 + .long 2947118554 + .long 972506129 + .long 2167775995 + .long 606555363 + .long 2982943385 + .long 4060728462 + .long 1599269812 + .long 1945012259 + .long 40584695 + .long 1213110727 + .long 1670919475 + .long 3826489629 + .long 3198539624 + .long 3890024518 + .long 81169391 + .long 2426221454 + .long 3341838951 + .long 3358011962 + .long 2102111953 + .long 3485081741 + .long 162338783 + .long 557475612 + .long 2388710606 + .long 2421056629 + .long 4204223906 + .long 2675196186 + .long 324677567 + .long 1114951224 + .long 482453916 + .long 547145963 + .long 4113480516 + .long 1055425077 + .long 649355134 + .long 2229902448 + .long 964907833 + .long 1094291926 + .long 3931993737 + .long 2110850155 + .long 1298710268 + .long 164837600 + .long 1929815667 + .long 2188583852 + .long 3569020178 + .long 4221700311 + .long 2597420537 + .long 329675200 + .long 3859631335 + .long 82200408 + .long 2843073060 + .long 4148433327 + .long 899873778 + .long 659350401 + .long 3424295375 + .long 164400817 + .long 1391178824 + .long 4001899359 + .long 1799747556 + .long 1318700802 + .long 2553623455 + .long 328801635 + .long 2782357648 + .long 3708831422 + .long 3599495112 + .long 2637401604 + .long 812279614 + .long 657603271 + .long 1269748001 + .long 3122695549 + .long 2904022928 + .long 979835913 + .long 1624559229 + .long 1315206542 + .long 2539496002 + .long 1950423802 + .long 1513078560 + .long 1959671827 + .long 3249118458 + .long 2630413084 + .long 784024708 + .long 3900847605 + .long 3026157121 + .long 3919343654 + .long 2203269620 + .long 965858873 + .long 1568049417 + .long 3506727914 + .long 1757346946 + .long 3543720013 + .long 111571945 + .long 1931717747 + .long 3136098835 + .long 2718488532 + .long 3514693892 + .long 2792472730 + .long 223143890 + .long 3863435494 + .long 1977230375 + .long 1142009769 + .long 2734420489 + .long 1289978165 + .long 446287780 + .long 3431903692 + .long 3954460750 + .long 2284019538 + .long 1173873683 + .long 2579956331 + .long 892575561 + .long 2568840088 + .long 3613954205 + .long 273071781 + .long 2347747367 + .long 864945366 + .long 1785151123 + .long 842712880 + .long 2932941114 + .long 546143563 + .long 400527438 + .long 1729890733 + .long 3570302247 + .long 1685425760 + .long 1570914932 + .long 1092287127 + .long 801054876 + .long 3459781466 + .long 2845637198 + .long 3370851521 + .long 3141829865 + .long 2184574254 + .long 1602109753 + .long 2624595636 + .long 1396307100 + .long 2446735747 + .long 1988692435 + .long 74181213 + .long 3204219507 + .long 954223976 + .long 2792614201 + .long 598504198 + .long 3977384870 + .long 148362426 + .long 2113471718 + .long 1908447953 + .long 1290261106 + .long 1197008397 + .long 3659802444 + .long 296724853 + .long 4226943436 + .long 3816895906 + .long 2580522212 + .long 2394016794 + .long 3024637593 + .long 593449707 + .long 4158919577 + .long 3338824517 + .long 866077128 + .long 493066293 + .long 1754307891 + .long 1186899415 + .long 4022871858 + .long 2382681739 + .long 1732154256 + .long 986132586 + .long 3508615783 + .long 2373798830 + .long 3750776420 + .long 470396183 + .long 3464308513 + .long 1972265172 + .long 2722264270 + .long 452630365 + .long 3206585544 + .long 940792367 + .long 2633649730 + .long 3944530345 + .long 1149561244 + .long 905260731 + .long 2118203793 + .long 1881584735 + .long 972332164 + .long 3594093395 + .long 2299122488 + .long 1810521462 + .long 4236407587 + .long 3763169470 + .long 1944664328 + .long 2893219494 + .long 303277681 + .long 3621042925 + .long 4177847879 + .long 3231371645 + .long 3889328657 + .long 1491471692 + .long 606555363 + .long 2947118554 + .long 4060728462 + .long 2167775995 + .long 3483690018 + .long 2982943385 + .long 1213110727 + .long 1599269812 + .long 3826489629 + .long 40584695 + .long 2672412741 + .long 1670919475 + .long 2426221454 + .long 3198539624 + .long 3358011962 + .long 81169391 + .long 1049858187 + .long 3341838951 + .long 557475612 + .long 2102111953 + .long 2421056629 + .long 162338783 + .long 2099716375 + .long 2388710606 + .long 1114951224 + .long 4204223906 + .long 547145963 + .long 324677567 + .long 4199432751 + .long 482453916 + .long 2229902448 + .long 4113480516 + .long 1094291926 + .long 649355134 + .long 4103898207 + .long 964907833 + .long 164837600 + .long 3931993737 + .long 2188583852 + .long 1298710268 + .long 3912829119 + .long 1929815667 + .long 329675200 + .long 3569020178 + .long 82200408 + .long 2597420537 + .long 3530690942 + .long 3859631335 + .long 659350401 + .long 2843073060 + .long 164400817 + .long 899873778 + .long 2766414588 + .long 3424295375 + .long 1318700802 + .long 1391178824 + .long 328801635 + .long 1799747556 + .long 1237861880 + .long 2553623455 + .long 2637401604 + .long 2782357648 + .long 657603271 + .long 3599495112 + .long 2475723761 + .long 812279614 + .long 979835913 + .long 1269748001 + .long 1315206542 + .long 2904022928 + .long 656480226 + .long 1624559229 + .long 1959671827 + .long 2539496002 + .long 2630413084 + .long 1513078560 + .long 1312960453 + .long 3249118458 + .long 3919343654 + .long 784024708 + .long 965858873 + .long 3026157121 + .long 2625920907 + .long 2203269620 + .long 3543720013 + .long 1568049417 + .long 1931717747 + .long 1757346946 + .long 956874519 + .long 111571945 + .long 2792472730 + .long 3136098835 + .long 3863435494 + .long 3514693892 + .long 1913749038 + .long 223143890 + .long 1289978165 + .long 1977230375 + .long 3431903692 + .long 2734420489 + .long 3827498077 + .long 446287780 + .long 2579956331 + .long 3954460750 + .long 2568840088 + .long 1173873683 + .long 3360028859 + .long 892575561 + .long 864945366 + .long 3613954205 + .long 842712880 + .long 2347747367 + .long 2425090423 + .long 1785151123 + .long 1729890733 + .long 2932941114 + .long 1685425760 + .long 400527438 + .long 555213551 + .long 3570302247 + .long 3459781466 + .long 1570914932 + .long 3370851521 + .long 801054876 + .long 1110427102 + .long 2845637198 + .long 2624595636 + .long 3141829865 + .long 2446735747 + .long 1602109753 + .long 2220854205 + .long 1396307100 + .long 954223976 + .long 1988692435 + .long 598504198 + .long 3204219507 + .long 146741115 + .long 2792614201 + .long 1908447953 + .long 3977384870 + .long 1197008397 + .long 2113471718 + .long 293482231 + .long 1290261106 + .long 3816895906 + .long 3659802444 + .long 2394016794 + .long 4226943436 + .long 586964463 + .long 2580522212 + .long 3338824517 + .long 3024637593 + .long 493066293 + .long 4158919577 + .long 1173928927 + .long 866077128 + .long 2382681739 + .long 1754307891 + .long 986132586 + .long 4022871858 + .long 2347857855 + .long 1732154256 + .long 470396183 + .long 3508615783 + .long 1972265172 + .long 3750776420 + .long 400748414 + .long 3464308513 + .long 940792367 + .long 2722264270 + .long 3944530345 + .long 3206585544 + .long 801496828 + .long 2633649730 + .long 1881584735 + .long 1149561244 + .long 3594093395 + .long 2118203793 + .long 1602993657 + .long 972332164 + .long 3763169470 + .long 2299122488 + .long 2893219494 + .long 4236407587 + .long 3205987314 + .long 1944664328 + .long 3231371645 + .long 303277681 + .long 1491471692 + .long 4177847879 + .long 2117007332 + .long 3889328657 + .long 2167775995 + .long 606555363 + .long 2982943385 + .long 4060728462 + .long 4234014665 + .long 3483690018 + .long 40584695 + .long 1213110727 + .long 1670919475 + .long 3826489629 + .long 4173062034 + .long 2672412741 + .long 81169391 + .long 2426221454 + .long 3341838951 + .long 3358011962 + .long 4051156773 + .long 1049858187 + .long 162338783 + .long 557475612 + .long 2388710606 + .long 2421056629 + .long 3807346250 + .long 2099716375 + .long 324677567 + .long 1114951224 + .long 482453916 + .long 547145963 + .long 3319725204 + .long 4199432751 + .long 649355134 + .long 2229902448 + .long 964907833 + .long 1094291926 + .long 2344483112 + .long 4103898207 + .long 1298710268 + .long 164837600 + .long 1929815667 + .long 2188583852 + .long 393998928 + .long 3912829119 + .long 2597420537 + .long 329675200 + .long 3859631335 + .long 82200408 + .long 787997856 + .long 3530690942 + .long 899873778 + .long 659350401 + .long 3424295375 + .long 164400817 + .long 1575995713 + .long 2766414588 + .long 1799747556 + .long 1318700802 + .long 2553623455 + .long 328801635 + .long 3151991427 + .long 1237861880 + .long 3599495112 + .long 2637401604 + .long 812279614 + .long 657603271 + .long 2009015559 + .long 2475723761 + .long 2904022928 + .long 979835913 + .long 1624559229 + .long 1315206542 + .long 4018031118 + .long 656480226 + .long 1513078560 + .long 1959671827 + .long 3249118458 + .long 2630413084 + .long 3741094941 + .long 1312960453 + .long 3026157121 + .long 3919343654 + .long 2203269620 + .long 965858873 + .long 3187222587 + .long 2625920907 + .long 1757346946 + .long 3543720013 + .long 111571945 + .long 1931717747 + .long 2079477878 + .long 956874519 + .long 3514693892 + .long 2792472730 + .long 223143890 + .long 3863435494 + .long 4158955756 + .long 1913749038 + .long 2734420489 + .long 1289978165 + .long 446287780 + .long 3431903692 + .long 4022944216 + .long 3827498077 + .long 1173873683 + .long 2579956331 + .long 892575561 + .long 2568840088 + .long 3750921137 + .long 3360028859 + .long 2347747367 + .long 864945366 + .long 1785151123 + .long 842712880 + .long 3206874979 + .long 2425090423 + .long 400527438 + .long 1729890733 + .long 3570302247 + .long 1685425760 + .long 2118782663 + .long 555213551 + .long 801054876 + .long 3459781466 + .long 2845637198 + .long 3370851521 + .long 4237565327 + .long 1110427102 + .long 1602109753 + .long 2624595636 + .long 1396307100 + .long 2446735747 + .long 4180163359 + .long 2220854205 + .long 3204219507 + .long 954223976 + .long 2792614201 + .long 598504198 + .long 4065359423 + .long 146741115 + .long 2113471718 + .long 1908447953 + .long 1290261106 + .long 1197008397 + .long 3835751551 + .long 293482231 + .long 4226943436 + .long 3816895906 + .long 2580522212 + .long 2394016794 + .long 3376535807 + .long 586964463 + .long 4158919577 + .long 3338824517 + .long 866077128 + .long 493066293 + .long 2458104319 + .long 1173928927 + .long 4022871858 + .long 2382681739 + .long 1732154256 + .long 986132586 + .long 621241343 + .long 2347857855 + .long 3750776420 + .long 470396183 + .long 3464308513 + .long 1972265172 + .long 1242482686 + .long 400748414 + .long 3206585544 + .long 940792367 + .long 2633649730 + .long 3944530345 + .long 2484965372 + .long 801496828 + .long 2118203793 + .long 1881584735 + .long 972332164 + .long 3594093395 + .long 674963448 + .long 1602993657 + .long 4236407587 + .long 3763169470 + .long 1944664328 + .long 2893219494 + .long 1349926897 + .long 3205987314 + .long 4177847879 + .long 3231371645 + .long 3889328657 + .long 1491471692 + .long 2699853794 + .long 2117007332 + .long 4060728462 + .long 2167775995 + .long 3483690018 + .long 2982943385 + .long 1104740292 + .long 4234014665 + .long 3826489629 + .long 40584695 + .long 2672412741 + .long 1670919475 + .long 2209480585 + .long 4173062034 + .long 3358011962 + .long 81169391 + .long 1049858187 + .long 3341838951 + .long 123993874 + .long 4051156773 + .long 2421056629 + .long 162338783 + .long 2099716375 + .long 2388710606 + .long 247987749 + .long 3807346250 + .long 547145963 + .long 324677567 + .long 4199432751 + .long 482453916 + .long 495975499 + .long 3319725204 + .long 1094291926 + .long 649355134 + .long 4103898207 + .long 964907833 + .long 991950999 + .long 2344483112 + .long 2188583852 + .long 1298710268 + .long 3912829119 + .long 1929815667 + .long 1983901999 + .long 393998928 + .long 82200408 + .long 2597420537 + .long 3530690942 + .long 3859631335 + .long 3967803999 + .long 787997856 + .long 164400817 + .long 899873778 + .long 2766414588 + .long 3424295375 + .long 3640640703 + .long 1575995713 + .long 328801635 + .long 1799747556 + .long 1237861880 + .long 2553623455 + .long 2986314111 + .long 3151991427 + .long 657603271 + .long 3599495112 + .long 2475723761 + .long 812279614 + .long 1677660927 + .long 2009015559 + .long 1315206542 + .long 2904022928 + .long 656480226 + .long 1624559229 + .long 3355321855 + .long 4018031118 + .long 2630413084 + .long 1513078560 + .long 1312960453 + .long 3249118458 + .long 2415676415 + .long 3741094941 + .long 965858873 + .long 3026157121 + .long 2625920907 + .long 2203269620 + .long 536385535 + .long 3187222587 + .long 1931717747 + .long 1757346946 + .long 956874519 + .long 111571945 + .long 1072771071 + .long 2079477878 + .long 3863435494 + .long 3514693892 + .long 1913749038 + .long 223143890 + .long 2145542143 + .long 4158955756 + .long 3431903692 + .long 2734420489 + .long 3827498077 + .long 446287780 + .long 4291084286 + .long 4022944216 + .long 2568840088 + .long 1173873683 + .long 3360028859 + .long 892575561 + .long 4287201277 + .long 3750921137 + .long 842712880 + .long 2347747367 + .long 2425090423 + .long 1785151123 + .long 4279435259 + .long 3206874979 + .long 1685425760 + .long 400527438 + .long 555213551 + .long 3570302247 + .long 4263903223 + .long 2118782663 + .long 3370851521 + .long 801054876 + .long 1110427102 + .long 2845637198 + .long 4232839151 + .long 4237565327 + .long 2446735747 + .long 1602109753 + .long 2220854205 + .long 1396307100 + .long 4170711006 + .long 4180163359 + .long 598504198 + .long 3204219507 + .long 146741115 + .long 2792614201 + .long 4046454716 + .long 4065359423 + .long 1197008397 + .long 2113471718 + .long 293482231 + .long 1290261106 + .long 3797942136 + .long 3835751551 + .long 2394016794 + .long 4226943436 + .long 586964463 + .long 2580522212 + .long 3300916976 + .long 3376535807 + .long 493066293 + .long 4158919577 + .long 1173928927 + .long 866077128 + .long 2306866656 + .long 2458104319 + .long 986132586 + .long 4022871858 + .long 2347857855 + .long 1732154256 + .long 318766016 + .long 621241343 + .long 1972265172 + .long 3750776420 + .long 400748414 + .long 3464308513 + .long 637532033 + .long 1242482686 + .long 3944530345 + .long 3206585544 + .long 801496828 + .long 2633649730 + .long 1275064066 + .long 2484965372 + .long 3594093395 + .long 2118203793 + .long 1602993657 + .long 972332164 + .long 2550128133 + .long 674963448 + .long 2893219494 + .long 4236407587 + .long 3205987314 + .long 1944664328 + .long 805288971 + .long 1349926897 + .long 1491471692 + .long 4177847879 + .long 2117007332 + .long 3889328657 + .long 1610577942 + .long 2699853794 + .long 2982943385 + .long 4060728462 + .long 4234014665 + .long 3483690018 + .long 3221155884 + .long 1104740292 + .long 1670919475 + .long 3826489629 + .long 4173062034 + .long 2672412741 + .long 2147344473 + .long 2209480585 + .long 3341838951 + .long 3358011962 + .long 4051156773 + .long 1049858187 + .long 4294688947 + .long 123993874 + .long 2388710606 + .long 2421056629 + .long 3807346250 + .long 2099716375 + .long 4294410598 + .long 247987749 + .long 482453916 + .long 547145963 + .long 3319725204 + .long 4199432751 + .long 4293853900 + .long 495975499 + .long 964907833 + .long 1094291926 + .long 2344483112 + .long 4103898207 + .long 4292740504 + .long 991950999 + .long 1929815667 + .long 2188583852 + .long 393998928 + .long 3912829119 + .long 4290513712 + .long 1983901999 + .long 3859631335 + .long 82200408 + .long 787997856 + .long 3530690942 + .long 4286060128 + .long 3967803999 + .long 3424295375 + .long 164400817 + .long 1575995713 + .long 2766414588 + .long 4277152960 + .long 3640640703 + .long 2553623455 + .long 328801635 + .long 3151991427 + .long 1237861880 + .long 4259338624 + .long 2986314111 + .long 812279614 + .long 657603271 + .long 2009015559 + .long 2475723761 + .long 4223709953 + .long 1677660927 + .long 1624559229 + .long 1315206542 + .long 4018031118 + .long 656480226 + .long 4152452611 + .long 3355321855 + .long 3249118458 + .long 2630413084 + .long 3741094941 + .long 1312960453 + .long 4009937927 + .long 2415676415 + .long 2203269620 + .long 965858873 + .long 3187222587 + .long 2625920907 + .long 3724908559 + .long 536385535 + .long 111571945 + .long 1931717747 + .long 2079477878 + .long 956874519 + .long 3154849823 + .long 1072771071 + .long 223143890 + .long 3863435494 + .long 4158955756 + .long 1913749038 + .long 2014732351 + .long 2145542143 + .long 446287780 + .long 3431903692 + .long 4022944216 + .long 3827498077 + .long 4029464703 + .long 4291084286 + .long 892575561 + .long 2568840088 + .long 3750921137 + .long 3360028859 + .long 3763962110 + .long 4287201277 + .long 1785151123 + .long 842712880 + .long 3206874979 + .long 2425090423 + .long 3232956925 + .long 4279435259 + .long 3570302247 + .long 1685425760 + .long 2118782663 + .long 555213551 + .long 2170946555 + .long 4263903223 + .long 2845637198 + .long 3370851521 + .long 4237565327 + .long 1110427102 + .long 46925815 + .long 4232839151 + .long 1396307100 + .long 2446735747 + .long 4180163359 + .long 2220854205 + .long 93851631 + .long 4170711006 + .long 2792614201 + .long 598504198 + .long 4065359423 + .long 146741115 + .long 187703262 + .long 4046454716 + .long 1290261106 + .long 1197008397 + .long 3835751551 + .long 293482231 + .long 375406524 + .long 3797942136 + .long 2580522212 + .long 2394016794 + .long 3376535807 + .long 586964463 + .long 750813049 + .long 3300916976 + .long 866077128 + .long 493066293 + .long 2458104319 + .long 1173928927 + .long 1501626098 + .long 2306866656 + .long 1732154256 + .long 986132586 + .long 621241343 + .long 2347857855 + .long 3003252197 + .long 318766016 + .long 3464308513 + .long 1972265172 + .long 1242482686 + .long 400748414 + .long 1711537099 + .long 637532033 + .long 2633649730 + .long 3944530345 + .long 2484965372 + .long 801496828 + .long 3423074199 + .long 1275064066 + .long 972332164 + .long 3594093395 + .long 674963448 + .long 1602993657 + .long 2551181103 + .long 2550128133 + .long 1944664328 + .long 2893219494 + .long 1349926897 + .long 3205987314 + .long 807394910 + .long 805288971 + .long 3889328657 + .long 1491471692 + .long 2699853794 + .long 2117007332 + .long 1614789820 + .long 1610577942 + .long 3483690018 + .long 2982943385 + .long 1104740292 + .long 4234014665 + .long 3229579640 + .long 3221155884 + .long 2672412741 + .long 1670919475 + .long 2209480585 + .long 4173062034 + .long 2164191985 + .long 2147344473 + .long 1049858187 + .long 3341838951 + .long 123993874 + .long 4051156773 + .long 33416674 + .long 4294688947 + .long 2099716375 + .long 2388710606 + .long 247987749 + .long 3807346250 + .long 66833348 + .long 4294410598 + .long 4199432751 + .long 482453916 + .long 495975499 + .long 3319725204 + .long 133666696 + .long 4293853900 + .long 4103898207 + .long 964907833 + .long 991950999 + .long 2344483112 + .long 267333393 + .long 4292740504 + .long 3912829119 + .long 1929815667 + .long 1983901999 + .long 393998928 + .long 534666787 + .long 4290513712 + .long 3530690942 + .long 3859631335 + .long 3967803999 + .long 787997856 + .long 1069333574 + .long 4286060128 + .long 2766414588 + .long 3424295375 + .long 3640640703 + .long 1575995713 + .long 2138667148 + .long 4277152960 + .long 1237861880 + .long 2553623455 + .long 2986314111 + .long 3151991427 + .long 4277334296 + .long 4259338624 + .long 2475723761 + .long 812279614 + .long 1677660927 + .long 2009015559 + .long 4259701297 + .long 4223709953 + .long 656480226 + .long 1624559229 + .long 3355321855 + .long 4018031118 + .long 4224435298 + .long 4152452611 + .long 1312960453 + .long 3249118458 + .long 2415676415 + .long 3741094941 + .long 4153903301 + .long 4009937927 + .long 2625920907 + .long 2203269620 + .long 536385535 + .long 3187222587 + .long 4012839307 + .long 3724908559 + .long 956874519 + .long 111571945 + .long 1072771071 + .long 2079477878 + .long 3730711318 + .long 3154849823 + .long 1913749038 + .long 223143890 + .long 2145542143 + .long 4158955756 + .long 3166455341 + .long 2014732351 + .long 3827498077 + .long 446287780 + .long 4291084286 + .long 4022944216 + .long 2037943386 + .long 4029464703 + .long 3360028859 + .long 892575561 + .long 4287201277 + .long 3750921137 + .long 4075886773 + .long 3763962110 + .long 2425090423 + .long 1785151123 + .long 4279435259 + .long 3206874979 + .long 3856806251 + .long 3232956925 + .long 555213551 + .long 3570302247 + .long 4263903223 + .long 2118782663 + .long 3418645206 + .long 2170946555 + .long 1110427102 + .long 2845637198 + .long 4232839151 + .long 4237565327 + .long 2542323117 + .long 46925815 + .long 2220854205 + .long 1396307100 + .long 4170711006 + .long 4180163359 + .long 789678938 + .long 93851631 + .long 146741115 + .long 2792614201 + .long 4046454716 + .long 4065359423 + .long 1579357876 + .long 187703262 + .long 293482231 + .long 1290261106 + .long 3797942136 + .long 3835751551 + .long 3158715752 + .long 375406524 + .long 586964463 + .long 2580522212 + .long 3300916976 + .long 3376535807 + .long 2022464208 + .long 750813049 + .long 1173928927 + .long 866077128 + .long 2306866656 + .long 2458104319 + .long 4044928416 + .long 1501626098 + .long 2347857855 + .long 1732154256 + .long 318766016 + .long 621241343 + .long 3794889537 + .long 3003252197 + .long 400748414 + .long 3464308513 + .long 637532033 + .long 1242482686 + .long 3294811778 + .long 1711537099 + .long 801496828 + .long 2633649730 + .long 1275064066 + .long 2484965372 + .long 2294656261 + .long 3423074199 + .long 1602993657 + .long 972332164 + .long 2550128133 + .long 674963448 + .long 294345226 + .long 2551181103 + .long 3205987314 + .long 1944664328 + .long 805288971 + .long 1349926897 + .long 588690452 + .long 807394910 + .long 2117007332 + .long 3889328657 + .long 1610577942 + .long 2699853794 + .long 1177380905 + .long 1614789820 + .long 4234014665 + .long 3483690018 + .long 3221155884 + .long 1104740292 + .long 2354761811 + .long 3229579640 + .long 4173062034 + .long 2672412741 + .long 2147344473 + .long 2209480585 + .long 414556326 + .long 2164191985 + .long 4051156773 + .long 1049858187 + .long 4294688947 + .long 123993874 + .long 829112653 + .long 33416674 + .long 3807346250 + .long 2099716375 + .long 4294410598 + .long 247987749 + .long 1658225307 + .long 66833348 + .long 3319725204 + .long 4199432751 + .long 4293853900 + .long 495975499 + .long 3316450614 + .long 133666696 + .long 2344483112 + .long 4103898207 + .long 4292740504 + .long 991950999 + .long 2337933933 + .long 267333393 + .long 393998928 + .long 3912829119 + .long 4290513712 + .long 1983901999 + .long 380900570 + .long 534666787 + .long 787997856 + .long 3530690942 + .long 4286060128 + .long 3967803999 + .long 761801140 + .long 1069333574 + .long 1575995713 + .long 2766414588 + .long 4277152960 + .long 3640640703 + .long 1523602280 + .long 2138667148 + .long 3151991427 + .long 1237861880 + .long 4259338624 + .long 2986314111 + .long 3047204561 + .long 4277334296 + .long 2009015559 + .long 2475723761 + .long 4223709953 + .long 1677660927 + .long 1799441827 + .long 4259701297 + .long 4018031118 + .long 656480226 + .long 4152452611 + .long 3355321855 + .long 3598883655 + .long 4224435298 + .long 3741094941 + .long 1312960453 + .long 4009937927 + .long 2415676415 + .long 2902800015 + .long 4153903301 + .long 3187222587 + .long 2625920907 + .long 3724908559 + .long 536385535 + .long 1510632735 + .long 4012839307 + .long 2079477878 + .long 956874519 + .long 3154849823 + .long 1072771071 + .long 3021265470 + .long 3730711318 + .long 4158955756 + .long 1913749038 + .long 2014732351 + .long 2145542143 + .long 1747563645 + .long 3166455341 + .long 4022944216 + .long 3827498077 + .long 4029464703 + .long 4291084286 + .long 3495127291 + .long 2037943386 + .long 3750921137 + .long 3360028859 + .long 3763962110 + .long 4287201277 + .long 2695287286 + .long 4075886773 + .long 3206874979 + .long 2425090423 + .long 3232956925 + .long 4279435259 + .long 1095607277 + .long 3856806251 + .long 2118782663 + .long 555213551 + .long 2170946555 + .long 4263903223 + .long 2191214555 + .long 3418645206 + .long 4237565327 + .long 1110427102 + .long 46925815 + .long 4232839151 + .long 87461814 + .long 2542323117 + .long 4180163359 + .long 2220854205 + .long 93851631 + .long 4170711006 + .long 174923629 + .long 789678938 + .long 4065359423 + .long 146741115 + .long 187703262 + .long 4046454716 + .long 349847258 + .long 1579357876 + .long 3835751551 + .long 293482231 + .long 375406524 + .long 3797942136 + .long 699694516 + .long 3158715752 + .long 3376535807 + .long 586964463 + .long 750813049 + .long 3300916976 + .long 1399389033 + .long 2022464208 + .long 2458104319 + .long 1173928927 + .long 1501626098 + .long 2306866656 + .long 2798778067 + .long 4044928416 + .long 621241343 + .long 2347857855 + .long 3003252197 + .long 318766016 + .long 1302588838 + .long 3794889537 + .long 1242482686 + .long 400748414 + .long 1711537099 + .long 637532033 + .long 2605177677 + .long 3294811778 + .long 2484965372 + .long 801496828 + .long 3423074199 + .long 1275064066 + .long 915388059 + .long 2294656261 + .long 674963448 + .long 1602993657 + .long 2551181103 + .long 2550128133 + .long 1830776118 + .long 294345226 + .long 1349926897 + .long 3205987314 + .long 807394910 + .long 805288971 + .long 3661552236 + .long 588690452 + .long 2699853794 + .long 2117007332 + .long 1614789820 + .long 1610577942 + .long 3028137177 + .long 1177380905 + .long 1104740292 + .long 4234014665 + .long 3229579640 + .long 3221155884 + .long 1761307059 + .long 2354761811 + .long 2209480585 + .long 4173062034 + .long 2164191985 + .long 2147344473 + .long 3522614119 + .long 414556326 + .long 123993874 + .long 4051156773 + .long 33416674 + .long 4294688947 + .long 2750260943 + .long 829112653 + .long 247987749 + .long 3807346250 + .long 66833348 + .long 4294410598 + .long 1205554591 + .long 1658225307 + .long 495975499 + .long 3319725204 + .long 133666696 + .long 4293853900 + .long 2411109183 + .long 3316450614 + .long 991950999 + .long 2344483112 + .long 267333393 + .long 4292740504 + .long 527251070 + .long 2337933933 + .long 1983901999 + .long 393998928 + .long 534666787 + .long 4290513712 + .long 1054502141 + .long 380900570 + .long 3967803999 + .long 787997856 + .long 1069333574 + .long 4286060128 + .long 2109004283 + .long 761801140 + .long 3640640703 + .long 1575995713 + .long 2138667148 + .long 4277152960 + .long 4218008566 + .long 1523602280 + .long 2986314111 + .long 3151991427 + .long 4277334296 + .long 4259338624 + .long 4141049836 + .long 3047204561 + .long 1677660927 + .long 2009015559 + .long 4259701297 + .long 4223709953 + .long 3987132377 + .long 1799441827 + .long 3355321855 + .long 4018031118 + .long 4224435298 + .long 4152452611 + .long 3679297459 + .long 3598883655 + .long 2415676415 + .long 3741094941 + .long 4153903301 + .long 4009937927 + .long 3063627623 + .long 2902800015 + .long 536385535 + .long 3187222587 + .long 4012839307 + .long 3724908559 + .long 1832287951 + .long 1510632735 + .long 1072771071 + .long 2079477878 + .long 3730711318 + .long 3154849823 + .long 3664575902 + .long 3021265470 + .long 2145542143 + .long 4158955756 + .long 3166455341 + .long 2014732351 + .long 3034184508 + .long 1747563645 + .long 4291084286 + .long 4022944216 + .long 2037943386 + .long 4029464703 + .long 1773401721 + .long 3495127291 + .long 4287201277 + .long 3750921137 + .long 4075886773 + .long 3763962110 + .long 3546803442 + .long 2695287286 + .long 4279435259 + .long 3206874979 + .long 3856806251 + .long 3232956925 + .long 2798639588 + .long 1095607277 + .long 4263903223 + .long 2118782663 + .long 3418645206 + .long 2170946555 + .long 1302311881 + .long 2191214555 + .long 4232839151 + .long 4237565327 + .long 2542323117 + .long 46925815 + .long 2604623763 + .long 87461814 + .long 4170711006 + .long 4180163359 + .long 789678938 + .long 93851631 + .long 914280231 + .long 174923629 + .long 4046454716 + .long 4065359423 + .long 1579357876 + .long 187703262 + .long 1828560463 + .long 349847258 + .long 3797942136 + .long 3835751551 + .long 3158715752 + .long 375406524 + .long 3657120927 + .long 699694516 + .long 3300916976 + .long 3376535807 + .long 2022464208 + .long 750813049 + .long 3019274558 + .long 1399389033 + .long 2306866656 + .long 2458104319 + .long 4044928416 + .long 1501626098 + .long 1743581820 + .long 2798778067 + .long 318766016 + .long 621241343 + .long 3794889537 + .long 3003252197 + .long 3487163641 + .long 1302588838 + .long 637532033 + .long 1242482686 + .long 3294811778 + .long 1711537099 + .long 2679359986 + .long 2605177677 + .long 1275064066 + .long 2484965372 + .long 2294656261 + .long 3423074199 + .long 1063752677 + .long 915388059 + .long 2550128133 + .long 674963448 + .long 294345226 + .long 2551181103 + .long 2127505355 + .long 1830776118 + .long 805288971 + .long 1349926897 + .long 588690452 + .long 807394910 + .long 4255010710 + .long 3661552236 + .long 1610577942 + .long 2699853794 + .long 1177380905 + .long 1614789820 + .long 4215054124 + .long 3028137177 + .long 3221155884 + .long 1104740292 + .long 2354761811 + .long 3229579640 + .long 4135140952 + .long 1761307059 + .long 2147344473 + .long 2209480585 + .long 414556326 + .long 2164191985 + .long 3975314608 + .long 3522614119 + .long 4294688947 + .long 123993874 + .long 829112653 + .long 33416674 + .long 3655661921 + .long 2750260943 + .long 4294410598 + .long 247987749 + .long 1658225307 + .long 66833348 + .long 3016356546 + .long 1205554591 + .long 4293853900 + .long 495975499 + .long 3316450614 + .long 133666696 + .long 1737745796 + .long 2411109183 + .long 4292740504 + .long 991950999 + .long 2337933933 + .long 267333393 + .long 3475491593 + .long 527251070 + .long 4290513712 + .long 1983901999 + .long 380900570 + .long 534666787 + .long 2656015891 + .long 1054502141 + .long 4286060128 + .long 3967803999 + .long 761801140 + .long 1069333574 + .long 1017064486 + .long 2109004283 + .long 4277152960 + .long 3640640703 + .long 1523602280 + .long 2138667148 + .long 2034128973 + .long 4218008566 + .long 4259338624 + .long 2986314111 + .long 3047204561 + .long 4277334296 + .long 4068257947 + .long 4141049836 + .long 4223709953 + .long 1677660927 + .long 1799441827 + .long 4259701297 + .long 3841548598 + .long 3987132377 + .long 4152452611 + .long 3355321855 + .long 3598883655 + .long 4224435298 + .long 3388129901 + .long 3679297459 + .long 4009937927 + .long 2415676415 + .long 2902800015 + .long 4153903301 + .long 2481292507 + .long 3063627623 + .long 3724908559 + .long 536385535 + .long 1510632735 + .long 4012839307 + .long 667617719 + .long 1832287951 + .long 3154849823 + .long 1072771071 + .long 3021265470 + .long 3730711318 + .long 1335235438 + .long 3664575902 + .long 2014732351 + .long 2145542143 + .long 1747563645 + .long 3166455341 + .long 2670470877 + .long 3034184508 + .long 4029464703 + .long 4291084286 + .long 3495127291 + .long 2037943386 + .long 1045974458 + .long 1773401721 + .long 3763962110 + .long 4287201277 + .long 2695287286 + .long 4075886773 + .long 2091948916 + .long 3546803442 + .long 3232956925 + .long 4279435259 + .long 1095607277 + .long 3856806251 + .long 4183897833 + .long 2798639588 + .long 2170946555 + .long 4263903223 + .long 2191214555 + .long 3418645206 + .long 4072828371 + .long 1302311881 + .long 46925815 + .long 4232839151 + .long 87461814 + .long 2542323117 + .long 3850689447 + .long 2604623763 + .long 93851631 + .long 4170711006 + .long 174923629 + .long 789678938 + .long 3406411599 + .long 914280231 + .long 187703262 + .long 4046454716 + .long 349847258 + .long 1579357876 + .long 2517855902 + .long 1828560463 + .long 375406524 + .long 3797942136 + .long 699694516 + .long 3158715752 + .long 740744509 + .long 3657120927 + .long 750813049 + .long 3300916976 + .long 1399389033 + .long 2022464208 + .long 1481489018 + .long 3019274558 + .long 1501626098 + .long 2306866656 + .long 2798778067 + .long 4044928416 + .long 2962978036 + .long 1743581820 + .long 3003252197 + .long 318766016 + .long 1302588838 + .long 3794889537 + .long 1630988776 + .long 3487163641 + .long 1711537099 + .long 637532033 + .long 2605177677 + .long 3294811778 + .long 3261977553 + .long 2679359986 + .long 3423074199 + .long 1275064066 + .long 915388059 + .long 2294656261 + .long 2228987811 + .long 1063752677 + .long 2551181103 + .long 2550128133 + .long 1830776118 + .long 294345226 + .long 163008326 + .long 2127505355 + .long 807394910 + .long 805288971 + .long 3661552236 + .long 588690452 + .long 326016652 + .long 4255010710 + .long 1614789820 + .long 1610577942 + .long 3028137177 + .long 1177380905 + .long 652033304 + .long 4215054124 + .long 3229579640 + .long 3221155884 + .long 1761307059 + .long 2354761811 + .long 1304066609 + .long 4135140952 + .long 2164191985 + .long 2147344473 + .long 3522614119 + .long 414556326 + .long 2608133219 + .long 3975314608 + .long 33416674 + .long 4294688947 + .long 2750260943 + .long 829112653 + .long 921299143 + .long 3655661921 + .long 66833348 + .long 4294410598 + .long 1205554591 + .long 1658225307 + .long 1842598287 + .long 3016356546 + .long 133666696 + .long 4293853900 + .long 2411109183 + .long 3316450614 + .long 3685196575 + .long 1737745796 + .long 267333393 + .long 4292740504 + .long 527251070 + .long 2337933933 + .long 3075425855 + .long 3475491593 + .long 534666787 + .long 4290513712 + .long 1054502141 + .long 380900570 + .long 1855884414 + .long 2656015891 + .long 1069333574 + .long 4286060128 + .long 2109004283 + .long 761801140 + .long 3711768829 + .long 1017064486 + .long 2138667148 + .long 4277152960 + .long 4218008566 + .long 1523602280 + .long 3128570363 + .long 2034128973 + .long 4277334296 + .long 4259338624 + .long 4141049836 + .long 3047204561 + .long 1962173430 + .long 4068257947 + .long 4259701297 + .long 4223709953 + .long 3987132377 + .long 1799441827 + .long 3924346860 + .long 3841548598 + .long 4224435298 + .long 4152452611 + .long 3679297459 + .long 3598883655 + .long 3553726425 + .long 3388129901 + .long 4153903301 + .long 4009937927 + .long 3063627623 + .long 2902800015 + .long 2812485555 + .long 2481292507 + .long 4012839307 + .long 3724908559 + .long 1832287951 + .long 1510632735 + .long 1330003814 + .long 667617719 + .long 3730711318 + .long 3154849823 + .long 3664575902 + .long 3021265470 + .long 2660007629 + .long 1335235438 + .long 3166455341 + .long 2014732351 + .long 3034184508 + .long 1747563645 + .long 1025047962 + .long 2670470877 + .long 2037943386 + .long 4029464703 + .long 1773401721 + .long 3495127291 + .long 2050095924 + .long 1045974458 + .long 4075886773 + .long 3763962110 + .long 3546803442 + .long 2695287286 + .long 4100191849 + .long 2091948916 + .long 3856806251 + .long 3232956925 + .long 2798639588 + .long 1095607277 + .long 3905416403 + .long 4183897833 + .long 3418645206 + .long 2170946555 + .long 1302311881 + .long 2191214555 + .long 3515865511 + .long 4072828371 + .long 2542323117 + .long 46925815 + .long 2604623763 + .long 87461814 + .long 2736763727 + .long 3850689447 + .long 789678938 + .long 93851631 + .long 914280231 + .long 174923629 + .long 1178560158 + .long 3406411599 + .long 1579357876 + .long 187703262 + .long 1828560463 + .long 349847258 + .long 2357120316 + .long 2517855902 + .long 3158715752 + .long 375406524 + .long 3657120927 + .long 699694516 + .long 419273337 + .long 740744509 + .long 2022464208 + .long 750813049 + .long 3019274558 + .long 1399389033 + .long 838546674 + .long 1481489018 + .long 4044928416 + .long 1501626098 + .long 1743581820 + .long 2798778067 + .long 1677093349 + .long 2962978036 + .long 3794889537 + .long 3003252197 + .long 3487163641 + .long 1302588838 + .long 3354186699 + .long 1630988776 + .long 3294811778 + .long 1711537099 + .long 2679359986 + .long 2605177677 + .long 2413406103 + .long 3261977553 + .long 2294656261 + .long 3423074199 + .long 1063752677 + .long 915388059 + .long 531844911 + .long 2228987811 + .long 294345226 + .long 2551181103 + .long 2127505355 + .long 1830776118 + .long 1063689823 + .long 163008326 + .long 588690452 + .long 807394910 + .long 4255010710 + .long 3661552236 + .long 2127379647 + .long 326016652 + .long 1177380905 + .long 1614789820 + .long 4215054124 + .long 3028137177 + .long 4254759295 + .long 652033304 + .long 2354761811 + .long 3229579640 + .long 4135140952 + .long 1761307059 + .long 4214551295 + .long 1304066609 + .long 414556326 + .long 2164191985 + .long 3975314608 + .long 3522614119 + .long 4134135294 + .long 2608133219 + .long 829112653 + .long 33416674 + .long 3655661921 + .long 2750260943 + .long 3973303293 + .long 921299143 + .long 1658225307 + .long 66833348 + .long 3016356546 + .long 1205554591 + .long 3651639290 + .long 1842598287 + .long 3316450614 + .long 133666696 + .long 1737745796 + .long 2411109183 + .long 3008311285 + .long 3685196575 + .long 2337933933 + .long 267333393 + .long 3475491593 + .long 527251070 + .long 1721655274 + .long 3075425855 + .long 380900570 + .long 534666787 + .long 2656015891 + .long 1054502141 + .long 3443310548 + .long 1855884414 + .long 761801140 + .long 1069333574 + .long 1017064486 + .long 2109004283 + .long 2591653800 + .long 3711768829 + .long 1523602280 + .long 2138667148 + .long 2034128973 + .long 4218008566 + .long 888340305 + .long 3128570363 + .long 3047204561 + .long 4277334296 + .long 4068257947 + .long 4141049836 + .long 1776680610 + .long 1962173430 + .long 1799441827 + .long 4259701297 + .long 3841548598 + .long 3987132377 + .long 3553361221 + .long 3924346860 + .long 3598883655 + .long 4224435298 + .long 3388129901 + .long 3679297459 + .long 2811755147 + .long 3553726425 + .long 2902800015 + .long 4153903301 + .long 2481292507 + .long 3063627623 + .long 1328542998 + .long 2812485555 + .long 1510632735 + .long 4012839307 + .long 667617719 + .long 1832287951 + .long 2657085997 + .long 1330003814 + .long 3021265470 + .long 3730711318 + .long 1335235438 + .long 3664575902 + .long 1019204698 + .long 2660007629 + .long 1747563645 + .long 3166455341 + .long 2670470877 + .long 3034184508 + .long 2038409397 + .long 1025047962 + .long 3495127291 + .long 2037943386 + .long 1045974458 + .long 1773401721 + .long 4076818795 + .long 2050095924 + .long 2695287286 + .long 4075886773 + .long 2091948916 + .long 3546803442 + .long 3858670295 + .long 4100191849 + .long 1095607277 + .long 3856806251 + .long 4183897833 + .long 2798639588 + .long 3422373294 + .long 3905416403 + .long 2191214555 + .long 3418645206 + .long 4072828371 + .long 1302311881 + .long 2549779293 + .long 3515865511 + .long 87461814 + .long 2542323117 + .long 3850689447 + .long 2604623763 + .long 804591290 + .long 2736763727 + .long 174923629 + .long 789678938 + .long 3406411599 + .long 914280231 + .long 1609182581 + .long 1178560158 + .long 349847258 + .long 1579357876 + .long 2517855902 + .long 1828560463 + .long 3218365162 + .long 2357120316 + .long 699694516 + .long 3158715752 + .long 740744509 + .long 3657120927 + .long 2141763028 + .long 419273337 + .long 1399389033 + .long 2022464208 + .long 1481489018 + .long 3019274558 + .long 4283526057 + .long 838546674 + .long 2798778067 + .long 4044928416 + .long 2962978036 + .long 1743581820 + .long 4272084818 + .long 1677093349 + .long 1302588838 + .long 3794889537 + .long 1630988776 + .long 3487163641 + .long 4249202340 + .long 3354186699 + .long 2605177677 + .long 3294811778 + .long 3261977553 + .long 2679359986 + .long 4203437385 + .long 2413406103 + .long 915388059 + .long 2294656261 + .long 2228987811 + .long 1063752677 + .long 4111907475 + .long 531844911 + .long 1830776118 + .long 294345226 + .long 163008326 + .long 2127505355 + .long 3928847655 + .long 1063689823 + .long 3661552236 + .long 588690452 + .long 326016652 + .long 4255010710 + .long 3562728015 + .long 2127379647 + .long 3028137177 + .long 1177380905 + .long 652033304 + .long 4215054124 + .long 2830488734 + .long 4254759295 + .long 1761307059 + .long 2354761811 + .long 1304066609 + .long 4135140952 + .long 1366010173 + .long 4214551295 + .long 3522614119 + .long 414556326 + .long 2608133219 + .long 3975314608 + .long 2732020347 + .long 4134135294 + .long 2750260943 + .long 829112653 + .long 921299143 + .long 3655661921 + .long 1169073399 + .long 3973303293 + .long 1205554591 + .long 1658225307 + .long 1842598287 + .long 3016356546 + .long 2338146798 + .long 3651639290 + .long 2411109183 + .long 3316450614 + .long 3685196575 + .long 1737745796 + .long 381326301 + .long 3008311285 + .long 527251070 + .long 2337933933 + .long 3075425855 + .long 3475491593 + .long 762652602 + .long 1721655274 + .long 1054502141 + .long 380900570 + .long 1855884414 + .long 2656015891 + .long 1525305205 + .long 3443310548 + .long 2109004283 + .long 761801140 + .long 3711768829 + .long 1017064486 + .long 3050610411 + .long 2591653800 + .long 4218008566 + .long 1523602280 + .long 3128570363 + .long 2034128973 + .long 1806253526 + .long 888340305 + .long 4141049836 + .long 3047204561 + .long 1962173430 + .long 4068257947 + .long 3612507052 + .long 1776680610 + .long 3987132377 + .long 1799441827 + .long 3924346860 + .long 3841548598 + .long 2930046808 + .long 3553361221 + .long 3679297459 + .long 3598883655 + .long 3553726425 + .long 3388129901 + .long 1565126321 + .long 2811755147 + .long 3063627623 + .long 2902800015 + .long 2812485555 + .long 2481292507 + .long 3130252643 + .long 1328542998 + .long 1832287951 + .long 1510632735 + .long 1330003814 + .long 667617719 + .long 1965537991 + .long 2657085997 + .long 3664575902 + .long 3021265470 + .long 2660007629 + .long 1335235438 + .long 3931075983 + .long 1019204698 + .long 3034184508 + .long 1747563645 + .long 1025047962 + .long 2670470877 + .long 3567184671 + .long 2038409397 + .long 1773401721 + .long 3495127291 + .long 2050095924 + .long 1045974458 + .long 2839402047 + .long 4076818795 + .long 3546803442 + .long 2695287286 + .long 4100191849 + .long 2091948916 + .long 1383836798 + .long 3858670295 + .long 2798639588 + .long 1095607277 + .long 3905416403 + .long 4183897833 + .long 2767673597 + .long 3422373294 + .long 1302311881 + .long 2191214555 + .long 3515865511 + .long 4072828371 + .long 1240379898 + .long 2549779293 + .long 2604623763 + .long 87461814 + .long 2736763727 + .long 3850689447 + .long 2480759797 + .long 804591290 + .long 914280231 + .long 174923629 + .long 1178560158 + .long 3406411599 + .long 666552299 + .long 1609182581 + .long 1828560463 + .long 349847258 + .long 2357120316 + .long 2517855902 + .long 1333104599 + .long 3218365162 + .long 3657120927 + .long 699694516 + .long 419273337 + .long 740744509 + .long 2666209199 + .long 2141763028 + .long 3019274558 + .long 1399389033 + .long 838546674 + .long 1481489018 + .long 1037451103 + .long 4283526057 + .long 1743581820 + .long 2798778067 + .long 1677093349 + .long 2962978036 + .long 2074902206 + .long 4272084818 + .long 3487163641 + .long 1302588838 + .long 3354186699 + .long 1630988776 + .long 4149804412 + .long 4249202340 + .long 2679359986 + .long 2605177677 + .long 2413406103 + .long 3261977553 + .long 4004641529 + .long 4203437385 + .long 1063752677 + .long 915388059 + .long 531844911 + .long 2228987811 + .long 3714315762 + .long 4111907475 + .long 2127505355 + .long 1830776118 + .long 1063689823 + .long 163008326 + .long 3133664229 + .long 3928847655 + .long 4255010710 + .long 3661552236 + .long 2127379647 + .long 326016652 + .long 1972361163 + .long 3562728015 + .long 4215054124 + .long 3028137177 + .long 4254759295 + .long 652033304 + .long 3944722327 + .long 2830488734 + .long 4135140952 + .long 1761307059 + .long 4214551295 + .long 1304066609 + .long 3594477359 + .long 1366010173 + .long 3975314608 + .long 3522614119 + .long 4134135294 + .long 2608133219 + .long 2893987423 + .long 2732020347 + .long 3655661921 + .long 2750260943 + .long 3973303293 + .long 921299143 + .long 1493007550 + .long 1169073399 + .long 3016356546 + .long 1205554591 + .long 3651639290 + .long 1842598287 + .long 2986015100 + .long 2338146798 + .long 1737745796 + .long 2411109183 + .long 3008311285 + .long 3685196575 + .long 1677062904 + .long 381326301 + .long 3475491593 + .long 527251070 + .long 1721655274 + .long 3075425855 + .long 3354125809 + .long 762652602 + .long 2656015891 + .long 1054502141 + .long 3443310548 + .long 1855884414 + .long 2413284322 + .long 1525305205 + .long 1017064486 + .long 2109004283 + .long 2591653800 + .long 3711768829 + .long 531601349 + .long 3050610411 + .long 2034128973 + .long 4218008566 + .long 888340305 + .long 3128570363 + .long 1063202699 + .long 1806253526 + .long 4068257947 + .long 4141049836 + .long 1776680610 + .long 1962173430 + .long 2126405399 + .long 3612507052 + .long 3841548598 + .long 3987132377 + .long 3553361221 + .long 3924346860 + .long 4252810799 + .long 2930046808 + .long 3388129901 + .long 3679297459 + .long 2811755147 + .long 3553726425 + .long 4210654302 + .long 1565126321 + .long 2481292507 + .long 3063627623 + .long 1328542998 + .long 2812485555 + .long 4126341309 + .long 3130252643 + .long 667617719 + .long 1832287951 + .long 2657085997 + .long 1330003814 + .long 3957715323 + .long 1965537991 + .long 1335235438 + .long 3664575902 + .long 1019204698 + .long 2660007629 + .long 3620463350 + .long 3931075983 + .long 2670470877 + .long 3034184508 + .long 2038409397 + .long 1025047962 + .long 2945959404 + .long 3567184671 + .long 1045974458 + .long 1773401721 + .long 4076818795 + .long 2050095924 + .long 1596951513 + .long 2839402047 + .long 2091948916 + .long 3546803442 + .long 3858670295 + .long 4100191849 + .long 3193903027 + .long 1383836798 + .long 4183897833 + .long 2798639588 + .long 3422373294 + .long 3905416403 + .long 2092838759 + .long 2767673597 + .long 4072828371 + .long 1302311881 + .long 2549779293 + .long 3515865511 + .long 4185677519 + .long 1240379898 + .long 3850689447 + .long 2604623763 + .long 804591290 + .long 2736763727 + .long 4076387742 + .long 2480759797 + .long 3406411599 + .long 914280231 + .long 1609182581 + .long 1178560158 + .long 3857808189 + .long 666552299 + .long 2517855902 + .long 1828560463 + .long 3218365162 + .long 2357120316 + .long 3420649082 + .long 1333104599 + .long 740744509 + .long 3657120927 + .long 2141763028 + .long 419273337 + .long 2546330868 + .long 2666209199 + .long 1481489018 + .long 3019274558 + .long 4283526057 + .long 838546674 + .long 797694440 + .long 1037451103 + .long 2962978036 + .long 1743581820 + .long 4272084818 + .long 1677093349 + .long 1595388880 + .long 2074902206 + .long 1630988776 + .long 3487163641 + .long 4249202340 + .long 3354186699 + .long 3190777760 + .long 4149804412 + .long 3261977553 + .long 2679359986 + .long 4203437385 + .long 2413406103 + .long 2086588225 + .long 4004641529 + .long 2228987811 + .long 1063752677 + .long 4111907475 + .long 531844911 + .long 4173176451 + .long 3714315762 + .long 163008326 + .long 2127505355 + .long 3928847655 + .long 1063689823 + .long 4051385607 + .long 3133664229 + .long 326016652 + .long 4255010710 + .long 3562728015 + .long 2127379647 + .long 3807803918 + .long 1972361163 + .long 652033304 + .long 4215054124 + .long 2830488734 + .long 4254759295 + .long 3320640540 + .long 3944722327 + .long 1304066609 + .long 4135140952 + .long 1366010173 + .long 4214551295 + .long 2346313785 + .long 3594477359 + .long 2608133219 + .long 3975314608 + .long 2732020347 + .long 4134135294 + .long 397660275 + .long 2893987423 + .long 921299143 + .long 3655661921 + .long 1169073399 + .long 3973303293 + .long 795320551 + .long 1493007550 + .long 1842598287 + .long 3016356546 + .long 2338146798 + .long 3651639290 + .long 1590641102 + .long 2986015100 + .long 3685196575 + .long 1737745796 + .long 381326301 + .long 3008311285 + .long 3181282204 + .long 1677062904 + .long 3075425855 + .long 3475491593 + .long 762652602 + .long 1721655274 + .long 2067597113 + .long 3354125809 + .long 1855884414 + .long 2656015891 + .long 1525305205 + .long 3443310548 + .long 4135194227 + .long 2413284322 + .long 3711768829 + .long 1017064486 + .long 3050610411 + .long 2591653800 + .long 3975421159 + .long 531601349 + .long 3128570363 + .long 2034128973 + .long 1806253526 + .long 888340305 + .long 3655875023 + .long 1063202699 + .long 1962173430 + .long 4068257947 + .long 3612507052 + .long 1776680610 + .long 3016782751 + .long 2126405399 + .long 3924346860 + .long 3841548598 + .long 2930046808 + .long 3553361221 + .long 1738598206 + .long 4252810799 + .long 3553726425 + .long 3388129901 + .long 1565126321 + .long 2811755147 + .long 3477196413 + .long 4210654302 + .long 2812485555 + .long 2481292507 + .long 3130252643 + .long 1328542998 + .long 2659425531 + .long 4126341309 + .long 1330003814 + .long 667617719 + .long 1965537991 + .long 2657085997 + .long 1023883767 + .long 3957715323 + .long 2660007629 + .long 1335235438 + .long 3931075983 + .long 1019204698 + .long 2047767535 + .long 3620463350 + .long 1025047962 + .long 2670470877 + .long 3567184671 + .long 2038409397 + .long 4095535070 + .long 2945959404 + .long 2050095924 + .long 1045974458 + .long 2839402047 + .long 4076818795 + .long 3896102844 + .long 1596951513 + .long 4100191849 + .long 2091948916 + .long 1383836798 + .long 3858670295 + .long 3497238392 + .long 3193903027 + .long 3905416403 + .long 4183897833 + .long 2767673597 + .long 3422373294 + .long 2699509489 + .long 2092838759 + .long 3515865511 + .long 4072828371 + .long 1240379898 + .long 2549779293 + .long 1104051682 + .long 4185677519 + .long 2736763727 + .long 3850689447 + .long 2480759797 + .long 804591290 + .long 2208103365 + .long 4076387742 + .long 1178560158 + .long 3406411599 + .long 666552299 + .long 1609182581 + .long 121239434 + .long 3857808189 + .long 2357120316 + .long 2517855902 + .long 1333104599 + .long 3218365162 + .long 242478868 + .long 3420649082 + .long 419273337 + .long 740744509 + .long 2666209199 + .long 2141763028 + .long 484957737 + .long 2546330868 + .long 838546674 + .long 1481489018 + .long 1037451103 + .long 4283526057 + .long 969915474 + .long 797694440 + .long 1677093349 + .long 2962978036 + .long 2074902206 + .long 4272084818 + .long 1939830949 + .long 1595388880 + .long 3354186699 + .long 1630988776 + .long 4149804412 + .long 4249202340 + .long 3879661898 + .long 3190777760 + .long 2413406103 + .long 3261977553 + .long 4004641529 + .long 4203437385 + .long 3464356500 + .long 2086588225 + .long 531844911 + .long 2228987811 + .long 3714315762 + .long 4111907475 + .long 2633745705 + .long 4173176451 + .long 1063689823 + .long 163008326 + .long 3133664229 + .long 3928847655 + .long 972524114 + .long 4051385607 + .long 2127379647 + .long 326016652 + .long 1972361163 + .long 3562728015 + .long 1945048229 + .long 3807803918 + .long 4254759295 + .long 652033304 + .long 3944722327 + .long 2830488734 + .long 3890096458 + .long 3320640540 + .long 4214551295 + .long 1304066609 + .long 3594477359 + .long 1366010173 + .long 3485225620 + .long 2346313785 + .long 4134135294 + .long 2608133219 + .long 2893987423 + .long 2732020347 + .long 2675483945 + .long 397660275 + .long 3973303293 + .long 921299143 + .long 1493007550 + .long 1169073399 + .long 1056000594 + .long 795320551 + .long 3651639290 + .long 1842598287 + .long 2986015100 + .long 2338146798 + .long 2112001188 + .long 1590641102 + .long 3008311285 + .long 3685196575 + .long 1677062904 + .long 381326301 + .long 4224002377 + .long 3181282204 + .long 1721655274 + .long 3075425855 + .long 3354125809 + .long 762652602 + .long 4153037458 + .long 2067597113 + .long 3443310548 + .long 1855884414 + .long 2413284322 + .long 1525305205 + .long 4011107621 + .long 4135194227 + .long 2591653800 + .long 3711768829 + .long 531601349 + .long 3050610411 + .long 3727247947 + .long 3975421159 + .long 888340305 + .long 3128570363 + .long 1063202699 + .long 1806253526 + .long 3159528599 + .long 3655875023 + .long 1776680610 + .long 1962173430 + .long 2126405399 + .long 3612507052 + .long 2024089902 + .long 3016782751 + .long 3553361221 + .long 3924346860 + .long 4252810799 + .long 2930046808 + .long 4048179805 + .long 1738598206 + .long 2811755147 + .long 3553726425 + .long 4210654302 + .long 1565126321 + .long 3801392314 + .long 3477196413 + .long 1328542998 + .long 2812485555 + .long 4126341309 + .long 3130252643 + .long 3307817333 + .long 2659425531 + .long 2657085997 + .long 1330003814 + .long 3957715323 + .long 1965537991 + .long 2320667370 + .long 1023883767 + .long 1019204698 + .long 2660007629 + .long 3620463350 + .long 3931075983 + .long 346367444 + .long 2047767535 + .long 2038409397 + .long 1025047962 + .long 2945959404 + .long 3567184671 + .long 692734889 + .long 4095535070 + .long 4076818795 + .long 2050095924 + .long 1596951513 + .long 2839402047 + .long 1385469779 + .long 3896102844 + .long 3858670295 + .long 4100191849 + .long 3193903027 + .long 1383836798 + .long 2770939558 + .long 3497238392 + .long 3422373294 + .long 3905416403 + .long 2092838759 + .long 2767673597 + .long 1246911821 + .long 2699509489 + .long 2549779293 + .long 3515865511 + .long 4185677519 + .long 1240379898 + .long 2493823642 + .long 1104051682 + .long 804591290 + .long 2736763727 + .long 4076387742 + .long 2480759797 + .long 692679989 + .long 2208103365 + .long 1609182581 + .long 1178560158 + .long 3857808189 + .long 666552299 + .long 1385359979 + .long 121239434 + .long 3218365162 + .long 2357120316 + .long 3420649082 + .long 1333104599 + .long 2770719959 + .long 242478868 + .long 2141763028 + .long 419273337 + .long 2546330868 + .long 2666209199 + .long 1246472623 + .long 484957737 + .long 4283526057 + .long 838546674 + .long 797694440 + .long 1037451103 + .long 2492945247 + .long 969915474 + .long 4272084818 + .long 1677093349 + .long 1595388880 + .long 2074902206 + .long 690923199 + .long 1939830949 + .long 4249202340 + .long 3354186699 + .long 3190777760 + .long 4149804412 + .long 1381846399 + .long 3879661898 + .long 4203437385 + .long 2413406103 + .long 2086588225 + .long 4004641529 + .long 2763692798 + .long 3464356500 + .long 4111907475 + .long 531844911 + .long 4173176451 + .long 3714315762 + .long 1232418301 + .long 2633745705 + .long 3928847655 + .long 1063689823 + .long 4051385607 + .long 3133664229 + .long 2464836603 + .long 972524114 + .long 3562728015 + .long 2127379647 + .long 3807803918 + .long 1972361163 + .long 634705910 + .long 1945048229 + .long 2830488734 + .long 4254759295 + .long 3320640540 + .long 3944722327 + .long 1269411821 + .long 3890096458 + .long 1366010173 + .long 4214551295 + .long 2346313785 + .long 3594477359 + .long 2538823642 + .long 3485225620 + .long 2732020347 + .long 4134135294 + .long 397660275 + .long 2893987423 + .long 782679989 + .long 2675483945 + .long 1169073399 + .long 3973303293 + .long 795320551 + .long 1493007550 + .long 1565359979 + .long 1056000594 + .long 2338146798 + .long 3651639290 + .long 1590641102 + .long 2986015100 + .long 3130719959 + .long 2112001188 + .long 381326301 + .long 3008311285 + .long 3181282204 + .long 1677062904 + .long 1966472623 + .long 4224002377 + .long 762652602 + .long 1721655274 + .long 2067597113 + .long 3354125809 + .long 3932945247 + .long 4153037458 + .long 1525305205 + .long 3443310548 + .long 4135194227 + .long 2413284322 + .long 3570923199 + .long 4011107621 + .long 3050610411 + .long 2591653800 + .long 3975421159 + .long 531601349 + .long 2846879102 + .long 3727247947 + .long 1806253526 + .long 888340305 + .long 3655875023 + .long 1063202699 + .long 1398790909 + .long 3159528599 + .long 3612507052 + .long 1776680610 + .long 3016782751 + .long 2126405399 + .long 2797581819 + .long 2024089902 + .long 2930046808 + .long 3553361221 + .long 1738598206 + .long 4252810799 + .long 1300196342 + .long 4048179805 + .long 1565126321 + .long 2811755147 + .long 3477196413 + .long 4210654302 + .long 2600392684 + .long 3801392314 + .long 3130252643 + .long 1328542998 + .long 2659425531 + .long 4126341309 + .long 905818072 + .long 3307817333 + .long 1965537991 + .long 2657085997 + .long 1023883767 + .long 3957715323 + .long 1811636145 + .long 2320667370 + .long 3931075983 + .long 1019204698 + .long 2047767535 + .long 3620463350 + .long 3623272290 + .long 346367444 + .long 3567184671 + .long 2038409397 + .long 4095535070 + .long 2945959404 + .long 2951577284 + .long 692734889 + .long 2839402047 + .long 4076818795 + .long 3896102844 + .long 1596951513 + .long 1608187272 + .long 1385469779 + .long 1383836798 + .long 3858670295 + .long 3497238392 + .long 3193903027 + .long 3216374545 + .long 2770939558 + .long 2767673597 + .long 3422373294 + .long 2699509489 + .long 2092838759 + .long 2137781795 + .long 1246911821 + .long 1240379898 + .long 2549779293 + .long 1104051682 + .long 4185677519 + .long 4275563591 + .long 2493823642 + .long 2480759797 + .long 804591290 + .long 2208103365 + .long 4076387742 + .long 4256159887 + .long 692679989 + .long 666552299 + .long 1609182581 + .long 121239434 + .long 3857808189 + .long 4217352479 + .long 1385359979 + .long 1333104599 + .long 3218365162 + .long 242478868 + .long 3420649082 + .long 4139737663 + .long 2770719959 + .long 2666209199 + .long 2141763028 + .long 484957737 + .long 2546330868 + .long 3984508030 + .long 1246472623 + .long 1037451103 + .long 4283526057 + .long 969915474 + .long 797694440 + .long 3674048764 + .long 2492945247 + .long 2074902206 + .long 4272084818 + .long 1939830949 + .long 1595388880 + .long 3053130232 + .long 690923199 + .long 4149804412 + .long 4249202340 + .long 3879661898 + .long 3190777760 + .long 1811293169 + .long 1381846399 + .long 4004641529 + .long 4203437385 + .long 3464356500 + .long 2086588225 + .long 3622586339 + .long 2763692798 + .long 3714315762 + .long 4111907475 + .long 2633745705 + .long 4173176451 + .long 2950205382 + .long 1232418301 + .long 3133664229 + .long 3928847655 + .long 972524114 + .long 4051385607 + .long 1605443469 + .long 2464836603 + .long 1972361163 + .long 3562728015 + .long 1945048229 + .long 3807803918 + .long 3210886938 + .long 634705910 + .long 3944722327 + .long 2830488734 + .long 3890096458 + .long 3320640540 + .long 2126806581 + .long 1269411821 + .long 3594477359 + .long 1366010173 + .long 3485225620 + .long 2346313785 + .long 4253613162 + .long 2538823642 + .long 2893987423 + .long 2732020347 + .long 2675483945 + .long 397660275 + .long 4212259029 + .long 782679989 + .long 1493007550 + .long 1169073399 + .long 1056000594 + .long 795320551 + .long 4129550763 + .long 1565359979 + .long 2986015100 + .long 2338146798 + .long 2112001188 + .long 1590641102 + .long 3964134231 + .long 3130719959 + .long 1677062904 + .long 381326301 + .long 4224002377 + .long 3181282204 + .long 3633301166 + .long 1966472623 + .long 3354125809 + .long 762652602 + .long 4153037458 + .long 2067597113 + .long 2971635037 + .long 3932945247 + .long 2413284322 + .long 1525305205 + .long 4011107621 + .long 4135194227 + .long 1648302778 + .long 3570923199 + .long 531601349 + .long 3050610411 + .long 3727247947 + .long 3975421159 + .long 3296605556 + .long 2846879102 + .long 1063202699 + .long 1806253526 + .long 3159528599 + .long 3655875023 + .long 2298243816 + .long 1398790909 + .long 2126405399 + .long 3612507052 + .long 2024089902 + .long 3016782751 + .long 301520336 + .long 2797581819 + .long 4252810799 + .long 2930046808 + .long 4048179805 + .long 1738598206 + .long 603040673 + .long 1300196342 + .long 4210654302 + .long 1565126321 + .long 3801392314 + .long 3477196413 + .long 1206081346 + .long 2600392684 + .long 4126341309 + .long 3130252643 + .long 3307817333 + .long 2659425531 + .long 2412162692 + .long 905818072 + .long 3957715323 + .long 1965537991 + .long 2320667370 + .long 1023883767 + .long 529358088 + .long 1811636145 + .long 3620463350 + .long 3931075983 + .long 346367444 + .long 2047767535 + .long 1058716176 + .long 3623272290 + .long 2945959404 + .long 3567184671 + .long 692734889 + .long 4095535070 + .long 2117432353 + .long 2951577284 + .long 1596951513 + .long 2839402047 + .long 1385469779 + .long 3896102844 + .long 4234864706 + .long 1608187272 + .long 3193903027 + .long 1383836798 + .long 2770939558 + .long 3497238392 + .long 4174762117 + .long 3216374545 + .long 2092838759 + .long 2767673597 + .long 1246911821 + .long 2699509489 + .long 4054556938 + .long 2137781795 + .long 4185677519 + .long 1240379898 + .long 2493823642 + .long 1104051682 + .long 3814146581 + .long 4275563591 + .long 4076387742 + .long 2480759797 + .long 692679989 + .long 2208103365 + .long 3333325867 + .long 4256159887 + .long 3857808189 + .long 666552299 + .long 1385359979 + .long 121239434 + .long 2371684438 + .long 4217352479 + .long 3420649082 + .long 1333104599 + .long 2770719959 + .long 242478868 + .long 448401580 + .long 4139737663 + .long 2546330868 + .long 2666209199 + .long 1246472623 + .long 484957737 + .long 896803160 + .long 3984508030 + .type __svml_dcos_reduction_data_internal,@object + .size __svml_dcos_reduction_data_internal,49152 + .space 512, 0x00 + .align 8 +.L_2il0floatpacket.28: + .long 0xffffffff,0xffffffff + .type .L_2il0floatpacket.28,@object + .size .L_2il0floatpacket.28,8 + .align 8 +.L_2il0floatpacket.29: + .long 0x00000000,0x7ff00000 + .type .L_2il0floatpacket.29,@object + .size .L_2il0floatpacket.29,8 + .align 8 +.L_2il0floatpacket.30: + .long 0xffffffff,0x000fffff + .type .L_2il0floatpacket.30,@object + .size .L_2il0floatpacket.30,8 + .align 8 +.L_2il0floatpacket.31: + .long 0x00000000,0x00100000 + .type .L_2il0floatpacket.31,@object + .size .L_2il0floatpacket.31,8 + .align 8 +.L_2il0floatpacket.32: + .long 0xffffffff,0x00000000 + .type .L_2il0floatpacket.32,@object + .size .L_2il0floatpacket.32,8 + .align 8 +.L_2il0floatpacket.33: + .long 0x00000000,0x80000000 + .type .L_2il0floatpacket.33,@object + .size .L_2il0floatpacket.33,8 + .align 8 +.L_2il0floatpacket.34: + .long 0x00000000,0x3ff00000 + .type .L_2il0floatpacket.34,@object + .size .L_2il0floatpacket.34,8 + .align 8 +.L_2il0floatpacket.35: + .long 0x00000000,0x42a80000 + .type .L_2il0floatpacket.35,@object + .size .L_2il0floatpacket.35,8 + .align 8 +.L_2il0floatpacket.36: + .long 0x000001ff,0x00000000 + .type .L_2il0floatpacket.36,@object + .size .L_2il0floatpacket.36,8 + .align 8 +.L_2il0floatpacket.37: + .long 0x00000000,0x39700000 + .type .L_2il0floatpacket.37,@object + .size .L_2il0floatpacket.37,8 + .align 8 +.L_2il0floatpacket.38: + .long 0x00ffffff,0x00000000 + .type .L_2il0floatpacket.38,@object + .size .L_2il0floatpacket.38,8 + .align 8 +.L_2il0floatpacket.39: + .long 0x00000000,0x3cb00000 + .type .L_2il0floatpacket.39,@object + .size .L_2il0floatpacket.39,8 + .align 8 +.L_2il0floatpacket.40: + .long 0x00000fff,0x00000000 + .type .L_2il0floatpacket.40,@object + .size .L_2il0floatpacket.40,8 + .align 8 +.L_2il0floatpacket.41: + .long 0x54442d18,0x401921fb + .type .L_2il0floatpacket.41,@object + .size .L_2il0floatpacket.41,8 + .align 8 +.L_2il0floatpacket.42: + .long 0x33145c07,0x3cb1a626 + .type .L_2il0floatpacket.42,@object + .size .L_2il0floatpacket.42,8 + .align 8 +.L_2il0floatpacket.43: + .long 0xffffffff,0x7fffffff + .type .L_2il0floatpacket.43,@object + .size .L_2il0floatpacket.43,8 + .align 8 +.L_2il0floatpacket.44: + .long 0x00000000,0x3eb00000 + .type .L_2il0floatpacket.44,@object + .size .L_2il0floatpacket.44,8 + .align 8 +__dcos_la_CoutTab: + .long 0 + .long 0 + .long 0 + .long 2146435072 + .type __dcos_la_CoutTab,@object + .size __dcos_la_CoutTab,16 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_cos_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_cos_s_la.s new file mode 100644 index 00000000..54e3f47f --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_cos_s_la.s @@ -0,0 +1,2854 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * + * 1) Range reduction to [-Pi/2; +Pi/2] interval + * a) We remove sign using AND operation + * b) Add Pi/2 value to argument X for Cos to Sin transformation + * c) Getting octant Y by 1/Pi multiplication + * d) Add "Right Shifter" value + * e) Treat obtained value as integer for destination sign setting. + * Shift first bit of this value to the last (sign) position + * f) Subtract "Right Shifter" value + * g) Subtract 0.5 from result for octant correction + * h) Subtract Y*PI from X argument, where PI divided to 4 parts: + * X = X - Y*PI1 - Y*PI2 - Y*PI3 - Y*PI4; + * 2) Polynomial (minimax for sin within [-Pi/2; +Pi/2] interval) + * a) Calculate X^2 = X * X + * b) Calculate polynomial: + * R = X + X * X^2 * (A3 + x^2 * (A5 + ..... + * 3) Destination sign setting + * a) Set shifted destination sign using XOR operation: + * R = XOR( R, S ); + * + */ + + + .text +.L_2__routine_start___svml_cosf16_z0_0: + + .align 16,0x90 + .globl __svml_cosf16 + +__svml_cosf16: + + + .cfi_startproc +..L2: + + 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 + xorl %edx, %edx + vmovaps %zmm0, %zmm11 + vmovups 5568+__svml_scos_data_internal(%rip), %zmm0 + vmovups 5504+__svml_scos_data_internal(%rip), %zmm4 + vmovups 5440+__svml_scos_data_internal(%rip), %zmm3 + vmovups 5632+__svml_scos_data_internal(%rip), %zmm6 + vmovups 4800+__svml_scos_data_internal(%rip), %zmm9 + vmovups 4864+__svml_scos_data_internal(%rip), %zmm7 + vmovups 4928+__svml_scos_data_internal(%rip), %zmm8 + vmovups 5376+__svml_scos_data_internal(%rip), %zmm14 + vmovups 5248+__svml_scos_data_internal(%rip), %zmm15 + +/* + * Check for large and special arguments + * VAND( S, sAX, _VARG1, sAbsMask ); + */ + vmovups 4160+__svml_scos_data_internal(%rip), %zmm10 + vandps 4096+__svml_scos_data_internal(%rip), %zmm11, %zmm2 + +/* b) Add Pi/2 value to argument X for Cos to Sin transformation */ + vaddps {rn-sae}, %zmm0, %zmm2, %zmm1 + vcmpps $18, {sae}, %zmm10, %zmm2, %k1 + +/* _VARG1 near 0 */ + vcmpps $0, {sae}, %zmm0, %zmm1, %k2 + +/* + * 1) Range reduction to [-Pi/2; +Pi/2] interval + * c) Getting octant Y by 1/Pi multiplication + * d) Add "Right Shifter" (0x4B000000) value + */ + vfmadd213ps {rn-sae}, %zmm4, %zmm1, %zmm3 + vpternlogd $255, %zmm10, %zmm10, %zmm10 + +/* f) Subtract "Right Shifter" (0x4B000000) value */ + vsubps {rn-sae}, %zmm4, %zmm3, %zmm5 + +/* + * e) Treat obtained value as integer for destination sign setting. + * Shift first bit of this value to the last (sign) position (S << 31) + */ + vpslld $31, %zmm3, %zmm13 + +/* g) Subtract 0.5 from result for octant correction */ + vsubps {rn-sae}, %zmm6, %zmm5, %zmm12 + vmovups 5312+__svml_scos_data_internal(%rip), %zmm5 + +/* + * h) Subtract Y*PI from X argument, where PI divided to 4 parts: + * X = X - Y*PI1 - Y*PI2 - Y*PI3 + */ + vfnmadd213ps {rn-sae}, %zmm2, %zmm12, %zmm9 + vfnmadd231ps {rn-sae}, %zmm12, %zmm7, %zmm9 + vfnmadd213ps {rn-sae}, %zmm9, %zmm8, %zmm12 + +/* a) Calculate X^2 = X * X */ + vmulps {rn-sae}, %zmm12, %zmm12, %zmm3 + +/* + * 3) Destination sign setting + * a) Set shifted destination sign using XOR operation: + * R = XOR( R, S ); + */ + vxorps %zmm13, %zmm12, %zmm4 + +/* + * b) Calculate polynomial: + * R = X + X * X^2 * (A3 + x^2 * (A5 + x^2 * (A7 + x^2 * (A9)))); + */ + vfmadd231ps {rn-sae}, %zmm3, %zmm14, %zmm5 + vmovups 4992+__svml_scos_data_internal(%rip), %zmm14 + vfmadd213ps {rn-sae}, %zmm15, %zmm3, %zmm5 + vmulps {rn-sae}, %zmm4, %zmm3, %zmm15 + vfmadd213ps {rn-sae}, %zmm14, %zmm3, %zmm5 + vfmadd213ps {rn-sae}, %zmm4, %zmm15, %zmm5 + +/* result=1.0 if arg. near 0 */ + vblendmps 5696+__svml_scos_data_internal(%rip), %zmm5, %zmm0{%k2} + vpandnd %zmm2, %zmm2, %zmm10{%k1} + vptestmd %zmm10, %zmm10, %k0 + kortestw %k0, %k0 + jne .LBL_1_12 + +.LBL_1_2: + + testl %edx, %edx + jne .LBL_1_4 + +.LBL_1_3: + + +/* no invcbrt in libm, so taking it out here */ + 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_4: + + vmovups %zmm11, 64(%rsp) + vmovups %zmm0, 128(%rsp) + je .LBL_1_3 + + + 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_8: + + btl %r12d, %r13d + jc .LBL_1_11 + +.LBL_1_9: + + incl %r12d + cmpl $16, %r12d + jl .LBL_1_8 + + + 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_3 + .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_11: + + lea 64(%rsp,%r12,4), %rdi + lea 128(%rsp,%r12,4), %rsi + + call __svml_scos_cout_rare_internal + jmp .LBL_1_9 + .cfi_restore 4 + .cfi_restore 5 + .cfi_restore 12 + .cfi_restore 13 + .cfi_restore 122 + .cfi_restore 123 + .cfi_restore 124 + .cfi_restore 125 + +.LBL_1_12: + + vmovups 4224+__svml_scos_data_internal(%rip), %zmm6 + +/* + * Get the (2^a / 2pi) mod 1 values from the table. + * Because VLANG doesn't have I-type gather, we need a trivial cast + */ + lea __svml_scos_reduction_data_internal(%rip), %rax + vmovups %zmm0, (%rsp) + vpternlogd $255, %zmm7, %zmm7, %zmm7 + vandps %zmm2, %zmm6, %zmm4 + vcmpps $4, {sae}, %zmm6, %zmm4, %k1 + +/* ..................... Table look-up ........................ */ + lea __svml_scos_data_internal(%rip), %rcx + +/* + * Break the P_xxx and m into 16-bit chunks ready for + * the long multiplication via 16x16->32 multiplications + */ + vmovups .L_2il0floatpacket.27(%rip), %zmm6 + vpandd .L_2il0floatpacket.24(%rip), %zmm11, %zmm1 + vpsrld $23, %zmm1, %zmm8 + vpslld $1, %zmm8, %zmm12 + vpaddd %zmm8, %zmm12, %zmm2 + vpslld $2, %zmm2, %zmm5 + vpandnd %zmm4, %zmm4, %zmm7{%k1} + vptestmd %zmm7, %zmm7, %k0 + kxnorw %k0, %k0, %k2 + kxnorw %k0, %k0, %k3 + kxnorw %k0, %k0, %k1 + kmovw %k0, %edx + vpxord %zmm4, %zmm4, %zmm4 + vpxord %zmm7, %zmm7, %zmm7 + vpxord %zmm14, %zmm14, %zmm14 + vgatherdps (%rax,%zmm5), %zmm4{%k2} + vgatherdps 4(%rax,%zmm5), %zmm7{%k3} + vgatherdps 8(%rax,%zmm5), %zmm14{%k1} + vpsrld $16, %zmm4, %zmm9 + vpsrld $16, %zmm7, %zmm15 + vpsrld $16, %zmm14, %zmm13 + kxnorw %k0, %k0, %k1 + +/* + * Also get the significand as an integer + * NB: adding in the integer bit is wrong for denorms! + * To make this work for denorms we should do something slightly different + */ + vpandd .L_2il0floatpacket.25(%rip), %zmm11, %zmm3 + vpaddd .L_2il0floatpacket.26(%rip), %zmm3, %zmm1 + vpsrld $16, %zmm1, %zmm8 + vpandd %zmm6, %zmm14, %zmm5 + vpandd %zmm6, %zmm1, %zmm14 + vpandd %zmm6, %zmm7, %zmm12 + vpmulld %zmm15, %zmm8, %zmm3 + vpmulld %zmm9, %zmm14, %zmm7 + vpmulld %zmm15, %zmm14, %zmm9 + vpmulld %zmm13, %zmm14, %zmm15 + vpmulld %zmm13, %zmm8, %zmm1 + vpsrld $16, %zmm15, %zmm13 + vpsrld $16, %zmm9, %zmm15 + vpaddd %zmm13, %zmm1, %zmm1 + vpandd %zmm6, %zmm4, %zmm0 + +/* Now do the big multiplication and carry propagation */ + vpmulld %zmm0, %zmm8, %zmm4 + vpmulld %zmm12, %zmm8, %zmm2 + vpmulld %zmm5, %zmm8, %zmm8 + vpmulld %zmm0, %zmm14, %zmm5 + vpmulld %zmm12, %zmm14, %zmm0 + vpsrld $16, %zmm0, %zmm14 + vpsrld $16, %zmm5, %zmm12 + vpsrld $16, %zmm8, %zmm8 + vpaddd %zmm14, %zmm2, %zmm13 + vpaddd %zmm15, %zmm3, %zmm14 + vpaddd %zmm12, %zmm4, %zmm3 + vpandd %zmm6, %zmm0, %zmm0 + vpandd %zmm6, %zmm5, %zmm12 + vpaddd %zmm1, %zmm0, %zmm5 + vpaddd %zmm14, %zmm12, %zmm0 + vpaddd %zmm5, %zmm8, %zmm15 + vpandd %zmm6, %zmm7, %zmm2 + vpaddd %zmm3, %zmm2, %zmm14 + vpsrld $16, %zmm15, %zmm3 + vpandd %zmm6, %zmm9, %zmm9 + vpaddd %zmm13, %zmm9, %zmm9 + vpaddd %zmm9, %zmm3, %zmm12 + vpsrld $16, %zmm12, %zmm4 + vpslld $16, %zmm12, %zmm2 + vpaddd %zmm0, %zmm4, %zmm13 + +/* + * Now round at the 2^-8 bit position for reduction mod pi/2^7 + * instead of the original 2pi (but still with the same 2pi scaling). + * Use a shifter of 2^15 + 2^14. + * The N we get is our final version; it has an offset of + * 2^8 because of the implicit integer bit, and anyway for negative + * starting value it's a 2s complement thing. But we need to mask + * off the exponent part anyway so it's fine. + */ + vmovups .L_2il0floatpacket.30(%rip), %zmm4 + vpsrld $16, %zmm13, %zmm7 + vpaddd %zmm14, %zmm7, %zmm1 + +/* Assemble reduced argument from the pieces */ + vpandd %zmm6, %zmm15, %zmm3 + vpandd %zmm6, %zmm13, %zmm8 + vpslld $16, %zmm1, %zmm6 + vpaddd %zmm8, %zmm6, %zmm5 + vpaddd %zmm3, %zmm2, %zmm8 + vpsrld $9, %zmm5, %zmm9 + +/* + * We want to incorporate the original sign now too. + * Do it here for convenience in getting the right N value, + * though we could wait right to the end if we were prepared + * to modify the sign of N later too. + * So get the appropriate sign mask now (or sooner). + */ + vpandd .L_2il0floatpacket.28(%rip), %zmm11, %zmm2 + +/* + * Create floating-point high part, implicitly adding integer bit 1 + * Incorporate overall sign at this stage too. + */ + vpxord .L_2il0floatpacket.29(%rip), %zmm2, %zmm6 + vpord %zmm6, %zmm9, %zmm0 + vaddps {rn-sae}, %zmm0, %zmm4, %zmm14 + vsubps {rn-sae}, %zmm4, %zmm14, %zmm7 + vsubps {rn-sae}, %zmm7, %zmm0, %zmm13 + vpternlogd $255, %zmm0, %zmm0, %zmm0 + vpandd .L_2il0floatpacket.33(%rip), %zmm8, %zmm15 + vpandd .L_2il0floatpacket.35(%rip), %zmm5, %zmm5 + +/* + * Create floating-point low and medium parts, respectively + * lo_17, ... lo_0, 0, ..., 0 + * hi_8, ... hi_0, lo_31, ..., lo_18 + * then subtract off the implicitly added integer bits, + * 2^-46 and 2^-23, respectively. + * Put the original sign into all of them at this stage. + */ + vpxord .L_2il0floatpacket.32(%rip), %zmm2, %zmm3 + vpslld $5, %zmm15, %zmm1 + vpsrld $18, %zmm8, %zmm8 + vpxord .L_2il0floatpacket.34(%rip), %zmm2, %zmm9 + vpslld $14, %zmm5, %zmm2 + vpord %zmm3, %zmm1, %zmm12 + vpord %zmm8, %zmm2, %zmm5 + vsubps {rn-sae}, %zmm3, %zmm12, %zmm15 + vmovups .L_2il0floatpacket.37(%rip), %zmm2 + vpord %zmm9, %zmm5, %zmm3 + vsubps {rn-sae}, %zmm9, %zmm3, %zmm6 + +/* + * Now multiply those numbers all by 2 pi, reasonably accurately. + * (RHi + RLo) * (pi_lead + pi_trail) ~= + * RHi * pi_lead + (RHi * pi_trail + RLo * pi_lead) + */ + vmovups .L_2il0floatpacket.36(%rip), %zmm5 + +/* + * If the magnitude of the input is <= 2^-20, then + * just pass through the input, since no reduction will be needed and + * the main path will only work accurately if the reduced argument is + * about >= 2^-40 (which it is for all large pi multiples) + */ + vmovups .L_2il0floatpacket.39(%rip), %zmm9 + +/* Now add them up into 2 reasonably aligned pieces */ + vaddps {rn-sae}, %zmm6, %zmm13, %zmm4 + vsubps {rn-sae}, %zmm4, %zmm13, %zmm13 + vmulps {rn-sae}, %zmm5, %zmm4, %zmm7 + vaddps {rn-sae}, %zmm13, %zmm6, %zmm8 + vandps .L_2il0floatpacket.38(%rip), %zmm11, %zmm6 + vaddps {rn-sae}, %zmm15, %zmm8, %zmm8 + vpternlogd $255, %zmm15, %zmm15, %zmm15 + vcmpps $22, {sae}, %zmm9, %zmm6, %k3 + vcmpps $26, {sae}, %zmm9, %zmm6, %k2 + vmovaps %zmm5, %zmm3 + vfmsub213ps {rn-sae}, %zmm7, %zmm4, %zmm3 + vfmadd213ps {rn-sae}, %zmm3, %zmm2, %zmm4 + vfmadd213ps {rn-sae}, %zmm4, %zmm5, %zmm8 + +/* Grab our final N value as an integer, appropriately masked mod 2^8 */ + vpandd .L_2il0floatpacket.31(%rip), %zmm14, %zmm14 + vpslld $4, %zmm14, %zmm13 + vpandnd %zmm6, %zmm6, %zmm0{%k3} + vandps %zmm11, %zmm0, %zmm1 + kxnorw %k0, %k0, %k3 + vpxord %zmm0, %zmm0, %zmm0 + vgatherdps (%rcx,%zmm13), %zmm0{%k1} + kxnorw %k0, %k0, %k1 + vpandnd %zmm6, %zmm6, %zmm15{%k2} + kxnorw %k0, %k0, %k2 + vandps %zmm7, %zmm15, %zmm12 + vandps %zmm8, %zmm15, %zmm3 + vorps %zmm12, %zmm1, %zmm2 + +/* ............... Polynomial approximation ................... */ + vmovups 4352+__svml_scos_data_internal(%rip), %zmm12 + +/* + * The output is _VRES_R (high) + _VRES_E (low), and the integer part is _VRES_IND + * Set sRp2 = _VRES_R^2 and then resume the original code. + */ + vmulps {rn-sae}, %zmm2, %zmm2, %zmm4 + +/* ................. Reconstruction: res_hi ................... */ + vmovaps %zmm2, %zmm14 + vmovaps %zmm2, %zmm8 + vpxord %zmm9, %zmm9, %zmm9 + vpxord %zmm7, %zmm7, %zmm7 + vgatherdps 4(%rcx,%zmm13), %zmm9{%k2} + vgatherdps 12(%rcx,%zmm13), %zmm7{%k1} + vfmadd213ps {rn-sae}, %zmm9, %zmm7, %zmm14 + vaddps {rn-sae}, %zmm7, %zmm0, %zmm15 + vfmadd132ps {rn-sae}, %zmm0, %zmm14, %zmm8 + vsubps {rn-sae}, %zmm14, %zmm9, %zmm1 + vsubps {rn-sae}, %zmm8, %zmm14, %zmm6 + vfmadd231ps {rn-sae}, %zmm2, %zmm7, %zmm1 + vmovups 4416+__svml_scos_data_internal(%rip), %zmm7 + vfmadd231ps {rn-sae}, %zmm0, %zmm2, %zmm6 + vmovups 4480+__svml_scos_data_internal(%rip), %zmm0 + vaddps {rn-sae}, %zmm1, %zmm6, %zmm6 + vfmadd231ps {rn-sae}, %zmm4, %zmm0, %zmm7 + vpxord %zmm5, %zmm5, %zmm5 + vgatherdps 8(%rcx,%zmm13), %zmm5{%k3} + vmovups 4288+__svml_scos_data_internal(%rip), %zmm13 + vfmadd231ps {rn-sae}, %zmm4, %zmm12, %zmm13 + vmulps {rn-sae}, %zmm4, %zmm13, %zmm14 + vmulps {rn-sae}, %zmm4, %zmm7, %zmm4 + vmulps {rn-sae}, %zmm2, %zmm14, %zmm1 + +/* .......... Reconstruction: res_lo=corr+polS+polC+res_lo0 ...... */ + vfnmadd213ps {rn-sae}, %zmm15, %zmm9, %zmm2 + vfmadd213ps {rn-sae}, %zmm5, %zmm2, %zmm3 + vfmadd213ps {rn-sae}, %zmm6, %zmm2, %zmm1 + vfmadd213ps {rn-sae}, %zmm3, %zmm9, %zmm4 + vaddps {rn-sae}, %zmm1, %zmm4, %zmm2 + +/* .................. Final reconstruction ................... */ + vaddps {rn-sae}, %zmm2, %zmm8, %zmm3 + +/* + * ---------------------------------------------------------- + * End of large arguments path + * ---------------------------------------------------------- + * Merge results from main and large paths: + */ + vpandnd (%rsp), %zmm10, %zmm5 + vpandd %zmm10, %zmm3, %zmm10 + vpord %zmm10, %zmm5, %zmm0 + jmp .LBL_1_2 + .align 16,0x90 + + .cfi_endproc + + .type __svml_cosf16,@function + .size __svml_cosf16,.-__svml_cosf16 +..LN__svml_cosf16.0: + +.L_2__routine_start___svml_scos_cout_rare_internal_1: + + .align 16,0x90 + +__svml_scos_cout_rare_internal: + + + .cfi_startproc +..L63: + + movl (%rdi), %edx + movzwl 2(%rdi), %eax + movl %edx, -8(%rsp) + andl $32640, %eax + shrl $24, %edx + andl $127, %edx + cmpl $32640, %eax + jne .LBL_2_6 + + + movb %dl, -5(%rsp) + cmpl $2139095040, -8(%rsp) + jne .LBL_2_4 + + + movss (%rdi), %xmm0 + movl $1, %eax + mulss __scos_la__vmlsCosCoutTab(%rip), %xmm0 + movss %xmm0, (%rsi) + ret + +.LBL_2_4: + + movss (%rdi), %xmm0 + xorl %eax, %eax + mulss (%rdi), %xmm0 + movss %xmm0, (%rsi) + + + ret + +.LBL_2_6: + + xorl %eax, %eax + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_scos_cout_rare_internal,@function + .size __svml_scos_cout_rare_internal,.-__svml_scos_cout_rare_internal +..LN__svml_scos_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +.L_2il0floatpacket.24: + .long 0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000 + .type .L_2il0floatpacket.24,@object + .size .L_2il0floatpacket.24,64 + .align 64 +.L_2il0floatpacket.25: + .long 0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff + .type .L_2il0floatpacket.25,@object + .size .L_2il0floatpacket.25,64 + .align 64 +.L_2il0floatpacket.26: + .long 0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000 + .type .L_2il0floatpacket.26,@object + .size .L_2il0floatpacket.26,64 + .align 64 +.L_2il0floatpacket.27: + .long 0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff + .type .L_2il0floatpacket.27,@object + .size .L_2il0floatpacket.27,64 + .align 64 +.L_2il0floatpacket.28: + .long 0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000 + .type .L_2il0floatpacket.28,@object + .size .L_2il0floatpacket.28,64 + .align 64 +.L_2il0floatpacket.29: + .long 0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000 + .type .L_2il0floatpacket.29,@object + .size .L_2il0floatpacket.29,64 + .align 64 +.L_2il0floatpacket.30: + .long 0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000 + .type .L_2il0floatpacket.30,@object + .size .L_2il0floatpacket.30,64 + .align 64 +.L_2il0floatpacket.31: + .long 0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff + .type .L_2il0floatpacket.31,@object + .size .L_2il0floatpacket.31,64 + .align 64 +.L_2il0floatpacket.32: + .long 0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000 + .type .L_2il0floatpacket.32,@object + .size .L_2il0floatpacket.32,64 + .align 64 +.L_2il0floatpacket.33: + .long 0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff + .type .L_2il0floatpacket.33,@object + .size .L_2il0floatpacket.33,64 + .align 64 +.L_2il0floatpacket.34: + .long 0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000 + .type .L_2il0floatpacket.34,@object + .size .L_2il0floatpacket.34,64 + .align 64 +.L_2il0floatpacket.35: + .long 0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff + .type .L_2il0floatpacket.35,@object + .size .L_2il0floatpacket.35,64 + .align 64 +.L_2il0floatpacket.36: + .long 0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb + .type .L_2il0floatpacket.36,@object + .size .L_2il0floatpacket.36,64 + .align 64 +.L_2il0floatpacket.37: + .long 0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e + .type .L_2il0floatpacket.37,@object + .size .L_2il0floatpacket.37,64 + .align 64 +.L_2il0floatpacket.38: + .long 0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff + .type .L_2il0floatpacket.38,@object + .size .L_2il0floatpacket.38,64 + .align 64 +.L_2il0floatpacket.39: + .long 0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000 + .type .L_2il0floatpacket.39,@object + .size .L_2il0floatpacket.39,64 + .align 64 +__svml_scos_data_internal: + .long 0 + .long 1065353216 + .long 0 + .long 0 + .long 1004262721 + .long 1065348163 + .long 814009613 + .long 3170893824 + .long 1012667202 + .long 1065333007 + .long 836655967 + .long 3179282432 + .long 3157608485 + .long 1065307757 + .long 852498564 + .long 3179282432 + .long 1021119272 + .long 1065272429 + .long 838093129 + .long 3187671040 + .long 992588201 + .long 1065227044 + .long 3002197507 + .long 3187671040 + .long 3165783068 + .long 1065171628 + .long 2969000681 + .long 3187671040 + .long 3174843017 + .long 1065106216 + .long 2989610635 + .long 3187671040 + .long 1029761272 + .long 1065030846 + .long 855602635 + .long 3196059648 + .long 1023221605 + .long 1064945565 + .long 851856985 + .long 3196059648 + .long 1004930693 + .long 1064850424 + .long 2987244005 + .long 3196059648 + .long 3163089201 + .long 1064745479 + .long 846006572 + .long 3196059648 + .long 3173319052 + .long 1064630795 + .long 2996018466 + .long 3196059648 + .long 3179441043 + .long 1064506439 + .long 851742225 + .long 3196059648 + .long 3182555983 + .long 1064372488 + .long 840880349 + .long 3196059648 + .long 1041201069 + .long 1064229022 + .long 2995991516 + .long 3204448256 + .long 1039156139 + .long 1064076126 + .long 854796500 + .long 3204448256 + .long 1036128472 + .long 1063913895 + .long 3001754476 + .long 3204448256 + .long 1033133567 + .long 1063742424 + .long 2998678409 + .long 3204448256 + .long 1028547674 + .long 1063561817 + .long 823789818 + .long 3204448256 + .long 1021989220 + .long 1063372184 + .long 3001545765 + .long 3204448256 + .long 1005106760 + .long 1063173637 + .long 851900755 + .long 3204448256 + .long 3160870706 + .long 1062966298 + .long 841166280 + .long 3204448256 + .long 3171899818 + .long 1062750291 + .long 2994560960 + .long 3204448256 + .long 3177422237 + .long 1062525745 + .long 848357914 + .long 3204448256 + .long 3181068627 + .long 1062292797 + .long 806113028 + .long 3204448256 + .long 3183738367 + .long 1062051586 + .long 847147240 + .long 3204448256 + .long 3186359946 + .long 1061802258 + .long 848897600 + .long 3204448256 + .long 3188301413 + .long 1061544963 + .long 850481524 + .long 3204448256 + .long 3189561687 + .long 1061279856 + .long 851442039 + .long 3204448256 + .long 3190795559 + .long 1061007097 + .long 832220140 + .long 3204448256 + .long 3192002283 + .long 1060726850 + .long 2994798599 + .long 3204448256 + .long 1050015258 + .long 1060439283 + .long 844097402 + .long 3212836864 + .long 1049440125 + .long 1060144571 + .long 2997759282 + .long 3212836864 + .long 1048879630 + .long 1059842890 + .long 2998350134 + .long 3212836864 + .long 1048092223 + .long 1059534422 + .long 2986574659 + .long 3212836864 + .long 1047031795 + .long 1059219353 + .long 841032635 + .long 3212836864 + .long 1046002615 + .long 1058897873 + .long 848430348 + .long 3212836864 + .long 1045005303 + .long 1058570176 + .long 2982650867 + .long 3212836864 + .long 1044040460 + .long 1058236458 + .long 852349230 + .long 3212836864 + .long 1043108667 + .long 1057896922 + .long 2991207143 + .long 3212836864 + .long 1042210485 + .long 1057551771 + .long 2998815566 + .long 3212836864 + .long 1041346455 + .long 1057201213 + .long 2992349186 + .long 3212836864 + .long 1040517098 + .long 1056726311 + .long 2978016425 + .long 3212836864 + .long 1039258436 + .long 1056004842 + .long 2986287417 + .long 3212836864 + .long 1037741368 + .long 1055273845 + .long 2983839604 + .long 3212836864 + .long 1036296515 + .long 1054533760 + .long 840832460 + .long 3212836864 + .long 1034924748 + .long 1053785034 + .long 829045603 + .long 3212836864 + .long 1033626892 + .long 1053028117 + .long 836097324 + .long 3212836864 + .long 1032403730 + .long 1052263466 + .long 2993707942 + .long 3212836864 + .long 1030713214 + .long 1051491540 + .long 2988789250 + .long 3212836864 + .long 1028569994 + .long 1050712805 + .long 2990442912 + .long 3212836864 + .long 1026580309 + .long 1049927729 + .long 846027248 + .long 3212836864 + .long 1024745356 + .long 1049136787 + .long 824999326 + .long 3212836864 + .long 1022722308 + .long 1048104908 + .long 2971391005 + .long 3212836864 + .long 1019677780 + .long 1046502419 + .long 833086710 + .long 3212836864 + .long 1016948784 + .long 1044891074 + .long 2967836285 + .long 3212836864 + .long 1014052363 + .long 1043271842 + .long 823224313 + .long 3212836864 + .long 1009865986 + .long 1041645699 + .long 837346836 + .long 3212836864 + .long 1006005820 + .long 1039839859 + .long 2970970319 + .long 3212836864 + .long 1000196465 + .long 1036565814 + .long 2960495349 + .long 3212836864 + .long 993104536 + .long 1033283845 + .long 2975014497 + .long 3212836864 + .long 983425480 + .long 1028193072 + .long 2968461951 + .long 3212836864 + .long 966649823 + .long 1019808432 + .long 2953169304 + .long 3212836864 + .long 0 + .long 0 + .long 0 + .long 3212836864 + .long 966649823 + .long 3167292080 + .long 805685656 + .long 3212836864 + .long 983425480 + .long 3175676720 + .long 820978303 + .long 3212836864 + .long 993104536 + .long 3180767493 + .long 827530849 + .long 3212836864 + .long 1000196465 + .long 3184049462 + .long 813011701 + .long 3212836864 + .long 1006005820 + .long 3187323507 + .long 823486671 + .long 3212836864 + .long 1009865986 + .long 3189129347 + .long 2984830484 + .long 3212836864 + .long 1014052363 + .long 3190755490 + .long 2970707961 + .long 3212836864 + .long 1016948784 + .long 3192374722 + .long 820352637 + .long 3212836864 + .long 1019677780 + .long 3193986067 + .long 2980570358 + .long 3212836864 + .long 1022722308 + .long 3195588556 + .long 823907357 + .long 3212836864 + .long 1024745356 + .long 3196620435 + .long 2972482974 + .long 3212836864 + .long 1026580309 + .long 3197411377 + .long 2993510896 + .long 3212836864 + .long 1028569994 + .long 3198196453 + .long 842959264 + .long 3212836864 + .long 1030713214 + .long 3198975188 + .long 841305602 + .long 3212836864 + .long 1032403730 + .long 3199747114 + .long 846224294 + .long 3212836864 + .long 1033626892 + .long 3200511765 + .long 2983580972 + .long 3212836864 + .long 1034924748 + .long 3201268682 + .long 2976529251 + .long 3212836864 + .long 1036296515 + .long 3202017408 + .long 2988316108 + .long 3212836864 + .long 1037741368 + .long 3202757493 + .long 836355956 + .long 3212836864 + .long 1039258436 + .long 3203488490 + .long 838803769 + .long 3212836864 + .long 1040517098 + .long 3204209959 + .long 830532777 + .long 3212836864 + .long 1041346455 + .long 3204684861 + .long 844865538 + .long 3212836864 + .long 1042210485 + .long 3205035419 + .long 851331918 + .long 3212836864 + .long 1043108667 + .long 3205380570 + .long 843723495 + .long 3212836864 + .long 1044040460 + .long 3205720106 + .long 2999832878 + .long 3212836864 + .long 1045005303 + .long 3206053824 + .long 835167219 + .long 3212836864 + .long 1046002615 + .long 3206381521 + .long 2995913996 + .long 3212836864 + .long 1047031795 + .long 3206703001 + .long 2988516283 + .long 3212836864 + .long 1048092223 + .long 3207018070 + .long 839091011 + .long 3212836864 + .long 1048879630 + .long 3207326538 + .long 850866486 + .long 3212836864 + .long 1049440125 + .long 3207628219 + .long 850275634 + .long 3212836864 + .long 1050015258 + .long 3207922931 + .long 2991581050 + .long 3212836864 + .long 3192002283 + .long 3208210498 + .long 847314951 + .long 3204448256 + .long 3190795559 + .long 3208490745 + .long 2979703788 + .long 3204448256 + .long 3189561687 + .long 3208763504 + .long 2998925687 + .long 3204448256 + .long 3188301413 + .long 3209028611 + .long 2997965172 + .long 3204448256 + .long 3186359946 + .long 3209285906 + .long 2996381248 + .long 3204448256 + .long 3183738367 + .long 3209535234 + .long 2994630888 + .long 3204448256 + .long 3181068627 + .long 3209776445 + .long 2953596676 + .long 3204448256 + .long 3177422237 + .long 3210009393 + .long 2995841562 + .long 3204448256 + .long 3171899818 + .long 3210233939 + .long 847077312 + .long 3204448256 + .long 3160870706 + .long 3210449946 + .long 2988649928 + .long 3204448256 + .long 1005106760 + .long 3210657285 + .long 2999384403 + .long 3204448256 + .long 1021989220 + .long 3210855832 + .long 854062117 + .long 3204448256 + .long 1028547674 + .long 3211045465 + .long 2971273466 + .long 3204448256 + .long 1033133567 + .long 3211226072 + .long 851194761 + .long 3204448256 + .long 1036128472 + .long 3211397543 + .long 854270828 + .long 3204448256 + .long 1039156139 + .long 3211559774 + .long 3002280148 + .long 3204448256 + .long 1041201069 + .long 3211712670 + .long 848507868 + .long 3204448256 + .long 3182555983 + .long 3211856136 + .long 2988363997 + .long 3196059648 + .long 3179441043 + .long 3211990087 + .long 2999225873 + .long 3196059648 + .long 3173319052 + .long 3212114443 + .long 848534818 + .long 3196059648 + .long 3163089201 + .long 3212229127 + .long 2993490220 + .long 3196059648 + .long 1004930693 + .long 3212334072 + .long 839760357 + .long 3196059648 + .long 1023221605 + .long 3212429213 + .long 2999340633 + .long 3196059648 + .long 1029761272 + .long 3212514494 + .long 3003086283 + .long 3196059648 + .long 3174843017 + .long 3212589864 + .long 842126987 + .long 3187671040 + .long 3165783068 + .long 3212655276 + .long 821517033 + .long 3187671040 + .long 992588201 + .long 3212710692 + .long 854713859 + .long 3187671040 + .long 1021119272 + .long 3212756077 + .long 2985576777 + .long 3187671040 + .long 3157608485 + .long 3212791405 + .long 2999982212 + .long 3179282432 + .long 1012667202 + .long 3212816655 + .long 2984139615 + .long 3179282432 + .long 1004262721 + .long 3212831811 + .long 2961493261 + .long 3170893824 + .long 0 + .long 3212836864 + .long 0 + .long 0 + .long 3151746369 + .long 3212831811 + .long 2961493261 + .long 1023410176 + .long 3160150850 + .long 3212816655 + .long 2984139615 + .long 1031798784 + .long 1010124837 + .long 3212791405 + .long 2999982212 + .long 1031798784 + .long 3168602920 + .long 3212756077 + .long 2985576777 + .long 1040187392 + .long 3140071849 + .long 3212710692 + .long 854713859 + .long 1040187392 + .long 1018299420 + .long 3212655276 + .long 821517033 + .long 1040187392 + .long 1027359369 + .long 3212589864 + .long 842126987 + .long 1040187392 + .long 3177244920 + .long 3212514494 + .long 3003086283 + .long 1048576000 + .long 3170705253 + .long 3212429213 + .long 2999340633 + .long 1048576000 + .long 3152414341 + .long 3212334072 + .long 839760357 + .long 1048576000 + .long 1015605553 + .long 3212229127 + .long 2993490220 + .long 1048576000 + .long 1025835404 + .long 3212114443 + .long 848534818 + .long 1048576000 + .long 1031957395 + .long 3211990087 + .long 2999225873 + .long 1048576000 + .long 1035072335 + .long 3211856136 + .long 2988363997 + .long 1048576000 + .long 3188684717 + .long 3211712670 + .long 848507868 + .long 1056964608 + .long 3186639787 + .long 3211559774 + .long 3002280148 + .long 1056964608 + .long 3183612120 + .long 3211397543 + .long 854270828 + .long 1056964608 + .long 3180617215 + .long 3211226072 + .long 851194761 + .long 1056964608 + .long 3176031322 + .long 3211045465 + .long 2971273466 + .long 1056964608 + .long 3169472868 + .long 3210855832 + .long 854062117 + .long 1056964608 + .long 3152590408 + .long 3210657285 + .long 2999384403 + .long 1056964608 + .long 1013387058 + .long 3210449946 + .long 2988649928 + .long 1056964608 + .long 1024416170 + .long 3210233939 + .long 847077312 + .long 1056964608 + .long 1029938589 + .long 3210009393 + .long 2995841562 + .long 1056964608 + .long 1033584979 + .long 3209776445 + .long 2953596676 + .long 1056964608 + .long 1036254719 + .long 3209535234 + .long 2994630888 + .long 1056964608 + .long 1038876298 + .long 3209285906 + .long 2996381248 + .long 1056964608 + .long 1040817765 + .long 3209028611 + .long 2997965172 + .long 1056964608 + .long 1042078039 + .long 3208763504 + .long 2998925687 + .long 1056964608 + .long 1043311911 + .long 3208490745 + .long 2979703788 + .long 1056964608 + .long 1044518635 + .long 3208210498 + .long 847314951 + .long 1056964608 + .long 3197498906 + .long 3207922931 + .long 2991581050 + .long 1065353216 + .long 3196923773 + .long 3207628219 + .long 850275634 + .long 1065353216 + .long 3196363278 + .long 3207326538 + .long 850866486 + .long 1065353216 + .long 3195575871 + .long 3207018070 + .long 839091011 + .long 1065353216 + .long 3194515443 + .long 3206703001 + .long 2988516283 + .long 1065353216 + .long 3193486263 + .long 3206381521 + .long 2995913996 + .long 1065353216 + .long 3192488951 + .long 3206053824 + .long 835167219 + .long 1065353216 + .long 3191524108 + .long 3205720106 + .long 2999832878 + .long 1065353216 + .long 3190592315 + .long 3205380570 + .long 843723495 + .long 1065353216 + .long 3189694133 + .long 3205035419 + .long 851331918 + .long 1065353216 + .long 3188830103 + .long 3204684861 + .long 844865538 + .long 1065353216 + .long 3188000746 + .long 3204209959 + .long 830532777 + .long 1065353216 + .long 3186742084 + .long 3203488490 + .long 838803769 + .long 1065353216 + .long 3185225016 + .long 3202757493 + .long 836355956 + .long 1065353216 + .long 3183780163 + .long 3202017408 + .long 2988316108 + .long 1065353216 + .long 3182408396 + .long 3201268682 + .long 2976529251 + .long 1065353216 + .long 3181110540 + .long 3200511765 + .long 2983580972 + .long 1065353216 + .long 3179887378 + .long 3199747114 + .long 846224294 + .long 1065353216 + .long 3178196862 + .long 3198975188 + .long 841305602 + .long 1065353216 + .long 3176053642 + .long 3198196453 + .long 842959264 + .long 1065353216 + .long 3174063957 + .long 3197411377 + .long 2993510896 + .long 1065353216 + .long 3172229004 + .long 3196620435 + .long 2972482974 + .long 1065353216 + .long 3170205956 + .long 3195588556 + .long 823907357 + .long 1065353216 + .long 3167161428 + .long 3193986067 + .long 2980570358 + .long 1065353216 + .long 3164432432 + .long 3192374722 + .long 820352637 + .long 1065353216 + .long 3161536011 + .long 3190755490 + .long 2970707961 + .long 1065353216 + .long 3157349634 + .long 3189129347 + .long 2984830484 + .long 1065353216 + .long 3153489468 + .long 3187323507 + .long 823486671 + .long 1065353216 + .long 3147680113 + .long 3184049462 + .long 813011701 + .long 1065353216 + .long 3140588184 + .long 3180767493 + .long 827530849 + .long 1065353216 + .long 3130909128 + .long 3175676720 + .long 820978303 + .long 1065353216 + .long 3114133471 + .long 3167292080 + .long 805685656 + .long 1065353216 + .long 0 + .long 0 + .long 0 + .long 1065353216 + .long 3114133471 + .long 1019808432 + .long 2953169304 + .long 1065353216 + .long 3130909128 + .long 1028193072 + .long 2968461951 + .long 1065353216 + .long 3140588184 + .long 1033283845 + .long 2975014497 + .long 1065353216 + .long 3147680113 + .long 1036565814 + .long 2960495349 + .long 1065353216 + .long 3153489468 + .long 1039839859 + .long 2970970319 + .long 1065353216 + .long 3157349634 + .long 1041645699 + .long 837346836 + .long 1065353216 + .long 3161536011 + .long 1043271842 + .long 823224313 + .long 1065353216 + .long 3164432432 + .long 1044891074 + .long 2967836285 + .long 1065353216 + .long 3167161428 + .long 1046502419 + .long 833086710 + .long 1065353216 + .long 3170205956 + .long 1048104908 + .long 2971391005 + .long 1065353216 + .long 3172229004 + .long 1049136787 + .long 824999326 + .long 1065353216 + .long 3174063957 + .long 1049927729 + .long 846027248 + .long 1065353216 + .long 3176053642 + .long 1050712805 + .long 2990442912 + .long 1065353216 + .long 3178196862 + .long 1051491540 + .long 2988789250 + .long 1065353216 + .long 3179887378 + .long 1052263466 + .long 2993707942 + .long 1065353216 + .long 3181110540 + .long 1053028117 + .long 836097324 + .long 1065353216 + .long 3182408396 + .long 1053785034 + .long 829045603 + .long 1065353216 + .long 3183780163 + .long 1054533760 + .long 840832460 + .long 1065353216 + .long 3185225016 + .long 1055273845 + .long 2983839604 + .long 1065353216 + .long 3186742084 + .long 1056004842 + .long 2986287417 + .long 1065353216 + .long 3188000746 + .long 1056726311 + .long 2978016425 + .long 1065353216 + .long 3188830103 + .long 1057201213 + .long 2992349186 + .long 1065353216 + .long 3189694133 + .long 1057551771 + .long 2998815566 + .long 1065353216 + .long 3190592315 + .long 1057896922 + .long 2991207143 + .long 1065353216 + .long 3191524108 + .long 1058236458 + .long 852349230 + .long 1065353216 + .long 3192488951 + .long 1058570176 + .long 2982650867 + .long 1065353216 + .long 3193486263 + .long 1058897873 + .long 848430348 + .long 1065353216 + .long 3194515443 + .long 1059219353 + .long 841032635 + .long 1065353216 + .long 3195575871 + .long 1059534422 + .long 2986574659 + .long 1065353216 + .long 3196363278 + .long 1059842890 + .long 2998350134 + .long 1065353216 + .long 3196923773 + .long 1060144571 + .long 2997759282 + .long 1065353216 + .long 3197498906 + .long 1060439283 + .long 844097402 + .long 1065353216 + .long 1044518635 + .long 1060726850 + .long 2994798599 + .long 1056964608 + .long 1043311911 + .long 1061007097 + .long 832220140 + .long 1056964608 + .long 1042078039 + .long 1061279856 + .long 851442039 + .long 1056964608 + .long 1040817765 + .long 1061544963 + .long 850481524 + .long 1056964608 + .long 1038876298 + .long 1061802258 + .long 848897600 + .long 1056964608 + .long 1036254719 + .long 1062051586 + .long 847147240 + .long 1056964608 + .long 1033584979 + .long 1062292797 + .long 806113028 + .long 1056964608 + .long 1029938589 + .long 1062525745 + .long 848357914 + .long 1056964608 + .long 1024416170 + .long 1062750291 + .long 2994560960 + .long 1056964608 + .long 1013387058 + .long 1062966298 + .long 841166280 + .long 1056964608 + .long 3152590408 + .long 1063173637 + .long 851900755 + .long 1056964608 + .long 3169472868 + .long 1063372184 + .long 3001545765 + .long 1056964608 + .long 3176031322 + .long 1063561817 + .long 823789818 + .long 1056964608 + .long 3180617215 + .long 1063742424 + .long 2998678409 + .long 1056964608 + .long 3183612120 + .long 1063913895 + .long 3001754476 + .long 1056964608 + .long 3186639787 + .long 1064076126 + .long 854796500 + .long 1056964608 + .long 3188684717 + .long 1064229022 + .long 2995991516 + .long 1056964608 + .long 1035072335 + .long 1064372488 + .long 840880349 + .long 1048576000 + .long 1031957395 + .long 1064506439 + .long 851742225 + .long 1048576000 + .long 1025835404 + .long 1064630795 + .long 2996018466 + .long 1048576000 + .long 1015605553 + .long 1064745479 + .long 846006572 + .long 1048576000 + .long 3152414341 + .long 1064850424 + .long 2987244005 + .long 1048576000 + .long 3170705253 + .long 1064945565 + .long 851856985 + .long 1048576000 + .long 3177244920 + .long 1065030846 + .long 855602635 + .long 1048576000 + .long 1027359369 + .long 1065106216 + .long 2989610635 + .long 1040187392 + .long 1018299420 + .long 1065171628 + .long 2969000681 + .long 1040187392 + .long 3140071849 + .long 1065227044 + .long 3002197507 + .long 1040187392 + .long 3168602920 + .long 1065272429 + .long 838093129 + .long 1040187392 + .long 1010124837 + .long 1065307757 + .long 852498564 + .long 1031798784 + .long 3160150850 + .long 1065333007 + .long 836655967 + .long 1031798784 + .long 3151746369 + .long 1065348163 + .long 814009613 + .long 1023410176 + .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 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .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 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 1007191908 + .long 1007191908 + .long 1007191908 + .long 1007191908 + .long 1007191908 + .long 1007191908 + .long 1007191908 + .long 1007191908 + .long 1007191908 + .long 1007191908 + .long 1007191908 + .long 1007191908 + .long 1007191908 + .long 1007191908 + .long 1007191908 + .long 1007191908 + .long 3109009103 + .long 3109009103 + .long 3109009103 + .long 3109009103 + .long 3109009103 + .long 3109009103 + .long 3109009103 + .long 3109009103 + .long 3109009103 + .long 3109009103 + .long 3109009103 + .long 3109009103 + .long 3109009103 + .long 3109009103 + .long 3109009103 + .long 3109009103 + .long 909034293 + .long 909034293 + .long 909034293 + .long 909034293 + .long 909034293 + .long 909034293 + .long 909034293 + .long 909034293 + .long 909034293 + .long 909034293 + .long 909034293 + .long 909034293 + .long 909034293 + .long 909034293 + .long 909034293 + .long 909034293 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .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 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 + .type __svml_scos_data_internal,@object + .size __svml_scos_data_internal,5760 + .align 64 +__svml_scos_reduction_data_internal: + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1 + .long 0 + .long 0 + .long 2 + .long 0 + .long 0 + .long 5 + .long 0 + .long 0 + .long 10 + .long 0 + .long 0 + .long 20 + .long 0 + .long 0 + .long 40 + .long 0 + .long 0 + .long 81 + .long 0 + .long 0 + .long 162 + .long 0 + .long 0 + .long 325 + .long 0 + .long 0 + .long 651 + .long 0 + .long 0 + .long 1303 + .long 0 + .long 0 + .long 2607 + .long 0 + .long 0 + .long 5215 + .long 0 + .long 0 + .long 10430 + .long 0 + .long 0 + .long 20860 + .long 0 + .long 0 + .long 41721 + .long 0 + .long 0 + .long 83443 + .long 0 + .long 0 + .long 166886 + .long 0 + .long 0 + .long 333772 + .long 0 + .long 0 + .long 667544 + .long 0 + .long 0 + .long 1335088 + .long 0 + .long 0 + .long 2670176 + .long 0 + .long 0 + .long 5340353 + .long 0 + .long 0 + .long 10680707 + .long 0 + .long 0 + .long 21361414 + .long 0 + .long 0 + .long 42722829 + .long 0 + .long 0 + .long 85445659 + .long 0 + .long 0 + .long 170891318 + .long 0 + .long 0 + .long 341782637 + .long 0 + .long 0 + .long 683565275 + .long 0 + .long 0 + .long 1367130551 + .long 0 + .long 0 + .long 2734261102 + .long 0 + .long 1 + .long 1173554908 + .long 0 + .long 2 + .long 2347109817 + .long 0 + .long 5 + .long 399252338 + .long 0 + .long 10 + .long 798504676 + .long 0 + .long 20 + .long 1597009353 + .long 0 + .long 40 + .long 3194018707 + .long 0 + .long 81 + .long 2093070119 + .long 0 + .long 162 + .long 4186140238 + .long 0 + .long 325 + .long 4077313180 + .long 0 + .long 651 + .long 3859659065 + .long 0 + .long 1303 + .long 3424350834 + .long 0 + .long 2607 + .long 2553734372 + .long 0 + .long 5215 + .long 812501448 + .long 0 + .long 10430 + .long 1625002897 + .long 0 + .long 20860 + .long 3250005794 + .long 0 + .long 41721 + .long 2205044292 + .long 0 + .long 83443 + .long 115121288 + .long 0 + .long 166886 + .long 230242576 + .long 0 + .long 333772 + .long 460485152 + .long 0 + .long 667544 + .long 920970305 + .long 0 + .long 1335088 + .long 1841940610 + .long 0 + .long 2670176 + .long 3683881221 + .long 0 + .long 5340353 + .long 3072795146 + .long 0 + .long 10680707 + .long 1850622997 + .long 0 + .long 21361414 + .long 3701245994 + .long 0 + .long 42722829 + .long 3107524692 + .long 0 + .long 85445659 + .long 1920082089 + .long 0 + .long 170891318 + .long 3840164178 + .long 0 + .long 341782637 + .long 3385361061 + .long 0 + .long 683565275 + .long 2475754826 + .long 0 + .long 1367130551 + .long 656542356 + .long 0 + .long 2734261102 + .long 1313084713 + .long 1 + .long 1173554908 + .long 2626169427 + .long 2 + .long 2347109817 + .long 957371559 + .long 5 + .long 399252338 + .long 1914743119 + .long 10 + .long 798504676 + .long 3829486239 + .long 20 + .long 1597009353 + .long 3364005183 + .long 40 + .long 3194018707 + .long 2433043071 + .long 81 + .long 2093070119 + .long 571118846 + .long 162 + .long 4186140238 + .long 1142237692 + .long 325 + .long 4077313180 + .long 2284475384 + .long 651 + .long 3859659065 + .long 273983472 + .long 1303 + .long 3424350834 + .long 547966945 + .long 2607 + .long 2553734372 + .long 1095933890 + .long 5215 + .long 812501448 + .long 2191867780 + .long 10430 + .long 1625002897 + .long 88768265 + .long 20860 + .long 3250005794 + .long 177536531 + .long 41721 + .long 2205044292 + .long 355073063 + .long 83443 + .long 115121288 + .long 710146126 + .long 166886 + .long 230242576 + .long 1420292253 + .long 333772 + .long 460485152 + .long 2840584506 + .long 667544 + .long 920970305 + .long 1386201717 + .long 1335088 + .long 1841940610 + .long 2772403434 + .long 2670176 + .long 3683881221 + .long 1249839573 + .long 5340353 + .long 3072795146 + .long 2499679147 + .long 10680707 + .long 1850622997 + .long 704390999 + .long 21361414 + .long 3701245994 + .long 1408781999 + .long 42722829 + .long 3107524692 + .long 2817563999 + .long 85445659 + .long 1920082089 + .long 1340160702 + .long 170891318 + .long 3840164178 + .long 2680321405 + .long 341782637 + .long 3385361061 + .long 1065675514 + .long 683565275 + .long 2475754826 + .long 2131351028 + .long 1367130551 + .long 656542356 + .long 4262702056 + .long 2734261102 + .long 1313084713 + .long 4230436817 + .long 1173554908 + .long 2626169427 + .long 4165906339 + .long 2347109817 + .long 957371559 + .long 4036845383 + .long 399252338 + .long 1914743119 + .long 3778723471 + .long 798504676 + .long 3829486239 + .long 3262479647 + .long 1597009353 + .long 3364005183 + .long 2229991998 + .long 3194018707 + .long 2433043071 + .long 165016701 + .long 2093070119 + .long 571118846 + .long 330033402 + .long 4186140238 + .long 1142237692 + .long 660066805 + .long 4077313180 + .long 2284475384 + .long 1320133610 + .long 3859659065 + .long 273983472 + .long 2640267220 + .long 3424350834 + .long 547966945 + .long 985567145 + .long 2553734372 + .long 1095933890 + .long 1971134291 + .long 812501448 + .long 2191867780 + .long 3942268582 + .long 1625002897 + .long 88768265 + .long 3589569869 + .long 3250005794 + .long 177536531 + .long 2884172442 + .long 2205044292 + .long 355073063 + .long 1473377588 + .long 115121288 + .long 710146126 + .long 2946755177 + .long 230242576 + .long 1420292253 + .long 1598543059 + .long 460485152 + .long 2840584506 + .long 3197086118 + .long 920970305 + .long 1386201717 + .long 2099204941 + .long 1841940610 + .long 2772403434 + .long 4198409883 + .long 3683881221 + .long 1249839573 + .long 4101852471 + .long 3072795146 + .long 2499679147 + .long 3908737646 + .long 1850622997 + .long 704390999 + .long 3522507997 + .long 3701245994 + .long 1408781999 + .long 2750048699 + .long 3107524692 + .long 2817563999 + .long 1205130103 + .long 1920082089 + .long 1340160702 + .long 2410260206 + .long 3840164178 + .long 2680321405 + .long 525553116 + .long 3385361061 + .long 1065675514 + .long 1051106232 + .long 2475754826 + .long 2131351028 + .long 2102212464 + .long 656542356 + .long 4262702056 + .long 4204424928 + .long 1313084713 + .long 4230436817 + .long 4113882560 + .long 2626169427 + .long 4165906339 + .long 3932797825 + .long 957371559 + .long 4036845383 + .long 3570628355 + .long 1914743119 + .long 3778723471 + .long 2846289414 + .long 3829486239 + .long 3262479647 + .long 1397611533 + .long 3364005183 + .long 2229991998 + .long 2795223067 + .long 2433043071 + .long 165016701 + .long 1295478838 + .long 571118846 + .long 330033402 + .long 2590957677 + .long 1142237692 + .long 660066805 + .long 886948059 + .long 2284475384 + .long 1320133610 + .long 1773896118 + .long 273983472 + .long 2640267220 + .long 3547792237 + .long 547966945 + .long 985567145 + .long 2800617179 + .long 1095933890 + .long 1971134291 + .long 1306267062 + .long 2191867780 + .long 3942268582 + .long 2612534124 + .long 88768265 + .long 3589569869 + .long 930100952 + .long 177536531 + .long 2884172442 + .long 1860201905 + .long 355073063 + .long 1473377588 + .long 3720403810 + .long 710146126 + .long 2946755177 + .long 3145840325 + .long 1420292253 + .long 1598543059 + .long 1996713354 + .long 2840584506 + .long 3197086118 + .long 3993426708 + .long 1386201717 + .long 2099204941 + .long 3691886121 + .long 2772403434 + .long 4198409883 + .long 3088804946 + .long 1249839573 + .long 4101852471 + .long 1882642597 + .long 2499679147 + .long 3908737646 + .long 3765285194 + .long 704390999 + .long 3522507997 + .long 3235603093 + .long 1408781999 + .long 2750048699 + .long 2176238891 + .long 2817563999 + .long 1205130103 + .long 57510486 + .long 1340160702 + .long 2410260206 + .long 115020972 + .long 2680321405 + .long 525553116 + .long 230041945 + .long 1065675514 + .long 1051106232 + .long 460083891 + .long 2131351028 + .long 2102212464 + .long 920167782 + .long 4262702056 + .long 4204424928 + .long 1840335564 + .long 4230436817 + .long 4113882560 + .long 3680671129 + .long 4165906339 + .long 3932797825 + .long 3066374962 + .long 4036845383 + .long 3570628355 + .long 1837782628 + .long 3778723471 + .long 2846289414 + .long 3675565257 + .long 3262479647 + .long 1397611533 + .long 3056163219 + .long 2229991998 + .long 2795223067 + .long 1817359143 + .long 165016701 + .long 1295478838 + .long 3634718287 + .long 330033402 + .long 2590957677 + .long 2974469278 + .long 660066805 + .long 886948059 + .long 1653971260 + .long 1320133610 + .long 1773896118 + .long 3307942520 + .long 2640267220 + .long 3547792237 + .long 2320917745 + .long 985567145 + .long 2800617179 + .long 346868194 + .long 1971134291 + .long 1306267062 + .long 693736388 + .long 3942268582 + .long 2612534124 + .long 1387472776 + .long 3589569869 + .long 930100952 + .long 2774945552 + .long 2884172442 + .long 1860201905 + .long 1254923809 + .long 1473377588 + .long 3720403810 + .long 2509847619 + .long 2946755177 + .long 3145840325 + .long 724727943 + .long 1598543059 + .long 1996713354 + .long 1449455886 + .long 3197086118 + .long 3993426708 + .long 2898911772 + .long 2099204941 + .long 3691886121 + .long 1502856249 + .long 4198409883 + .long 3088804946 + .long 3005712498 + .long 4101852471 + .long 1882642597 + .long 1716457700 + .long 3908737646 + .long 3765285194 + .long 3432915400 + .long 3522507997 + .long 3235603093 + .long 2570863504 + .long 2750048699 + .long 2176238891 + .long 846759712 + .long 1205130103 + .long 57510486 + .long 1693519425 + .long 2410260206 + .long 115020972 + .long 3387038850 + .long 525553116 + .long 230041945 + .long 2479110404 + .long 1051106232 + .long 460083891 + .long 663253512 + .long 2102212464 + .long 920167782 + .long 1326507024 + .long 4204424928 + .long 1840335564 + .long 2653014048 + .long 4113882560 + .long 3680671129 + .long 1011060801 + .long 3932797825 + .long 3066374962 + .long 2022121603 + .long 3570628355 + .long 1837782628 + .long 4044243207 + .long 2846289414 + .long 3675565257 + .long 3793519119 + .long 1397611533 + .long 3056163219 + .long 3292070943 + .long 2795223067 + .long 1817359143 + .long 2289174591 + .long 1295478838 + .long 3634718287 + .long 283381887 + .long 2590957677 + .long 2974469278 + .long 566763775 + .type __svml_scos_reduction_data_internal,@object + .size __svml_scos_reduction_data_internal,3072 + .align 4 +__scos_la__vmlsCosCoutTab: + .long 0 + .long 2139095040 + .type __scos_la__vmlsCosCoutTab,@object + .size __scos_la__vmlsCosCoutTab,8 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_cosh_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_cosh_d_la.s new file mode 100644 index 00000000..0c8dc5eb --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_cosh_d_la.s @@ -0,0 +1,1715 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + + + .text +.L_2__routine_start___svml_cosh8_z0_0: + + .align 16,0x90 + .globl __svml_cosh8 + +__svml_cosh8: + + + .cfi_startproc +..L2: + + 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 3648+__svml_dcosh_data_internal(%rip), %zmm11 + vmovups 384+__svml_dcosh_data_internal(%rip), %zmm15 + +/* + * ............... Load argument ........................... + * dM = x*2^K/log(2) + RShifter + */ + vmovups 3008+__svml_dcosh_data_internal(%rip), %zmm4 + vmovups 3072+__svml_dcosh_data_internal(%rip), %zmm2 + vmovups 3136+__svml_dcosh_data_internal(%rip), %zmm3 + vmovups 832+__svml_dcosh_data_internal(%rip), %zmm8 + vmovups 768+__svml_dcosh_data_internal(%rip), %zmm9 + vmovups 512+__svml_dcosh_data_internal(%rip), %zmm7 + vmovups 576+__svml_dcosh_data_internal(%rip), %zmm6 + vmovaps %zmm0, %zmm10 + +/* ............... Abs argument ............................ */ + vandnpd %zmm10, %zmm11, %zmm5 + +/* .............. Index and lookup ......................... */ + vmovups __svml_dcosh_data_internal(%rip), %zmm11 + vmovups 256+__svml_dcosh_data_internal(%rip), %zmm0 + vfmadd213pd {rn-sae}, %zmm15, %zmm5, %zmm4 + +/* + * ...............Check for overflow\underflow ............. + * + */ + vpsrlq $32, %zmm5, %zmm12 + +/* dN = dM - RShifter */ + vsubpd {rn-sae}, %zmm15, %zmm4, %zmm1 + vpmovqd %zmm12, %ymm13 + vpermt2pd 320+__svml_dcosh_data_internal(%rip), %zmm4, %zmm0 + vpermt2pd 64+__svml_dcosh_data_internal(%rip), %zmm4, %zmm11 + +/* dR = dX - dN*Log2_hi/2^K */ + vfnmadd231pd {rn-sae}, %zmm2, %zmm1, %zmm5 + +/* + * poly(r) = Gmjp(1 + a2*r^2 + a4*r^4) + Gmjn*(r+ a3*r^3 +a5*r^5) = + * = Gmjp_h +Gmjp_l+ Gmjp*r^2*(a2 + a4*r^2) + Gmjn*(r+ r^3*(a3 +a5*r^2) + */ + vmovups 704+__svml_dcosh_data_internal(%rip), %zmm12 + vpsllq $48, %zmm4, %zmm2 + +/* dR = dX - dN*Log2_hi/2^K */ + vfnmadd231pd {rn-sae}, %zmm3, %zmm1, %zmm5 + vmulpd {rn-sae}, %zmm5, %zmm5, %zmm1 + vfmadd231pd {rn-sae}, %zmm1, %zmm8, %zmm12 + vmovups 640+__svml_dcosh_data_internal(%rip), %zmm8 + vfmadd213pd {rn-sae}, %zmm6, %zmm1, %zmm12 + vfmadd231pd {rn-sae}, %zmm1, %zmm9, %zmm8 + vfmadd213pd {rn-sae}, %zmm7, %zmm1, %zmm8 + vpcmpgtd 3712+__svml_dcosh_data_internal(%rip), %ymm13, %ymm14 + vmovmskps %ymm14, %edx + +/* dOut=r^2*(a2 + a4*r^2) */ + vmulpd {rn-sae}, %zmm1, %zmm8, %zmm6 + +/* lM now is an EXP(2^N) */ + vpandq 3584+__svml_dcosh_data_internal(%rip), %zmm2, %zmm3 + vpaddq %zmm3, %zmm11, %zmm4 + vpsubq %zmm3, %zmm0, %zmm0 + vsubpd {rn-sae}, %zmm0, %zmm4, %zmm14 + vaddpd {rn-sae}, %zmm0, %zmm4, %zmm13 + +/* dM=r^2*(a3 +a5*r^2) */ + vmulpd {rn-sae}, %zmm1, %zmm12, %zmm0 + vfmadd213pd {rn-sae}, %zmm13, %zmm13, %zmm6 + +/* dM= r + r^3*(a3 +a5*r^2) */ + vfmadd213pd {rn-sae}, %zmm5, %zmm5, %zmm0 + vfmadd213pd {rn-sae}, %zmm6, %zmm14, %zmm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + 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 %zmm10, 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_dcosh_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_cosh8,@function + .size __svml_cosh8,.-__svml_cosh8 +..LN__svml_cosh8.0: + +.L_2__routine_start___svml_dcosh_cout_rare_internal_1: + + .align 16,0x90 + +__svml_dcosh_cout_rare_internal: + + + .cfi_startproc +..L53: + + movq %rsi, %r8 + movzwl 6(%rdi), %edx + xorl %eax, %eax + andl $32752, %edx + cmpl $32752, %edx + je .LBL_2_12 + + + movq (%rdi), %rdx + movq %rdx, -8(%rsp) + shrq $56, %rdx + andl $127, %edx + movb %dl, -1(%rsp) + movzwl -2(%rsp), %ecx + andl $32752, %ecx + cmpl $15504, %ecx + jle .LBL_2_10 + + + movsd -8(%rsp), %xmm0 + movsd 1096+__dcosh_la_CoutTab(%rip), %xmm1 + comisd %xmm0, %xmm1 + jbe .LBL_2_9 + + + movq 1128+__dcosh_la_CoutTab(%rip), %rdx + movq %rdx, -8(%rsp) + comisd 1144+__dcosh_la_CoutTab(%rip), %xmm0 + jb .LBL_2_8 + + + movsd 1040+__dcosh_la_CoutTab(%rip), %xmm1 + lea __dcosh_la_CoutTab(%rip), %r9 + mulsd %xmm0, %xmm1 + addsd 1048+__dcosh_la_CoutTab(%rip), %xmm1 + movsd %xmm1, -40(%rsp) + movsd -40(%rsp), %xmm2 + movsd 1088+__dcosh_la_CoutTab(%rip), %xmm1 + movl -40(%rsp), %edx + movl %edx, %esi + andl $63, %esi + subsd 1048+__dcosh_la_CoutTab(%rip), %xmm2 + movsd %xmm2, -32(%rsp) + lea (%rsi,%rsi), %ecx + movsd -32(%rsp), %xmm3 + lea 1(%rsi,%rsi), %edi + mulsd 1104+__dcosh_la_CoutTab(%rip), %xmm3 + movsd -32(%rsp), %xmm4 + subsd %xmm3, %xmm0 + mulsd 1112+__dcosh_la_CoutTab(%rip), %xmm4 + shrl $6, %edx + subsd %xmm4, %xmm0 + mulsd %xmm0, %xmm1 + addl $1022, %edx + andl $2047, %edx + addsd 1080+__dcosh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + addsd 1072+__dcosh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + addsd 1064+__dcosh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + addsd 1056+__dcosh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + mulsd %xmm0, %xmm1 + addsd %xmm0, %xmm1 + movsd (%r9,%rcx,8), %xmm0 + mulsd %xmm0, %xmm1 + addsd (%r9,%rdi,8), %xmm1 + addsd %xmm0, %xmm1 + cmpl $2046, %edx + ja .LBL_2_7 + + + movq 1128+__dcosh_la_CoutTab(%rip), %rcx + shrq $48, %rcx + shll $4, %edx + andl $-32753, %ecx + orl %edx, %ecx + movw %cx, -2(%rsp) + movsd -8(%rsp), %xmm0 + mulsd %xmm1, %xmm0 + movsd %xmm0, (%r8) + ret + +.LBL_2_7: + + decl %edx + andl $2047, %edx + movzwl -2(%rsp), %ecx + shll $4, %edx + andl $-32753, %ecx + orl %edx, %ecx + movw %cx, -2(%rsp) + movsd -8(%rsp), %xmm0 + mulsd %xmm0, %xmm1 + mulsd 1024+__dcosh_la_CoutTab(%rip), %xmm1 + movsd %xmm1, (%r8) + ret + +.LBL_2_8: + + movsd 1040+__dcosh_la_CoutTab(%rip), %xmm1 + lea __dcosh_la_CoutTab(%rip), %rcx + movzwl -2(%rsp), %esi + andl $-32753, %esi + movsd 1080+__dcosh_la_CoutTab(%rip), %xmm14 + mulsd %xmm0, %xmm1 + addsd 1048+__dcosh_la_CoutTab(%rip), %xmm1 + movsd %xmm1, -40(%rsp) + movsd -40(%rsp), %xmm2 + movl -40(%rsp), %r10d + movl %r10d, %r9d + shrl $6, %r9d + subsd 1048+__dcosh_la_CoutTab(%rip), %xmm2 + movsd %xmm2, -32(%rsp) + lea 1023(%r9), %edi + andl $63, %r10d + addl $1022, %r9d + movsd -32(%rsp), %xmm3 + andl $2047, %r9d + negl %edi + shll $4, %r9d + addl $-4, %edi + mulsd 1104+__dcosh_la_CoutTab(%rip), %xmm3 + lea (%r10,%r10), %edx + movsd (%rcx,%rdx,8), %xmm15 + negl %edx + movsd -32(%rsp), %xmm4 + orl %r9d, %esi + andl $2047, %edi + lea 1(%r10,%r10), %r11d + mulsd 1112+__dcosh_la_CoutTab(%rip), %xmm4 + subsd %xmm3, %xmm0 + movw %si, -2(%rsp) + andl $-32753, %esi + shll $4, %edi + subsd %xmm4, %xmm0 + movsd -8(%rsp), %xmm6 + orl %edi, %esi + movw %si, -2(%rsp) + lea 128(%rdx), %esi + mulsd %xmm6, %xmm15 + movaps %xmm0, %xmm5 + mulsd %xmm0, %xmm5 + movsd -8(%rsp), %xmm7 + movaps %xmm15, %xmm8 + movsd (%rcx,%rsi,8), %xmm11 + addl $129, %edx + mulsd %xmm7, %xmm11 + movaps %xmm15, %xmm10 + mulsd %xmm5, %xmm14 + addsd %xmm11, %xmm8 + subsd %xmm11, %xmm15 + addsd 1064+__dcosh_la_CoutTab(%rip), %xmm14 + movsd %xmm8, -24(%rsp) + movsd (%rcx,%r11,8), %xmm12 + movsd (%rcx,%rdx,8), %xmm13 + movsd -24(%rsp), %xmm9 + mulsd %xmm6, %xmm12 + subsd %xmm9, %xmm10 + mulsd %xmm7, %xmm13 + mulsd %xmm5, %xmm14 + addsd %xmm11, %xmm10 + mulsd %xmm0, %xmm14 + movsd 1088+__dcosh_la_CoutTab(%rip), %xmm1 + movaps %xmm12, %xmm11 + mulsd %xmm5, %xmm1 + subsd %xmm13, %xmm12 + mulsd %xmm15, %xmm14 + mulsd %xmm0, %xmm12 + addsd 1072+__dcosh_la_CoutTab(%rip), %xmm1 + mulsd %xmm15, %xmm0 + mulsd %xmm5, %xmm1 + addsd %xmm12, %xmm11 + movsd %xmm10, -16(%rsp) + addsd %xmm13, %xmm11 + addsd 1056+__dcosh_la_CoutTab(%rip), %xmm1 + addsd %xmm14, %xmm11 + mulsd %xmm5, %xmm1 + addsd %xmm0, %xmm11 + movsd -24(%rsp), %xmm3 + mulsd %xmm3, %xmm1 + movsd -16(%rsp), %xmm2 + addsd %xmm1, %xmm11 + addsd %xmm2, %xmm11 + movsd %xmm11, -24(%rsp) + movsd -24(%rsp), %xmm0 + addsd %xmm0, %xmm3 + movsd %xmm3, (%r8) + ret + +.LBL_2_9: + + movsd 1120+__dcosh_la_CoutTab(%rip), %xmm0 + movl $3, %eax + mulsd %xmm0, %xmm0 + movsd %xmm0, (%r8) + ret + +.LBL_2_10: + + movsd 1136+__dcosh_la_CoutTab(%rip), %xmm0 + addsd -8(%rsp), %xmm0 + movsd %xmm0, (%r8) + + + ret + +.LBL_2_12: + + movsd (%rdi), %xmm0 + mulsd %xmm0, %xmm0 + movsd %xmm0, (%r8) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_dcosh_cout_rare_internal,@function + .size __svml_dcosh_cout_rare_internal,.-__svml_dcosh_cout_rare_internal +..LN__svml_dcosh_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_dcosh_data_internal: + .long 0 + .long 1071644672 + .long 1828292879 + .long 1071691096 + .long 1014845819 + .long 1071739576 + .long 1853186616 + .long 1071790202 + .long 171030293 + .long 1071843070 + .long 1276261410 + .long 1071898278 + .long 3577096743 + .long 1071955930 + .long 3712504873 + .long 1072016135 + .long 1719614413 + .long 1072079006 + .long 1944781191 + .long 1072144660 + .long 1110089947 + .long 1072213221 + .long 2191782032 + .long 1072284817 + .long 2572866477 + .long 1072359583 + .long 3716502172 + .long 1072437659 + .long 3707479175 + .long 1072519192 + .long 2728693978 + .long 1072604335 + .long 0 + .long 0 + .long 1255956747 + .long 1015588398 + .long 3117910646 + .long 3161559105 + .long 3066496371 + .long 1015656574 + .long 3526460132 + .long 1014428778 + .long 300981948 + .long 1014684169 + .long 2951496418 + .long 1013793687 + .long 88491949 + .long 1015427660 + .long 330458198 + .long 3163282740 + .long 3993278767 + .long 3161724279 + .long 1451641639 + .long 1015474673 + .long 2960257726 + .long 1013742662 + .long 878562433 + .long 1015521741 + .long 2303740125 + .long 1014042725 + .long 3613079303 + .long 1014164738 + .long 396109971 + .long 3163462691 + .long 0 + .long 1071644672 + .long 2728693978 + .long 1071555759 + .long 3707479175 + .long 1071470616 + .long 3716502172 + .long 1071389083 + .long 2572866477 + .long 1071311007 + .long 2191782032 + .long 1071236241 + .long 1110089947 + .long 1071164645 + .long 1944781191 + .long 1071096084 + .long 1719614413 + .long 1071030430 + .long 3712504873 + .long 1070967559 + .long 3577096743 + .long 1070907354 + .long 1276261410 + .long 1070849702 + .long 171030293 + .long 1070794494 + .long 1853186616 + .long 1070741626 + .long 1014845819 + .long 1070691000 + .long 1828292879 + .long 1070642520 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 4 + .long 1071644672 + .long 4 + .long 1071644672 + .long 4 + .long 1071644672 + .long 4 + .long 1071644672 + .long 4 + .long 1071644672 + .long 4 + .long 1071644672 + .long 4 + .long 1071644672 + .long 4 + .long 1071644672 + .long 1431655747 + .long 1069897045 + .long 1431655747 + .long 1069897045 + .long 1431655747 + .long 1069897045 + .long 1431655747 + .long 1069897045 + .long 1431655747 + .long 1069897045 + .long 1431655747 + .long 1069897045 + .long 1431655747 + .long 1069897045 + .long 1431655747 + .long 1069897045 + .long 1430802231 + .long 1067799893 + .long 1430802231 + .long 1067799893 + .long 1430802231 + .long 1067799893 + .long 1430802231 + .long 1067799893 + .long 1430802231 + .long 1067799893 + .long 1430802231 + .long 1067799893 + .long 1430802231 + .long 1067799893 + .long 1430802231 + .long 1067799893 + .long 287861260 + .long 1065423121 + .long 287861260 + .long 1065423121 + .long 287861260 + .long 1065423121 + .long 287861260 + .long 1065423121 + .long 287861260 + .long 1065423121 + .long 287861260 + .long 1065423121 + .long 287861260 + .long 1065423121 + .long 287861260 + .long 1065423121 + .long 3658019094 + .long 1062650243 + .long 3658019094 + .long 1062650243 + .long 3658019094 + .long 1062650243 + .long 3658019094 + .long 1062650243 + .long 3658019094 + .long 1062650243 + .long 3658019094 + .long 1062650243 + .long 3658019094 + .long 1062650243 + .long 3658019094 + .long 1062650243 + .long 1993999322 + .long 1059717517 + .long 1993999322 + .long 1059717517 + .long 1993999322 + .long 1059717517 + .long 1993999322 + .long 1059717517 + .long 1993999322 + .long 1059717517 + .long 1993999322 + .long 1059717517 + .long 1993999322 + .long 1059717517 + .long 1993999322 + .long 1059717517 + .long 0 + .long 1071644672 + .long 4200250559 + .long 1071647514 + .long 2851812149 + .long 1071650365 + .long 339411585 + .long 1071653224 + .long 1048019041 + .long 1071656090 + .long 772914124 + .long 1071658964 + .long 3899555717 + .long 1071661845 + .long 1928746161 + .long 1071664735 + .long 3541402996 + .long 1071667632 + .long 238821257 + .long 1071670538 + .long 702412510 + .long 1071673451 + .long 728934454 + .long 1071676372 + .long 410360776 + .long 1071679301 + .long 4133881824 + .long 1071682237 + .long 3402036099 + .long 1071685182 + .long 2602514713 + .long 1071688135 + .long 1828292879 + .long 1071691096 + .long 1172597893 + .long 1071694065 + .long 728909815 + .long 1071697042 + .long 590962156 + .long 1071700027 + .long 852742562 + .long 1071703020 + .long 1608493509 + .long 1071706021 + .long 2952712987 + .long 1071709030 + .long 685187902 + .long 1071712048 + .long 3490863953 + .long 1071715073 + .long 2875075254 + .long 1071718107 + .long 3228316108 + .long 1071721149 + .long 351405227 + .long 1071724200 + .long 2930322912 + .long 1071727258 + .long 2471440686 + .long 1071730325 + .long 3366293073 + .long 1071733400 + .long 1416741826 + .long 1071736484 + .long 1014845819 + .long 1071739576 + .long 2257959872 + .long 1071742676 + .long 948735466 + .long 1071745785 + .long 1480023343 + .long 1071748902 + .long 3949972341 + .long 1071752027 + .long 4162030108 + .long 1071755161 + .long 2214878420 + .long 1071758304 + .long 2502433899 + .long 1071761455 + .long 828946858 + .long 1071764615 + .long 1588871207 + .long 1071767783 + .long 586995997 + .long 1071770960 + .long 2218315341 + .long 1071774145 + .long 2288159958 + .long 1071777339 + .long 897099801 + .long 1071780542 + .long 2440944790 + .long 1071783753 + .long 2725843665 + .long 1071786973 + .long 1853186616 + .long 1071790202 + .long 4219606026 + .long 1071793439 + .long 1337108031 + .long 1071796686 + .long 1897844341 + .long 1071799941 + .long 1709341917 + .long 1071803205 + .long 874372905 + .long 1071806478 + .long 3790955393 + .long 1071809759 + .long 1972484976 + .long 1071813050 + .long 4112506593 + .long 1071816349 + .long 1724976915 + .long 1071819658 + .long 3504003472 + .long 1071822975 + .long 964107055 + .long 1071826302 + .long 2799960843 + .long 1071829637 + .long 526652809 + .long 1071832982 + .long 2839424854 + .long 1071836335 + .long 1253935211 + .long 1071839698 + .long 171030293 + .long 1071843070 + .long 3991843581 + .long 1071846450 + .long 4232894513 + .long 1071849840 + .long 1000925746 + .long 1071853240 + .long 2992903935 + .long 1071856648 + .long 1726216749 + .long 1071860066 + .long 1603444721 + .long 1071863493 + .long 2732492859 + .long 1071866929 + .long 926591435 + .long 1071870375 + .long 589198666 + .long 1071873830 + .long 1829099622 + .long 1071877294 + .long 460407023 + .long 1071880768 + .long 887463927 + .long 1071884251 + .long 3219942644 + .long 1071887743 + .long 3272845541 + .long 1071891245 + .long 1156440435 + .long 1071894757 + .long 1276261410 + .long 1071898278 + .long 3743175029 + .long 1071901808 + .long 78413852 + .long 1071905349 + .long 3278348324 + .long 1071908898 + .long 569847338 + .long 1071912458 + .long 654919306 + .long 1071916027 + .long 3645941911 + .long 1071919605 + .long 1065662932 + .long 1071923194 + .long 1617004845 + .long 1071926792 + .long 1118294578 + .long 1071930400 + .long 3978100823 + .long 1071934017 + .long 1720398391 + .long 1071937645 + .long 3049340112 + .long 1071941282 + .long 3784486610 + .long 1071944929 + .long 4040676318 + .long 1071948586 + .long 3933059031 + .long 1071952253 + .long 3577096743 + .long 1071955930 + .long 3088564500 + .long 1071959617 + .long 2583551245 + .long 1071963314 + .long 2178460671 + .long 1071967021 + .long 1990012071 + .long 1071970738 + .long 2135241198 + .long 1071974465 + .long 2731501122 + .long 1071978202 + .long 3896463087 + .long 1071981949 + .long 1453150082 + .long 1071985707 + .long 4109806887 + .long 1071989474 + .long 3395129871 + .long 1071993252 + .long 3723038930 + .long 1071997040 + .long 917841882 + .long 1072000839 + .long 3689071823 + .long 1072004647 + .long 3566716925 + .long 1072008466 + .long 671025100 + .long 1072012296 + .long 3712504873 + .long 1072016135 + .long 4222122499 + .long 1072019985 + .long 2321106615 + .long 1072023846 + .long 2425981843 + .long 1072027717 + .long 363667784 + .long 1072031599 + .long 551349105 + .long 1072035491 + .long 3111574537 + .long 1072039393 + .long 3872257780 + .long 1072043306 + .long 2956612997 + .long 1072047230 + .long 488188413 + .long 1072051165 + .long 885834528 + .long 1072055110 + .long 4273770423 + .long 1072059065 + .long 2186617381 + .long 1072063032 + .long 3339203574 + .long 1072067009 + .long 3561793907 + .long 1072070997 + .long 2979960120 + .long 1072074996 + .long 1719614413 + .long 1072079006 + .long 4201977662 + .long 1072083026 + .long 1963711167 + .long 1072087058 + .long 3721688645 + .long 1072091100 + .long 1013258799 + .long 1072095154 + .long 2555984613 + .long 1072099218 + .long 4182873220 + .long 1072103293 + .long 1727278727 + .long 1072107380 + .long 3907805044 + .long 1072111477 + .long 2263535754 + .long 1072115586 + .long 1218806132 + .long 1072119706 + .long 903334909 + .long 1072123837 + .long 1447192521 + .long 1072127979 + .long 2980802057 + .long 1072132132 + .long 1339972927 + .long 1072136297 + .long 950803702 + .long 1072140473 + .long 1944781191 + .long 1072144660 + .long 158781403 + .long 1072148859 + .long 19972402 + .long 1072153069 + .long 1660913392 + .long 1072157290 + .long 919555682 + .long 1072161523 + .long 2224145553 + .long 1072165767 + .long 1413356050 + .long 1072170023 + .long 2916157145 + .long 1072174290 + .long 2571947539 + .long 1072178569 + .long 515457527 + .long 1072182860 + .long 1176749997 + .long 1072187162 + .long 396319521 + .long 1072191476 + .long 2604962541 + .long 1072195801 + .long 3643909174 + .long 1072200138 + .long 3649726105 + .long 1072204487 + .long 2759350287 + .long 1072208848 + .long 1110089947 + .long 1072213221 + .long 3134592888 + .long 1072217605 + .long 380978316 + .long 1072222002 + .long 1577608921 + .long 1072226410 + .long 2568320822 + .long 1072230830 + .long 3492293770 + .long 1072235262 + .long 194117574 + .long 1072239707 + .long 1403662306 + .long 1072244163 + .long 2966275557 + .long 1072248631 + .long 727685349 + .long 1072253112 + .long 3418903055 + .long 1072257604 + .long 2591453363 + .long 1072262109 + .long 2682146384 + .long 1072266626 + .long 3833209506 + .long 1072271155 + .long 1892288442 + .long 1072275697 + .long 1297350157 + .long 1072280251 + .long 2191782032 + .long 1072284817 + .long 424392917 + .long 1072289396 + .long 434316067 + .long 1072293987 + .long 2366108318 + .long 1072298590 + .long 2069751141 + .long 1072303206 + .long 3985553595 + .long 1072307834 + .long 3964284211 + .long 1072312475 + .long 2152073944 + .long 1072317129 + .long 2990417245 + .long 1072321795 + .long 2331271250 + .long 1072326474 + .long 321958744 + .long 1072331166 + .long 1405169241 + .long 1072335870 + .long 1434058175 + .long 1072340587 + .long 557149882 + .long 1072345317 + .long 3218338682 + .long 1072350059 + .long 977020788 + .long 1072354815 + .long 2572866477 + .long 1072359583 + .long 3861050111 + .long 1072364364 + .long 697153126 + .long 1072369159 + .long 1822067026 + .long 1072373966 + .long 3092190715 + .long 1072378786 + .long 364333489 + .long 1072383620 + .long 2380618042 + .long 1072388466 + .long 703710506 + .long 1072393326 + .long 4076559943 + .long 1072398198 + .long 4062661092 + .long 1072403084 + .long 815859274 + .long 1072407984 + .long 3080351519 + .long 1072412896 + .long 2420883922 + .long 1072417822 + .long 3287523847 + .long 1072422761 + .long 1540824585 + .long 1072427714 + .long 1631695677 + .long 1072432680 + .long 3716502172 + .long 1072437659 + .long 3657065772 + .long 1072442652 + .long 1610600570 + .long 1072447659 + .long 2029714210 + .long 1072452679 + .long 777507147 + .long 1072457713 + .long 2307442995 + .long 1072462760 + .long 2483480501 + .long 1072467821 + .long 1464976603 + .long 1072472896 + .long 3706687593 + .long 1072477984 + .long 778901109 + .long 1072483087 + .long 1432208378 + .long 1072488203 + .long 1532734324 + .long 1072493333 + .long 1242007932 + .long 1072498477 + .long 721996136 + .long 1072503635 + .long 135105010 + .long 1072508807 + .long 3939148246 + .long 1072513992 + .long 3707479175 + .long 1072519192 + .long 3898795731 + .long 1072524406 + .long 382305176 + .long 1072529635 + .long 1912561781 + .long 1072534877 + .long 64696965 + .long 1072540134 + .long 3594158869 + .long 1072545404 + .long 4076975200 + .long 1072550689 + .long 1679558232 + .long 1072555989 + .long 863738719 + .long 1072561303 + .long 1796832535 + .long 1072566631 + .long 351641897 + .long 1072571974 + .long 991358482 + .long 1072577331 + .long 3884662774 + .long 1072582702 + .long 610758006 + .long 1072588089 + .long 4224142467 + .long 1072593489 + .long 2009970496 + .long 1072598905 + .long 2728693978 + .long 1072604335 + .long 2256325230 + .long 1072609780 + .long 764307441 + .long 1072615240 + .long 2719515920 + .long 1072620714 + .long 3999357479 + .long 1072626203 + .long 481706282 + .long 1072631708 + .long 929806999 + .long 1072637227 + .long 1222472308 + .long 1072642761 + .long 1533953344 + .long 1072648310 + .long 2038973688 + .long 1072653874 + .long 2912730644 + .long 1072659453 + .long 35929225 + .long 1072665048 + .long 2174652632 + .long 1072670657 + .long 915592468 + .long 1072676282 + .long 730821105 + .long 1072681922 + .long 1797923801 + .long 1072687577 + .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 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 4277927936 + .long 1072049730 + .long 4277927936 + .long 1072049730 + .long 4277927936 + .long 1072049730 + .long 4277927936 + .long 1072049730 + .long 4277927936 + .long 1072049730 + .long 4277927936 + .long 1072049730 + .long 4277927936 + .long 1072049730 + .long 4277927936 + .long 1072049730 + .long 2825664665 + .long 3182190860 + .long 2825664665 + .long 3182190860 + .long 2825664665 + .long 3182190860 + .long 2825664665 + .long 3182190860 + .long 2825664665 + .long 3182190860 + .long 2825664665 + .long 3182190860 + .long 2825664665 + .long 3182190860 + .long 2825664665 + .long 3182190860 + .long 0 + .long 1119354880 + .long 0 + .long 1119354880 + .long 0 + .long 1119354880 + .long 0 + .long 1119354880 + .long 0 + .long 1119354880 + .long 0 + .long 1119354880 + .long 0 + .long 1119354880 + .long 0 + .long 1119354880 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 255 + .long 4294966717 + .long 1071644671 + .long 4294966717 + .long 1071644671 + .long 4294966717 + .long 1071644671 + .long 4294966717 + .long 1071644671 + .long 4294966717 + .long 1071644671 + .long 4294966717 + .long 1071644671 + .long 4294966717 + .long 1071644671 + .long 4294966717 + .long 1071644671 + .long 1887518228 + .long 1069897045 + .long 1887518228 + .long 1069897045 + .long 1887518228 + .long 1069897045 + .long 1887518228 + .long 1069897045 + .long 1887518228 + .long 1069897045 + .long 1887518228 + .long 1069897045 + .long 1887518228 + .long 1069897045 + .long 1887518228 + .long 1069897045 + .long 3474379417 + .long 1067799893 + .long 3474379417 + .long 1067799893 + .long 3474379417 + .long 1067799893 + .long 3474379417 + .long 1067799893 + .long 3474379417 + .long 1067799893 + .long 3474379417 + .long 1067799893 + .long 3474379417 + .long 1067799893 + .long 3474379417 + .long 1067799893 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 256 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .type __svml_dcosh_data_internal,@object + .size __svml_dcosh_data_internal,3776 + .space 832, 0x00 + .align 32 +__dcosh_la_CoutTab: + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 1048019041 + .long 1072704666 + .long 1398474845 + .long 3161559171 + .long 3541402996 + .long 1072716208 + .long 2759177317 + .long 1015903202 + .long 410360776 + .long 1072727877 + .long 1269990655 + .long 1013024446 + .long 1828292879 + .long 1072739672 + .long 1255956747 + .long 1016636974 + .long 852742562 + .long 1072751596 + .long 667253587 + .long 1010842135 + .long 3490863953 + .long 1072763649 + .long 960797498 + .long 3163997456 + .long 2930322912 + .long 1072775834 + .long 2599499422 + .long 3163762623 + .long 1014845819 + .long 1072788152 + .long 3117910646 + .long 3162607681 + .long 3949972341 + .long 1072800603 + .long 2068408548 + .long 1015962444 + .long 828946858 + .long 1072813191 + .long 10642492 + .long 1016988014 + .long 2288159958 + .long 1072825915 + .long 2169144469 + .long 1015924597 + .long 1853186616 + .long 1072838778 + .long 3066496371 + .long 1016705150 + .long 1709341917 + .long 1072851781 + .long 2571168217 + .long 1015201075 + .long 4112506593 + .long 1072864925 + .long 2947355221 + .long 1015419624 + .long 2799960843 + .long 1072878213 + .long 1423655381 + .long 1016070727 + .long 171030293 + .long 1072891646 + .long 3526460132 + .long 1015477354 + .long 2992903935 + .long 1072905224 + .long 2218154406 + .long 1016276769 + .long 926591435 + .long 1072918951 + .long 3208833762 + .long 3163962090 + .long 887463927 + .long 1072932827 + .long 3596744163 + .long 3161842742 + .long 1276261410 + .long 1072946854 + .long 300981948 + .long 1015732745 + .long 569847338 + .long 1072961034 + .long 472945272 + .long 3160339305 + .long 1617004845 + .long 1072975368 + .long 82804944 + .long 1011391354 + .long 3049340112 + .long 1072989858 + .long 3062915824 + .long 1014219171 + .long 3577096743 + .long 1073004506 + .long 2951496418 + .long 1014842263 + .long 1990012071 + .long 1073019314 + .long 3529070563 + .long 3163861769 + .long 1453150082 + .long 1073034283 + .long 498154669 + .long 3162536638 + .long 917841882 + .long 1073049415 + .long 18715565 + .long 1016707884 + .long 3712504873 + .long 1073064711 + .long 88491949 + .long 1016476236 + .long 363667784 + .long 1073080175 + .long 813753950 + .long 1016833785 + .long 2956612997 + .long 1073095806 + .long 2118169751 + .long 3163784129 + .long 2186617381 + .long 1073111608 + .long 2270764084 + .long 3164321289 + .long 1719614413 + .long 1073127582 + .long 330458198 + .long 3164331316 + .long 1013258799 + .long 1073143730 + .long 1748797611 + .long 3161177658 + .long 3907805044 + .long 1073160053 + .long 2257091225 + .long 3162598983 + .long 1447192521 + .long 1073176555 + .long 1462857171 + .long 3163563097 + .long 1944781191 + .long 1073193236 + .long 3993278767 + .long 3162772855 + .long 919555682 + .long 1073210099 + .long 3121969534 + .long 1013996802 + .long 2571947539 + .long 1073227145 + .long 3558159064 + .long 3164425245 + .long 2604962541 + .long 1073244377 + .long 2614425274 + .long 3164587768 + .long 1110089947 + .long 1073261797 + .long 1451641639 + .long 1016523249 + .long 2568320822 + .long 1073279406 + .long 2732824428 + .long 1015401491 + .long 2966275557 + .long 1073297207 + .long 2176155324 + .long 3160891335 + .long 2682146384 + .long 1073315202 + .long 2082178513 + .long 3164411995 + .long 2191782032 + .long 1073333393 + .long 2960257726 + .long 1014791238 + .long 2069751141 + .long 1073351782 + .long 1562170675 + .long 3163773257 + .long 2990417245 + .long 1073370371 + .long 3683467745 + .long 3164417902 + .long 1434058175 + .long 1073389163 + .long 251133233 + .long 1016134345 + .long 2572866477 + .long 1073408159 + .long 878562433 + .long 1016570317 + .long 3092190715 + .long 1073427362 + .long 814012168 + .long 3160571998 + .long 4076559943 + .long 1073446774 + .long 2119478331 + .long 3161806927 + .long 2420883922 + .long 1073466398 + .long 2049810052 + .long 1015168464 + .long 3716502172 + .long 1073486235 + .long 2303740125 + .long 1015091301 + .long 777507147 + .long 1073506289 + .long 4282924205 + .long 1016236109 + .long 3706687593 + .long 1073526560 + .long 3521726939 + .long 1014301643 + .long 1242007932 + .long 1073547053 + .long 1132034716 + .long 3164388407 + .long 3707479175 + .long 1073567768 + .long 3613079303 + .long 1015213314 + .long 64696965 + .long 1073588710 + .long 1768797490 + .long 1016865536 + .long 863738719 + .long 1073609879 + .long 1326992220 + .long 3163661773 + .long 3884662774 + .long 1073631278 + .long 2158611599 + .long 1015258761 + .long 2728693978 + .long 1073652911 + .long 396109971 + .long 3164511267 + .long 3999357479 + .long 1073674779 + .long 2258941616 + .long 1016973300 + .long 1533953344 + .long 1073696886 + .long 769171851 + .long 1016714209 + .long 2174652632 + .long 1073719233 + .long 4087714590 + .long 1015498835 + .long 0 + .long 1073741824 + .long 0 + .long 0 + .long 1697350398 + .long 1079448903 + .long 0 + .long 1127743488 + .long 0 + .long 1071644672 + .long 1431652600 + .long 1069897045 + .long 1431670732 + .long 1067799893 + .long 984555731 + .long 1065423122 + .long 472530941 + .long 1062650218 + .long 2411329662 + .long 1082536910 + .long 4277796864 + .long 1065758274 + .long 3164486458 + .long 1025308570 + .long 4294967295 + .long 2146435071 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 3875694624 + .long 1077247184 + .type __dcosh_la_CoutTab,@object + .size __dcosh_la_CoutTab,1152 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_cosh_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_cosh_s_la.s new file mode 100644 index 00000000..a7be097f --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_cosh_s_la.s @@ -0,0 +1,1211 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + + + .text +.L_2__routine_start___svml_coshf16_z0_0: + + .align 16,0x90 + .globl __svml_coshf16 + +__svml_coshf16: + + + .cfi_startproc +..L2: + + 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 1024+__svml_scosh_data_internal(%rip), %zmm4 + vmovups 384+__svml_scosh_data_internal(%rip), %zmm6 + +/* + * ............... Load argument ............................ + * dM = x/log(2) + RShifter + */ + vmovups 768+__svml_scosh_data_internal(%rip), %zmm10 + vmovups 896+__svml_scosh_data_internal(%rip), %zmm7 + vmovups 960+__svml_scosh_data_internal(%rip), %zmm9 + +/* ... */ + vmovups 704+__svml_scosh_data_internal(%rip), %zmm2 + +/* x^2 */ + vmovups 640+__svml_scosh_data_internal(%rip), %zmm3 + +/* ............... G1,G2 2^N,2^(-N) ........... */ + vmovups __svml_scosh_data_internal(%rip), %zmm12 + vmovups 256+__svml_scosh_data_internal(%rip), %zmm13 + +/* + * -------------------- Implementation ------------------- + * ............... Abs argument ............................ + */ + vandnps %zmm0, %zmm4, %zmm1 + +/* ...............Check for overflow\underflow ............. */ + vpternlogd $255, %zmm5, %zmm5, %zmm5 + vfmadd213ps {rn-sae}, %zmm6, %zmm1, %zmm10 + vpcmpd $1, 512+__svml_scosh_data_internal(%rip), %zmm1, %k1 + +/* iM now is an EXP(2^N) */ + vpslld $18, %zmm10, %zmm11 + +/* + * ................... R ................................... + * sN = sM - RShifter + */ + vsubps {rn-sae}, %zmm6, %zmm10, %zmm8 + vpermt2ps 64+__svml_scosh_data_internal(%rip), %zmm10, %zmm12 + vpermt2ps 320+__svml_scosh_data_internal(%rip), %zmm10, %zmm13 + vpandnd %zmm1, %zmm1, %zmm5{%k1} + +/* sR = sX - sN*Log2_hi */ + vfnmadd231ps {rn-sae}, %zmm7, %zmm8, %zmm1 + vptestmd %zmm5, %zmm5, %k0 + +/* sR = (sX - sN*Log2_hi) - sN*Log2_lo */ + vfnmadd231ps {rn-sae}, %zmm9, %zmm8, %zmm1 + kmovw %k0, %edx + vmulps {rn-sae}, %zmm1, %zmm1, %zmm4 + vmulps {rn-sae}, %zmm4, %zmm2, %zmm2 + +/* sSinh_r = r + r*(r^2*(a3)) */ + vfmadd213ps {rn-sae}, %zmm1, %zmm1, %zmm2 + +/* sOut = r^2*(a2) */ + vmulps {rn-sae}, %zmm4, %zmm3, %zmm1 + vpandd 1216+__svml_scosh_data_internal(%rip), %zmm11, %zmm14 + vpaddd %zmm14, %zmm12, %zmm15 + vpsubd %zmm14, %zmm13, %zmm10 + +/* sG2 = 2^N*Th + 2^(-N)*T_h */ + vaddps {rn-sae}, %zmm10, %zmm15, %zmm5 + +/* sG1 = 2^N*Th - 2^(-N)*T_h */ + vsubps {rn-sae}, %zmm10, %zmm15, %zmm6 + +/* res = sG1*(r + r*(r^2*(a3))) + sG2*(1+r^2*(a2)) */ + vfmadd213ps {rn-sae}, %zmm5, %zmm5, %zmm1 + vfmadd213ps {rn-sae}, %zmm1, %zmm2, %zmm6 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + vmovaps %zmm6, %zmm0 + 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 %zmm0, 64(%rsp) + vmovups %zmm6, 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), %zmm6 + 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_scosh_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_coshf16,@function + .size __svml_coshf16,.-__svml_coshf16 +..LN__svml_coshf16.0: + +.L_2__routine_start___svml_scosh_cout_rare_internal_1: + + .align 16,0x90 + +__svml_scosh_cout_rare_internal: + + + .cfi_startproc +..L53: + + movq %rsi, %r8 + movzwl 2(%rdi), %edx + xorl %eax, %eax + andl $32640, %edx + cmpl $32640, %edx + je .LBL_2_12 + + + pxor %xmm0, %xmm0 + cvtss2sd (%rdi), %xmm0 + movsd %xmm0, -8(%rsp) + andb $127, -1(%rsp) + movzwl -2(%rsp), %edx + andl $32752, %edx + cmpl $15504, %edx + jle .LBL_2_10 + + + movsd -8(%rsp), %xmm0 + movsd 1096+__scosh_la_CoutTab(%rip), %xmm1 + comisd %xmm0, %xmm1 + jbe .LBL_2_9 + + + movq 1128+__scosh_la_CoutTab(%rip), %rdx + movq %rdx, -8(%rsp) + comisd 1144+__scosh_la_CoutTab(%rip), %xmm0 + jb .LBL_2_8 + + + movsd 1040+__scosh_la_CoutTab(%rip), %xmm1 + lea __scosh_la_CoutTab(%rip), %r9 + mulsd %xmm0, %xmm1 + addsd 1048+__scosh_la_CoutTab(%rip), %xmm1 + movsd %xmm1, -40(%rsp) + movsd -40(%rsp), %xmm2 + movsd 1088+__scosh_la_CoutTab(%rip), %xmm1 + movl -40(%rsp), %edx + movl %edx, %esi + andl $63, %esi + subsd 1048+__scosh_la_CoutTab(%rip), %xmm2 + movsd %xmm2, -32(%rsp) + lea (%rsi,%rsi), %ecx + movsd -32(%rsp), %xmm3 + lea 1(%rsi,%rsi), %edi + mulsd 1104+__scosh_la_CoutTab(%rip), %xmm3 + movsd -32(%rsp), %xmm4 + subsd %xmm3, %xmm0 + mulsd 1112+__scosh_la_CoutTab(%rip), %xmm4 + shrl $6, %edx + subsd %xmm4, %xmm0 + mulsd %xmm0, %xmm1 + addl $1022, %edx + andl $2047, %edx + addsd 1080+__scosh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + addsd 1072+__scosh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + addsd 1064+__scosh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + addsd 1056+__scosh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + mulsd %xmm0, %xmm1 + addsd %xmm0, %xmm1 + movsd (%r9,%rcx,8), %xmm0 + mulsd %xmm0, %xmm1 + addsd (%r9,%rdi,8), %xmm1 + addsd %xmm0, %xmm1 + cmpl $2046, %edx + ja .LBL_2_7 + + + movq 1128+__scosh_la_CoutTab(%rip), %rcx + shrq $48, %rcx + shll $4, %edx + andl $-32753, %ecx + orl %edx, %ecx + movw %cx, -2(%rsp) + movsd -8(%rsp), %xmm0 + mulsd %xmm1, %xmm0 + cvtsd2ss %xmm0, %xmm0 + movss %xmm0, (%r8) + ret + +.LBL_2_7: + + decl %edx + andl $2047, %edx + movzwl -2(%rsp), %ecx + shll $4, %edx + andl $-32753, %ecx + orl %edx, %ecx + movw %cx, -2(%rsp) + movsd -8(%rsp), %xmm0 + mulsd %xmm0, %xmm1 + mulsd 1024+__scosh_la_CoutTab(%rip), %xmm1 + cvtsd2ss %xmm1, %xmm1 + movss %xmm1, (%r8) + ret + +.LBL_2_8: + + movsd 1040+__scosh_la_CoutTab(%rip), %xmm1 + lea __scosh_la_CoutTab(%rip), %rcx + movzwl -2(%rsp), %esi + andl $-32753, %esi + movsd 1080+__scosh_la_CoutTab(%rip), %xmm14 + mulsd %xmm0, %xmm1 + addsd 1048+__scosh_la_CoutTab(%rip), %xmm1 + movsd %xmm1, -40(%rsp) + movsd -40(%rsp), %xmm2 + movl -40(%rsp), %r10d + movl %r10d, %r9d + shrl $6, %r9d + subsd 1048+__scosh_la_CoutTab(%rip), %xmm2 + movsd %xmm2, -32(%rsp) + lea 1023(%r9), %edi + movsd -32(%rsp), %xmm3 + addl $1022, %r9d + mulsd 1104+__scosh_la_CoutTab(%rip), %xmm3 + andl $63, %r10d + movsd -32(%rsp), %xmm4 + lea (%r10,%r10), %edx + mulsd 1112+__scosh_la_CoutTab(%rip), %xmm4 + subsd %xmm3, %xmm0 + andl $2047, %r9d + negl %edi + movsd (%rcx,%rdx,8), %xmm15 + negl %edx + shll $4, %r9d + addl $-4, %edi + orl %r9d, %esi + andl $2047, %edi + movw %si, -2(%rsp) + andl $-32753, %esi + shll $4, %edi + lea 1(%r10,%r10), %r11d + movsd -8(%rsp), %xmm6 + orl %edi, %esi + movw %si, -2(%rsp) + lea 128(%rdx), %esi + addl $129, %edx + subsd %xmm4, %xmm0 + mulsd %xmm6, %xmm15 + movaps %xmm0, %xmm5 + movaps %xmm15, %xmm8 + mulsd %xmm0, %xmm5 + movaps %xmm15, %xmm10 + movsd (%rcx,%r11,8), %xmm2 + mulsd %xmm6, %xmm2 + mulsd %xmm5, %xmm14 + movsd -8(%rsp), %xmm7 + movaps %xmm2, %xmm12 + movsd (%rcx,%rdx,8), %xmm13 + mulsd %xmm7, %xmm13 + addsd 1064+__scosh_la_CoutTab(%rip), %xmm14 + movsd 1088+__scosh_la_CoutTab(%rip), %xmm1 + subsd %xmm13, %xmm12 + mulsd %xmm5, %xmm1 + mulsd %xmm5, %xmm14 + mulsd %xmm0, %xmm12 + addsd 1072+__scosh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm14 + addsd %xmm12, %xmm2 + mulsd %xmm5, %xmm1 + addsd %xmm13, %xmm2 + addsd 1056+__scosh_la_CoutTab(%rip), %xmm1 + movsd (%rcx,%rsi,8), %xmm11 + mulsd %xmm7, %xmm11 + mulsd %xmm5, %xmm1 + addsd %xmm11, %xmm8 + subsd %xmm11, %xmm15 + movsd %xmm8, -24(%rsp) + movsd -24(%rsp), %xmm9 + mulsd %xmm15, %xmm14 + subsd %xmm9, %xmm10 + mulsd %xmm15, %xmm0 + addsd %xmm11, %xmm10 + addsd %xmm14, %xmm2 + movsd %xmm10, -16(%rsp) + addsd %xmm0, %xmm2 + movsd -24(%rsp), %xmm3 + mulsd %xmm3, %xmm1 + movsd -16(%rsp), %xmm6 + addsd %xmm1, %xmm2 + addsd %xmm6, %xmm2 + movsd %xmm2, -24(%rsp) + movsd -24(%rsp), %xmm0 + addsd %xmm0, %xmm3 + cvtsd2ss %xmm3, %xmm3 + movss %xmm3, (%r8) + ret + +.LBL_2_9: + + movsd 1120+__scosh_la_CoutTab(%rip), %xmm0 + movl $3, %eax + mulsd %xmm0, %xmm0 + cvtsd2ss %xmm0, %xmm0 + movss %xmm0, (%r8) + ret + +.LBL_2_10: + + movsd 1136+__scosh_la_CoutTab(%rip), %xmm0 + addsd -8(%rsp), %xmm0 + cvtsd2ss %xmm0, %xmm0 + movss %xmm0, (%r8) + + + ret + +.LBL_2_12: + + movss (%rdi), %xmm0 + mulss %xmm0, %xmm0 + movss %xmm0, (%r8) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_scosh_cout_rare_internal,@function + .size __svml_scosh_cout_rare_internal,.-__svml_scosh_cout_rare_internal +..LN__svml_scosh_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_scosh_data_internal: + .long 1056964608 + .long 1057148295 + .long 1057336003 + .long 1057527823 + .long 1057723842 + .long 1057924154 + .long 1058128851 + .long 1058338032 + .long 1058551792 + .long 1058770234 + .long 1058993458 + .long 1059221571 + .long 1059454679 + .long 1059692891 + .long 1059936319 + .long 1060185078 + .long 1060439283 + .long 1060699055 + .long 1060964516 + .long 1061235789 + .long 1061513002 + .long 1061796286 + .long 1062085772 + .long 1062381598 + .long 1062683901 + .long 1062992824 + .long 1063308511 + .long 1063631111 + .long 1063960775 + .long 1064297658 + .long 1064641917 + .long 1064993715 + .long 0 + .long 2999887785 + .long 852465809 + .long 3003046475 + .long 2984291233 + .long 3001644133 + .long 854021668 + .long 2997748242 + .long 849550193 + .long 2995541347 + .long 851518274 + .long 809701978 + .long 2997656926 + .long 2996185864 + .long 2980965110 + .long 3002882728 + .long 844097402 + .long 848217591 + .long 2999013352 + .long 2992006718 + .long 831170615 + .long 3002278818 + .long 833158180 + .long 3000769962 + .long 2991891850 + .long 2999994908 + .long 2979965785 + .long 2982419430 + .long 2982221534 + .long 2999469642 + .long 833168438 + .long 2987538264 + .long 1056964608 + .long 1056605107 + .long 1056253309 + .long 1055909050 + .long 1055572167 + .long 1055242503 + .long 1054919903 + .long 1054604216 + .long 1054295293 + .long 1053992990 + .long 1053697164 + .long 1053407678 + .long 1053124394 + .long 1052847181 + .long 1052575908 + .long 1052310447 + .long 1052050675 + .long 1051796470 + .long 1051547711 + .long 1051304283 + .long 1051066071 + .long 1050832963 + .long 1050604850 + .long 1050381626 + .long 1050163184 + .long 1049949424 + .long 1049740243 + .long 1049535546 + .long 1049335234 + .long 1049139215 + .long 1048947395 + .long 1048759687 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .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 1056964879 + .long 1056964879 + .long 1056964879 + .long 1056964879 + .long 1056964879 + .long 1056964879 + .long 1056964879 + .long 1056964879 + .long 1056964879 + .long 1056964879 + .long 1056964879 + .long 1056964879 + .long 1056964879 + .long 1056964879 + .long 1056964879 + .long 1056964879 + .long 1042983629 + .long 1042983629 + .long 1042983629 + .long 1042983629 + .long 1042983629 + .long 1042983629 + .long 1042983629 + .long 1042983629 + .long 1042983629 + .long 1042983629 + .long 1042983629 + .long 1042983629 + .long 1042983629 + .long 1042983629 + .long 1042983629 + .long 1042983629 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .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 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .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 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 3212836864 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .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 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 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .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 + .type __svml_scosh_data_internal,@object + .size __svml_scosh_data_internal,1920 + .align 32 +__scosh_la_CoutTab: + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 1048019041 + .long 1072704666 + .long 1398474845 + .long 3161559171 + .long 3541402996 + .long 1072716208 + .long 2759177317 + .long 1015903202 + .long 410360776 + .long 1072727877 + .long 1269990655 + .long 1013024446 + .long 1828292879 + .long 1072739672 + .long 1255956747 + .long 1016636974 + .long 852742562 + .long 1072751596 + .long 667253587 + .long 1010842135 + .long 3490863953 + .long 1072763649 + .long 960797498 + .long 3163997456 + .long 2930322912 + .long 1072775834 + .long 2599499422 + .long 3163762623 + .long 1014845819 + .long 1072788152 + .long 3117910646 + .long 3162607681 + .long 3949972341 + .long 1072800603 + .long 2068408548 + .long 1015962444 + .long 828946858 + .long 1072813191 + .long 10642492 + .long 1016988014 + .long 2288159958 + .long 1072825915 + .long 2169144469 + .long 1015924597 + .long 1853186616 + .long 1072838778 + .long 3066496371 + .long 1016705150 + .long 1709341917 + .long 1072851781 + .long 2571168217 + .long 1015201075 + .long 4112506593 + .long 1072864925 + .long 2947355221 + .long 1015419624 + .long 2799960843 + .long 1072878213 + .long 1423655381 + .long 1016070727 + .long 171030293 + .long 1072891646 + .long 3526460132 + .long 1015477354 + .long 2992903935 + .long 1072905224 + .long 2218154406 + .long 1016276769 + .long 926591435 + .long 1072918951 + .long 3208833762 + .long 3163962090 + .long 887463927 + .long 1072932827 + .long 3596744163 + .long 3161842742 + .long 1276261410 + .long 1072946854 + .long 300981948 + .long 1015732745 + .long 569847338 + .long 1072961034 + .long 472945272 + .long 3160339305 + .long 1617004845 + .long 1072975368 + .long 82804944 + .long 1011391354 + .long 3049340112 + .long 1072989858 + .long 3062915824 + .long 1014219171 + .long 3577096743 + .long 1073004506 + .long 2951496418 + .long 1014842263 + .long 1990012071 + .long 1073019314 + .long 3529070563 + .long 3163861769 + .long 1453150082 + .long 1073034283 + .long 498154669 + .long 3162536638 + .long 917841882 + .long 1073049415 + .long 18715565 + .long 1016707884 + .long 3712504873 + .long 1073064711 + .long 88491949 + .long 1016476236 + .long 363667784 + .long 1073080175 + .long 813753950 + .long 1016833785 + .long 2956612997 + .long 1073095806 + .long 2118169751 + .long 3163784129 + .long 2186617381 + .long 1073111608 + .long 2270764084 + .long 3164321289 + .long 1719614413 + .long 1073127582 + .long 330458198 + .long 3164331316 + .long 1013258799 + .long 1073143730 + .long 1748797611 + .long 3161177658 + .long 3907805044 + .long 1073160053 + .long 2257091225 + .long 3162598983 + .long 1447192521 + .long 1073176555 + .long 1462857171 + .long 3163563097 + .long 1944781191 + .long 1073193236 + .long 3993278767 + .long 3162772855 + .long 919555682 + .long 1073210099 + .long 3121969534 + .long 1013996802 + .long 2571947539 + .long 1073227145 + .long 3558159064 + .long 3164425245 + .long 2604962541 + .long 1073244377 + .long 2614425274 + .long 3164587768 + .long 1110089947 + .long 1073261797 + .long 1451641639 + .long 1016523249 + .long 2568320822 + .long 1073279406 + .long 2732824428 + .long 1015401491 + .long 2966275557 + .long 1073297207 + .long 2176155324 + .long 3160891335 + .long 2682146384 + .long 1073315202 + .long 2082178513 + .long 3164411995 + .long 2191782032 + .long 1073333393 + .long 2960257726 + .long 1014791238 + .long 2069751141 + .long 1073351782 + .long 1562170675 + .long 3163773257 + .long 2990417245 + .long 1073370371 + .long 3683467745 + .long 3164417902 + .long 1434058175 + .long 1073389163 + .long 251133233 + .long 1016134345 + .long 2572866477 + .long 1073408159 + .long 878562433 + .long 1016570317 + .long 3092190715 + .long 1073427362 + .long 814012168 + .long 3160571998 + .long 4076559943 + .long 1073446774 + .long 2119478331 + .long 3161806927 + .long 2420883922 + .long 1073466398 + .long 2049810052 + .long 1015168464 + .long 3716502172 + .long 1073486235 + .long 2303740125 + .long 1015091301 + .long 777507147 + .long 1073506289 + .long 4282924205 + .long 1016236109 + .long 3706687593 + .long 1073526560 + .long 3521726939 + .long 1014301643 + .long 1242007932 + .long 1073547053 + .long 1132034716 + .long 3164388407 + .long 3707479175 + .long 1073567768 + .long 3613079303 + .long 1015213314 + .long 64696965 + .long 1073588710 + .long 1768797490 + .long 1016865536 + .long 863738719 + .long 1073609879 + .long 1326992220 + .long 3163661773 + .long 3884662774 + .long 1073631278 + .long 2158611599 + .long 1015258761 + .long 2728693978 + .long 1073652911 + .long 396109971 + .long 3164511267 + .long 3999357479 + .long 1073674779 + .long 2258941616 + .long 1016973300 + .long 1533953344 + .long 1073696886 + .long 769171851 + .long 1016714209 + .long 2174652632 + .long 1073719233 + .long 4087714590 + .long 1015498835 + .long 0 + .long 1073741824 + .long 0 + .long 0 + .long 1697350398 + .long 1079448903 + .long 0 + .long 1127743488 + .long 0 + .long 1071644672 + .long 1431652600 + .long 1069897045 + .long 1431670732 + .long 1067799893 + .long 984555731 + .long 1065423122 + .long 472530941 + .long 1062650218 + .long 2684354560 + .long 1079401119 + .long 4277796864 + .long 1065758274 + .long 3164486458 + .long 1025308570 + .long 4294967295 + .long 2146435071 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 3875694624 + .long 1077247184 + .type __scosh_la_CoutTab,@object + .size __scosh_la_CoutTab,1152 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_exp2_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_exp2_d_la.s new file mode 100644 index 00000000..7c61b33e --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_exp2_d_la.s @@ -0,0 +1,830 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + + + .text +.L_2__routine_start___svml_exp28_z0_0: + + .align 16,0x90 + .globl __svml_exp28 + +__svml_exp28: + + + .cfi_startproc +..L2: + + 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 384+__svml_dexp2_data_internal_avx512(%rip), %zmm14 + vmovups 448+__svml_dexp2_data_internal_avx512(%rip), %zmm6 + +/* + * Reduced argument +*/ + vreducepd $65, {sae}, %zmm0, %zmm10 + vmovups 320+__svml_dexp2_data_internal_avx512(%rip), %zmm7 + vmovups 512+__svml_dexp2_data_internal_avx512(%rip), %zmm3 + vmovups 256+__svml_dexp2_data_internal_avx512(%rip), %zmm8 + vmovups __svml_dexp2_data_internal_avx512(%rip), %zmm13 + +/* c6*r + c5 */ + vfmadd231pd {rn-sae}, %zmm10, %zmm6, %zmm14 + vmovups 192+__svml_dexp2_data_internal_avx512(%rip), %zmm9 + vmovups 640+__svml_dexp2_data_internal_avx512(%rip), %zmm2 + vmovups 128+__svml_dexp2_data_internal_avx512(%rip), %zmm11 + +/* c6*r^2 + c5*r + c4 */ + vfmadd213pd {rn-sae}, %zmm7, %zmm10, %zmm14 + +/* + * Integer form of K+0.b1b2b3b4 in lower bits - call K_plus_f0 + * Mantisssa of normalized double precision FP: 1.b1b2...b52 + */ + vaddpd {rd-sae}, %zmm3, %zmm0, %zmm4 + vandpd 576+__svml_dexp2_data_internal_avx512(%rip), %zmm0, %zmm1 + +/* c6*r^3 + c5*r^2 + c4*r + c3 */ + vfmadd213pd {rn-sae}, %zmm8, %zmm10, %zmm14 + vcmppd $29, {sae}, %zmm2, %zmm1, %k0 + +/* c6*r^4 + c5*r^3 + c4*r^2 + c3*r + c2 */ + vfmadd213pd {rn-sae}, %zmm9, %zmm10, %zmm14 + kmovw %k0, %edx + +/* c6*r^5 + c5*r^4 + c4*r^3 + c3*r^2 + c2*r + c1 */ + vfmadd213pd {rn-sae}, %zmm11, %zmm10, %zmm14 + +/* Table value: 2^(0.b1b2b3b4) */ + vpandq 704+__svml_dexp2_data_internal_avx512(%rip), %zmm4, %zmm5 + vpermt2pd 64+__svml_dexp2_data_internal_avx512(%rip), %zmm5, %zmm13 + +/* T*r */ + vmulpd {rn-sae}, %zmm10, %zmm13, %zmm12 + +/* T + (T*r*(c6*r^5 + c5*r^4 + c4*r^3 + c3*r^2 + c2*r + c1)) */ + vfmadd213pd {rn-sae}, %zmm13, %zmm12, %zmm14 + +/* Scaling placed at the end to avoid accuracy loss when T*r*scale underflows */ + vscalefpd {rn-sae}, %zmm0, %zmm14, %zmm1 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + vmovaps %zmm1, %zmm0 + 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 %zmm0, 64(%rsp) + vmovups %zmm1, 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), %zmm1 + 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_dexp2_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_exp28,@function + .size __svml_exp28,.-__svml_exp28 +..LN__svml_exp28.0: + +.L_2__routine_start___svml_dexp2_cout_rare_internal_1: + + .align 16,0x90 + +__svml_dexp2_cout_rare_internal: + + + .cfi_startproc +..L53: + + xorl %eax, %eax + movzwl 6(%rdi), %edx + andl $32752, %edx + movsd (%rdi), %xmm5 + movsd %xmm5, -8(%rsp) + cmpl $32752, %edx + je .LBL_2_12 + + + movsd 1072+__dexp2_la__imldExp2HATab(%rip), %xmm0 + comisd %xmm5, %xmm0 + jbe .LBL_2_10 + + + comisd 1088+__dexp2_la__imldExp2HATab(%rip), %xmm5 + jbe .LBL_2_9 + + + movsd 1024+__dexp2_la__imldExp2HATab(%rip), %xmm0 + movaps %xmm5, %xmm3 + lea __dexp2_la__imldExp2HATab(%rip), %r10 + addsd %xmm5, %xmm0 + movsd %xmm0, -24(%rsp) + movsd -24(%rsp), %xmm1 + movl -24(%rsp), %r8d + movl %r8d, %ecx + andl $63, %r8d + subsd 1024+__dexp2_la__imldExp2HATab(%rip), %xmm1 + movsd %xmm1, -16(%rsp) + lea 1(%r8,%r8), %r9d + movsd -16(%rsp), %xmm2 + lea (%r8,%r8), %edi + movsd 1064+__dexp2_la__imldExp2HATab(%rip), %xmm1 + subsd %xmm2, %xmm3 + mulsd %xmm3, %xmm1 + movsd (%r10,%rdi,8), %xmm4 + shrl $6, %ecx + addsd 1056+__dexp2_la__imldExp2HATab(%rip), %xmm1 + comisd 1080+__dexp2_la__imldExp2HATab(%rip), %xmm5 + mulsd %xmm3, %xmm1 + movq 1112+__dexp2_la__imldExp2HATab(%rip), %rdx + movq %rdx, -8(%rsp) + lea 1023(%rcx), %edx + addsd 1048+__dexp2_la__imldExp2HATab(%rip), %xmm1 + mulsd %xmm3, %xmm1 + addsd 1040+__dexp2_la__imldExp2HATab(%rip), %xmm1 + mulsd %xmm3, %xmm1 + addsd 1032+__dexp2_la__imldExp2HATab(%rip), %xmm1 + mulsd %xmm3, %xmm1 + addsd (%r10,%r9,8), %xmm1 + mulsd %xmm4, %xmm1 + addsd %xmm4, %xmm1 + jb .LBL_2_8 + + + andl $2047, %edx + cmpl $2046, %edx + ja .LBL_2_7 + + + movq 1112+__dexp2_la__imldExp2HATab(%rip), %rcx + shrq $48, %rcx + shll $4, %edx + andl $-32753, %ecx + orl %edx, %ecx + movw %cx, -2(%rsp) + movsd -8(%rsp), %xmm0 + mulsd %xmm1, %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_7: + + decl %edx + andl $2047, %edx + movzwl -2(%rsp), %ecx + shll $4, %edx + andl $-32753, %ecx + orl %edx, %ecx + movw %cx, -2(%rsp) + movsd -8(%rsp), %xmm0 + mulsd %xmm1, %xmm0 + mulsd 1128+__dexp2_la__imldExp2HATab(%rip), %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_8: + + addl $1123, %ecx + andl $2047, %ecx + movzwl -2(%rsp), %eax + shll $4, %ecx + andl $-32753, %eax + orl %ecx, %eax + movw %ax, -2(%rsp) + movl $4, %eax + movsd -8(%rsp), %xmm0 + mulsd %xmm1, %xmm0 + mulsd 1136+__dexp2_la__imldExp2HATab(%rip), %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_9: + + movsd 1096+__dexp2_la__imldExp2HATab(%rip), %xmm0 + movl $4, %eax + mulsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_10: + + movsd 1104+__dexp2_la__imldExp2HATab(%rip), %xmm0 + movl $3, %eax + mulsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + + + ret + +.LBL_2_12: + + movb -1(%rsp), %dl + andb $-128, %dl + cmpb $-128, %dl + je .LBL_2_14 + +.LBL_2_13: + + mulsd %xmm5, %xmm5 + movsd %xmm5, (%rsi) + ret + +.LBL_2_14: + + testl $1048575, -4(%rsp) + jne .LBL_2_13 + + + cmpl $0, -8(%rsp) + jne .LBL_2_13 + + + movq 1112+__dexp2_la__imldExp2HATab(%rip), %rdx + movq %rdx, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_dexp2_cout_rare_internal,@function + .size __svml_dexp2_cout_rare_internal,.-__svml_dexp2_cout_rare_internal +..LN__svml_dexp2_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_dexp2_data_internal_avx512: + .long 0 + .long 1072693248 + .long 1828292879 + .long 1072739672 + .long 1014845819 + .long 1072788152 + .long 1853186616 + .long 1072838778 + .long 171030293 + .long 1072891646 + .long 1276261410 + .long 1072946854 + .long 3577096743 + .long 1073004506 + .long 3712504873 + .long 1073064711 + .long 1719614413 + .long 1073127582 + .long 1944781191 + .long 1073193236 + .long 1110089947 + .long 1073261797 + .long 2191782032 + .long 1073333393 + .long 2572866477 + .long 1073408159 + .long 3716502172 + .long 1073486235 + .long 3707479175 + .long 1073567768 + .long 2728693978 + .long 1073652911 + .long 4277811595 + .long 1072049730 + .long 4277811595 + .long 1072049730 + .long 4277811595 + .long 1072049730 + .long 4277811595 + .long 1072049730 + .long 4277811595 + .long 1072049730 + .long 4277811595 + .long 1072049730 + .long 4277811595 + .long 1072049730 + .long 4277811595 + .long 1072049730 + .long 4286862682 + .long 1070514109 + .long 4286862682 + .long 1070514109 + .long 4286862682 + .long 1070514109 + .long 4286862682 + .long 1070514109 + .long 4286862682 + .long 1070514109 + .long 4286862682 + .long 1070514109 + .long 4286862682 + .long 1070514109 + .long 4286862682 + .long 1070514109 + .long 3568142009 + .long 1068264200 + .long 3568142009 + .long 1068264200 + .long 3568142009 + .long 1068264200 + .long 3568142009 + .long 1068264200 + .long 3568142009 + .long 1068264200 + .long 3568142009 + .long 1068264200 + .long 3568142009 + .long 1068264200 + .long 3568142009 + .long 1068264200 + .long 454500946 + .long 1065595565 + .long 454500946 + .long 1065595565 + .long 454500946 + .long 1065595565 + .long 454500946 + .long 1065595565 + .long 454500946 + .long 1065595565 + .long 454500946 + .long 1065595565 + .long 454500946 + .long 1065595565 + .long 454500946 + .long 1065595565 + .long 655609113 + .long 1062590279 + .long 655609113 + .long 1062590279 + .long 655609113 + .long 1062590279 + .long 655609113 + .long 1062590279 + .long 655609113 + .long 1062590279 + .long 655609113 + .long 1062590279 + .long 655609113 + .long 1062590279 + .long 655609113 + .long 1062590279 + .long 4112922395 + .long 1059365335 + .long 4112922395 + .long 1059365335 + .long 4112922395 + .long 1059365335 + .long 4112922395 + .long 1059365335 + .long 4112922395 + .long 1059365335 + .long 4112922395 + .long 1059365335 + .long 4112922395 + .long 1059365335 + .long 4112922395 + .long 1059365335 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .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 1083174911 + .long 0 + .long 1083174911 + .long 0 + .long 1083174911 + .long 0 + .long 1083174911 + .long 0 + .long 1083174911 + .long 0 + .long 1083174911 + .long 0 + .long 1083174911 + .long 0 + .long 1083174911 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .type __svml_dexp2_data_internal_avx512,@object + .size __svml_dexp2_data_internal_avx512,768 + .align 32 +__dexp2_la__imldExp2HATab: + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 1048019041 + .long 1072704666 + .long 2631457885 + .long 3161546771 + .long 3541402996 + .long 1072716208 + .long 896005651 + .long 1015861842 + .long 410360776 + .long 1072727877 + .long 1642514529 + .long 1012987726 + .long 1828292879 + .long 1072739672 + .long 1568897901 + .long 1016568486 + .long 852742562 + .long 1072751596 + .long 1882168529 + .long 1010744893 + .long 3490863953 + .long 1072763649 + .long 707771662 + .long 3163903570 + .long 2930322912 + .long 1072775834 + .long 3117806614 + .long 3163670819 + .long 1014845819 + .long 1072788152 + .long 3936719688 + .long 3162512149 + .long 3949972341 + .long 1072800603 + .long 1058231231 + .long 1015777676 + .long 828946858 + .long 1072813191 + .long 1044000608 + .long 1016786167 + .long 2288159958 + .long 1072825915 + .long 1151779725 + .long 1015705409 + .long 1853186616 + .long 1072838778 + .long 3819481236 + .long 1016499965 + .long 1709341917 + .long 1072851781 + .long 2552227826 + .long 1015039787 + .long 4112506593 + .long 1072864925 + .long 1829350193 + .long 1015216097 + .long 2799960843 + .long 1072878213 + .long 1913391796 + .long 1015756674 + .long 171030293 + .long 1072891646 + .long 1303423926 + .long 1015238005 + .long 2992903935 + .long 1072905224 + .long 1574172746 + .long 1016061241 + .long 926591435 + .long 1072918951 + .long 3427487848 + .long 3163704045 + .long 887463927 + .long 1072932827 + .long 1049900754 + .long 3161575912 + .long 1276261410 + .long 1072946854 + .long 2804567149 + .long 1015390024 + .long 569847338 + .long 1072961034 + .long 1209502043 + .long 3159926671 + .long 1617004845 + .long 1072975368 + .long 1623370769 + .long 1011049453 + .long 3049340112 + .long 1072989858 + .long 3667985273 + .long 1013894369 + .long 3577096743 + .long 1073004506 + .long 3145379760 + .long 1014403278 + .long 1990012071 + .long 1073019314 + .long 7447438 + .long 3163526196 + .long 1453150082 + .long 1073034283 + .long 3171891295 + .long 3162037958 + .long 917841882 + .long 1073049415 + .long 419288974 + .long 1016280325 + .long 3712504873 + .long 1073064711 + .long 3793507337 + .long 1016095713 + .long 363667784 + .long 1073080175 + .long 728023093 + .long 1016345318 + .long 2956612997 + .long 1073095806 + .long 1005538728 + .long 3163304901 + .long 2186617381 + .long 1073111608 + .long 2018924632 + .long 3163803357 + .long 1719614413 + .long 1073127582 + .long 3210617384 + .long 3163796463 + .long 1013258799 + .long 1073143730 + .long 3094194670 + .long 3160631279 + .long 3907805044 + .long 1073160053 + .long 2119843535 + .long 3161988964 + .long 1447192521 + .long 1073176555 + .long 508946058 + .long 3162904882 + .long 1944781191 + .long 1073193236 + .long 3108873501 + .long 3162190556 + .long 919555682 + .long 1073210099 + .long 2882956373 + .long 1013312481 + .long 2571947539 + .long 1073227145 + .long 4047189812 + .long 3163777462 + .long 2604962541 + .long 1073244377 + .long 3631372142 + .long 3163870288 + .long 1110089947 + .long 1073261797 + .long 3253791412 + .long 1015920431 + .long 2568320822 + .long 1073279406 + .long 1509121860 + .long 1014756995 + .long 2966275557 + .long 1073297207 + .long 2339118633 + .long 3160254904 + .long 2682146384 + .long 1073315202 + .long 586480042 + .long 3163702083 + .long 2191782032 + .long 1073333393 + .long 730975783 + .long 1014083580 + .long 2069751141 + .long 1073351782 + .long 576856675 + .long 3163014404 + .long 2990417245 + .long 1073370371 + .long 3552361237 + .long 3163667409 + .long 1434058175 + .long 1073389163 + .long 1853053619 + .long 1015310724 + .long 2572866477 + .long 1073408159 + .long 2462790535 + .long 1015814775 + .long 3092190715 + .long 1073427362 + .long 1457303226 + .long 3159737305 + .long 4076559943 + .long 1073446774 + .long 950899508 + .long 3160987380 + .long 2420883922 + .long 1073466398 + .long 174054861 + .long 1014300631 + .long 3716502172 + .long 1073486235 + .long 816778419 + .long 1014197934 + .long 777507147 + .long 1073506289 + .long 3507050924 + .long 1015341199 + .long 3706687593 + .long 1073526560 + .long 1821514088 + .long 1013410604 + .long 1242007932 + .long 1073547053 + .long 1073740399 + .long 3163532637 + .long 3707479175 + .long 1073567768 + .long 2789017511 + .long 1014276997 + .long 64696965 + .long 1073588710 + .long 3586233004 + .long 1015962192 + .long 863738719 + .long 1073609879 + .long 129252895 + .long 3162690849 + .long 3884662774 + .long 1073631278 + .long 1614448851 + .long 1014281732 + .long 2728693978 + .long 1073652911 + .long 2413007344 + .long 3163551506 + .long 3999357479 + .long 1073674779 + .long 1101668360 + .long 1015989180 + .long 1533953344 + .long 1073696886 + .long 835814894 + .long 1015702697 + .long 2174652632 + .long 1073719233 + .long 1301400989 + .long 1014466875 + .long 0 + .long 1121452032 + .long 4277811695 + .long 1072049730 + .long 4286751290 + .long 1070514109 + .long 3607585384 + .long 1068264200 + .long 871937163 + .long 1065595565 + .long 3302507530 + .long 1062590576 + .long 0 + .long 1083179008 + .long 0 + .long 3230658560 + .long 0 + .long 3230714880 + .long 1 + .long 1048576 + .long 4294967295 + .long 2146435071 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 1073741824 + .long 0 + .long 967835648 + .long 0 + .long 0 + .type __dexp2_la__imldExp2HATab,@object + .size __dexp2_la__imldExp2HATab,1152 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_exp2_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_exp2_s_la.s new file mode 100644 index 00000000..5ddd7938 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_exp2_s_la.s @@ -0,0 +1,494 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + + + .text +.L_2__routine_start___svml_exp2f16_z0_0: + + .align 16,0x90 + .globl __svml_exp2f16 + +__svml_exp2f16: + + + .cfi_startproc +..L2: + + 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_sexp2_data_internal_avx512(%rip), %zmm3 + +/* + * Reduced argument +*/ + vreduceps $65, {sae}, %zmm0, %zmm6 + vmovups 192+__svml_sexp2_data_internal_avx512(%rip), %zmm5 + vmovups 128+__svml_sexp2_data_internal_avx512(%rip), %zmm10 + vmovups 384+__svml_sexp2_data_internal_avx512(%rip), %zmm2 + vmovups 64+__svml_sexp2_data_internal_avx512(%rip), %zmm7 + +/* + * Integer form of K+0.b1b2b3b4 in lower bits - call K_plus_f0 + * Mantisssa of normalized single precision FP: 1.b1b2...b23 + */ + vaddps {rd-sae}, %zmm3, %zmm0, %zmm4 + vandps 320+__svml_sexp2_data_internal_avx512(%rip), %zmm0, %zmm1 + +/* c3*r + c2 */ + vfmadd231ps {rn-sae}, %zmm6, %zmm5, %zmm10 + vcmpps $30, {sae}, %zmm2, %zmm1, %k0 + +/* c3*r^2 + c2*r + c1 */ + vfmadd213ps {rn-sae}, %zmm7, %zmm6, %zmm10 + +/* Table value: 2^(0.b1b2b3b4) */ + vpermps __svml_sexp2_data_internal_avx512(%rip), %zmm4, %zmm9 + kmovw %k0, %edx + +/* T*r */ + vmulps {rn-sae}, %zmm6, %zmm9, %zmm8 + +/* T + (T*r*(c3*r^2 + c2*r + c1) */ + vfmadd213ps {rn-sae}, %zmm9, %zmm8, %zmm10 + +/* Scaling placed at the end to avoid accuracy loss when T*r*scale underflows */ + vscalefps {rn-sae}, %zmm0, %zmm10, %zmm1 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + vmovaps %zmm1, %zmm0 + 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 %zmm0, 64(%rsp) + vmovups %zmm1, 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), %zmm1 + 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_sexp2_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_exp2f16,@function + .size __svml_exp2f16,.-__svml_exp2f16 +..LN__svml_exp2f16.0: + +.L_2__routine_start___svml_sexp2_cout_rare_internal_1: + + .align 16,0x90 + +__svml_sexp2_cout_rare_internal: + + + .cfi_startproc +..L53: + + xorl %eax, %eax + movzwl 2(%rdi), %edx + andl $32640, %edx + cmpl $32640, %edx + je .LBL_2_10 + + + movss (%rdi), %xmm7 + movss .L_2il0floatpacket.43(%rip), %xmm0 + movl %eax, -12(%rsp) + comiss %xmm7, %xmm0 + jb .LBL_2_8 + + + comiss .L_2il0floatpacket.44(%rip), %xmm7 + jb .LBL_2_7 + + + movaps %xmm7, %xmm0 + movaps %xmm7, %xmm5 + movss %xmm0, -24(%rsp) + movss -24(%rsp), %xmm1 + movss .L_2il0floatpacket.46(%rip), %xmm2 + movss .L_2il0floatpacket.52(%rip), %xmm6 + addss %xmm2, %xmm1 + movss %xmm1, -20(%rsp) + movss -20(%rsp), %xmm3 + movswl -20(%rsp), %edx + subss %xmm2, %xmm3 + movss %xmm3, -24(%rsp) + movss -24(%rsp), %xmm4 + subss %xmm4, %xmm5 + mulss %xmm5, %xmm6 + addss .L_2il0floatpacket.51(%rip), %xmm6 + mulss %xmm5, %xmm6 + addss .L_2il0floatpacket.50(%rip), %xmm6 + mulss %xmm5, %xmm6 + addss .L_2il0floatpacket.49(%rip), %xmm6 + mulss %xmm5, %xmm6 + addss .L_2il0floatpacket.48(%rip), %xmm6 + mulss %xmm5, %xmm6 + addss .L_2il0floatpacket.47(%rip), %xmm6 + movss %xmm6, -16(%rsp) + cmpl $104, %edx + jl .LBL_2_6 + + + movzbl %dl, %edx + shll $7, %edx + movw %dx, -10(%rsp) + movss -16(%rsp), %xmm0 + mulss -12(%rsp), %xmm0 + movss %xmm0, -16(%rsp) + movss -16(%rsp), %xmm1 + mulss .L_2il0floatpacket.54(%rip), %xmm1 + movss %xmm1, -16(%rsp) + movl -16(%rsp), %ecx + movl %ecx, (%rsi) + ret + +.LBL_2_6: + + addl $-106, %edx + cmpltss .L_2il0floatpacket.56(%rip), %xmm7 + movzbl %dl, %edx + movzwl -10(%rsp), %eax + shll $7, %edx + andl $-32641, %eax + orl %edx, %eax + movss -16(%rsp), %xmm0 + movw %ax, -10(%rsp) + mulss -12(%rsp), %xmm0 + movd %xmm7, %eax + movss %xmm0, -16(%rsp) + movss -16(%rsp), %xmm1 + andl $4, %eax + mulss .L_2il0floatpacket.55(%rip), %xmm1 + movss %xmm1, -16(%rsp) + movl -16(%rsp), %ecx + movl %ecx, (%rsi) + ret + +.LBL_2_7: + + movss .L_2il0floatpacket.53(%rip), %xmm0 + mulss %xmm0, %xmm0 + movss %xmm0, -16(%rsp) + movl -16(%rsp), %eax + movl %eax, (%rsi) + movl $4, %eax + ret + +.LBL_2_8: + + movss .L_2il0floatpacket.45(%rip), %xmm0 + mulss %xmm0, %xmm0 + movss %xmm0, -16(%rsp) + movl -16(%rsp), %eax + movl %eax, (%rsi) + movl $3, %eax + + + ret + +.LBL_2_10: + + movb 3(%rdi), %dl + andb $-128, %dl + cmpb $-128, %dl + je .LBL_2_12 + +.LBL_2_11: + + movss (%rdi), %xmm0 + mulss %xmm0, %xmm0 + movss %xmm0, (%rsi) + ret + +.LBL_2_12: + + testl $8388607, (%rdi) + jne .LBL_2_11 + + + movl %eax, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_sexp2_cout_rare_internal,@function + .size __svml_sexp2_cout_rare_internal,.-__svml_sexp2_cout_rare_internal +..LN__svml_sexp2_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_sexp2_data_internal_avx512: + .long 1065353216 + .long 1065724611 + .long 1066112450 + .long 1066517459 + .long 1066940400 + .long 1067382066 + .long 1067843287 + .long 1068324927 + .long 1068827891 + .long 1069353124 + .long 1069901610 + .long 1070474380 + .long 1071072509 + .long 1071697119 + .long 1072349383 + .long 1073030525 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1047916907 + .long 1047916907 + .long 1047916907 + .long 1047916907 + .long 1047916907 + .long 1047916907 + .long 1047916907 + .long 1047916907 + .long 1047916907 + .long 1047916907 + .long 1047916907 + .long 1047916907 + .long 1047916907 + .long 1047916907 + .long 1047916907 + .long 1047916907 + .long 1030247626 + .long 1030247626 + .long 1030247626 + .long 1030247626 + .long 1030247626 + .long 1030247626 + .long 1030247626 + .long 1030247626 + .long 1030247626 + .long 1030247626 + .long 1030247626 + .long 1030247626 + .long 1030247626 + .long 1030247626 + .long 1030247626 + .long 1030247626 + .long 1228931072 + .long 1228931072 + .long 1228931072 + .long 1228931072 + .long 1228931072 + .long 1228931072 + .long 1228931072 + .long 1228931072 + .long 1228931072 + .long 1228931072 + .long 1228931072 + .long 1228931072 + .long 1228931072 + .long 1228931072 + .long 1228931072 + .long 1228931072 + .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 1123811328 + .long 1123811328 + .long 1123811328 + .long 1123811328 + .long 1123811328 + .long 1123811328 + .long 1123811328 + .long 1123811328 + .long 1123811328 + .long 1123811328 + .long 1123811328 + .long 1123811328 + .long 1123811328 + .long 1123811328 + .long 1123811328 + .long 1123811328 + .type __svml_sexp2_data_internal_avx512,@object + .size __svml_sexp2_data_internal_avx512,448 + .align 4 +.L_2il0floatpacket.43: + .long 0x43000000 + .type .L_2il0floatpacket.43,@object + .size .L_2il0floatpacket.43,4 + .align 4 +.L_2il0floatpacket.44: + .long 0xc3160000 + .type .L_2il0floatpacket.44,@object + .size .L_2il0floatpacket.44,4 + .align 4 +.L_2il0floatpacket.45: + .long 0x7f7fffff + .type .L_2il0floatpacket.45,@object + .size .L_2il0floatpacket.45,4 + .align 4 +.L_2il0floatpacket.46: + .long 0x4b400000 + .type .L_2il0floatpacket.46,@object + .size .L_2il0floatpacket.46,4 + .align 4 +.L_2il0floatpacket.47: + .long 0x3f800001 + .type .L_2il0floatpacket.47,@object + .size .L_2il0floatpacket.47,4 + .align 4 +.L_2il0floatpacket.48: + .long 0x3f317219 + .type .L_2il0floatpacket.48,@object + .size .L_2il0floatpacket.48,4 + .align 4 +.L_2il0floatpacket.49: + .long 0x3e75fc83 + .type .L_2il0floatpacket.49,@object + .size .L_2il0floatpacket.49,4 + .align 4 +.L_2il0floatpacket.50: + .long 0x3d635716 + .type .L_2il0floatpacket.50,@object + .size .L_2il0floatpacket.50,4 + .align 4 +.L_2il0floatpacket.51: + .long 0x3c1e883d + .type .L_2il0floatpacket.51,@object + .size .L_2il0floatpacket.51,4 + .align 4 +.L_2il0floatpacket.52: + .long 0x3aafc483 + .type .L_2il0floatpacket.52,@object + .size .L_2il0floatpacket.52,4 + .align 4 +.L_2il0floatpacket.53: + .long 0x00000001 + .type .L_2il0floatpacket.53,@object + .size .L_2il0floatpacket.53,4 + .align 4 +.L_2il0floatpacket.54: + .long 0x7f000000 + .type .L_2il0floatpacket.54,@object + .size .L_2il0floatpacket.54,4 + .align 4 +.L_2il0floatpacket.55: + .long 0x34000000 + .type .L_2il0floatpacket.55,@object + .size .L_2il0floatpacket.55,4 + .align 4 +.L_2il0floatpacket.56: + .long 0xc2fc0000 + .type .L_2il0floatpacket.56,@object + .size .L_2il0floatpacket.56,4 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_exp_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_exp_d_la.s new file mode 100644 index 00000000..87aee92c --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_exp_d_la.s @@ -0,0 +1,1074 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * + * Argument representation: + * N = rint(X*2^k/ln2) = 2^k*M+j + * X = N*ln2/2^k + r = M*ln2 + ln2*(j/2^k) + r + * then -ln2/2^(k+1) < r < ln2/2^(k+1) + * Alternatively: + * N = trunc(X*2^k/ln2) + * then 0 < r < ln2/2^k + * + * Result calculation: + * exp(X) = exp(M*ln2 + ln2*(j/2^k) + r) + * = 2^M * 2^(j/2^k) * exp(r) + * 2^M is calculated by bit manipulation + * 2^(j/2^k) is stored in table + * exp(r) is approximated by polynomial + * + * The table lookup is skipped if k = 0. + * + */ + + + .text +.L_2__routine_start___svml_exp8_z0_0: + + .align 16,0x90 + .globl __svml_exp8 + +__svml_exp8: + + + .cfi_startproc +..L2: + + 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_dexp_data_internal_avx512(%rip), %zmm3 + vmovups 320+__svml_dexp_data_internal_avx512(%rip), %zmm1 + vmovups 384+__svml_dexp_data_internal_avx512(%rip), %zmm4 + vmovups 448+__svml_dexp_data_internal_avx512(%rip), %zmm2 + vmovups 576+__svml_dexp_data_internal_avx512(%rip), %zmm5 + vmovups 640+__svml_dexp_data_internal_avx512(%rip), %zmm15 + +/* 2^(52-4)*1.5 + x * log2(e) in round-to-zero mode */ + vfmadd213pd {rz-sae}, %zmm1, %zmm0, %zmm3 + vmovups 704+__svml_dexp_data_internal_avx512(%rip), %zmm6 + +/* p34 = c4*r+c3 */ + vmovups 768+__svml_dexp_data_internal_avx512(%rip), %zmm9 + vmovups 832+__svml_dexp_data_internal_avx512(%rip), %zmm11 + vmovups 1024+__svml_dexp_data_internal_avx512(%rip), %zmm13 + +/* Table lookup: Th = 2^(j/2^k) */ + vmovups __svml_dexp_data_internal_avx512(%rip), %zmm14 + +/* N ~ x*log2(e), round-to-zero to 4 fractional bits */ + vsubpd {rn-sae}, %zmm1, %zmm3, %zmm1 + +/* remove sign of x by "and" operation */ + vandpd 960+__svml_dexp_data_internal_avx512(%rip), %zmm0, %zmm12 + vpermt2pd 64+__svml_dexp_data_internal_avx512(%rip), %zmm3, %zmm14 + +/* R = x - N*ln(2)_high */ + vfnmadd213pd {rn-sae}, %zmm0, %zmm1, %zmm4 + +/* compare against threshold */ + vcmppd $29, {sae}, %zmm13, %zmm12, %k0 + +/* R = R - N*ln(2)_high = x - N*ln(2) */ + vfnmadd231pd {rn-sae}, %zmm1, %zmm2, %zmm4 + +/* set mask for overflow/underflow */ + kmovw %k0, %edx + +/* ensure |R|<2 even for special cases */ + vandpd 512+__svml_dexp_data_internal_avx512(%rip), %zmm4, %zmm7 + +/* r2 = r*r */ + vmulpd {rn-sae}, %zmm7, %zmm7, %zmm8 + +/* p56 = c6*r+c5 */ + vfmadd231pd {rn-sae}, %zmm7, %zmm5, %zmm15 + vfmadd231pd {rn-sae}, %zmm7, %zmm6, %zmm9 + +/* r3 = r2*r = r^3 */ + vmulpd {rn-sae}, %zmm7, %zmm8, %zmm10 + +/* p12 = c2*r2+r */ + vfmadd213pd {rn-sae}, %zmm7, %zmm8, %zmm11 + +/* p36 = (c6*r+c5)*r^2+c4*r+c3 */ + vfmadd213pd {rn-sae}, %zmm9, %zmm8, %zmm15 + +/* p16 = ((c6*r+c5)*r^2+c4*r+c3)*r^3+c2*r^2+r = exp(r)-1 */ + vfmadd213pd {rn-sae}, %zmm11, %zmm10, %zmm15 + +/* Th*(exp(r)-1)+Th=Th*exp(r) */ + vfmadd213pd {rn-sae}, %zmm14, %zmm14, %zmm15 + +/* exp(x) = 2^M*Th*exp(r) */ + vscalefpd {rn-sae}, %zmm1, %zmm15, %zmm1 + + + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + vmovaps %zmm1, %zmm0 + 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 %zmm0, 64(%rsp) + vmovups %zmm1, 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), %zmm1 + 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_dexp_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_exp8,@function + .size __svml_exp8,.-__svml_exp8 +..LN__svml_exp8.0: + +.L_2__routine_start___svml_dexp_cout_rare_internal_1: + + .align 16,0x90 + +__svml_dexp_cout_rare_internal: + + + .cfi_startproc +..L53: + + xorl %eax, %eax + movzwl 6(%rdi), %edx + andl $32752, %edx + shrl $4, %edx + movsd (%rdi), %xmm6 + movsd %xmm6, -8(%rsp) + cmpl $2047, %edx + je .LBL_2_17 + + + cmpl $970, %edx + jle .LBL_2_15 + + + movsd 1080+_imldExpHATab(%rip), %xmm0 + comisd %xmm6, %xmm0 + jb .LBL_2_14 + + + comisd 1096+_imldExpHATab(%rip), %xmm6 + jb .LBL_2_13 + + + movsd 1024+_imldExpHATab(%rip), %xmm0 + movaps %xmm6, %xmm5 + mulsd %xmm6, %xmm0 + lea _imldExpHATab(%rip), %r10 + movsd %xmm0, -24(%rsp) + movsd -24(%rsp), %xmm1 + movq 1136+_imldExpHATab(%rip), %rdx + movq %rdx, -8(%rsp) + addsd 1032+_imldExpHATab(%rip), %xmm1 + movsd %xmm1, -16(%rsp) + movsd -16(%rsp), %xmm2 + movl -16(%rsp), %r8d + movl %r8d, %ecx + andl $63, %r8d + subsd 1032+_imldExpHATab(%rip), %xmm2 + movsd %xmm2, -24(%rsp) + lea 1(%r8,%r8), %r9d + movsd -24(%rsp), %xmm3 + lea (%r8,%r8), %edi + mulsd 1104+_imldExpHATab(%rip), %xmm3 + movsd -24(%rsp), %xmm4 + subsd %xmm3, %xmm5 + mulsd 1112+_imldExpHATab(%rip), %xmm4 + movsd 1072+_imldExpHATab(%rip), %xmm2 + subsd %xmm4, %xmm5 + mulsd %xmm5, %xmm2 + shrl $6, %ecx + addsd 1064+_imldExpHATab(%rip), %xmm2 + comisd 1088+_imldExpHATab(%rip), %xmm6 + mulsd %xmm5, %xmm2 + movsd (%r10,%rdi,8), %xmm0 + lea 1023(%rcx), %edx + addsd 1056+_imldExpHATab(%rip), %xmm2 + mulsd %xmm5, %xmm2 + addsd 1048+_imldExpHATab(%rip), %xmm2 + mulsd %xmm5, %xmm2 + addsd 1040+_imldExpHATab(%rip), %xmm2 + mulsd %xmm5, %xmm2 + mulsd %xmm5, %xmm2 + addsd %xmm5, %xmm2 + addsd (%r10,%r9,8), %xmm2 + mulsd %xmm0, %xmm2 + jb .LBL_2_9 + + + andl $2047, %edx + addsd %xmm0, %xmm2 + cmpl $2046, %edx + ja .LBL_2_8 + + + movq 1136+_imldExpHATab(%rip), %rcx + shrq $48, %rcx + shll $4, %edx + andl $-32753, %ecx + orl %edx, %ecx + movw %cx, -2(%rsp) + movsd -8(%rsp), %xmm0 + mulsd %xmm0, %xmm2 + movsd %xmm2, (%rsi) + ret + +.LBL_2_8: + + decl %edx + andl $2047, %edx + movzwl -2(%rsp), %ecx + shll $4, %edx + andl $-32753, %ecx + orl %edx, %ecx + movw %cx, -2(%rsp) + movsd -8(%rsp), %xmm0 + mulsd %xmm0, %xmm2 + mulsd 1152+_imldExpHATab(%rip), %xmm2 + movsd %xmm2, (%rsi) + ret + +.LBL_2_9: + + addl $1083, %ecx + andl $2047, %ecx + movl %ecx, %eax + movzwl -2(%rsp), %edx + shll $4, %eax + andl $-32753, %edx + orl %eax, %edx + movw %dx, -2(%rsp) + movsd -8(%rsp), %xmm1 + mulsd %xmm1, %xmm2 + mulsd %xmm0, %xmm1 + movaps %xmm1, %xmm0 + addsd %xmm2, %xmm0 + cmpl $50, %ecx + ja .LBL_2_11 + + + mulsd 1160+_imldExpHATab(%rip), %xmm0 + movsd %xmm0, (%rsi) + jmp .LBL_2_12 + +.LBL_2_11: + + movsd %xmm0, -72(%rsp) + movsd -72(%rsp), %xmm0 + subsd %xmm0, %xmm1 + movsd %xmm1, -64(%rsp) + movsd -64(%rsp), %xmm1 + addsd %xmm2, %xmm1 + movsd %xmm1, -64(%rsp) + movsd -72(%rsp), %xmm2 + mulsd 1168+_imldExpHATab(%rip), %xmm2 + movsd %xmm2, -56(%rsp) + movsd -72(%rsp), %xmm4 + movsd -56(%rsp), %xmm3 + addsd %xmm3, %xmm4 + movsd %xmm4, -48(%rsp) + movsd -48(%rsp), %xmm6 + movsd -56(%rsp), %xmm5 + subsd %xmm5, %xmm6 + movsd %xmm6, -40(%rsp) + movsd -72(%rsp), %xmm8 + movsd -40(%rsp), %xmm7 + subsd %xmm7, %xmm8 + movsd %xmm8, -32(%rsp) + movsd -64(%rsp), %xmm10 + movsd -32(%rsp), %xmm9 + addsd %xmm9, %xmm10 + movsd %xmm10, -32(%rsp) + movsd -40(%rsp), %xmm11 + mulsd 1160+_imldExpHATab(%rip), %xmm11 + movsd %xmm11, -40(%rsp) + movsd -32(%rsp), %xmm12 + mulsd 1160+_imldExpHATab(%rip), %xmm12 + movsd %xmm12, -32(%rsp) + movsd -40(%rsp), %xmm14 + movsd -32(%rsp), %xmm13 + addsd %xmm13, %xmm14 + movsd %xmm14, (%rsi) + +.LBL_2_12: + + movl $4, %eax + ret + +.LBL_2_13: + + movsd 1120+_imldExpHATab(%rip), %xmm0 + movl $4, %eax + mulsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_14: + + movsd 1128+_imldExpHATab(%rip), %xmm0 + movl $3, %eax + mulsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_15: + + movsd 1144+_imldExpHATab(%rip), %xmm0 + addsd %xmm6, %xmm0 + movsd %xmm0, (%rsi) + + + ret + +.LBL_2_17: + + movb -1(%rsp), %dl + andb $-128, %dl + cmpb $-128, %dl + je .LBL_2_19 + +.LBL_2_18: + + mulsd %xmm6, %xmm6 + movsd %xmm6, (%rsi) + ret + +.LBL_2_19: + + testl $1048575, -4(%rsp) + jne .LBL_2_18 + + + cmpl $0, -8(%rsp) + jne .LBL_2_18 + + + movq 1136+_imldExpHATab(%rip), %rdx + movq %rdx, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_dexp_cout_rare_internal,@function + .size __svml_dexp_cout_rare_internal,.-__svml_dexp_cout_rare_internal +..LN__svml_dexp_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_dexp_data_internal_avx512: + .long 0 + .long 1072693248 + .long 1828292879 + .long 1072739672 + .long 1014845819 + .long 1072788152 + .long 1853186616 + .long 1072838778 + .long 171030293 + .long 1072891646 + .long 1276261410 + .long 1072946854 + .long 3577096743 + .long 1073004506 + .long 3712504873 + .long 1073064711 + .long 1719614413 + .long 1073127582 + .long 1944781191 + .long 1073193236 + .long 1110089947 + .long 1073261797 + .long 2191782032 + .long 1073333393 + .long 2572866477 + .long 1073408159 + .long 3716502172 + .long 1073486235 + .long 3707479175 + .long 1073567768 + .long 2728693978 + .long 1073652911 + .long 0 + .long 0 + .long 1568897901 + .long 1016568486 + .long 3936719688 + .long 3162512149 + .long 3819481236 + .long 1016499965 + .long 1303423926 + .long 1015238005 + .long 2804567149 + .long 1015390024 + .long 3145379760 + .long 1014403278 + .long 3793507337 + .long 1016095713 + .long 3210617384 + .long 3163796463 + .long 3108873501 + .long 3162190556 + .long 3253791412 + .long 1015920431 + .long 730975783 + .long 1014083580 + .long 2462790535 + .long 1015814775 + .long 816778419 + .long 1014197934 + .long 2789017511 + .long 1014276997 + .long 2413007344 + .long 3163551506 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 993624127 + .long 1014676638 + .long 993624127 + .long 1014676638 + .long 993624127 + .long 1014676638 + .long 993624127 + .long 1014676638 + .long 993624127 + .long 1014676638 + .long 993624127 + .long 1014676638 + .long 993624127 + .long 1014676638 + .long 993624127 + .long 1014676638 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4010615101 + .long 1062678197 + .long 4010615101 + .long 1062678197 + .long 4010615101 + .long 1062678197 + .long 4010615101 + .long 1062678197 + .long 4010615101 + .long 1062678197 + .long 4010615101 + .long 1062678197 + .long 4010615101 + .long 1062678197 + .long 4010615101 + .long 1062678197 + .long 64584704 + .long 1065422950 + .long 64584704 + .long 1065422950 + .long 64584704 + .long 1065422950 + .long 64584704 + .long 1065422950 + .long 64584704 + .long 1065422950 + .long 64584704 + .long 1065422950 + .long 64584704 + .long 1065422950 + .long 64584704 + .long 1065422950 + .long 1270150640 + .long 1067799894 + .long 1270150640 + .long 1067799894 + .long 1270150640 + .long 1067799894 + .long 1270150640 + .long 1067799894 + .long 1270150640 + .long 1067799894 + .long 1270150640 + .long 1067799894 + .long 1270150640 + .long 1067799894 + .long 1270150640 + .long 1067799894 + .long 1421150370 + .long 1069897045 + .long 1421150370 + .long 1069897045 + .long 1421150370 + .long 1069897045 + .long 1421150370 + .long 1069897045 + .long 1421150370 + .long 1069897045 + .long 1421150370 + .long 1069897045 + .long 1421150370 + .long 1069897045 + .long 1421150370 + .long 1069897045 + .long 9762 + .long 1071644672 + .long 9762 + .long 1071644672 + .long 9762 + .long 1071644672 + .long 9762 + .long 1071644672 + .long 9762 + .long 1071644672 + .long 9762 + .long 1071644672 + .long 9762 + .long 1071644672 + .long 9762 + .long 1071644672 + .long 4294967152 + .long 1072693247 + .long 4294967152 + .long 1072693247 + .long 4294967152 + .long 1072693247 + .long 4294967152 + .long 1072693247 + .long 4294967152 + .long 1072693247 + .long 4294967152 + .long 1072693247 + .long 4294967152 + .long 1072693247 + .long 4294967152 + .long 1072693247 + .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 1287323204 + .long 1082531232 + .long 1287323204 + .long 1082531232 + .long 1287323204 + .long 1082531232 + .long 1287323204 + .long 1082531232 + .long 1287323204 + .long 1082531232 + .long 1287323204 + .long 1082531232 + .long 1287323204 + .long 1082531232 + .long 1287323204 + .long 1082531232 + .long 0 + .long 1005584384 + .long 0 + .long 1005584384 + .long 0 + .long 1005584384 + .long 0 + .long 1005584384 + .long 0 + .long 1005584384 + .long 0 + .long 1005584384 + .long 0 + .long 1005584384 + .long 0 + .long 1005584384 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 32752 + .long 0 + .long 32752 + .long 0 + .long 32752 + .long 0 + .long 32752 + .long 0 + .long 32752 + .long 0 + .long 32752 + .long 0 + .long 32752 + .long 0 + .long 32752 + .long 0 + .type __svml_dexp_data_internal_avx512,@object + .size __svml_dexp_data_internal_avx512,1280 + .align 32 +_imldExpHATab: + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 1048019041 + .long 1072704666 + .long 2631457885 + .long 3161546771 + .long 3541402996 + .long 1072716208 + .long 896005651 + .long 1015861842 + .long 410360776 + .long 1072727877 + .long 1642514529 + .long 1012987726 + .long 1828292879 + .long 1072739672 + .long 1568897901 + .long 1016568486 + .long 852742562 + .long 1072751596 + .long 1882168529 + .long 1010744893 + .long 3490863953 + .long 1072763649 + .long 707771662 + .long 3163903570 + .long 2930322912 + .long 1072775834 + .long 3117806614 + .long 3163670819 + .long 1014845819 + .long 1072788152 + .long 3936719688 + .long 3162512149 + .long 3949972341 + .long 1072800603 + .long 1058231231 + .long 1015777676 + .long 828946858 + .long 1072813191 + .long 1044000608 + .long 1016786167 + .long 2288159958 + .long 1072825915 + .long 1151779725 + .long 1015705409 + .long 1853186616 + .long 1072838778 + .long 3819481236 + .long 1016499965 + .long 1709341917 + .long 1072851781 + .long 2552227826 + .long 1015039787 + .long 4112506593 + .long 1072864925 + .long 1829350193 + .long 1015216097 + .long 2799960843 + .long 1072878213 + .long 1913391796 + .long 1015756674 + .long 171030293 + .long 1072891646 + .long 1303423926 + .long 1015238005 + .long 2992903935 + .long 1072905224 + .long 1574172746 + .long 1016061241 + .long 926591435 + .long 1072918951 + .long 3427487848 + .long 3163704045 + .long 887463927 + .long 1072932827 + .long 1049900754 + .long 3161575912 + .long 1276261410 + .long 1072946854 + .long 2804567149 + .long 1015390024 + .long 569847338 + .long 1072961034 + .long 1209502043 + .long 3159926671 + .long 1617004845 + .long 1072975368 + .long 1623370769 + .long 1011049453 + .long 3049340112 + .long 1072989858 + .long 3667985273 + .long 1013894369 + .long 3577096743 + .long 1073004506 + .long 3145379760 + .long 1014403278 + .long 1990012071 + .long 1073019314 + .long 7447438 + .long 3163526196 + .long 1453150082 + .long 1073034283 + .long 3171891295 + .long 3162037958 + .long 917841882 + .long 1073049415 + .long 419288974 + .long 1016280325 + .long 3712504873 + .long 1073064711 + .long 3793507337 + .long 1016095713 + .long 363667784 + .long 1073080175 + .long 728023093 + .long 1016345318 + .long 2956612997 + .long 1073095806 + .long 1005538728 + .long 3163304901 + .long 2186617381 + .long 1073111608 + .long 2018924632 + .long 3163803357 + .long 1719614413 + .long 1073127582 + .long 3210617384 + .long 3163796463 + .long 1013258799 + .long 1073143730 + .long 3094194670 + .long 3160631279 + .long 3907805044 + .long 1073160053 + .long 2119843535 + .long 3161988964 + .long 1447192521 + .long 1073176555 + .long 508946058 + .long 3162904882 + .long 1944781191 + .long 1073193236 + .long 3108873501 + .long 3162190556 + .long 919555682 + .long 1073210099 + .long 2882956373 + .long 1013312481 + .long 2571947539 + .long 1073227145 + .long 4047189812 + .long 3163777462 + .long 2604962541 + .long 1073244377 + .long 3631372142 + .long 3163870288 + .long 1110089947 + .long 1073261797 + .long 3253791412 + .long 1015920431 + .long 2568320822 + .long 1073279406 + .long 1509121860 + .long 1014756995 + .long 2966275557 + .long 1073297207 + .long 2339118633 + .long 3160254904 + .long 2682146384 + .long 1073315202 + .long 586480042 + .long 3163702083 + .long 2191782032 + .long 1073333393 + .long 730975783 + .long 1014083580 + .long 2069751141 + .long 1073351782 + .long 576856675 + .long 3163014404 + .long 2990417245 + .long 1073370371 + .long 3552361237 + .long 3163667409 + .long 1434058175 + .long 1073389163 + .long 1853053619 + .long 1015310724 + .long 2572866477 + .long 1073408159 + .long 2462790535 + .long 1015814775 + .long 3092190715 + .long 1073427362 + .long 1457303226 + .long 3159737305 + .long 4076559943 + .long 1073446774 + .long 950899508 + .long 3160987380 + .long 2420883922 + .long 1073466398 + .long 174054861 + .long 1014300631 + .long 3716502172 + .long 1073486235 + .long 816778419 + .long 1014197934 + .long 777507147 + .long 1073506289 + .long 3507050924 + .long 1015341199 + .long 3706687593 + .long 1073526560 + .long 1821514088 + .long 1013410604 + .long 1242007932 + .long 1073547053 + .long 1073740399 + .long 3163532637 + .long 3707479175 + .long 1073567768 + .long 2789017511 + .long 1014276997 + .long 64696965 + .long 1073588710 + .long 3586233004 + .long 1015962192 + .long 863738719 + .long 1073609879 + .long 129252895 + .long 3162690849 + .long 3884662774 + .long 1073631278 + .long 1614448851 + .long 1014281732 + .long 2728693978 + .long 1073652911 + .long 2413007344 + .long 3163551506 + .long 3999357479 + .long 1073674779 + .long 1101668360 + .long 1015989180 + .long 1533953344 + .long 1073696886 + .long 835814894 + .long 1015702697 + .long 2174652632 + .long 1073719233 + .long 1301400989 + .long 1014466875 + .long 1697350398 + .long 1079448903 + .long 0 + .long 1127743488 + .long 0 + .long 1071644672 + .long 1431652600 + .long 1069897045 + .long 1431670732 + .long 1067799893 + .long 984555731 + .long 1065423122 + .long 472530941 + .long 1062650218 + .long 4277811695 + .long 1082535490 + .long 3715808466 + .long 3230016299 + .long 3576508497 + .long 3230091536 + .long 4277796864 + .long 1065758274 + .long 3164486458 + .long 1025308570 + .long 1 + .long 1048576 + .long 4294967295 + .long 2146435071 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 1073741824 + .long 0 + .long 1009778688 + .long 0 + .long 1106771968 + .type _imldExpHATab,@object + .size _imldExpHATab,1176 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_exp_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_exp_s_la.s new file mode 100644 index 00000000..4c0e972e --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_exp_s_la.s @@ -0,0 +1,772 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * + * Argument representation: + * M = rint(X*2^k/ln2) = 2^k*N+j + * X = M*ln2/2^k + r = N*ln2 + ln2*(j/2^k) + r + * then -ln2/2^(k+1) < r < ln2/2^(k+1) + * Alternatively: + * M = trunc(X*2^k/ln2) + * then 0 < r < ln2/2^k + * + * Result calculation: + * exp(X) = exp(N*ln2 + ln2*(j/2^k) + r) + * = 2^N * 2^(j/2^k) * exp(r) + * 2^N is calculated by bit manipulation + * 2^(j/2^k) is computed from table lookup + * exp(r) is approximated by polynomial + * + * The table lookup is skipped if k = 0. + * For low accuracy approximation, exp(r) ~ 1 or 1+r. + * + */ + + + .text +.L_2__routine_start___svml_expf16_z0_0: + + .align 16,0x90 + .globl __svml_expf16 + +__svml_expf16: + + + .cfi_startproc +..L2: + + 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_sexp_data_internal_avx512(%rip), %zmm2 + vmovups 320+__svml_sexp_data_internal_avx512(%rip), %zmm1 + +/* x!=0? */ + vmovups 896+__svml_sexp_data_internal_avx512(%rip), %zmm7 + vmovups 384+__svml_sexp_data_internal_avx512(%rip), %zmm5 + +/* Table lookup: Tl, Tl = 2^(j/2^10), j = 0,...,2^5-1 */ + vmovups __svml_sexp_data_internal_avx512(%rip), %zmm8 + +/* Table lookup: Th, Th = 2^(j/2^5), j = 0,...,2^5-1 */ + vmovups 128+__svml_sexp_data_internal_avx512(%rip), %zmm12 + +/* 2^(52-4)*1.5 + x * log2(e) in round-to-zero mode */ + vfmadd213ps {rz-sae}, %zmm1, %zmm0, %zmm2 + vmovups 448+__svml_sexp_data_internal_avx512(%rip), %zmm4 + vmovups 640+__svml_sexp_data_internal_avx512(%rip), %zmm10 + +/* ensure |R|<2 even for special cases */ + vmovups 512+__svml_sexp_data_internal_avx512(%rip), %zmm6 + vcmpps $4, {sae}, %zmm7, %zmm0, %k1 + +/* Adjust index by right shift for 5 bits */ + vpsrld $5, %zmm2, %zmm3 + +/* N ~ x*log2(e), round-to-zero to 10 fractional bits */ + vsubps {rn-sae}, %zmm1, %zmm2, %zmm13 + vpermt2ps 64+__svml_sexp_data_internal_avx512(%rip), %zmm2, %zmm8 + vpermt2ps 192+__svml_sexp_data_internal_avx512(%rip), %zmm3, %zmm12 + +/* remove sign of x by "and" operation */ + vandps 576+__svml_sexp_data_internal_avx512(%rip), %zmm0, %zmm9 + +/* R = x - N*ln(2)_high */ + vfnmadd213ps {rn-sae}, %zmm0, %zmm13, %zmm5 + +/* Th*Tl ~ 2^(j/2^k) */ + vmulps {rn-sae}, %zmm8, %zmm12, %zmm12{%k1} + +/* compare against threshold */ + vcmpps $29, {sae}, %zmm10, %zmm9, %k0 + +/* R = R - N*ln(2)_low = x - N*ln(2) */ + vfnmadd231ps {rn-sae}, %zmm13, %zmm4, %zmm5 + +/* set mask for overflow/underflow */ + kmovw %k0, %edx + vrangeps $2, {sae}, %zmm6, %zmm5, %zmm11 + +/* 2^(j/2^k)*(r+1) */ + vfmadd213ps {rn-sae}, %zmm12, %zmm11, %zmm12 + +/* exp(x) = 2^N*2^(j/2^k)*(r+1) */ + vscalefps {rn-sae}, %zmm13, %zmm12, %zmm1 + +/* + * Check general callout condition + * Check VML specific mode related condition, + * no check in case of other libraries + * Above HA/LA/EP sequences produce + * correct results even without going to callout. + * Callout was only needed to raise flags + * and set errno. If caller doesn't need that + * then it is safe to proceed without callout + */ + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + vmovaps %zmm1, %zmm0 + 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 %zmm0, 64(%rsp) + vmovups %zmm1, 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), %zmm1 + 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_sexp_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_expf16,@function + .size __svml_expf16,.-__svml_expf16 +..LN__svml_expf16.0: + +.L_2__routine_start___svml_sexp_cout_rare_internal_1: + + .align 16,0x90 + +__svml_sexp_cout_rare_internal: + + + .cfi_startproc +..L53: + + xorl %eax, %eax + movzwl 2(%rdi), %edx + andl $32640, %edx + cmpl $32640, %edx + je .LBL_2_12 + + + movss (%rdi), %xmm9 + movss .L_2il0floatpacket.52(%rip), %xmm0 + movl %eax, -12(%rsp) + comiss %xmm9, %xmm0 + jb .LBL_2_10 + + + comiss .L_2il0floatpacket.53(%rip), %xmm9 + jb .LBL_2_9 + + + movss .L_2il0floatpacket.55(%rip), %xmm0 + movaps %xmm9, %xmm6 + mulss %xmm9, %xmm0 + comiss .L_2il0floatpacket.64(%rip), %xmm9 + movss %xmm0, -24(%rsp) + movss -24(%rsp), %xmm1 + movss .L_2il0floatpacket.56(%rip), %xmm2 + movss .L_2il0floatpacket.63(%rip), %xmm7 + addss %xmm2, %xmm1 + movss %xmm1, -20(%rsp) + movss -20(%rsp), %xmm3 + movss .L_2il0floatpacket.59(%rip), %xmm8 + subss %xmm2, %xmm3 + movss %xmm3, -24(%rsp) + movss -24(%rsp), %xmm4 + mulss .L_2il0floatpacket.57(%rip), %xmm4 + movss -24(%rsp), %xmm5 + subss %xmm4, %xmm6 + mulss .L_2il0floatpacket.58(%rip), %xmm5 + movswl -20(%rsp), %ecx + subss %xmm5, %xmm6 + mulss %xmm6, %xmm7 + addss .L_2il0floatpacket.62(%rip), %xmm7 + mulss %xmm6, %xmm7 + addss .L_2il0floatpacket.61(%rip), %xmm7 + mulss %xmm6, %xmm7 + addss .L_2il0floatpacket.60(%rip), %xmm7 + mulss %xmm6, %xmm7 + addss %xmm8, %xmm7 + mulss %xmm6, %xmm7 + addss %xmm7, %xmm8 + movss %xmm8, -16(%rsp) + jb .LBL_2_8 + + + lea 127(%rcx), %edx + cmpl $254, %edx + ja .LBL_2_7 + + + movzbl %dl, %edx + shll $7, %edx + movw %dx, -10(%rsp) + movss -16(%rsp), %xmm0 + mulss -12(%rsp), %xmm0 + movss %xmm0, -16(%rsp) + movl -16(%rsp), %ecx + movl %ecx, (%rsi) + ret + +.LBL_2_7: + + addl $126, %ecx + movzbl %cl, %ecx + movzwl -10(%rsp), %edx + shll $7, %ecx + andl $-32641, %edx + orl %ecx, %edx + movss -16(%rsp), %xmm0 + movw %dx, -10(%rsp) + mulss -12(%rsp), %xmm0 + movss %xmm0, -16(%rsp) + movss -16(%rsp), %xmm1 + mulss .L_2il0floatpacket.67(%rip), %xmm1 + movss %xmm1, -16(%rsp) + movl -16(%rsp), %edi + movl %edi, (%rsi) + ret + +.LBL_2_8: + + addl $-69, %ecx + movzbl %cl, %ecx + movzwl -10(%rsp), %eax + shll $7, %ecx + andl $-32641, %eax + orl %ecx, %eax + movss -16(%rsp), %xmm0 + movw %ax, -10(%rsp) + movl $4, %eax + mulss -12(%rsp), %xmm0 + movss %xmm0, -16(%rsp) + movss -16(%rsp), %xmm1 + mulss .L_2il0floatpacket.66(%rip), %xmm1 + movss %xmm1, -16(%rsp) + movl -16(%rsp), %edx + movl %edx, (%rsi) + ret + +.LBL_2_9: + + movss .L_2il0floatpacket.65(%rip), %xmm0 + mulss %xmm0, %xmm0 + movss %xmm0, -16(%rsp) + movl -16(%rsp), %eax + movl %eax, (%rsi) + movl $4, %eax + ret + +.LBL_2_10: + + movss .L_2il0floatpacket.54(%rip), %xmm0 + mulss %xmm0, %xmm0 + movss %xmm0, -16(%rsp) + movl -16(%rsp), %eax + movl %eax, (%rsi) + movl $3, %eax + + + ret + +.LBL_2_12: + + movb 3(%rdi), %dl + andb $-128, %dl + cmpb $-128, %dl + je .LBL_2_14 + +.LBL_2_13: + + movss (%rdi), %xmm0 + mulss %xmm0, %xmm0 + movss %xmm0, (%rsi) + ret + +.LBL_2_14: + + testl $8388607, (%rdi) + jne .LBL_2_13 + + + movl %eax, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_sexp_cout_rare_internal,@function + .size __svml_sexp_cout_rare_internal,.-__svml_sexp_cout_rare_internal +..LN__svml_sexp_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_sexp_data_internal_avx512: + .long 1065353217 + .long 1065358897 + .long 1065364581 + .long 1065370269 + .long 1065375961 + .long 1065381656 + .long 1065387356 + .long 1065393059 + .long 1065398766 + .long 1065404477 + .long 1065410192 + .long 1065415911 + .long 1065421634 + .long 1065427360 + .long 1065433091 + .long 1065438825 + .long 1065444563 + .long 1065450305 + .long 1065456051 + .long 1065461801 + .long 1065467554 + .long 1065473312 + .long 1065479074 + .long 1065484839 + .long 1065490608 + .long 1065496381 + .long 1065502159 + .long 1065507940 + .long 1065513725 + .long 1065519513 + .long 1065525306 + .long 1065531103 + .long 1065353216 + .long 1065536903 + .long 1065724611 + .long 1065916431 + .long 1066112450 + .long 1066312762 + .long 1066517459 + .long 1066726640 + .long 1066940400 + .long 1067158842 + .long 1067382066 + .long 1067610179 + .long 1067843287 + .long 1068081499 + .long 1068324927 + .long 1068573686 + .long 1068827891 + .long 1069087663 + .long 1069353124 + .long 1069624397 + .long 1069901610 + .long 1070184894 + .long 1070474380 + .long 1070770206 + .long 1071072509 + .long 1071381432 + .long 1071697119 + .long 1072019719 + .long 1072349383 + .long 1072686266 + .long 1073030525 + .long 1073382323 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1178599424 + .long 1178599424 + .long 1178599424 + .long 1178599424 + .long 1178599424 + .long 1178599424 + .long 1178599424 + .long 1178599424 + .long 1178599424 + .long 1178599424 + .long 1178599424 + .long 1178599424 + .long 1178599424 + .long 1178599424 + .long 1178599424 + .long 1178599424 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .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 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 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 3968 + .long 3968 + .long 3968 + .long 3968 + .long 3968 + .long 3968 + .long 3968 + .long 3968 + .long 3968 + .long 3968 + .long 3968 + .long 3968 + .long 3968 + .long 3968 + .long 3968 + .long 3968 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 849703008 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .type __svml_sexp_data_internal_avx512,@object + .size __svml_sexp_data_internal_avx512,1216 + .align 4 +.L_2il0floatpacket.52: + .long 0x42b17217 + .type .L_2il0floatpacket.52,@object + .size .L_2il0floatpacket.52,4 + .align 4 +.L_2il0floatpacket.53: + .long 0xc2cff1b4 + .type .L_2il0floatpacket.53,@object + .size .L_2il0floatpacket.53,4 + .align 4 +.L_2il0floatpacket.54: + .long 0x7f7fffff + .type .L_2il0floatpacket.54,@object + .size .L_2il0floatpacket.54,4 + .align 4 +.L_2il0floatpacket.55: + .long 0x3fb8aa3b + .type .L_2il0floatpacket.55,@object + .size .L_2il0floatpacket.55,4 + .align 4 +.L_2il0floatpacket.56: + .long 0x4b400000 + .type .L_2il0floatpacket.56,@object + .size .L_2il0floatpacket.56,4 + .align 4 +.L_2il0floatpacket.57: + .long 0x3f317200 + .type .L_2il0floatpacket.57,@object + .size .L_2il0floatpacket.57,4 + .align 4 +.L_2il0floatpacket.58: + .long 0x35bfbe8e + .type .L_2il0floatpacket.58,@object + .size .L_2il0floatpacket.58,4 + .align 4 +.L_2il0floatpacket.59: + .long 0x3f800001 + .type .L_2il0floatpacket.59,@object + .size .L_2il0floatpacket.59,4 + .align 4 +.L_2il0floatpacket.60: + .long 0x3efffe85 + .type .L_2il0floatpacket.60,@object + .size .L_2il0floatpacket.60,4 + .align 4 +.L_2il0floatpacket.61: + .long 0x3e2aa9c6 + .type .L_2il0floatpacket.61,@object + .size .L_2il0floatpacket.61,4 + .align 4 +.L_2il0floatpacket.62: + .long 0x3d2bb1b6 + .type .L_2il0floatpacket.62,@object + .size .L_2il0floatpacket.62,4 + .align 4 +.L_2il0floatpacket.63: + .long 0x3c0950ef + .type .L_2il0floatpacket.63,@object + .size .L_2il0floatpacket.63,4 + .align 4 +.L_2il0floatpacket.64: + .long 0xc2aeac4f + .type .L_2il0floatpacket.64,@object + .size .L_2il0floatpacket.64,4 + .align 4 +.L_2il0floatpacket.65: + .long 0x00000001 + .type .L_2il0floatpacket.65,@object + .size .L_2il0floatpacket.65,4 + .align 4 +.L_2il0floatpacket.66: + .long 0x21800000 + .type .L_2il0floatpacket.66,@object + .size .L_2il0floatpacket.66,4 + .align 4 +.L_2il0floatpacket.67: + .long 0x40000000 + .type .L_2il0floatpacket.67,@object + .size .L_2il0floatpacket.67,4 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_expm1_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_expm1_d_la.s new file mode 100644 index 00000000..6d44b4d1 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_expm1_d_la.s @@ -0,0 +1,1089 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * * After computing exp(x) in high-low parts, an accurate computation is performed to obtain exp(x)-1 + * * Typical exp() implementation, except that: + * * - tables are small (16 elements), allowing for fast gathers + * * - all arguments processed in the main path + * * - final VSCALEF assists branch-free design (correct overflow/underflow and special case responses) + * * - a VAND is used to ensure the reduced argument |R|<2, even for large inputs + * * - RZ mode used to avoid oveflow to +/-Inf for x*log2(e); helps with special case handling + * * + * + */ + + + .text +.L_2__routine_start___svml_expm18_z0_0: + + .align 16,0x90 + .globl __svml_expm18 + +__svml_expm18: + + + .cfi_startproc +..L2: + + 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_dexpm1_data_internal_avx512(%rip), %zmm6 + vmovups 320+__svml_dexpm1_data_internal_avx512(%rip), %zmm4 + vmovups 512+__svml_dexpm1_data_internal_avx512(%rip), %zmm11 + vmovups 576+__svml_dexpm1_data_internal_avx512(%rip), %zmm5 + vmovups 384+__svml_dexpm1_data_internal_avx512(%rip), %zmm3 + vmovups 960+__svml_dexpm1_data_internal_avx512(%rip), %zmm13 + vmovups 1024+__svml_dexpm1_data_internal_avx512(%rip), %zmm15 + +/* polynomial */ + vmovups 832+__svml_dexpm1_data_internal_avx512(%rip), %zmm12 + +/* set Z0=max(Z0, -128.0) */ + vmovups 640+__svml_dexpm1_data_internal_avx512(%rip), %zmm8 + vmovups 1088+__svml_dexpm1_data_internal_avx512(%rip), %zmm14 + vmovups __svml_dexpm1_data_internal_avx512(%rip), %zmm9 + vmovaps %zmm0, %zmm2 + +/* 2^(52-4)*1.5 + x * log2(e) */ + vfmadd213pd {rn-sae}, %zmm4, %zmm2, %zmm6 + vmovups 128+__svml_dexpm1_data_internal_avx512(%rip), %zmm0 + vcmppd $21, {sae}, %zmm3, %zmm2, %k0 + +/* Z0 ~ x*log2(e), rounded to 4 fractional bits */ + vsubpd {rn-sae}, %zmm4, %zmm6, %zmm7 + vpermt2pd 64+__svml_dexpm1_data_internal_avx512(%rip), %zmm6, %zmm9 + vpermt2pd 192+__svml_dexpm1_data_internal_avx512(%rip), %zmm6, %zmm0 + vandpd 448+__svml_dexpm1_data_internal_avx512(%rip), %zmm2, %zmm1 + +/* R = x - Z0*log(2) */ + vfnmadd213pd {rn-sae}, %zmm2, %zmm7, %zmm11 + vmaxpd {sae}, %zmm8, %zmm7, %zmm10 + vfnmadd231pd {rn-sae}, %zmm7, %zmm5, %zmm11 + kmovw %k0, %edx + +/* ensure |R|<2 even for special cases */ + vandpd 704+__svml_dexpm1_data_internal_avx512(%rip), %zmm11, %zmm3 + vmovups 896+__svml_dexpm1_data_internal_avx512(%rip), %zmm11 + +/* scale Th */ + vscalefpd {rn-sae}, %zmm10, %zmm9, %zmm4 + vfmadd231pd {rn-sae}, %zmm3, %zmm13, %zmm15 + vfmadd231pd {rn-sae}, %zmm3, %zmm12, %zmm11 + vmovups 1152+__svml_dexpm1_data_internal_avx512(%rip), %zmm12 + vmulpd {rn-sae}, %zmm3, %zmm3, %zmm13 + vfmadd231pd {rn-sae}, %zmm3, %zmm14, %zmm12 + vfmadd213pd {rn-sae}, %zmm15, %zmm13, %zmm11 + vfmadd213pd {rn-sae}, %zmm12, %zmm13, %zmm11 + +/* Tlr + R+ R*Poly */ + vfmadd213pd {rn-sae}, %zmm0, %zmm13, %zmm11 + +/* Th - 1 */ + vmovups 1216+__svml_dexpm1_data_internal_avx512(%rip), %zmm0 + vaddpd {rn-sae}, %zmm3, %zmm11, %zmm14 + vsubpd {rn-sae}, %zmm0, %zmm4, %zmm15 + +/* (Th-1)+Th*(Tlr + R+ R*Poly) */ + vfmadd213pd {rn-sae}, %zmm15, %zmm14, %zmm4 + vorpd %zmm1, %zmm4, %zmm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + 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 %zmm2, 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_dexpm1_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_expm18,@function + .size __svml_expm18,.-__svml_expm18 +..LN__svml_expm18.0: + +.L_2__routine_start___svml_dexpm1_cout_rare_internal_1: + + .align 16,0x90 + +__svml_dexpm1_cout_rare_internal: + + + .cfi_startproc +..L53: + + xorl %eax, %eax + movsd (%rdi), %xmm6 + pxor %xmm0, %xmm0 + movzwl 6(%rdi), %edx + comisd %xmm6, %xmm0 + ja .LBL_2_18 + + + andl $32752, %edx + shrl $4, %edx + movsd %xmm6, -8(%rsp) + cmpl $2047, %edx + je .LBL_2_19 + + + cmpl $970, %edx + jle .LBL_2_16 + + + movsd 1080+_imldExpHATab(%rip), %xmm0 + comisd %xmm6, %xmm0 + jb .LBL_2_15 + + + comisd 1096+_imldExpHATab(%rip), %xmm6 + jb .LBL_2_14 + + + movsd 1024+_imldExpHATab(%rip), %xmm0 + movaps %xmm6, %xmm5 + mulsd %xmm6, %xmm0 + lea _imldExpHATab(%rip), %r10 + movsd %xmm0, -24(%rsp) + movsd -24(%rsp), %xmm1 + movq 1136+_imldExpHATab(%rip), %rdx + movq %rdx, -8(%rsp) + addsd 1032+_imldExpHATab(%rip), %xmm1 + movsd %xmm1, -16(%rsp) + movsd -16(%rsp), %xmm2 + movl -16(%rsp), %r8d + movl %r8d, %ecx + andl $63, %r8d + subsd 1032+_imldExpHATab(%rip), %xmm2 + movsd %xmm2, -24(%rsp) + lea 1(%r8,%r8), %r9d + movsd -24(%rsp), %xmm3 + lea (%r8,%r8), %edi + mulsd 1104+_imldExpHATab(%rip), %xmm3 + movsd -24(%rsp), %xmm4 + subsd %xmm3, %xmm5 + mulsd 1112+_imldExpHATab(%rip), %xmm4 + movsd 1072+_imldExpHATab(%rip), %xmm2 + subsd %xmm4, %xmm5 + mulsd %xmm5, %xmm2 + shrl $6, %ecx + addsd 1064+_imldExpHATab(%rip), %xmm2 + comisd 1088+_imldExpHATab(%rip), %xmm6 + mulsd %xmm5, %xmm2 + movsd (%r10,%rdi,8), %xmm0 + lea 1023(%rcx), %edx + addsd 1056+_imldExpHATab(%rip), %xmm2 + mulsd %xmm5, %xmm2 + addsd 1048+_imldExpHATab(%rip), %xmm2 + mulsd %xmm5, %xmm2 + addsd 1040+_imldExpHATab(%rip), %xmm2 + mulsd %xmm5, %xmm2 + mulsd %xmm5, %xmm2 + addsd %xmm5, %xmm2 + addsd (%r10,%r9,8), %xmm2 + mulsd %xmm0, %xmm2 + jb .LBL_2_10 + + + andl $2047, %edx + addsd %xmm0, %xmm2 + cmpl $2046, %edx + ja .LBL_2_9 + + + movq 1136+_imldExpHATab(%rip), %rcx + shrq $48, %rcx + shll $4, %edx + andl $-32753, %ecx + orl %edx, %ecx + movw %cx, -2(%rsp) + movsd -8(%rsp), %xmm0 + mulsd %xmm0, %xmm2 + movsd %xmm2, (%rsi) + ret + +.LBL_2_9: + + decl %edx + andl $2047, %edx + movzwl -2(%rsp), %ecx + shll $4, %edx + andl $-32753, %ecx + orl %edx, %ecx + movw %cx, -2(%rsp) + movsd -8(%rsp), %xmm0 + mulsd %xmm0, %xmm2 + mulsd 1152+_imldExpHATab(%rip), %xmm2 + movsd %xmm2, (%rsi) + ret + +.LBL_2_10: + + addl $1083, %ecx + andl $2047, %ecx + movl %ecx, %eax + movzwl -2(%rsp), %edx + shll $4, %eax + andl $-32753, %edx + orl %eax, %edx + movw %dx, -2(%rsp) + movsd -8(%rsp), %xmm1 + mulsd %xmm1, %xmm2 + mulsd %xmm0, %xmm1 + movaps %xmm1, %xmm0 + addsd %xmm2, %xmm0 + cmpl $50, %ecx + ja .LBL_2_12 + + + mulsd 1160+_imldExpHATab(%rip), %xmm0 + movsd %xmm0, (%rsi) + jmp .LBL_2_13 + +.LBL_2_12: + + movsd %xmm0, -72(%rsp) + movsd -72(%rsp), %xmm0 + subsd %xmm0, %xmm1 + movsd %xmm1, -64(%rsp) + movsd -64(%rsp), %xmm1 + addsd %xmm2, %xmm1 + movsd %xmm1, -64(%rsp) + movsd -72(%rsp), %xmm2 + mulsd 1168+_imldExpHATab(%rip), %xmm2 + movsd %xmm2, -56(%rsp) + movsd -72(%rsp), %xmm4 + movsd -56(%rsp), %xmm3 + addsd %xmm3, %xmm4 + movsd %xmm4, -48(%rsp) + movsd -48(%rsp), %xmm6 + movsd -56(%rsp), %xmm5 + subsd %xmm5, %xmm6 + movsd %xmm6, -40(%rsp) + movsd -72(%rsp), %xmm8 + movsd -40(%rsp), %xmm7 + subsd %xmm7, %xmm8 + movsd %xmm8, -32(%rsp) + movsd -64(%rsp), %xmm10 + movsd -32(%rsp), %xmm9 + addsd %xmm9, %xmm10 + movsd %xmm10, -32(%rsp) + movsd -40(%rsp), %xmm11 + mulsd 1160+_imldExpHATab(%rip), %xmm11 + movsd %xmm11, -40(%rsp) + movsd -32(%rsp), %xmm12 + mulsd 1160+_imldExpHATab(%rip), %xmm12 + movsd %xmm12, -32(%rsp) + movsd -40(%rsp), %xmm14 + movsd -32(%rsp), %xmm13 + addsd %xmm13, %xmm14 + movsd %xmm14, (%rsi) + +.LBL_2_13: + + movl $4, %eax + ret + +.LBL_2_14: + + movsd 1120+_imldExpHATab(%rip), %xmm0 + movl $4, %eax + mulsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_15: + + movsd 1128+_imldExpHATab(%rip), %xmm0 + movl $3, %eax + mulsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_16: + + movsd 1144+_imldExpHATab(%rip), %xmm0 + addsd %xmm6, %xmm0 + movsd %xmm0, (%rsi) + + + ret + +.LBL_2_18: + + movq $0xbff0000000000000, %rax + movq %rax, (%rsi) + xorl %eax, %eax + ret + +.LBL_2_19: + + movb -1(%rsp), %dl + andb $-128, %dl + cmpb $-128, %dl + je .LBL_2_21 + +.LBL_2_20: + + mulsd %xmm6, %xmm6 + movsd %xmm6, (%rsi) + ret + +.LBL_2_21: + + testl $1048575, -4(%rsp) + jne .LBL_2_20 + + + cmpl $0, -8(%rsp) + jne .LBL_2_20 + + + movq 1136+_imldExpHATab(%rip), %rdx + movq %rdx, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_dexpm1_cout_rare_internal,@function + .size __svml_dexpm1_cout_rare_internal,.-__svml_dexpm1_cout_rare_internal +..LN__svml_dexpm1_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_dexpm1_data_internal_avx512: + .long 0 + .long 1072693248 + .long 1828292879 + .long 1072739672 + .long 1014845819 + .long 1072788152 + .long 1853186616 + .long 1072838778 + .long 171030293 + .long 1072891646 + .long 1276261410 + .long 1072946854 + .long 3577096743 + .long 1073004506 + .long 3712504873 + .long 1073064711 + .long 1719614413 + .long 1073127582 + .long 1944781191 + .long 1073193236 + .long 1110089947 + .long 1073261797 + .long 2191782032 + .long 1073333393 + .long 2572866477 + .long 1073408159 + .long 3716502172 + .long 1073486235 + .long 3707479175 + .long 1073567768 + .long 2728693978 + .long 1073652911 + .long 0 + .long 0 + .long 1568897901 + .long 1016568486 + .long 3936719688 + .long 3162512149 + .long 3819481236 + .long 1016499965 + .long 1303423926 + .long 1015238005 + .long 2804567149 + .long 1015390024 + .long 3145379760 + .long 1014403278 + .long 3793507337 + .long 1016095713 + .long 3210617384 + .long 3163796463 + .long 3108873501 + .long 3162190556 + .long 3253791412 + .long 1015920431 + .long 730975783 + .long 1014083580 + .long 2462790535 + .long 1015814775 + .long 816778419 + .long 1014197934 + .long 2789017511 + .long 1014276997 + .long 2413007344 + .long 3163551506 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 1287323204 + .long 1082531232 + .long 1287323204 + .long 1082531232 + .long 1287323204 + .long 1082531232 + .long 1287323204 + .long 1082531232 + .long 1287323204 + .long 1082531232 + .long 1287323204 + .long 1082531232 + .long 1287323204 + .long 1082531232 + .long 1287323204 + .long 1082531232 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 993624127 + .long 1014676638 + .long 993624127 + .long 1014676638 + .long 993624127 + .long 1014676638 + .long 993624127 + .long 1014676638 + .long 993624127 + .long 1014676638 + .long 993624127 + .long 1014676638 + .long 993624127 + .long 1014676638 + .long 993624127 + .long 1014676638 + .long 0 + .long 3227516928 + .long 0 + .long 3227516928 + .long 0 + .long 3227516928 + .long 0 + .long 3227516928 + .long 0 + .long 3227516928 + .long 0 + .long 3227516928 + .long 0 + .long 3227516928 + .long 0 + .long 3227516928 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4106095538 + .long 1056571896 + .long 4106095538 + .long 1056571896 + .long 4106095538 + .long 1056571896 + .long 4106095538 + .long 1056571896 + .long 4106095538 + .long 1056571896 + .long 4106095538 + .long 1056571896 + .long 4106095538 + .long 1056571896 + .long 4106095538 + .long 1056571896 + .long 271596938 + .long 1059717636 + .long 271596938 + .long 1059717636 + .long 271596938 + .long 1059717636 + .long 271596938 + .long 1059717636 + .long 271596938 + .long 1059717636 + .long 271596938 + .long 1059717636 + .long 271596938 + .long 1059717636 + .long 271596938 + .long 1059717636 + .long 2383825455 + .long 1062650307 + .long 2383825455 + .long 1062650307 + .long 2383825455 + .long 1062650307 + .long 2383825455 + .long 1062650307 + .long 2383825455 + .long 1062650307 + .long 2383825455 + .long 1062650307 + .long 2383825455 + .long 1062650307 + .long 2383825455 + .long 1062650307 + .long 277238292 + .long 1065423121 + .long 277238292 + .long 1065423121 + .long 277238292 + .long 1065423121 + .long 277238292 + .long 1065423121 + .long 277238292 + .long 1065423121 + .long 277238292 + .long 1065423121 + .long 277238292 + .long 1065423121 + .long 277238292 + .long 1065423121 + .long 1420639494 + .long 1067799893 + .long 1420639494 + .long 1067799893 + .long 1420639494 + .long 1067799893 + .long 1420639494 + .long 1067799893 + .long 1420639494 + .long 1067799893 + .long 1420639494 + .long 1067799893 + .long 1420639494 + .long 1067799893 + .long 1420639494 + .long 1067799893 + .long 1431656022 + .long 1069897045 + .long 1431656022 + .long 1069897045 + .long 1431656022 + .long 1069897045 + .long 1431656022 + .long 1069897045 + .long 1431656022 + .long 1069897045 + .long 1431656022 + .long 1069897045 + .long 1431656022 + .long 1069897045 + .long 1431656022 + .long 1069897045 + .long 162 + .long 1071644672 + .long 162 + .long 1071644672 + .long 162 + .long 1071644672 + .long 162 + .long 1071644672 + .long 162 + .long 1071644672 + .long 162 + .long 1071644672 + .long 162 + .long 1071644672 + .long 162 + .long 1071644672 + .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 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .type __svml_dexpm1_data_internal_avx512,@object + .size __svml_dexpm1_data_internal_avx512,1344 + .align 32 +_imldExpHATab: + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 1048019041 + .long 1072704666 + .long 2631457885 + .long 3161546771 + .long 3541402996 + .long 1072716208 + .long 896005651 + .long 1015861842 + .long 410360776 + .long 1072727877 + .long 1642514529 + .long 1012987726 + .long 1828292879 + .long 1072739672 + .long 1568897901 + .long 1016568486 + .long 852742562 + .long 1072751596 + .long 1882168529 + .long 1010744893 + .long 3490863953 + .long 1072763649 + .long 707771662 + .long 3163903570 + .long 2930322912 + .long 1072775834 + .long 3117806614 + .long 3163670819 + .long 1014845819 + .long 1072788152 + .long 3936719688 + .long 3162512149 + .long 3949972341 + .long 1072800603 + .long 1058231231 + .long 1015777676 + .long 828946858 + .long 1072813191 + .long 1044000608 + .long 1016786167 + .long 2288159958 + .long 1072825915 + .long 1151779725 + .long 1015705409 + .long 1853186616 + .long 1072838778 + .long 3819481236 + .long 1016499965 + .long 1709341917 + .long 1072851781 + .long 2552227826 + .long 1015039787 + .long 4112506593 + .long 1072864925 + .long 1829350193 + .long 1015216097 + .long 2799960843 + .long 1072878213 + .long 1913391796 + .long 1015756674 + .long 171030293 + .long 1072891646 + .long 1303423926 + .long 1015238005 + .long 2992903935 + .long 1072905224 + .long 1574172746 + .long 1016061241 + .long 926591435 + .long 1072918951 + .long 3427487848 + .long 3163704045 + .long 887463927 + .long 1072932827 + .long 1049900754 + .long 3161575912 + .long 1276261410 + .long 1072946854 + .long 2804567149 + .long 1015390024 + .long 569847338 + .long 1072961034 + .long 1209502043 + .long 3159926671 + .long 1617004845 + .long 1072975368 + .long 1623370769 + .long 1011049453 + .long 3049340112 + .long 1072989858 + .long 3667985273 + .long 1013894369 + .long 3577096743 + .long 1073004506 + .long 3145379760 + .long 1014403278 + .long 1990012071 + .long 1073019314 + .long 7447438 + .long 3163526196 + .long 1453150082 + .long 1073034283 + .long 3171891295 + .long 3162037958 + .long 917841882 + .long 1073049415 + .long 419288974 + .long 1016280325 + .long 3712504873 + .long 1073064711 + .long 3793507337 + .long 1016095713 + .long 363667784 + .long 1073080175 + .long 728023093 + .long 1016345318 + .long 2956612997 + .long 1073095806 + .long 1005538728 + .long 3163304901 + .long 2186617381 + .long 1073111608 + .long 2018924632 + .long 3163803357 + .long 1719614413 + .long 1073127582 + .long 3210617384 + .long 3163796463 + .long 1013258799 + .long 1073143730 + .long 3094194670 + .long 3160631279 + .long 3907805044 + .long 1073160053 + .long 2119843535 + .long 3161988964 + .long 1447192521 + .long 1073176555 + .long 508946058 + .long 3162904882 + .long 1944781191 + .long 1073193236 + .long 3108873501 + .long 3162190556 + .long 919555682 + .long 1073210099 + .long 2882956373 + .long 1013312481 + .long 2571947539 + .long 1073227145 + .long 4047189812 + .long 3163777462 + .long 2604962541 + .long 1073244377 + .long 3631372142 + .long 3163870288 + .long 1110089947 + .long 1073261797 + .long 3253791412 + .long 1015920431 + .long 2568320822 + .long 1073279406 + .long 1509121860 + .long 1014756995 + .long 2966275557 + .long 1073297207 + .long 2339118633 + .long 3160254904 + .long 2682146384 + .long 1073315202 + .long 586480042 + .long 3163702083 + .long 2191782032 + .long 1073333393 + .long 730975783 + .long 1014083580 + .long 2069751141 + .long 1073351782 + .long 576856675 + .long 3163014404 + .long 2990417245 + .long 1073370371 + .long 3552361237 + .long 3163667409 + .long 1434058175 + .long 1073389163 + .long 1853053619 + .long 1015310724 + .long 2572866477 + .long 1073408159 + .long 2462790535 + .long 1015814775 + .long 3092190715 + .long 1073427362 + .long 1457303226 + .long 3159737305 + .long 4076559943 + .long 1073446774 + .long 950899508 + .long 3160987380 + .long 2420883922 + .long 1073466398 + .long 174054861 + .long 1014300631 + .long 3716502172 + .long 1073486235 + .long 816778419 + .long 1014197934 + .long 777507147 + .long 1073506289 + .long 3507050924 + .long 1015341199 + .long 3706687593 + .long 1073526560 + .long 1821514088 + .long 1013410604 + .long 1242007932 + .long 1073547053 + .long 1073740399 + .long 3163532637 + .long 3707479175 + .long 1073567768 + .long 2789017511 + .long 1014276997 + .long 64696965 + .long 1073588710 + .long 3586233004 + .long 1015962192 + .long 863738719 + .long 1073609879 + .long 129252895 + .long 3162690849 + .long 3884662774 + .long 1073631278 + .long 1614448851 + .long 1014281732 + .long 2728693978 + .long 1073652911 + .long 2413007344 + .long 3163551506 + .long 3999357479 + .long 1073674779 + .long 1101668360 + .long 1015989180 + .long 1533953344 + .long 1073696886 + .long 835814894 + .long 1015702697 + .long 2174652632 + .long 1073719233 + .long 1301400989 + .long 1014466875 + .long 1697350398 + .long 1079448903 + .long 0 + .long 1127743488 + .long 0 + .long 1071644672 + .long 1431652600 + .long 1069897045 + .long 1431670732 + .long 1067799893 + .long 984555731 + .long 1065423122 + .long 472530941 + .long 1062650218 + .long 4277811695 + .long 1082535490 + .long 3715808466 + .long 3230016299 + .long 3576508497 + .long 3230091536 + .long 4277796864 + .long 1065758274 + .long 3164486458 + .long 1025308570 + .long 1 + .long 1048576 + .long 4294967295 + .long 2146435071 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 1073741824 + .long 0 + .long 1009778688 + .long 0 + .long 1106771968 + .type _imldExpHATab,@object + .size _imldExpHATab,1176 + .align 8 +.L_2il0floatpacket.77: + .long 0x00000000,0xbff00000 + .type .L_2il0floatpacket.77,@object + .size .L_2il0floatpacket.77,8 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_expm1_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_expm1_s_la.s new file mode 100644 index 00000000..3ae3336e --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_expm1_s_la.s @@ -0,0 +1,593 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * * After computing exp(x) in high-low parts, an accurate computation is performed to obtain exp(x)-1 + * * Typical exp() implementation, except that: + * * - tables are small (32 elements), allowing for fast gathers + * * - all arguments processed in the main path + * * - final VSCALEF assists branch-free design (correct overflow/underflow and special case responses) + * * - a VAND is used to ensure the reduced argument |R|<2, even for large inputs + * * - RZ mode used to avoid oveflow to +/-Inf for x*log2(e); helps with special case handling + * * + * + */ + + + .text +.L_2__routine_start___svml_expm1f16_z0_0: + + .align 16,0x90 + .globl __svml_expm1f16 + +__svml_expm1f16: + + + .cfi_startproc +..L2: + + 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_sexpm1_data_internal_avx512(%rip), %zmm5 + vmovups 320+__svml_sexpm1_data_internal_avx512(%rip), %zmm3 + vmovups 512+__svml_sexpm1_data_internal_avx512(%rip), %zmm8 + vmovups 576+__svml_sexpm1_data_internal_avx512(%rip), %zmm4 + vmovups __svml_sexpm1_data_internal_avx512(%rip), %zmm6 + +/* polynomial */ + vmovups 704+__svml_sexpm1_data_internal_avx512(%rip), %zmm9 + vmovups 768+__svml_sexpm1_data_internal_avx512(%rip), %zmm12 + vmovups 128+__svml_sexpm1_data_internal_avx512(%rip), %zmm11 + vmovups 384+__svml_sexpm1_data_internal_avx512(%rip), %zmm2 + +/* Th - 1 */ + vmovups 832+__svml_sexpm1_data_internal_avx512(%rip), %zmm14 + vmovaps %zmm0, %zmm1 + +/* 2^(52-5)*1.5 + x * log2(e) */ + vfmadd213ps {rn-sae}, %zmm3, %zmm1, %zmm5 + vcmpps $29, {sae}, %zmm2, %zmm1, %k0 + +/* Z0 ~ x*log2(e), rounded to 5 fractional bits */ + vsubps {rn-sae}, %zmm3, %zmm5, %zmm7 + vpermt2ps 64+__svml_sexpm1_data_internal_avx512(%rip), %zmm5, %zmm6 + vpermt2ps 192+__svml_sexpm1_data_internal_avx512(%rip), %zmm5, %zmm11 + vandps 448+__svml_sexpm1_data_internal_avx512(%rip), %zmm1, %zmm0 + +/* R = x - Z0*log(2) */ + vfnmadd213ps {rn-sae}, %zmm1, %zmm7, %zmm8 + +/* scale Th */ + vscalefps {rn-sae}, %zmm7, %zmm6, %zmm2 + vfnmadd231ps {rn-sae}, %zmm7, %zmm4, %zmm8 + kmovw %k0, %edx + +/* ensure |R|<2 even for special cases */ + vandps 640+__svml_sexpm1_data_internal_avx512(%rip), %zmm8, %zmm13 + vsubps {rn-sae}, %zmm14, %zmm2, %zmm8 + vmulps {rn-sae}, %zmm13, %zmm13, %zmm10 + vfmadd231ps {rn-sae}, %zmm13, %zmm9, %zmm12 + +/* Tlr + R+ R2*Poly */ + vfmadd213ps {rn-sae}, %zmm11, %zmm10, %zmm12 + vaddps {rn-sae}, %zmm13, %zmm12, %zmm15 + +/* (Th-1)+Th*(Tlr + R+ R*Poly) */ + vfmadd213ps {rn-sae}, %zmm8, %zmm15, %zmm2 + vorps %zmm0, %zmm2, %zmm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + 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 %zmm1, 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_sexpm1_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_expm1f16,@function + .size __svml_expm1f16,.-__svml_expm1f16 +..LN__svml_expm1f16.0: + +.L_2__routine_start___svml_sexpm1_cout_rare_internal_1: + + .align 16,0x90 + +__svml_sexpm1_cout_rare_internal: + + + .cfi_startproc +..L53: + + xorl %eax, %eax + movss (%rdi), %xmm8 + pxor %xmm0, %xmm0 + comiss %xmm8, %xmm0 + ja .LBL_2_8 + + + movzwl 2(%rdi), %edx + andl $32640, %edx + cmpl $32640, %edx + je .LBL_2_9 + + + movss .L_2il0floatpacket.45(%rip), %xmm0 + comiss %xmm8, %xmm0 + jb .LBL_2_6 + + + comiss .L_2il0floatpacket.46(%rip), %xmm8 + jb .LBL_2_7 + + + movss .L_2il0floatpacket.48(%rip), %xmm0 + mulss %xmm8, %xmm0 + movss %xmm0, -24(%rsp) + movss -24(%rsp), %xmm1 + movss .L_2il0floatpacket.49(%rip), %xmm2 + movss .L_2il0floatpacket.56(%rip), %xmm6 + addss %xmm2, %xmm1 + movss %xmm1, -20(%rsp) + movss -20(%rsp), %xmm3 + movss .L_2il0floatpacket.52(%rip), %xmm7 + subss %xmm2, %xmm3 + movss %xmm3, -24(%rsp) + movss -24(%rsp), %xmm4 + mulss .L_2il0floatpacket.50(%rip), %xmm4 + movss -24(%rsp), %xmm5 + subss %xmm4, %xmm8 + mulss .L_2il0floatpacket.51(%rip), %xmm5 + movl -20(%rsp), %edx + subss %xmm5, %xmm8 + mulss %xmm8, %xmm6 + shll $23, %edx + addss .L_2il0floatpacket.55(%rip), %xmm6 + mulss %xmm8, %xmm6 + addss .L_2il0floatpacket.54(%rip), %xmm6 + mulss %xmm8, %xmm6 + addss .L_2il0floatpacket.53(%rip), %xmm6 + mulss %xmm8, %xmm6 + addss %xmm7, %xmm6 + mulss %xmm8, %xmm6 + addss %xmm6, %xmm7 + movss %xmm7, -16(%rsp) + addl -16(%rsp), %edx + movl %edx, (%rsi) + ret + +.LBL_2_6: + + movss .L_2il0floatpacket.47(%rip), %xmm0 + mulss %xmm0, %xmm0 + movss %xmm0, -16(%rsp) + movl -16(%rsp), %eax + movl %eax, (%rsi) + movl $3, %eax + +.LBL_2_7: + + ret + +.LBL_2_8: + + movl $-1082130432, (%rsi) + ret + +.LBL_2_9: + + movb 3(%rdi), %dl + andb $-128, %dl + cmpb $-128, %dl + je .LBL_2_11 + +.LBL_2_10: + + mulss %xmm8, %xmm8 + movss %xmm8, (%rsi) + ret + +.LBL_2_11: + + testl $8388607, (%rdi) + jne .LBL_2_10 + + + movss %xmm0, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_sexpm1_cout_rare_internal,@function + .size __svml_sexpm1_cout_rare_internal,.-__svml_sexpm1_cout_rare_internal +..LN__svml_sexpm1_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_sexpm1_data_internal_avx512: + .long 1065353216 + .long 1065536903 + .long 1065724611 + .long 1065916431 + .long 1066112450 + .long 1066312762 + .long 1066517459 + .long 1066726640 + .long 1066940400 + .long 1067158842 + .long 1067382066 + .long 1067610179 + .long 1067843287 + .long 1068081499 + .long 1068324927 + .long 1068573686 + .long 1068827891 + .long 1069087663 + .long 1069353124 + .long 1069624397 + .long 1069901610 + .long 1070184894 + .long 1070474380 + .long 1070770206 + .long 1071072509 + .long 1071381432 + .long 1071697119 + .long 1072019719 + .long 1072349383 + .long 1072686266 + .long 1073030525 + .long 1073382323 + .long 0 + .long 3007986186 + .long 860277610 + .long 3010384254 + .long 2991457809 + .long 3008462297 + .long 860562562 + .long 3004532446 + .long 856238081 + .long 3001480295 + .long 857441778 + .long 815380209 + .long 3003456168 + .long 3001196762 + .long 2986372182 + .long 3006683458 + .long 848495278 + .long 851809756 + .long 3003311522 + .long 2995654817 + .long 833868005 + .long 3004843819 + .long 835836658 + .long 3003498340 + .long 2994528642 + .long 3002229827 + .long 2981408986 + .long 2983889551 + .long 2983366846 + .long 3000350873 + .long 833659207 + .long 2987748092 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1118652779 + .long 1118652779 + .long 1118652779 + .long 1118652779 + .long 1118652779 + .long 1118652779 + .long 1118652779 + .long 1118652779 + .long 1118652779 + .long 1118652779 + .long 1118652779 + .long 1118652779 + .long 1118652779 + .long 1118652779 + .long 1118652779 + .long 1118652779 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 2969756424 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 1042983923 + .long 1042983923 + .long 1042983923 + .long 1042983923 + .long 1042983923 + .long 1042983923 + .long 1042983923 + .long 1042983923 + .long 1042983923 + .long 1042983923 + .long 1042983923 + .long 1042983923 + .long 1042983923 + .long 1042983923 + .long 1042983923 + .long 1042983923 + .long 1056964854 + .long 1056964854 + .long 1056964854 + .long 1056964854 + .long 1056964854 + .long 1056964854 + .long 1056964854 + .long 1056964854 + .long 1056964854 + .long 1056964854 + .long 1056964854 + .long 1056964854 + .long 1056964854 + .long 1056964854 + .long 1056964854 + .long 1056964854 + .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 + .type __svml_sexpm1_data_internal_avx512,@object + .size __svml_sexpm1_data_internal_avx512,896 + .align 4 +.L_2il0floatpacket.44: + .long 0xbf800000 + .type .L_2il0floatpacket.44,@object + .size .L_2il0floatpacket.44,4 + .align 4 +.L_2il0floatpacket.45: + .long 0x42b17217 + .type .L_2il0floatpacket.45,@object + .size .L_2il0floatpacket.45,4 + .align 4 +.L_2il0floatpacket.46: + .long 0xc2cff1b4 + .type .L_2il0floatpacket.46,@object + .size .L_2il0floatpacket.46,4 + .align 4 +.L_2il0floatpacket.47: + .long 0x7f7fffff + .type .L_2il0floatpacket.47,@object + .size .L_2il0floatpacket.47,4 + .align 4 +.L_2il0floatpacket.48: + .long 0x3fb8aa3b + .type .L_2il0floatpacket.48,@object + .size .L_2il0floatpacket.48,4 + .align 4 +.L_2il0floatpacket.49: + .long 0x4b400000 + .type .L_2il0floatpacket.49,@object + .size .L_2il0floatpacket.49,4 + .align 4 +.L_2il0floatpacket.50: + .long 0x3f317200 + .type .L_2il0floatpacket.50,@object + .size .L_2il0floatpacket.50,4 + .align 4 +.L_2il0floatpacket.51: + .long 0x35bfbe8e + .type .L_2il0floatpacket.51,@object + .size .L_2il0floatpacket.51,4 + .align 4 +.L_2il0floatpacket.52: + .long 0x3f800001 + .type .L_2il0floatpacket.52,@object + .size .L_2il0floatpacket.52,4 + .align 4 +.L_2il0floatpacket.53: + .long 0x3efffe85 + .type .L_2il0floatpacket.53,@object + .size .L_2il0floatpacket.53,4 + .align 4 +.L_2il0floatpacket.54: + .long 0x3e2aa9c6 + .type .L_2il0floatpacket.54,@object + .size .L_2il0floatpacket.54,4 + .align 4 +.L_2il0floatpacket.55: + .long 0x3d2bb1b6 + .type .L_2il0floatpacket.55,@object + .size .L_2il0floatpacket.55,4 + .align 4 +.L_2il0floatpacket.56: + .long 0x3c0950ef + .type .L_2il0floatpacket.56,@object + .size .L_2il0floatpacket.56,4 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_log10_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log10_d_la.s new file mode 100644 index 00000000..58313e4c --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log10_d_la.s @@ -0,0 +1,1124 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * * log10(x) = VGETEXP(x)*log10(2) + log10(VGETMANT(x)) + * * VGETEXP, VGETMANT will correctly treat special cases too (including denormals) + * * mx = VGETMANT(x) is in [1,2) for all x>=0 + * * log10(mx) = -log10(RCP(mx)) + log10(1 +(mx*RCP(mx)-1)) + * * RCP(mx) is rounded to 4 fractional bits, + * * and the table lookup for log(RCP(mx)) is based on a small permute instruction + * * + * + */ + + + .text +.L_2__routine_start___svml_log108_z0_0: + + .align 16,0x90 + .globl __svml_log108 + +__svml_log108: + + + .cfi_startproc +..L2: + + 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 + vmovaps %zmm0, %zmm7 + +/* GetMant(x), normalized to [1,2) for x>=0, NaN for x<0 */ + vgetmantpd $8, {sae}, %zmm7, %zmm6 + vmovups 128+__svml_dlog10_data_internal_avx512(%rip), %zmm3 + vmovups 512+__svml_dlog10_data_internal_avx512(%rip), %zmm12 + vmovups 640+__svml_dlog10_data_internal_avx512(%rip), %zmm13 + +/* Start polynomial evaluation */ + vmovups 256+__svml_dlog10_data_internal_avx512(%rip), %zmm10 + vmovups 320+__svml_dlog10_data_internal_avx512(%rip), %zmm1 + vmovups 384+__svml_dlog10_data_internal_avx512(%rip), %zmm11 + vmovups 448+__svml_dlog10_data_internal_avx512(%rip), %zmm14 + +/* Prepare exponent correction: DblRcp<0.75? */ + vmovups 192+__svml_dlog10_data_internal_avx512(%rip), %zmm2 + +/* Table lookup */ + vmovups __svml_dlog10_data_internal_avx512(%rip), %zmm5 + +/* GetExp(x) */ + vgetexppd {sae}, %zmm7, %zmm0 + +/* DblRcp ~ 1/Mantissa */ + vrcp14pd %zmm6, %zmm8 + +/* x<=0? */ + vfpclasspd $94, %zmm7, %k0 + +/* round DblRcp to 4 fractional bits (RN mode, no Precision exception) */ + vrndscalepd $88, {sae}, %zmm8, %zmm4 + vmovups 576+__svml_dlog10_data_internal_avx512(%rip), %zmm8 + kmovw %k0, %edx + +/* Reduced argument: R = DblRcp*Mantissa - 1 */ + vfmsub213pd {rn-sae}, %zmm3, %zmm4, %zmm6 + vcmppd $17, {sae}, %zmm2, %zmm4, %k1 + vfmadd231pd {rn-sae}, %zmm6, %zmm12, %zmm8 + vmovups 704+__svml_dlog10_data_internal_avx512(%rip), %zmm12 + vfmadd231pd {rn-sae}, %zmm6, %zmm10, %zmm1 + vfmadd231pd {rn-sae}, %zmm6, %zmm11, %zmm14 + vmovups 768+__svml_dlog10_data_internal_avx512(%rip), %zmm2 + +/* R^2 */ + vmulpd {rn-sae}, %zmm6, %zmm6, %zmm15 + vfmadd231pd {rn-sae}, %zmm6, %zmm13, %zmm12 + +/* Prepare table index */ + vpsrlq $48, %zmm4, %zmm9 + +/* add 1 to Expon if DblRcp<0.75 */ + vaddpd {rn-sae}, %zmm3, %zmm0, %zmm0{%k1} + vmulpd {rn-sae}, %zmm15, %zmm15, %zmm13 + vfmadd213pd {rn-sae}, %zmm14, %zmm15, %zmm1 + vfmadd213pd {rn-sae}, %zmm12, %zmm15, %zmm8 + vpermt2pd 64+__svml_dlog10_data_internal_avx512(%rip), %zmm9, %zmm5 + +/* polynomial */ + vfmadd213pd {rn-sae}, %zmm8, %zmm13, %zmm1 + vfmadd213pd {rn-sae}, %zmm2, %zmm6, %zmm1 + vfmadd213pd {rn-sae}, %zmm5, %zmm1, %zmm6 + vmovups 832+__svml_dlog10_data_internal_avx512(%rip), %zmm1 + vfmadd213pd {rn-sae}, %zmm6, %zmm1, %zmm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + 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 %zmm7, 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_dlog10_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_log108,@function + .size __svml_log108,.-__svml_log108 +..LN__svml_log108.0: + +.L_2__routine_start___svml_dlog10_cout_rare_internal_1: + + .align 16,0x90 + +__svml_dlog10_cout_rare_internal: + + + .cfi_startproc +..L53: + + xorl %eax, %eax + movzwl 6(%rdi), %edx + andl $32752, %edx + cmpl $32752, %edx + je .LBL_2_12 + + + movsd (%rdi), %xmm2 + xorl %ecx, %ecx + movsd %xmm2, -8(%rsp) + movzwl -2(%rsp), %edx + testl $32752, %edx + jne .LBL_2_4 + + + movsd 1600+__dlog10_la_CoutTab(%rip), %xmm0 + movl $-60, %ecx + mulsd %xmm0, %xmm2 + movsd %xmm2, -8(%rsp) + +.LBL_2_4: + + movsd 1608+__dlog10_la_CoutTab(%rip), %xmm0 + comisd %xmm0, %xmm2 + jbe .LBL_2_8 + + + movaps %xmm2, %xmm1 + subsd .L_2il0floatpacket.89(%rip), %xmm1 + movsd %xmm1, -16(%rsp) + andb $127, -9(%rsp) + movsd -16(%rsp), %xmm0 + comisd 1592+__dlog10_la_CoutTab(%rip), %xmm0 + jbe .LBL_2_7 + + + movsd %xmm2, -16(%rsp) + pxor %xmm7, %xmm7 + movzwl -10(%rsp), %edi + lea __dlog10_la_CoutTab(%rip), %r10 + andl $-32753, %edi + addl $16368, %edi + movw %di, -10(%rsp) + movsd -16(%rsp), %xmm3 + movaps %xmm3, %xmm1 + movaps %xmm3, %xmm2 + movsd 1688+__dlog10_la_CoutTab(%rip), %xmm5 + movzwl -2(%rsp), %edx + andl $32752, %edx + addsd 1576+__dlog10_la_CoutTab(%rip), %xmm1 + addsd 1584+__dlog10_la_CoutTab(%rip), %xmm2 + movsd %xmm1, -24(%rsp) + movl -24(%rsp), %r8d + movsd %xmm2, -24(%rsp) + andl $127, %r8d + movsd -24(%rsp), %xmm8 + movsd 1560+__dlog10_la_CoutTab(%rip), %xmm9 + movsd 1568+__dlog10_la_CoutTab(%rip), %xmm0 + shrl $4, %edx + subsd 1584+__dlog10_la_CoutTab(%rip), %xmm8 + lea (%r8,%r8,2), %r9d + movsd (%r10,%r9,8), %xmm6 + lea -1023(%rcx,%rdx), %ecx + cvtsi2sd %ecx, %xmm7 + subsd %xmm8, %xmm3 + mulsd %xmm6, %xmm8 + mulsd %xmm7, %xmm9 + subsd 1624+__dlog10_la_CoutTab(%rip), %xmm8 + mulsd %xmm3, %xmm6 + mulsd %xmm0, %xmm7 + addsd 8(%r10,%r9,8), %xmm9 + addsd 16(%r10,%r9,8), %xmm7 + addsd %xmm8, %xmm9 + movaps %xmm8, %xmm4 + addsd %xmm6, %xmm4 + mulsd %xmm4, %xmm5 + addsd 1680+__dlog10_la_CoutTab(%rip), %xmm5 + mulsd %xmm4, %xmm5 + addsd 1672+__dlog10_la_CoutTab(%rip), %xmm5 + mulsd %xmm4, %xmm5 + addsd 1664+__dlog10_la_CoutTab(%rip), %xmm5 + mulsd %xmm4, %xmm5 + addsd 1656+__dlog10_la_CoutTab(%rip), %xmm5 + mulsd %xmm4, %xmm5 + addsd 1648+__dlog10_la_CoutTab(%rip), %xmm5 + mulsd %xmm4, %xmm5 + addsd 1640+__dlog10_la_CoutTab(%rip), %xmm5 + mulsd %xmm4, %xmm5 + addsd 1632+__dlog10_la_CoutTab(%rip), %xmm5 + mulsd %xmm5, %xmm8 + mulsd %xmm6, %xmm5 + addsd %xmm5, %xmm7 + addsd %xmm6, %xmm7 + addsd %xmm7, %xmm8 + addsd %xmm8, %xmm9 + movsd %xmm9, (%rsi) + ret + +.LBL_2_7: + + movsd 1624+__dlog10_la_CoutTab(%rip), %xmm0 + mulsd %xmm0, %xmm1 + movsd 1688+__dlog10_la_CoutTab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1680+__dlog10_la_CoutTab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1672+__dlog10_la_CoutTab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1664+__dlog10_la_CoutTab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1656+__dlog10_la_CoutTab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1648+__dlog10_la_CoutTab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1640+__dlog10_la_CoutTab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1632+__dlog10_la_CoutTab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd %xmm1, %xmm2 + movsd %xmm2, (%rsi) + ret + +.LBL_2_8: + + ucomisd %xmm0, %xmm2 + jp .LBL_2_9 + je .LBL_2_11 + +.LBL_2_9: + + divsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + movl $1, %eax + + + ret + +.LBL_2_11: + + movsd 1616+__dlog10_la_CoutTab(%rip), %xmm1 + movl $2, %eax + xorps .L_2il0floatpacket.88(%rip), %xmm1 + divsd %xmm0, %xmm1 + movsd %xmm1, (%rsi) + ret + +.LBL_2_12: + + movb 7(%rdi), %dl + andb $-128, %dl + cmpb $-128, %dl + je .LBL_2_14 + +.LBL_2_13: + + movsd (%rdi), %xmm0 + mulsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_14: + + testl $1048575, 4(%rdi) + jne .LBL_2_13 + + + cmpl $0, (%rdi) + jne .LBL_2_13 + + + movsd 1608+__dlog10_la_CoutTab(%rip), %xmm0 + movl $1, %eax + divsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_dlog10_cout_rare_internal,@function + .size __svml_dlog10_cout_rare_internal,.-__svml_dlog10_cout_rare_internal +..LN__svml_dlog10_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_dlog10_data_internal_avx512: + .long 0 + .long 0 + .long 721479184 + .long 3214603769 + .long 3590975466 + .long 3215601833 + .long 1438937368 + .long 3216186160 + .long 948324365 + .long 3216559896 + .long 2869828094 + .long 3216915393 + .long 516509563 + .long 3217142759 + .long 2145647618 + .long 3217304702 + .long 733771779 + .long 1069546492 + .long 3513866211 + .long 1069249052 + .long 3459676924 + .long 1068963280 + .long 1085767695 + .long 1068688295 + .long 3613830132 + .long 1068347678 + .long 1803457173 + .long 1067836310 + .long 3436756955 + .long 1067234191 + .long 930630721 + .long 1066155272 + .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 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 675808112 + .long 1068024536 + .long 675808112 + .long 1068024536 + .long 675808112 + .long 1068024536 + .long 675808112 + .long 1068024536 + .long 675808112 + .long 1068024536 + .long 675808112 + .long 1068024536 + .long 675808112 + .long 1068024536 + .long 675808112 + .long 1068024536 + .long 2516752404 + .long 3215710221 + .long 2516752404 + .long 3215710221 + .long 2516752404 + .long 3215710221 + .long 2516752404 + .long 3215710221 + .long 2516752404 + .long 3215710221 + .long 2516752404 + .long 3215710221 + .long 2516752404 + .long 3215710221 + .long 2516752404 + .long 3215710221 + .long 4085995682 + .long 1068483574 + .long 4085995682 + .long 1068483574 + .long 4085995682 + .long 1068483574 + .long 4085995682 + .long 1068483574 + .long 4085995682 + .long 1068483574 + .long 4085995682 + .long 1068483574 + .long 4085995682 + .long 1068483574 + .long 4085995682 + .long 1068483574 + .long 879025280 + .long 3216148390 + .long 879025280 + .long 3216148390 + .long 879025280 + .long 3216148390 + .long 879025280 + .long 3216148390 + .long 879025280 + .long 3216148390 + .long 879025280 + .long 3216148390 + .long 879025280 + .long 3216148390 + .long 879025280 + .long 3216148390 + .long 2004821977 + .long 1068907618 + .long 2004821977 + .long 1068907618 + .long 2004821977 + .long 1068907618 + .long 2004821977 + .long 1068907618 + .long 2004821977 + .long 1068907618 + .long 2004821977 + .long 1068907618 + .long 2004821977 + .long 1068907618 + .long 2004821977 + .long 1068907618 + .long 356255395 + .long 3216755579 + .long 356255395 + .long 3216755579 + .long 356255395 + .long 3216755579 + .long 356255395 + .long 3216755579 + .long 356255395 + .long 3216755579 + .long 356255395 + .long 3216755579 + .long 356255395 + .long 3216755579 + .long 356255395 + .long 3216755579 + .long 1668235916 + .long 1069713319 + .long 1668235916 + .long 1069713319 + .long 1668235916 + .long 1069713319 + .long 1668235916 + .long 1069713319 + .long 1668235916 + .long 1069713319 + .long 1668235916 + .long 1069713319 + .long 1668235916 + .long 1069713319 + .long 1668235916 + .long 1069713319 + .long 354870491 + .long 3217804155 + .long 354870491 + .long 3217804155 + .long 354870491 + .long 3217804155 + .long 354870491 + .long 3217804155 + .long 354870491 + .long 3217804155 + .long 354870491 + .long 3217804155 + .long 354870491 + .long 3217804155 + .long 354870491 + .long 3217804155 + .long 354870542 + .long 1071369083 + .long 354870542 + .long 1071369083 + .long 354870542 + .long 1071369083 + .long 354870542 + .long 1071369083 + .long 354870542 + .long 1071369083 + .long 354870542 + .long 1071369083 + .long 354870542 + .long 1071369083 + .long 354870542 + .long 1071369083 + .long 1352628735 + .long 1070810131 + .long 1352628735 + .long 1070810131 + .long 1352628735 + .long 1070810131 + .long 1352628735 + .long 1070810131 + .long 1352628735 + .long 1070810131 + .long 1352628735 + .long 1070810131 + .long 1352628735 + .long 1070810131 + .long 1352628735 + .long 1070810131 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .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 + .type __svml_dlog10_data_internal_avx512,@object + .size __svml_dlog10_data_internal_avx512,1152 + .align 32 +__dlog10_la_CoutTab: + .long 0 + .long 1071366144 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1071337728 + .long 184549376 + .long 1065092008 + .long 2099961998 + .long 3178897324 + .long 0 + .long 1071309312 + .long 931135488 + .long 1066155272 + .long 2365712557 + .long 3178155773 + .long 0 + .long 1071280896 + .long 603979776 + .long 1066752445 + .long 709057215 + .long 1031474920 + .long 0 + .long 1071252480 + .long 3437232128 + .long 1067234191 + .long 1515412199 + .long 3179085970 + .long 0 + .long 1071238272 + .long 1105723392 + .long 1067464226 + .long 153915826 + .long 3178000698 + .long 0 + .long 1071209856 + .long 3328442368 + .long 1067711223 + .long 3899912278 + .long 3177135692 + .long 0 + .long 1071181440 + .long 341835776 + .long 1067962480 + .long 2509208190 + .long 3176531222 + .long 0 + .long 1071167232 + .long 2884632576 + .long 1068089751 + .long 1030636902 + .long 1025224143 + .long 0 + .long 1071138816 + .long 3613917184 + .long 1068347678 + .long 3527163461 + .long 3177529532 + .long 0 + .long 1071124608 + .long 3549954048 + .long 1068478374 + .long 3498894081 + .long 3173000425 + .long 0 + .long 1071096192 + .long 1623785472 + .long 1068621140 + .long 2889825554 + .long 3176375375 + .long 0 + .long 1071081984 + .long 1085800448 + .long 1068688295 + .long 4015256301 + .long 3177184346 + .long 0 + .long 1071053568 + .long 3652976640 + .long 1068824490 + .long 3600693529 + .long 3175753877 + .long 0 + .long 1071039360 + .long 1592393728 + .long 1068893555 + .long 231073830 + .long 3177087939 + .long 0 + .long 1071025152 + .long 3459645440 + .long 1068963280 + .long 1740576090 + .long 1029619435 + .long 0 + .long 1070996736 + .long 3774611456 + .long 1069104765 + .long 3858552785 + .long 1028603845 + .long 0 + .long 1070982528 + .long 845086720 + .long 1069176552 + .long 3138879731 + .long 1029120443 + .long 0 + .long 1070968320 + .long 3513843712 + .long 1069249052 + .long 2107125367 + .long 1029044389 + .long 0 + .long 1070954112 + .long 434503680 + .long 1069322282 + .long 3827602229 + .long 1028932700 + .long 0 + .long 1070939904 + .long 3613851648 + .long 1069396254 + .long 1223751955 + .long 3176465139 + .long 0 + .long 1070911488 + .long 733741056 + .long 1069546492 + .long 1625232067 + .long 1029570781 + .long 0 + .long 1070897280 + .long 1511620608 + .long 1069585154 + .long 3044605139 + .long 1028090775 + .long 0 + .long 1070883072 + .long 1337196544 + .long 1069623706 + .long 2602639001 + .long 3175938675 + .long 0 + .long 1070868864 + .long 2572533760 + .long 1069662670 + .long 3067107955 + .long 1022933137 + .long 0 + .long 1070854656 + .long 559611904 + .long 1069702056 + .long 764145786 + .long 3174041535 + .long 0 + .long 1070840448 + .long 485818368 + .long 1069741872 + .long 2037567072 + .long 3175580956 + .long 0 + .long 1070826240 + .long 259604480 + .long 1069782128 + .long 4012068429 + .long 1027865895 + .long 0 + .long 1070812032 + .long 3454042112 + .long 1069822833 + .long 2867680007 + .long 3174202478 + .long 0 + .long 1070797824 + .long 2188754944 + .long 1069863999 + .long 2538655286 + .long 3175840981 + .long 0 + .long 1070783616 + .long 2965241856 + .long 1069905635 + .long 1338936972 + .long 3176093950 + .long 0 + .long 1070769408 + .long 966279168 + .long 1069947753 + .long 1774547674 + .long 3175051484 + .long 0 + .long 1070755200 + .long 1604042752 + .long 1069990363 + .long 2557470738 + .long 3174667448 + .long 0 + .long 1070740992 + .long 3417833472 + .long 1070033477 + .long 2268255117 + .long 3175678264 + .long 0 + .long 1070740992 + .long 3417833472 + .long 1070033477 + .long 2268255117 + .long 3175678264 + .long 0 + .long 1070726784 + .long 2451292160 + .long 1070077108 + .long 3757728941 + .long 1027943275 + .long 0 + .long 1070712576 + .long 929644544 + .long 1070121268 + .long 899045708 + .long 1027944939 + .long 0 + .long 1070698368 + .long 3057254400 + .long 1070165969 + .long 3880649376 + .long 3172972504 + .long 0 + .long 1070684160 + .long 2231091200 + .long 1070211226 + .long 521319256 + .long 1027600177 + .long 0 + .long 1070684160 + .long 2231091200 + .long 1070211226 + .long 521319256 + .long 1027600177 + .long 0 + .long 1070669952 + .long 2620162048 + .long 1070257052 + .long 1385613369 + .long 3176104036 + .long 0 + .long 1070655744 + .long 2096726016 + .long 1070303462 + .long 3138305819 + .long 3173646777 + .long 0 + .long 1070641536 + .long 944717824 + .long 1070350471 + .long 1065120110 + .long 1027539054 + .long 0 + .long 1070641536 + .long 944717824 + .long 1070350471 + .long 1065120110 + .long 1027539054 + .long 0 + .long 1070627328 + .long 1985789952 + .long 1070398094 + .long 3635943864 + .long 3173136490 + .long 0 + .long 1070613120 + .long 2123825152 + .long 1070446348 + .long 1125219725 + .long 3175615738 + .long 0 + .long 1070598912 + .long 1078378496 + .long 1070495250 + .long 603852726 + .long 3174570526 + .long 0 + .long 1070598912 + .long 1078378496 + .long 1070495250 + .long 603852726 + .long 3174570526 + .long 0 + .long 1070573312 + .long 1537933312 + .long 1070544817 + .long 998069198 + .long 1026662908 + .long 0 + .long 1070544896 + .long 733773824 + .long 1070595068 + .long 4061058002 + .long 3174036009 + .long 0 + .long 1070544896 + .long 733773824 + .long 1070595068 + .long 4061058002 + .long 3174036009 + .long 0 + .long 1070516480 + .long 3897544704 + .long 1070621058 + .long 951856294 + .long 1026731877 + .long 0 + .long 1070516480 + .long 3897544704 + .long 1070621058 + .long 951856294 + .long 1026731877 + .long 0 + .long 1070488064 + .long 493535232 + .long 1070646897 + .long 3852369308 + .long 3173264746 + .long 0 + .long 1070459648 + .long 463249408 + .long 1070673107 + .long 2853152111 + .long 3174564937 + .long 0 + .long 1070459648 + .long 463249408 + .long 1070673107 + .long 2853152111 + .long 3174564937 + .long 0 + .long 1070431232 + .long 3186585600 + .long 1070699699 + .long 1874718356 + .long 3174139933 + .long 0 + .long 1070431232 + .long 3186585600 + .long 1070699699 + .long 1874718356 + .long 3174139933 + .long 0 + .long 1070402816 + .long 1525858304 + .long 1070726686 + .long 3039843523 + .long 1024724665 + .long 0 + .long 1070402816 + .long 1525858304 + .long 1070726686 + .long 3039843523 + .long 1024724665 + .long 0 + .long 1070374400 + .long 3425300480 + .long 1070754078 + .long 1303046649 + .long 1022401701 + .long 0 + .long 1070374400 + .long 3425300480 + .long 1070754078 + .long 1303046649 + .long 1022401701 + .long 0 + .long 1070345984 + .long 1980465152 + .long 1070781889 + .long 3188656319 + .long 1027271390 + .long 0 + .long 1070345984 + .long 1980465152 + .long 1070781889 + .long 3188656319 + .long 1027271390 + .long 0 + .long 1070317568 + .long 1352630272 + .long 1070810131 + .long 3090895658 + .long 3174564915 + .long 1352630272 + .long 1070810131 + .long 3090895658 + .long 3174564915 + .long 64 + .long 1120927744 + .long 0 + .long 1096810496 + .long 0 + .long 1064828928 + .long 0 + .long 1135607808 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 1071366144 + .long 3207479559 + .long 1062894188 + .long 3698831637 + .long 3220339442 + .long 3700832817 + .long 1073506818 + .long 1691624569 + .long 3221787401 + .long 2065628764 + .long 1075227551 + .long 1770847080 + .long 3223701774 + .long 3786517112 + .long 1077250450 + .long 1316351650 + .long 3225793313 + .type __dlog10_la_CoutTab,@object + .size __dlog10_la_CoutTab,1696 + .align 16 +.L_2il0floatpacket.88: + .long 0x00000000,0x80000000,0x00000000,0x00000000 + .type .L_2il0floatpacket.88,@object + .size .L_2il0floatpacket.88,16 + .align 8 +.L_2il0floatpacket.89: + .long 0x00000000,0x3ff00000 + .type .L_2il0floatpacket.89,@object + .size .L_2il0floatpacket.89,8 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_log10_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log10_s_la.s new file mode 100644 index 00000000..4a3dbc96 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log10_s_la.s @@ -0,0 +1,754 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * * log10(x) = VGETEXP(x)*log10(2) + log10(VGETMANT(x)) + * * VGETEXP, VGETMANT will correctly treat special cases too (including denormals) + * * mx = VGETMANT(x) is in [1,2) for all x>=0 + * * log10(mx) = -log10(RCP(mx)) + log10(1 +(mx*RCP(mx)-1)) + * * RCP(mx) is rounded to 4 fractional bits, + * * and the table lookup for log(RCP(mx)) is based on a small permute instruction + * * + * * LA, EP versions use interval interpolation (16 intervals) + * * + * + */ + + + .text +.L_2__routine_start___svml_log10f16_z0_0: + + .align 16,0x90 + .globl __svml_log10f16 + +__svml_log10f16: + + + .cfi_startproc +..L2: + + 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 + +/* GetMant(x), normalized to [.75,1.5) for x>=0, NaN for x<0 */ + vgetmantps $11, {sae}, %zmm0, %zmm3 + vmovups __svml_slog10_data_internal_avx512(%rip), %zmm1 + vgetexpps {sae}, %zmm0, %zmm5 + vmovups 320+__svml_slog10_data_internal_avx512(%rip), %zmm10 + vpsrld $19, %zmm3, %zmm7 + vgetexpps {sae}, %zmm3, %zmm6 + vsubps {rn-sae}, %zmm1, %zmm3, %zmm11 + vpermps 64+__svml_slog10_data_internal_avx512(%rip), %zmm7, %zmm1 + vpermps 128+__svml_slog10_data_internal_avx512(%rip), %zmm7, %zmm2 + vsubps {rn-sae}, %zmm6, %zmm5, %zmm9 + vpermps 192+__svml_slog10_data_internal_avx512(%rip), %zmm7, %zmm4 + vpermps 256+__svml_slog10_data_internal_avx512(%rip), %zmm7, %zmm8 + +/* x<=0? */ + vfpclassps $94, %zmm0, %k0 + vfmadd213ps {rn-sae}, %zmm2, %zmm11, %zmm1 + vmulps {rn-sae}, %zmm10, %zmm9, %zmm12 + vfmadd213ps {rn-sae}, %zmm4, %zmm11, %zmm1 + kmovw %k0, %edx + vfmadd213ps {rn-sae}, %zmm8, %zmm11, %zmm1 + vfmadd213ps {rn-sae}, %zmm12, %zmm11, %zmm1 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + vmovaps %zmm1, %zmm0 + 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 %zmm0, 64(%rsp) + vmovups %zmm1, 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), %zmm1 + 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_slog10_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_log10f16,@function + .size __svml_log10f16,.-__svml_log10f16 +..LN__svml_log10f16.0: + +.L_2__routine_start___svml_slog10_cout_rare_internal_1: + + .align 16,0x90 + +__svml_slog10_cout_rare_internal: + + + .cfi_startproc +..L53: + + xorl %eax, %eax + movzwl 2(%rdi), %edx + andl $32640, %edx + cmpl $32640, %edx + je .LBL_2_12 + + + movss (%rdi), %xmm2 + xorl %ecx, %ecx + movss %xmm2, -16(%rsp) + movzwl -14(%rsp), %edx + testl $32640, %edx + jne .LBL_2_4 + + + mulss .L_2il0floatpacket.77(%rip), %xmm2 + movl $-40, %ecx + movss %xmm2, -16(%rsp) + +.LBL_2_4: + + pxor %xmm0, %xmm0 + comiss %xmm0, %xmm2 + jbe .LBL_2_8 + + + movaps %xmm2, %xmm1 + subss .L_2il0floatpacket.93(%rip), %xmm1 + movss %xmm1, -20(%rsp) + andb $127, -17(%rsp) + movss -20(%rsp), %xmm0 + comiss .L_2il0floatpacket.78(%rip), %xmm0 + jbe .LBL_2_7 + + + movss %xmm2, -20(%rsp) + pxor %xmm8, %xmm8 + movzwl -18(%rsp), %edi + lea __slog10_la_CoutTab(%rip), %r10 + andl $-32641, %edi + addl $16256, %edi + movw %di, -18(%rsp) + movss -20(%rsp), %xmm3 + movaps %xmm3, %xmm0 + movss .L_2il0floatpacket.80(%rip), %xmm2 + movaps %xmm2, %xmm1 + addss .L_2il0floatpacket.79(%rip), %xmm0 + addss %xmm3, %xmm1 + movss %xmm0, -24(%rsp) + movl -24(%rsp), %r8d + movss %xmm1, -24(%rsp) + andl $127, %r8d + movss -24(%rsp), %xmm9 + movss .L_2il0floatpacket.89(%rip), %xmm6 + subss %xmm2, %xmm9 + movzwl -14(%rsp), %edx + lea (%r8,%r8,2), %r9d + movss (%r10,%r9,4), %xmm7 + andl $32640, %edx + shrl $7, %edx + subss %xmm9, %xmm3 + mulss %xmm7, %xmm9 + mulss %xmm3, %xmm7 + subss .L_2il0floatpacket.81(%rip), %xmm9 + movaps %xmm9, %xmm4 + lea -127(%rcx,%rdx), %ecx + cvtsi2ss %ecx, %xmm8 + addss %xmm7, %xmm4 + mulss %xmm4, %xmm6 + movss .L_2il0floatpacket.90(%rip), %xmm10 + mulss %xmm8, %xmm10 + addss .L_2il0floatpacket.88(%rip), %xmm6 + addss 4(%r10,%r9,4), %xmm10 + mulss %xmm4, %xmm6 + addss %xmm9, %xmm10 + addss .L_2il0floatpacket.87(%rip), %xmm6 + mulss %xmm4, %xmm6 + movss .L_2il0floatpacket.91(%rip), %xmm5 + mulss %xmm5, %xmm8 + addss .L_2il0floatpacket.86(%rip), %xmm6 + addss 8(%r10,%r9,4), %xmm8 + mulss %xmm4, %xmm6 + addss .L_2il0floatpacket.85(%rip), %xmm6 + mulss %xmm4, %xmm6 + addss .L_2il0floatpacket.84(%rip), %xmm6 + mulss %xmm4, %xmm6 + addss .L_2il0floatpacket.83(%rip), %xmm6 + mulss %xmm4, %xmm6 + addss .L_2il0floatpacket.82(%rip), %xmm6 + mulss %xmm6, %xmm9 + mulss %xmm7, %xmm6 + addss %xmm6, %xmm8 + addss %xmm7, %xmm8 + addss %xmm8, %xmm9 + addss %xmm9, %xmm10 + movss %xmm10, (%rsi) + ret + +.LBL_2_7: + + movss .L_2il0floatpacket.81(%rip), %xmm0 + mulss %xmm0, %xmm1 + movss .L_2il0floatpacket.89(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss .L_2il0floatpacket.88(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss .L_2il0floatpacket.87(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss .L_2il0floatpacket.86(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss .L_2il0floatpacket.85(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss .L_2il0floatpacket.84(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss .L_2il0floatpacket.83(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss .L_2il0floatpacket.82(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss %xmm1, %xmm2 + movss %xmm2, (%rsi) + ret + +.LBL_2_8: + + ucomiss %xmm0, %xmm2 + jp .LBL_2_9 + je .LBL_2_11 + +.LBL_2_9: + + divss %xmm0, %xmm0 + movss %xmm0, (%rsi) + movl $1, %eax + + + ret + +.LBL_2_11: + + movss .L_2il0floatpacket.92(%rip), %xmm1 + movl $2, %eax + divss %xmm0, %xmm1 + movss %xmm1, (%rsi) + ret + +.LBL_2_12: + + movb 3(%rdi), %dl + andb $-128, %dl + cmpb $-128, %dl + je .LBL_2_14 + +.LBL_2_13: + + movss (%rdi), %xmm0 + mulss %xmm0, %xmm0 + movss %xmm0, (%rsi) + ret + +.LBL_2_14: + + testl $8388607, (%rdi) + jne .LBL_2_13 + + + movl $1, %eax + pxor %xmm1, %xmm1 + pxor %xmm0, %xmm0 + divss %xmm0, %xmm1 + movss %xmm1, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_slog10_cout_rare_internal,@function + .size __svml_slog10_cout_rare_internal,.-__svml_slog10_cout_rare_internal +..LN__svml_slog10_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_slog10_data_internal_avx512: + .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 3184111259 + .long 3181837556 + .long 3180047478 + .long 3177957936 + .long 3175655835 + .long 3173780127 + .long 3172237531 + .long 3170958066 + .long 3196205737 + .long 3194315592 + .long 3192585145 + .long 3191105685 + .long 3189833727 + .long 3188734475 + .long 3187779868 + .long 3186223182 + .long 1041488008 + .long 1041279100 + .long 1040946627 + .long 1040547595 + .long 1040048184 + .long 1039171801 + .long 1038306334 + .long 1037468467 + .long 1034710670 + .long 1037388369 + .long 1039339328 + .long 1040458589 + .long 1040937011 + .long 1041247376 + .long 1041427373 + .long 1041506296 + .long 3193854619 + .long 3193841271 + .long 3193799669 + .long 3193724950 + .long 3193617675 + .long 3193480957 + .long 3193318914 + .long 3193135864 + .long 3194544764 + .long 3194251079 + .long 3194067571 + .long 3193958490 + .long 3193898352 + .long 3193869008 + .long 3193857579 + .long 3193854984 + .long 1054759896 + .long 1054759749 + .long 1054758872 + .long 1054756529 + .long 1054752055 + .long 1054744934 + .long 1054734809 + .long 1054721467 + .long 1054738669 + .long 1054749415 + .long 1054755175 + .long 1054758032 + .long 1054759295 + .long 1054759760 + .long 1054759882 + .long 1054759897 + .long 1050288283 + .long 1050288283 + .long 1050288283 + .long 1050288283 + .long 1050288283 + .long 1050288283 + .long 1050288283 + .long 1050288283 + .long 1050288283 + .long 1050288283 + .long 1050288283 + .long 1050288283 + .long 1050288283 + .long 1050288283 + .long 1050288283 + .long 1050288283 + .type __svml_slog10_data_internal_avx512,@object + .size __svml_slog10_data_internal_avx512,384 + .align 32 +__slog10_la_CoutTab: + .long 1121868800 + .long 0 + .long 0 + .long 1121641104 + .long 1004535808 + .long 912917177 + .long 1121413408 + .long 1013055488 + .long 3065901602 + .long 1121185712 + .long 1017839616 + .long 3083361151 + .long 1120958016 + .long 1021673472 + .long 929297206 + .long 1120844168 + .long 1023524864 + .long 3077496589 + .long 1120616472 + .long 1025499136 + .long 3070500046 + .long 1120388776 + .long 1027506176 + .long 912271551 + .long 1120274928 + .long 1028521984 + .long 927716856 + .long 1120047232 + .long 1030586368 + .long 923757491 + .long 1119933384 + .long 1031634944 + .long 3056752848 + .long 1119705688 + .long 1032775680 + .long 917029265 + .long 1119591840 + .long 1033314304 + .long 3065085585 + .long 1119364144 + .long 1034403840 + .long 3064614024 + .long 1119250296 + .long 1034954752 + .long 921091539 + .long 1119136448 + .long 1035513856 + .long 3057436454 + .long 1118908752 + .long 1036644352 + .long 922468856 + .long 1118794904 + .long 1037219840 + .long 3049155845 + .long 1118681056 + .long 1037799424 + .long 904301451 + .long 1118567208 + .long 1038385152 + .long 908617625 + .long 1118453360 + .long 1038977024 + .long 905362229 + .long 1118225664 + .long 1040179200 + .long 3027570914 + .long 1118111816 + .long 1040488448 + .long 882280038 + .long 1117997968 + .long 1040796672 + .long 911375775 + .long 1117884120 + .long 1041108480 + .long 904500572 + .long 1117770272 + .long 1041423872 + .long 3057579304 + .long 1117656424 + .long 1041742336 + .long 3053334705 + .long 1117542576 + .long 1042064384 + .long 3053389931 + .long 1117428728 + .long 1042390016 + .long 3051561465 + .long 1117314880 + .long 1042719232 + .long 3011187895 + .long 1117201032 + .long 1043052544 + .long 3059907089 + .long 1117087184 + .long 1043389440 + .long 3057005374 + .long 1116973336 + .long 1043729920 + .long 911932638 + .long 1116859488 + .long 1044075008 + .long 892958461 + .long 1116859488 + .long 1044075008 + .long 892958461 + .long 1116745640 + .long 1044424192 + .long 3048660547 + .long 1116631792 + .long 1044777472 + .long 3049032043 + .long 1116517944 + .long 1045134848 + .long 906867152 + .long 1116404096 + .long 1045496832 + .long 911484894 + .long 1116404096 + .long 1045496832 + .long 911484894 + .long 1116290248 + .long 1045863424 + .long 912580963 + .long 1116176400 + .long 1046235136 + .long 3058440244 + .long 1116062552 + .long 1046610944 + .long 895945194 + .long 1116062552 + .long 1046610944 + .long 895945194 + .long 1115948704 + .long 1046991872 + .long 904357324 + .long 1115834856 + .long 1047377920 + .long 902293870 + .long 1115721008 + .long 1047769088 + .long 907149878 + .long 1115721008 + .long 1047769088 + .long 907149878 + .long 1115529456 + .long 1048165888 + .long 3052029263 + .long 1115301760 + .long 1048567808 + .long 3035959522 + .long 1115301760 + .long 1048567808 + .long 3035959522 + .long 1115074064 + .long 1048775680 + .long 892998645 + .long 1115074064 + .long 1048775680 + .long 892998645 + .long 1114846368 + .long 1048982400 + .long 881767775 + .long 1114618672 + .long 1049192064 + .long 893839142 + .long 1114618672 + .long 1049192064 + .long 893839142 + .long 1114390976 + .long 1049404800 + .long 896498651 + .long 1114390976 + .long 1049404800 + .long 896498651 + .long 1114163280 + .long 1049620736 + .long 3033695903 + .long 1114163280 + .long 1049620736 + .long 3033695903 + .long 1113935584 + .long 1049839872 + .long 3029986056 + .long 1113935584 + .long 1049839872 + .long 3029986056 + .long 1113707888 + .long 1050062336 + .long 884671939 + .long 1113707888 + .long 1050062336 + .long 884671939 + .long 1113480192 + .long 1050288256 + .long 894707678 + .long 1050279936 + .long 964848148 + .long 1207959616 + .long 1174405120 + .long 1002438656 + .long 1400897536 + .long 0 + .long 1065353216 + .long 1121868800 + .long 3212771328 + .long 3079888218 + .long 870463078 + .long 2957202361 + .long 749987585 + .long 2838272395 + .long 631921661 + .long 2720751022 + .type __slog10_la_CoutTab,@object + .size __slog10_la_CoutTab,848 + .align 4 +.L_2il0floatpacket.77: + .long 0x53800000 + .type .L_2il0floatpacket.77,@object + .size .L_2il0floatpacket.77,4 + .align 4 +.L_2il0floatpacket.78: + .long 0x3bc00000 + .type .L_2il0floatpacket.78,@object + .size .L_2il0floatpacket.78,4 + .align 4 +.L_2il0floatpacket.79: + .long 0x48000040 + .type .L_2il0floatpacket.79,@object + .size .L_2il0floatpacket.79,4 + .align 4 +.L_2il0floatpacket.80: + .long 0x46000000 + .type .L_2il0floatpacket.80,@object + .size .L_2il0floatpacket.80,4 + .align 4 +.L_2il0floatpacket.81: + .long 0x42de5c00 + .type .L_2il0floatpacket.81,@object + .size .L_2il0floatpacket.81,4 + .align 4 +.L_2il0floatpacket.82: + .long 0xbf7f0000 + .type .L_2il0floatpacket.82,@object + .size .L_2il0floatpacket.82,4 + .align 4 +.L_2il0floatpacket.83: + .long 0xb7935d5a + .type .L_2il0floatpacket.83,@object + .size .L_2il0floatpacket.83,4 + .align 4 +.L_2il0floatpacket.84: + .long 0x33e23666 + .type .L_2il0floatpacket.84,@object + .size .L_2il0floatpacket.84,4 + .align 4 +.L_2il0floatpacket.85: + .long 0xb04353b9 + .type .L_2il0floatpacket.85,@object + .size .L_2il0floatpacket.85,4 + .align 4 +.L_2il0floatpacket.86: + .long 0x2cb3e701 + .type .L_2il0floatpacket.86,@object + .size .L_2il0floatpacket.86,4 + .align 4 +.L_2il0floatpacket.87: + .long 0xa92c998b + .type .L_2il0floatpacket.87,@object + .size .L_2il0floatpacket.87,4 + .align 4 +.L_2il0floatpacket.88: + .long 0x25aa5bfd + .type .L_2il0floatpacket.88,@object + .size .L_2il0floatpacket.88,4 + .align 4 +.L_2il0floatpacket.89: + .long 0xa22b5dae + .type .L_2il0floatpacket.89,@object + .size .L_2il0floatpacket.89,4 + .align 4 +.L_2il0floatpacket.90: + .long 0x3e9a0000 + .type .L_2il0floatpacket.90,@object + .size .L_2il0floatpacket.90,4 + .align 4 +.L_2il0floatpacket.91: + .long 0x39826a14 + .type .L_2il0floatpacket.91,@object + .size .L_2il0floatpacket.91,4 + .align 4 +.L_2il0floatpacket.92: + .long 0xbf800000 + .type .L_2il0floatpacket.92,@object + .size .L_2il0floatpacket.92,4 + .align 4 +.L_2il0floatpacket.93: + .long 0x3f800000 + .type .L_2il0floatpacket.93,@object + .size .L_2il0floatpacket.93,4 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_log1p_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log1p_d_la.s new file mode 100644 index 00000000..6073965a --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log1p_d_la.s @@ -0,0 +1,1132 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * * Compute 1+_VARG1 in high-low parts. The low part will be + * * incorporated in the reduced argument (with proper scaling). + * * log(x) = VGETEXP(x)*log(2) + log(VGETMANT(x)) + * * VGETEXP, VGETMANT will correctly treat special cases too (including denormals) + * * mx = VGETMANT(x) is in [1,2) for all x>=0 + * * log(mx) = -log(RCP(mx)) + log(1 +(mx*RCP(mx)-1)) + * * RCP(mx) is rounded to 4 fractional bits, + * * and the table lookup for log(RCP(mx)) is based on a small permute instruction + * * + * + */ + + + .text +.L_2__routine_start___svml_log1p8_z0_0: + + .align 16,0x90 + .globl __svml_log1p8 + +__svml_log1p8: + + + .cfi_startproc +..L2: + + 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 128+__svml_dlog1p_data_internal_avx512(%rip), %zmm7 + vmovups 192+__svml_dlog1p_data_internal_avx512(%rip), %zmm14 + vmovaps %zmm0, %zmm9 + vaddpd {rn-sae}, %zmm9, %zmm7, %zmm11 + vandpd %zmm14, %zmm9, %zmm8 + +/* compute 1+x as high, low parts */ + vmaxpd {sae}, %zmm9, %zmm7, %zmm10 + vminpd {sae}, %zmm9, %zmm7, %zmm12 + +/* GetMant(x), normalized to [1,2) for x>=0, NaN for x<0 */ + vgetmantpd $8, {sae}, %zmm11, %zmm6 + +/* GetExp(x) */ + vgetexppd {sae}, %zmm11, %zmm5 + vsubpd {rn-sae}, %zmm10, %zmm11, %zmm13 + +/* DblRcp ~ 1/Mantissa */ + vrcp14pd %zmm6, %zmm15 + +/* Start polynomial evaluation */ + vmovups 320+__svml_dlog1p_data_internal_avx512(%rip), %zmm10 + vmovups 448+__svml_dlog1p_data_internal_avx512(%rip), %zmm11 + +/* Xl */ + vsubpd {rn-sae}, %zmm13, %zmm12, %zmm2 + vxorpd %zmm14, %zmm5, %zmm3 + +/* round DblRcp to 4 fractional bits (RN mode, no Precision exception) */ + vrndscalepd $88, {sae}, %zmm15, %zmm4 + vmovups 576+__svml_dlog1p_data_internal_avx512(%rip), %zmm12 + vmovups 512+__svml_dlog1p_data_internal_avx512(%rip), %zmm14 + vmovups 704+__svml_dlog1p_data_internal_avx512(%rip), %zmm13 + +/* Xl*2^(-Expon) */ + vscalefpd {rn-sae}, %zmm3, %zmm2, %zmm1 + +/* Reduced argument: R = DblRcp*(Mantissa+Xl) - 1 */ + vfmsub213pd {rn-sae}, %zmm7, %zmm4, %zmm6 + vmovups __svml_dlog1p_data_internal_avx512(%rip), %zmm3 + +/* + * Table lookup + * Prepare exponent correction: DblRcp<0.75? + */ + vmovups 256+__svml_dlog1p_data_internal_avx512(%rip), %zmm2 + +/* Prepare table index */ + vpsrlq $48, %zmm4, %zmm0 + vfmadd231pd {rn-sae}, %zmm4, %zmm1, %zmm6 + vmovups 384+__svml_dlog1p_data_internal_avx512(%rip), %zmm1 + vcmppd $17, {sae}, %zmm2, %zmm4, %k1 + vcmppd $4, {sae}, %zmm6, %zmm6, %k0 + vfmadd231pd {rn-sae}, %zmm6, %zmm10, %zmm1 + vmovups 640+__svml_dlog1p_data_internal_avx512(%rip), %zmm10 + vfmadd231pd {rn-sae}, %zmm6, %zmm11, %zmm14 + vmovups 832+__svml_dlog1p_data_internal_avx512(%rip), %zmm4 + vpermt2pd 64+__svml_dlog1p_data_internal_avx512(%rip), %zmm0, %zmm3 + +/* add 1 to Expon if DblRcp<0.75 */ + vaddpd {rn-sae}, %zmm7, %zmm5, %zmm5{%k1} + +/* R^2 */ + vmulpd {rn-sae}, %zmm6, %zmm6, %zmm0 + vfmadd231pd {rn-sae}, %zmm6, %zmm12, %zmm10 + vmovups 768+__svml_dlog1p_data_internal_avx512(%rip), %zmm12 + vmulpd {rn-sae}, %zmm0, %zmm0, %zmm15 + vfmadd231pd {rn-sae}, %zmm6, %zmm13, %zmm12 + vfmadd213pd {rn-sae}, %zmm14, %zmm0, %zmm1 + kmovw %k0, %edx + vfmadd213pd {rn-sae}, %zmm12, %zmm0, %zmm10 + +/* polynomial */ + vfmadd213pd {rn-sae}, %zmm10, %zmm15, %zmm1 + vfmadd213pd {rn-sae}, %zmm6, %zmm0, %zmm1 + vaddpd {rn-sae}, %zmm1, %zmm3, %zmm6 + vfmadd213pd {rn-sae}, %zmm6, %zmm4, %zmm5 + vorpd %zmm8, %zmm5, %zmm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + 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 %zmm9, 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_dlog1p_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_log1p8,@function + .size __svml_log1p8,.-__svml_log1p8 +..LN__svml_log1p8.0: + +.L_2__routine_start___svml_dlog1p_cout_rare_internal_1: + + .align 16,0x90 + +__svml_dlog1p_cout_rare_internal: + + + .cfi_startproc +..L53: + + xorl %eax, %eax + movsd .L_2il0floatpacket.81(%rip), %xmm3 + movsd (%rdi), %xmm2 + addsd %xmm3, %xmm2 + movsd %xmm2, -16(%rsp) + movzwl -10(%rsp), %edx + andl $32752, %edx + cmpl $32752, %edx + je .LBL_2_12 + + + movsd %xmm2, -8(%rsp) + xorl %ecx, %ecx + movzwl -2(%rsp), %edx + testl $32752, %edx + jne .LBL_2_4 + + + mulsd 1600+__dlog1p_la_CoutTab(%rip), %xmm2 + movl $-60, %ecx + movsd %xmm2, -8(%rsp) + +.LBL_2_4: + + movsd 1608+__dlog1p_la_CoutTab(%rip), %xmm0 + comisd %xmm0, %xmm2 + jbe .LBL_2_8 + + + movaps %xmm2, %xmm1 + subsd %xmm3, %xmm1 + movsd %xmm1, -16(%rsp) + andb $127, -9(%rsp) + movsd -16(%rsp), %xmm0 + comisd 1592+__dlog1p_la_CoutTab(%rip), %xmm0 + jbe .LBL_2_7 + + + movsd %xmm2, -16(%rsp) + pxor %xmm7, %xmm7 + movzwl -10(%rsp), %edi + lea __dlog1p_la_CoutTab(%rip), %r10 + andl $-32753, %edi + addl $16368, %edi + movw %di, -10(%rsp) + movsd -16(%rsp), %xmm4 + movaps %xmm4, %xmm1 + movaps %xmm4, %xmm2 + movsd 1672+__dlog1p_la_CoutTab(%rip), %xmm8 + movzwl -2(%rsp), %edx + andl $32752, %edx + addsd 1576+__dlog1p_la_CoutTab(%rip), %xmm1 + addsd 1584+__dlog1p_la_CoutTab(%rip), %xmm2 + movsd %xmm1, -24(%rsp) + movl -24(%rsp), %r8d + movsd %xmm2, -24(%rsp) + andl $127, %r8d + movsd -24(%rsp), %xmm5 + movsd 1560+__dlog1p_la_CoutTab(%rip), %xmm9 + movsd 1568+__dlog1p_la_CoutTab(%rip), %xmm0 + shrl $4, %edx + subsd 1584+__dlog1p_la_CoutTab(%rip), %xmm5 + lea (%r8,%r8,2), %r9d + movsd (%r10,%r9,8), %xmm6 + lea -1023(%rcx,%rdx), %ecx + cvtsi2sd %ecx, %xmm7 + subsd %xmm5, %xmm4 + mulsd %xmm6, %xmm5 + mulsd %xmm7, %xmm9 + subsd %xmm3, %xmm5 + mulsd %xmm4, %xmm6 + mulsd %xmm0, %xmm7 + addsd 8(%r10,%r9,8), %xmm9 + addsd 16(%r10,%r9,8), %xmm7 + addsd %xmm5, %xmm9 + addsd %xmm6, %xmm7 + movaps %xmm5, %xmm3 + addsd %xmm6, %xmm3 + mulsd %xmm3, %xmm8 + addsd 1664+__dlog1p_la_CoutTab(%rip), %xmm8 + mulsd %xmm3, %xmm8 + addsd 1656+__dlog1p_la_CoutTab(%rip), %xmm8 + mulsd %xmm3, %xmm8 + addsd 1648+__dlog1p_la_CoutTab(%rip), %xmm8 + mulsd %xmm3, %xmm8 + addsd 1640+__dlog1p_la_CoutTab(%rip), %xmm8 + mulsd %xmm3, %xmm8 + addsd 1632+__dlog1p_la_CoutTab(%rip), %xmm8 + mulsd %xmm3, %xmm8 + addsd 1624+__dlog1p_la_CoutTab(%rip), %xmm8 + mulsd %xmm3, %xmm8 + mulsd %xmm3, %xmm8 + addsd %xmm7, %xmm8 + addsd %xmm8, %xmm9 + movsd %xmm9, (%rsi) + ret + +.LBL_2_7: + + movsd 1672+__dlog1p_la_CoutTab(%rip), %xmm0 + mulsd %xmm1, %xmm0 + addsd 1664+__dlog1p_la_CoutTab(%rip), %xmm0 + mulsd %xmm1, %xmm0 + addsd 1656+__dlog1p_la_CoutTab(%rip), %xmm0 + mulsd %xmm1, %xmm0 + addsd 1648+__dlog1p_la_CoutTab(%rip), %xmm0 + mulsd %xmm1, %xmm0 + addsd 1640+__dlog1p_la_CoutTab(%rip), %xmm0 + mulsd %xmm1, %xmm0 + addsd 1632+__dlog1p_la_CoutTab(%rip), %xmm0 + mulsd %xmm1, %xmm0 + addsd 1624+__dlog1p_la_CoutTab(%rip), %xmm0 + mulsd %xmm1, %xmm0 + mulsd %xmm1, %xmm0 + addsd %xmm1, %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_8: + + ucomisd %xmm0, %xmm2 + jp .LBL_2_9 + je .LBL_2_11 + +.LBL_2_9: + + divsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + movl $1, %eax + + + ret + +.LBL_2_11: + + movsd 1616+__dlog1p_la_CoutTab(%rip), %xmm1 + movl $2, %eax + xorps .L_2il0floatpacket.80(%rip), %xmm1 + divsd %xmm0, %xmm1 + movsd %xmm1, (%rsi) + ret + +.LBL_2_12: + + movb -9(%rsp), %dl + andb $-128, %dl + cmpb $-128, %dl + je .LBL_2_14 + +.LBL_2_13: + + mulsd %xmm2, %xmm2 + movsd %xmm2, (%rsi) + ret + +.LBL_2_14: + + testl $1048575, -12(%rsp) + jne .LBL_2_13 + + + cmpl $0, -16(%rsp) + jne .LBL_2_13 + + + movsd 1608+__dlog1p_la_CoutTab(%rip), %xmm0 + movl $1, %eax + divsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_dlog1p_cout_rare_internal,@function + .size __svml_dlog1p_cout_rare_internal,.-__svml_dlog1p_cout_rare_internal +..LN__svml_dlog1p_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_dlog1p_data_internal_avx512: + .long 0 + .long 0 + .long 3222364838 + .long 3215919664 + .long 1848308454 + .long 3216910087 + .long 1890030548 + .long 3217424176 + .long 3348797986 + .long 3217854455 + .long 2880153102 + .long 3218171740 + .long 3256639170 + .long 3218366859 + .long 4139503623 + .long 3218553303 + .long 288676754 + .long 1070754146 + .long 1823716217 + .long 1070569756 + .long 1015732707 + .long 1070240749 + .long 1800682930 + .long 1069924160 + .long 2183652476 + .long 1069619086 + .long 1566132617 + .long 1069101918 + .long 3047045639 + .long 1068533144 + .long 2313634884 + .long 1067467101 + .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 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 815627376 + .long 1069318605 + .long 815627376 + .long 1069318605 + .long 815627376 + .long 1069318605 + .long 815627376 + .long 1069318605 + .long 815627376 + .long 1069318605 + .long 815627376 + .long 1069318605 + .long 815627376 + .long 1069318605 + .long 815627376 + .long 1069318605 + .long 2123607906 + .long 3217033013 + .long 2123607906 + .long 3217033013 + .long 2123607906 + .long 3217033013 + .long 2123607906 + .long 3217033013 + .long 2123607906 + .long 3217033013 + .long 2123607906 + .long 3217033013 + .long 2123607906 + .long 3217033013 + .long 2123607906 + .long 3217033013 + .long 2632876527 + .long 1069697314 + .long 2632876527 + .long 1069697314 + .long 2632876527 + .long 1069697314 + .long 2632876527 + .long 1069697314 + .long 2632876527 + .long 1069697314 + .long 2632876527 + .long 1069697314 + .long 2632876527 + .long 1069697314 + .long 2632876527 + .long 1069697314 + .long 4213758726 + .long 3217380691 + .long 4213758726 + .long 3217380691 + .long 4213758726 + .long 3217380691 + .long 4213758726 + .long 3217380691 + .long 4213758726 + .long 3217380691 + .long 4213758726 + .long 3217380691 + .long 4213758726 + .long 3217380691 + .long 4213758726 + .long 3217380691 + .long 2580324188 + .long 1070176665 + .long 2580324188 + .long 1070176665 + .long 2580324188 + .long 1070176665 + .long 2580324188 + .long 1070176665 + .long 2580324188 + .long 1070176665 + .long 2580324188 + .long 1070176665 + .long 2580324188 + .long 1070176665 + .long 2580324188 + .long 1070176665 + .long 787901 + .long 3218079744 + .long 787901 + .long 3218079744 + .long 787901 + .long 3218079744 + .long 787901 + .long 3218079744 + .long 787901 + .long 3218079744 + .long 787901 + .long 3218079744 + .long 787901 + .long 3218079744 + .long 787901 + .long 3218079744 + .long 1431655526 + .long 1070945621 + .long 1431655526 + .long 1070945621 + .long 1431655526 + .long 1070945621 + .long 1431655526 + .long 1070945621 + .long 1431655526 + .long 1070945621 + .long 1431655526 + .long 1070945621 + .long 1431655526 + .long 1070945621 + .long 1431655526 + .long 1070945621 + .long 4294967238 + .long 3219128319 + .long 4294967238 + .long 3219128319 + .long 4294967238 + .long 3219128319 + .long 4294967238 + .long 3219128319 + .long 4294967238 + .long 3219128319 + .long 4294967238 + .long 3219128319 + .long 4294967238 + .long 3219128319 + .long 4294967238 + .long 3219128319 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .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 + .type __svml_dlog1p_data_internal_avx512,@object + .size __svml_dlog1p_data_internal_avx512,1152 + .align 32 +__dlog1p_la_CoutTab: + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1072660480 + .long 1486880768 + .long 1066410070 + .long 1813744607 + .long 3179892593 + .long 0 + .long 1072629760 + .long 377487360 + .long 1067416219 + .long 919019713 + .long 3179241129 + .long 0 + .long 1072599040 + .long 1513619456 + .long 1067944025 + .long 874573033 + .long 3178512940 + .long 0 + .long 1072570368 + .long 3221749760 + .long 1068427825 + .long 4181665006 + .long 3177478212 + .long 0 + .long 1072541696 + .long 4162322432 + .long 1068708823 + .long 627020255 + .long 1028629941 + .long 0 + .long 1072513024 + .long 183107584 + .long 1068957907 + .long 2376703469 + .long 1030233118 + .long 0 + .long 1072486400 + .long 1053425664 + .long 1069192557 + .long 696277142 + .long 1030474863 + .long 0 + .long 1072459776 + .long 3996123136 + .long 1069430535 + .long 2630798680 + .long 1028792016 + .long 0 + .long 1072435200 + .long 3452764160 + .long 1069600382 + .long 624954044 + .long 3177101741 + .long 0 + .long 1072409600 + .long 207650816 + .long 1069717971 + .long 3272735636 + .long 3175176575 + .long 0 + .long 1072386048 + .long 2647228416 + .long 1069827627 + .long 3594228712 + .long 1029303785 + .long 0 + .long 1072362496 + .long 2712010752 + .long 1069938736 + .long 3653242769 + .long 3176839013 + .long 0 + .long 1072338944 + .long 374439936 + .long 1070051337 + .long 4072775574 + .long 3176577495 + .long 0 + .long 1072316416 + .long 3707174912 + .long 1070160474 + .long 1486946159 + .long 1023930920 + .long 0 + .long 1072294912 + .long 1443954688 + .long 1070265993 + .long 293532967 + .long 3176278277 + .long 0 + .long 1072273408 + .long 127762432 + .long 1070372856 + .long 3404145447 + .long 3177023955 + .long 0 + .long 1072252928 + .long 2053832704 + .long 1070475911 + .long 1575076358 + .long 1029048544 + .long 0 + .long 1072232448 + .long 3194093568 + .long 1070580248 + .long 1864169120 + .long 1026866084 + .long 0 + .long 1072212992 + .long 3917201408 + .long 1070638340 + .long 2362145246 + .long 3175606197 + .long 0 + .long 1072193536 + .long 3417112576 + .long 1070689116 + .long 70087871 + .long 3174183577 + .long 0 + .long 1072175104 + .long 4226777088 + .long 1070737793 + .long 1620410586 + .long 3174700065 + .long 0 + .long 1072156672 + .long 3168870400 + .long 1070787042 + .long 311238082 + .long 1025781772 + .long 0 + .long 1072139264 + .long 2150580224 + .long 1070834092 + .long 1664262457 + .long 3175299224 + .long 0 + .long 1072120832 + .long 4095672320 + .long 1070884491 + .long 1657121015 + .long 3174674199 + .long 0 + .long 1072104448 + .long 2595577856 + .long 1070929805 + .long 2014006823 + .long 3175423830 + .long 0 + .long 1072087040 + .long 3747176448 + .long 1070978493 + .long 144991708 + .long 3171552042 + .long 0 + .long 1072070656 + .long 1050435584 + .long 1071024840 + .long 3386227432 + .long 1027876916 + .long 0 + .long 1072055296 + .long 255516672 + .long 1071068760 + .long 2637594316 + .long 1028049573 + .long 0 + .long 1072038912 + .long 1640783872 + .long 1071116120 + .long 893247007 + .long 1028452162 + .long 0 + .long 1072023552 + .long 2940411904 + .long 1071161011 + .long 813240633 + .long 1027664048 + .long 0 + .long 1072009216 + .long 882917376 + .long 1071203348 + .long 2376597551 + .long 3175828767 + .long 0 + .long 1071993856 + .long 213966848 + .long 1071249188 + .long 2977204125 + .long 1028350609 + .long 0 + .long 1071979520 + .long 2921504768 + .long 1071292428 + .long 523218347 + .long 1028007004 + .long 0 + .long 1071965184 + .long 3186655232 + .long 1071336119 + .long 2352907891 + .long 1026967097 + .long 0 + .long 1071951872 + .long 2653364224 + .long 1071377101 + .long 2453418583 + .long 3174349512 + .long 0 + .long 1071938560 + .long 3759783936 + .long 1071418487 + .long 3685870403 + .long 3175415611 + .long 0 + .long 1071925248 + .long 2468364288 + .long 1071460286 + .long 1578908842 + .long 3175510517 + .long 0 + .long 1071911936 + .long 81903616 + .long 1071502506 + .long 770710269 + .long 1026742353 + .long 0 + .long 1071899648 + .long 2799321088 + .long 1071541858 + .long 3822266185 + .long 1028434427 + .long 0 + .long 1071886336 + .long 2142265344 + .long 1071584911 + .long 175901806 + .long 3173871540 + .long 0 + .long 1071874048 + .long 2944024576 + .long 1071625048 + .long 2747360403 + .long 1027672159 + .long 0 + .long 1071862784 + .long 3434301440 + .long 1071653426 + .long 4194662196 + .long 3173893003 + .long 0 + .long 1071850496 + .long 1547755520 + .long 1071673870 + .long 4248764681 + .long 3172759087 + .long 0 + .long 1071839232 + .long 4246986752 + .long 1071692786 + .long 2840205638 + .long 3174430911 + .long 0 + .long 1071826944 + .long 3418390528 + .long 1071713619 + .long 3041880823 + .long 1025440860 + .long 0 + .long 1071816704 + .long 4143093760 + .long 1071731139 + .long 2727587401 + .long 3173965207 + .long 0 + .long 1071805440 + .long 3121326080 + .long 1071750582 + .long 3173887692 + .long 3174190163 + .long 0 + .long 1071794176 + .long 1852893184 + .long 1071770207 + .long 3951060252 + .long 1027348295 + .long 0 + .long 1071783936 + .long 3636379648 + .long 1071788208 + .long 1684924001 + .long 3174777086 + .long 0 + .long 1071773696 + .long 516505600 + .long 1071806366 + .long 429181199 + .long 3173211033 + .long 0 + .long 1071763456 + .long 4186185728 + .long 1071824681 + .long 2044904577 + .long 3174967132 + .long 0 + .long 1071753216 + .long 877596672 + .long 1071843159 + .long 1396318105 + .long 3173959727 + .long 0 + .long 1071742976 + .long 2912784384 + .long 1071861800 + .long 448136789 + .long 3174814192 + .long 0 + .long 1071733760 + .long 3722825728 + .long 1071878720 + .long 714165913 + .long 3173439560 + .long 0 + .long 1071723520 + .long 2522374144 + .long 1071897682 + .long 3227240353 + .long 3173394323 + .long 0 + .long 1071714304 + .long 4165410816 + .long 1071914895 + .long 1365684961 + .long 3174365060 + .long 0 + .long 1071705088 + .long 3477135360 + .long 1071932251 + .long 368482985 + .long 3174140821 + .long 0 + .long 1071695872 + .long 2079455232 + .long 1071949752 + .long 1320576317 + .long 1026822714 + .long 0 + .long 1071687680 + .long 851795968 + .long 1071965432 + .long 3702467026 + .long 1025224125 + .long 0 + .long 1071678464 + .long 647743488 + .long 1071983213 + .long 772992109 + .long 3174038459 + .long 0 + .long 1071670272 + .long 26537984 + .long 1071999146 + .long 2360214276 + .long 3174861275 + .long 0 + .long 1071661056 + .long 1547061248 + .long 1072017216 + .long 2886781435 + .long 1026423395 + .long 0 + .long 1071652864 + .long 2854492160 + .long 1072033410 + .long 215631550 + .long 1025638968 + .long 0 + .long 1071644672 + .long 4277811200 + .long 1072049730 + .long 2479318832 + .long 1026487127 + .long 4277811200 + .long 1072049730 + .long 2479318832 + .long 1026487127 + .long 64 + .long 1120927744 + .long 0 + .long 1094713344 + .long 0 + .long 1065615360 + .long 0 + .long 1135607808 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 3219128320 + .long 1431655955 + .long 1070945621 + .long 610 + .long 3218079744 + .long 2545118337 + .long 1070176665 + .long 1378399119 + .long 3217380693 + .long 612435357 + .long 1069697472 + .long 94536557 + .long 3217031348 + .type __dlog1p_la_CoutTab,@object + .size __dlog1p_la_CoutTab,1680 + .align 16 +.L_2il0floatpacket.80: + .long 0x00000000,0x80000000,0x00000000,0x00000000 + .type .L_2il0floatpacket.80,@object + .size .L_2il0floatpacket.80,16 + .align 8 +.L_2il0floatpacket.81: + .long 0x00000000,0x3ff00000 + .type .L_2il0floatpacket.81,@object + .size .L_2il0floatpacket.81,8 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_log1p_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log1p_s_la.s new file mode 100644 index 00000000..c6eeec2a --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log1p_s_la.s @@ -0,0 +1,1650 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + + + .text +.L_2__routine_start___svml_log1pf16_z0_0: + + .align 16,0x90 + .globl __svml_log1pf16 + +__svml_log1pf16: + + + .cfi_startproc +..L2: + + 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 1984+__svml_slog1p_data_internal(%rip), %zmm2 + +/* reduction: compute r,n */ + vmovups 2688+__svml_slog1p_data_internal(%rip), %zmm12 + vmovups 1088+__svml_slog1p_data_internal(%rip), %zmm4 + vmovaps %zmm0, %zmm3 + +/* compute 1+x as high, low parts */ + vmaxps {sae}, %zmm3, %zmm2, %zmm5 + vminps {sae}, %zmm3, %zmm2, %zmm7 + vandnps %zmm3, %zmm4, %zmm1 + vpternlogd $255, %zmm4, %zmm4, %zmm4 + vaddps {rn-sae}, %zmm7, %zmm5, %zmm9 + vpsubd %zmm12, %zmm9, %zmm10 + vsubps {rn-sae}, %zmm9, %zmm5, %zmm6 + +/* check argument value ranges */ + vpaddd 2560+__svml_slog1p_data_internal(%rip), %zmm9, %zmm8 + vpsrad $23, %zmm10, %zmm13 + vmovups 2304+__svml_slog1p_data_internal(%rip), %zmm9 + vpcmpd $5, 2624+__svml_slog1p_data_internal(%rip), %zmm8, %k1 + vpslld $23, %zmm13, %zmm14 + vaddps {rn-sae}, %zmm7, %zmm6, %zmm15 + vcvtdq2ps {rn-sae}, %zmm13, %zmm0 + vpsubd %zmm14, %zmm2, %zmm13 + vmovups 2496+__svml_slog1p_data_internal(%rip), %zmm7 + vmovups 2048+__svml_slog1p_data_internal(%rip), %zmm14 + vmulps {rn-sae}, %zmm13, %zmm15, %zmm6 + vpandd 2752+__svml_slog1p_data_internal(%rip), %zmm10, %zmm11 + vpaddd %zmm12, %zmm11, %zmm5 + vmovups 2240+__svml_slog1p_data_internal(%rip), %zmm10 + vmovups 2176+__svml_slog1p_data_internal(%rip), %zmm11 + vmovups 2112+__svml_slog1p_data_internal(%rip), %zmm12 + +/* polynomial evaluation */ + vsubps {rn-sae}, %zmm2, %zmm5, %zmm2 + vaddps {rn-sae}, %zmm6, %zmm2, %zmm15 + vmovups 2432+__svml_slog1p_data_internal(%rip), %zmm2 + vfmadd231ps {rn-sae}, %zmm15, %zmm7, %zmm2 + vpandnd %zmm8, %zmm8, %zmm4{%k1} + vmovups 2368+__svml_slog1p_data_internal(%rip), %zmm8 + +/* combine and get argument value range mask */ + vptestmd %zmm4, %zmm4, %k0 + vfmadd213ps {rn-sae}, %zmm8, %zmm15, %zmm2 + kmovw %k0, %edx + vfmadd213ps {rn-sae}, %zmm9, %zmm15, %zmm2 + vfmadd213ps {rn-sae}, %zmm10, %zmm15, %zmm2 + vfmadd213ps {rn-sae}, %zmm11, %zmm15, %zmm2 + vfmadd213ps {rn-sae}, %zmm12, %zmm15, %zmm2 + vfmadd213ps {rn-sae}, %zmm14, %zmm15, %zmm2 + vmulps {rn-sae}, %zmm15, %zmm2, %zmm4 + vfmadd213ps {rn-sae}, %zmm15, %zmm15, %zmm4 + +/* final reconstruction */ + vmovups 2816+__svml_slog1p_data_internal(%rip), %zmm15 + vfmadd213ps {rn-sae}, %zmm4, %zmm15, %zmm0 + vorps %zmm1, %zmm0, %zmm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + 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 %zmm3, 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_slog1p_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_log1pf16,@function + .size __svml_log1pf16,.-__svml_log1pf16 +..LN__svml_log1pf16.0: + +.L_2__routine_start___svml_slog1p_cout_rare_internal_1: + + .align 16,0x90 + +__svml_slog1p_cout_rare_internal: + + + .cfi_startproc +..L53: + + xorl %eax, %eax + movss .L_2il0floatpacket.90(%rip), %xmm1 + xorb %r8b, %r8b + movss (%rdi), %xmm5 + addss %xmm1, %xmm5 + movss %xmm5, -20(%rsp) + movzwl -18(%rsp), %edx + andl $32640, %edx + cmpl $32640, %edx + je .LBL_2_15 + + + movss %xmm5, -16(%rsp) + xorl %ecx, %ecx + movzwl -14(%rsp), %edx + testl $32640, %edx + jne .LBL_2_4 + + + mulss .L_2il0floatpacket.75(%rip), %xmm5 + movb $1, %r8b + movss %xmm5, -16(%rsp) + movl $-40, %ecx + +.LBL_2_4: + + pxor %xmm3, %xmm3 + comiss %xmm3, %xmm5 + jbe .LBL_2_10 + + + movaps %xmm5, %xmm2 + subss %xmm1, %xmm2 + movss %xmm2, -20(%rsp) + andb $127, -17(%rsp) + movss -20(%rsp), %xmm0 + comiss .L_2il0floatpacket.76(%rip), %xmm0 + jbe .LBL_2_9 + + + movzwl -14(%rsp), %edx + pxor %xmm6, %xmm6 + andl $32640, %edx + shrl $7, %edx + lea -127(%rcx,%rdx), %ecx + cvtsi2ss %ecx, %xmm6 + cmpb $1, %r8b + je .LBL_2_13 + + + movss .L_2il0floatpacket.86(%rip), %xmm4 + movss .L_2il0floatpacket.87(%rip), %xmm0 + mulss %xmm6, %xmm4 + mulss %xmm0, %xmm6 + +.LBL_2_8: + + movss %xmm5, -20(%rsp) + movaps %xmm4, %xmm9 + movzwl -18(%rsp), %edx + lea __slog1p_la_CoutTab(%rip), %r8 + andl $-32641, %edx + addl $16256, %edx + movw %dx, -18(%rsp) + movss -20(%rsp), %xmm8 + movaps %xmm8, %xmm2 + movss .L_2il0floatpacket.89(%rip), %xmm7 + addss .L_2il0floatpacket.88(%rip), %xmm2 + movss %xmm2, -24(%rsp) + movl -24(%rsp), %ecx + andl $127, %ecx + lea (%rcx,%rcx,2), %edi + movss 4(%r8,%rdi,4), %xmm5 + movss (%r8,%rdi,4), %xmm0 + addss %xmm5, %xmm9 + addss 8(%r8,%rdi,4), %xmm6 + movaps %xmm9, %xmm3 + subss %xmm4, %xmm3 + movss %xmm3, -24(%rsp) + movss -24(%rsp), %xmm4 + subss %xmm4, %xmm5 + movss %xmm5, -24(%rsp) + movss -24(%rsp), %xmm10 + addss %xmm6, %xmm10 + movaps %xmm7, %xmm6 + addss %xmm8, %xmm6 + movss %xmm6, -24(%rsp) + movss -24(%rsp), %xmm12 + subss %xmm7, %xmm12 + subss %xmm12, %xmm8 + mulss %xmm0, %xmm12 + subss %xmm1, %xmm12 + mulss %xmm8, %xmm0 + movaps %xmm0, %xmm15 + movaps %xmm12, %xmm2 + addss %xmm10, %xmm15 + addss %xmm9, %xmm12 + addss %xmm0, %xmm2 + movaps %xmm15, %xmm1 + movaps %xmm12, %xmm13 + subss %xmm10, %xmm1 + addss %xmm15, %xmm13 + movss %xmm1, -24(%rsp) + movss -24(%rsp), %xmm11 + subss %xmm11, %xmm0 + movss %xmm0, -24(%rsp) + movss -24(%rsp), %xmm0 + movss %xmm13, (%rsi) + subss %xmm12, %xmm13 + movss .L_2il0floatpacket.83(%rip), %xmm12 + mulss %xmm2, %xmm12 + movss %xmm13, -24(%rsp) + movss -24(%rsp), %xmm14 + addss .L_2il0floatpacket.82(%rip), %xmm12 + subss %xmm14, %xmm15 + mulss %xmm2, %xmm12 + movss %xmm15, -24(%rsp) + movss -24(%rsp), %xmm1 + addss .L_2il0floatpacket.81(%rip), %xmm12 + mulss %xmm2, %xmm12 + addss .L_2il0floatpacket.80(%rip), %xmm12 + mulss %xmm2, %xmm12 + addss .L_2il0floatpacket.79(%rip), %xmm12 + mulss %xmm2, %xmm12 + addss .L_2il0floatpacket.78(%rip), %xmm12 + mulss %xmm2, %xmm12 + addss .L_2il0floatpacket.77(%rip), %xmm12 + mulss %xmm2, %xmm12 + mulss %xmm2, %xmm12 + addss %xmm12, %xmm0 + addss %xmm0, %xmm1 + movss %xmm1, -24(%rsp) + movss -24(%rsp), %xmm3 + addss (%rsi), %xmm3 + movss %xmm3, (%rsi) + ret + +.LBL_2_9: + + movss .L_2il0floatpacket.83(%rip), %xmm0 + mulss %xmm2, %xmm0 + addss .L_2il0floatpacket.82(%rip), %xmm0 + mulss %xmm2, %xmm0 + addss .L_2il0floatpacket.81(%rip), %xmm0 + mulss %xmm2, %xmm0 + addss .L_2il0floatpacket.80(%rip), %xmm0 + mulss %xmm2, %xmm0 + addss .L_2il0floatpacket.79(%rip), %xmm0 + mulss %xmm2, %xmm0 + addss .L_2il0floatpacket.78(%rip), %xmm0 + mulss %xmm2, %xmm0 + addss .L_2il0floatpacket.77(%rip), %xmm0 + mulss %xmm2, %xmm0 + mulss %xmm2, %xmm0 + addss %xmm2, %xmm0 + movss %xmm0, (%rsi) + ret + +.LBL_2_10: + + ucomiss %xmm3, %xmm5 + jp .LBL_2_11 + je .LBL_2_14 + +.LBL_2_11: + + divss %xmm3, %xmm3 + movss %xmm3, (%rsi) + movl $1, %eax + + + ret + +.LBL_2_13: + + movss .L_2il0floatpacket.85(%rip), %xmm0 + mulss %xmm0, %xmm6 + movaps %xmm6, %xmm4 + movaps %xmm3, %xmm6 + jmp .LBL_2_8 + +.LBL_2_14: + + movss .L_2il0floatpacket.84(%rip), %xmm0 + movl $2, %eax + divss %xmm3, %xmm0 + movss %xmm0, (%rsi) + ret + +.LBL_2_15: + + movb -17(%rsp), %dl + andb $-128, %dl + cmpb $-128, %dl + je .LBL_2_17 + +.LBL_2_16: + + mulss %xmm5, %xmm5 + movss %xmm5, (%rsi) + ret + +.LBL_2_17: + + testl $8388607, -20(%rsp) + jne .LBL_2_16 + + + movl $1, %eax + pxor %xmm1, %xmm1 + pxor %xmm0, %xmm0 + divss %xmm0, %xmm1 + movss %xmm1, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_slog1p_cout_rare_internal,@function + .size __svml_slog1p_cout_rare_internal,.-__svml_slog1p_cout_rare_internal +..LN__svml_slog1p_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_slog1p_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 + .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 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 2063597568 + .long 1051372345 + .long 1051372345 + .long 1051372345 + .long 1051372345 + .long 1051372345 + .long 1051372345 + .long 1051372345 + .long 1051372345 + .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 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 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 998244352 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 3212836863 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 2055208960 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 4294967040 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 1060205056 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .long 901758464 + .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 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 1051372180 + .long 1051372180 + .long 1051372180 + .long 1051372180 + .long 1051372180 + .long 1051372180 + .long 1051372180 + .long 1051372180 + .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 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 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 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 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 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 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 + .long 16777216 + .long 16777216 + .long 16777216 + .long 16777216 + .long 16777216 + .long 16777216 + .long 16777216 + .long 16777216 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 25165824 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 1059760811 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 8388607 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .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_slog1p_data_internal,@object + .size __svml_slog1p_data_internal,3072 + .align 32 +__slog1p_la_CoutTab: + .long 1065353216 + .long 0 + .long 0 + .long 1065091072 + .long 1015087104 + .long 900509991 + .long 1064828928 + .long 1023541248 + .long 925811956 + .long 1064566784 + .long 1027915776 + .long 3084221144 + .long 1064304640 + .long 1032073216 + .long 3066991812 + .long 1064173568 + .long 1033195520 + .long 882149603 + .long 1063911424 + .long 1035468800 + .long 928189163 + .long 1063649280 + .long 1037783040 + .long 927501741 + .long 1063518208 + .long 1038958592 + .long 3076037756 + .long 1063256064 + .long 1040759808 + .long 904405630 + .long 1063124992 + .long 1041361920 + .long 3052231524 + .long 1062862848 + .long 1042581504 + .long 922094799 + .long 1062731776 + .long 1043201024 + .long 3070120623 + .long 1062469632 + .long 1044455424 + .long 3069864633 + .long 1062338560 + .long 1045091328 + .long 3063188516 + .long 1062207488 + .long 1045733376 + .long 3054902185 + .long 1061945344 + .long 1047035904 + .long 920635797 + .long 1061814272 + .long 1047697408 + .long 904920689 + .long 1061683200 + .long 1048365056 + .long 912483742 + .long 1061552128 + .long 1048807936 + .long 3052664405 + .long 1061421056 + .long 1049148416 + .long 912794238 + .long 1061158912 + .long 1049840384 + .long 889474359 + .long 1061027840 + .long 1050191872 + .long 3059868362 + .long 1060896768 + .long 1050546944 + .long 3059256525 + .long 1060765696 + .long 1050905600 + .long 912008988 + .long 1060634624 + .long 1051268352 + .long 912290698 + .long 1060503552 + .long 1051635200 + .long 3037211048 + .long 1060372480 + .long 1052005888 + .long 906226119 + .long 1060241408 + .long 1052380928 + .long 3052480305 + .long 1060110336 + .long 1052760064 + .long 3048768765 + .long 1059979264 + .long 1053143552 + .long 3049975450 + .long 1059848192 + .long 1053531392 + .long 894485718 + .long 1059717120 + .long 1053923840 + .long 897598623 + .long 1059586048 + .long 1054320896 + .long 907355277 + .long 1059586048 + .long 1054320896 + .long 907355277 + .long 1059454976 + .long 1054722816 + .long 881705073 + .long 1059323904 + .long 1055129600 + .long 3049723733 + .long 1059192832 + .long 1055541248 + .long 890353599 + .long 1059061760 + .long 1055958016 + .long 908173938 + .long 1059061760 + .long 1055958016 + .long 908173938 + .long 1058930688 + .long 1056380160 + .long 883644938 + .long 1058799616 + .long 1056807680 + .long 3052015799 + .long 1058668544 + .long 1057102592 + .long 884897284 + .long 1058668544 + .long 1057102592 + .long 884897284 + .long 1058537472 + .long 1057321920 + .long 3037632470 + .long 1058406400 + .long 1057544128 + .long 865017195 + .long 1058275328 + .long 1057769344 + .long 3042936546 + .long 1058275328 + .long 1057769344 + .long 3042936546 + .long 1058144256 + .long 1057997568 + .long 903344518 + .long 1058013184 + .long 1058228992 + .long 897862967 + .long 1058013184 + .long 1058228992 + .long 897862967 + .long 1057882112 + .long 1058463680 + .long 3047822280 + .long 1057882112 + .long 1058463680 + .long 3047822280 + .long 1057751040 + .long 1058701632 + .long 883793293 + .long 1057619968 + .long 1058943040 + .long 851667963 + .long 1057619968 + .long 1058943040 + .long 851667963 + .long 1057488896 + .long 1059187968 + .long 3000004036 + .long 1057488896 + .long 1059187968 + .long 3000004036 + .long 1057357824 + .long 1059436544 + .long 3047430717 + .long 1057357824 + .long 1059436544 + .long 3047430717 + .long 1057226752 + .long 1059688832 + .long 3043802308 + .long 1057226752 + .long 1059688832 + .long 3043802308 + .long 1057095680 + .long 1059944960 + .long 876113044 + .long 1057095680 + .long 1059944960 + .long 876113044 + .long 1056964608 + .long 1060205056 + .long 901758606 + .long 1060205056 + .long 901758606 + .long 1207959616 + .long 1174405120 + .long 1008730112 + .long 1400897536 + .long 0 + .long 1065353216 + .long 3204448256 + .long 1051372203 + .long 3196059648 + .long 1045220557 + .long 3190467243 + .long 1041387009 + .long 3187672480 + .type __slog1p_la_CoutTab,@object + .size __slog1p_la_CoutTab,840 + .align 4 +.L_2il0floatpacket.75: + .long 0x53800000 + .type .L_2il0floatpacket.75,@object + .size .L_2il0floatpacket.75,4 + .align 4 +.L_2il0floatpacket.76: + .long 0x3c200000 + .type .L_2il0floatpacket.76,@object + .size .L_2il0floatpacket.76,4 + .align 4 +.L_2il0floatpacket.77: + .long 0xbf000000 + .type .L_2il0floatpacket.77,@object + .size .L_2il0floatpacket.77,4 + .align 4 +.L_2il0floatpacket.78: + .long 0x3eaaaaab + .type .L_2il0floatpacket.78,@object + .size .L_2il0floatpacket.78,4 + .align 4 +.L_2il0floatpacket.79: + .long 0xbe800000 + .type .L_2il0floatpacket.79,@object + .size .L_2il0floatpacket.79,4 + .align 4 +.L_2il0floatpacket.80: + .long 0x3e4ccccd + .type .L_2il0floatpacket.80,@object + .size .L_2il0floatpacket.80,4 + .align 4 +.L_2il0floatpacket.81: + .long 0xbe2aaaab + .type .L_2il0floatpacket.81,@object + .size .L_2il0floatpacket.81,4 + .align 4 +.L_2il0floatpacket.82: + .long 0x3e124e01 + .type .L_2il0floatpacket.82,@object + .size .L_2il0floatpacket.82,4 + .align 4 +.L_2il0floatpacket.83: + .long 0xbe0005a0 + .type .L_2il0floatpacket.83,@object + .size .L_2il0floatpacket.83,4 + .align 4 +.L_2il0floatpacket.84: + .long 0xbf800000 + .type .L_2il0floatpacket.84,@object + .size .L_2il0floatpacket.84,4 + .align 4 +.L_2il0floatpacket.85: + .long 0x3f317218 + .type .L_2il0floatpacket.85,@object + .size .L_2il0floatpacket.85,4 + .align 4 +.L_2il0floatpacket.86: + .long 0x3f317200 + .type .L_2il0floatpacket.86,@object + .size .L_2il0floatpacket.86,4 + .align 4 +.L_2il0floatpacket.87: + .long 0x35bfbe8e + .type .L_2il0floatpacket.87,@object + .size .L_2il0floatpacket.87,4 + .align 4 +.L_2il0floatpacket.88: + .long 0x48000040 + .type .L_2il0floatpacket.88,@object + .size .L_2il0floatpacket.88,4 + .align 4 +.L_2il0floatpacket.89: + .long 0x46000000 + .type .L_2il0floatpacket.89,@object + .size .L_2il0floatpacket.89,4 + .align 4 +.L_2il0floatpacket.90: + .long 0x3f800000 + .type .L_2il0floatpacket.90,@object + .size .L_2il0floatpacket.90,4 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_log2_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log2_d_la.s new file mode 100644 index 00000000..89d3bbca --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log2_d_la.s @@ -0,0 +1,1714 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * * log2(x) = VGETEXP(x) + log2(VGETMANT(x)) + * * VGETEXP, VGETMANT will correctly treat special cases too (including denormals) + * * mx = VGETMANT(x) is in [1,2) for all x>=0 + * * log2(mx) = -log2(RCP(mx)) + log2(1 +(mx*RCP(mx)-1)) + * * RCP(mx) is rounded to 4 fractional bits, + * * and the table lookup for log(RCP(mx)) is based on a small permute instruction + * * + * + */ + + + .text +.L_2__routine_start___svml_log28_z0_0: + + .align 16,0x90 + .globl __svml_log28 + +__svml_log28: + + + .cfi_startproc +..L2: + + 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 + vmovaps %zmm0, %zmm7 + +/* GetMant(x), normalized to [1,2) for x>=0, NaN for x<0 */ + vgetmantpd $8, {sae}, %zmm7, %zmm6 + vmovups 128+__svml_dlog2_data_internal_avx512(%rip), %zmm2 + vmovups 512+__svml_dlog2_data_internal_avx512(%rip), %zmm12 + vmovups 640+__svml_dlog2_data_internal_avx512(%rip), %zmm13 + +/* Start polynomial evaluation */ + vmovups 256+__svml_dlog2_data_internal_avx512(%rip), %zmm10 + vmovups 320+__svml_dlog2_data_internal_avx512(%rip), %zmm0 + vmovups 384+__svml_dlog2_data_internal_avx512(%rip), %zmm11 + vmovups 448+__svml_dlog2_data_internal_avx512(%rip), %zmm14 + +/* Prepare exponent correction: DblRcp<0.75? */ + vmovups 192+__svml_dlog2_data_internal_avx512(%rip), %zmm1 + +/* Table lookup */ + vmovups __svml_dlog2_data_internal_avx512(%rip), %zmm4 + +/* GetExp(x) */ + vgetexppd {sae}, %zmm7, %zmm5 + +/* DblRcp ~ 1/Mantissa */ + vrcp14pd %zmm6, %zmm8 + +/* x<=0? */ + vfpclasspd $94, %zmm7, %k0 + +/* round DblRcp to 4 fractional bits (RN mode, no Precision exception) */ + vrndscalepd $88, {sae}, %zmm8, %zmm3 + vmovups 576+__svml_dlog2_data_internal_avx512(%rip), %zmm8 + kmovw %k0, %edx + +/* Reduced argument: R = DblRcp*Mantissa - 1 */ + vfmsub213pd {rn-sae}, %zmm2, %zmm3, %zmm6 + vcmppd $17, {sae}, %zmm1, %zmm3, %k1 + vfmadd231pd {rn-sae}, %zmm6, %zmm12, %zmm8 + vmovups 704+__svml_dlog2_data_internal_avx512(%rip), %zmm12 + vfmadd231pd {rn-sae}, %zmm6, %zmm10, %zmm0 + vfmadd231pd {rn-sae}, %zmm6, %zmm11, %zmm14 + vmovups 768+__svml_dlog2_data_internal_avx512(%rip), %zmm1 + +/* R^2 */ + vmulpd {rn-sae}, %zmm6, %zmm6, %zmm15 + vfmadd231pd {rn-sae}, %zmm6, %zmm13, %zmm12 + +/* Prepare table index */ + vpsrlq $48, %zmm3, %zmm9 + +/* add 1 to Expon if DblRcp<0.75 */ + vaddpd {rn-sae}, %zmm2, %zmm5, %zmm5{%k1} + vmulpd {rn-sae}, %zmm15, %zmm15, %zmm13 + vfmadd213pd {rn-sae}, %zmm14, %zmm15, %zmm0 + vfmadd213pd {rn-sae}, %zmm12, %zmm15, %zmm8 + vpermt2pd 64+__svml_dlog2_data_internal_avx512(%rip), %zmm9, %zmm4 + +/* polynomial */ + vfmadd213pd {rn-sae}, %zmm8, %zmm13, %zmm0 + vfmadd213pd {rn-sae}, %zmm1, %zmm6, %zmm0 + vfmadd213pd {rn-sae}, %zmm4, %zmm0, %zmm6 + vaddpd {rn-sae}, %zmm6, %zmm5, %zmm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + 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 %zmm7, 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_dlog2_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_log28,@function + .size __svml_log28,.-__svml_log28 +..LN__svml_log28.0: + +.L_2__routine_start___svml_dlog2_cout_rare_internal_1: + + .align 16,0x90 + +__svml_dlog2_cout_rare_internal: + + + .cfi_startproc +..L53: + + movq $0, -64(%rsp) + movsd -64(%rsp), %xmm0 + movsd (%rdi), %xmm1 + movups _zeros.402.0.0.1(%rip), %xmm2 + subsd %xmm0, %xmm1 + movsd %xmm1, -8(%rsp) + movups %xmm2, -56(%rsp) + + + movups _ones.402.0.0.1(%rip), %xmm0 + movups %xmm0, -40(%rsp) + + + movups _infs.402.0.0.1(%rip), %xmm0 + movups %xmm0, -24(%rsp) + + + movl -4(%rsp), %eax + cmpl $2146435072, %eax + jae .LBL_2_19 + + + lea -1072660480(%rax), %edx + cmpl $53248, %edx + jae .LBL_2_14 + + + lea -1072693232(%rax), %edx + cmpl $24, %edx + jae .LBL_2_13 + + + movl -8(%rsp), %edi + movl %eax, %ecx + movl %edi, %edx + shll $11, %ecx + shrl $21, %edx + orl %edx, %ecx + addl $-2147483646, %ecx + cmpl $3, %ecx + jae .LBL_2_12 + + + addl $-1072693248, %eax + orl %edi, %eax + jne .LBL_2_10 + + + movq -56(%rsp), %rax + movq %rax, (%rsi) + jmp .LBL_2_11 + +.LBL_2_10: + + movsd -8(%rsp), %xmm0 + movsd 16+__dlog2_la__Q3(%rip), %xmm2 + movsd 24+__dlog2_la__Q3(%rip), %xmm1 + addsd -32(%rsp), %xmm0 + mulsd %xmm0, %xmm2 + mulsd %xmm0, %xmm1 + addsd 8+__dlog2_la__Q3(%rip), %xmm2 + mulsd %xmm0, %xmm2 + movsd %xmm0, -8(%rsp) + addsd __dlog2_la__Q3(%rip), %xmm2 + mulsd %xmm0, %xmm2 + addsd %xmm1, %xmm2 + movsd %xmm2, (%rsi) + +.LBL_2_11: + + xorl %eax, %eax + ret + +.LBL_2_12: + + movsd -8(%rsp), %xmm2 + xorl %eax, %eax + movsd 16+__dlog2_la__Q2(%rip), %xmm1 + movsd 24+__dlog2_la__Q2(%rip), %xmm3 + addsd -32(%rsp), %xmm2 + movaps %xmm2, %xmm0 + mulsd %xmm2, %xmm0 + mulsd %xmm0, %xmm1 + mulsd %xmm0, %xmm3 + addsd __dlog2_la__Q2(%rip), %xmm1 + addsd 8+__dlog2_la__Q2(%rip), %xmm3 + mulsd %xmm2, %xmm1 + mulsd %xmm0, %xmm3 + movsd %xmm2, -8(%rsp) + addsd %xmm1, %xmm3 + movl $0, -8(%rsp) + movsd -8(%rsp), %xmm4 + subsd %xmm4, %xmm2 + addsd %xmm2, %xmm4 + mulsd 32+__dlog2_la__Q2(%rip), %xmm4 + addsd %xmm3, %xmm4 + movsd %xmm4, (%rsi) + ret + +.LBL_2_13: + + movsd -8(%rsp), %xmm2 + xorl %eax, %eax + movsd 72+__dlog2_la__Q1(%rip), %xmm10 + movsd 64+__dlog2_la__Q1(%rip), %xmm4 + movsd __dlog2_la__TWO_32P(%rip), %xmm5 + movsd __dlog2_la__TWO_32P(%rip), %xmm7 + movsd 88+__dlog2_la__Q1(%rip), %xmm14 + movsd __dlog2_la__TWO_32P(%rip), %xmm11 + movsd __dlog2_la__TWO_32P(%rip), %xmm15 + addsd -32(%rsp), %xmm2 + movaps %xmm2, %xmm3 + movaps %xmm2, %xmm6 + mulsd %xmm2, %xmm3 + movaps %xmm2, %xmm0 + mulsd %xmm2, %xmm5 + mulsd __dlog2_la__TWO_32(%rip), %xmm6 + mulsd %xmm3, %xmm10 + mulsd %xmm3, %xmm4 + addsd 56+__dlog2_la__Q1(%rip), %xmm10 + addsd 48+__dlog2_la__Q1(%rip), %xmm4 + mulsd %xmm3, %xmm10 + mulsd %xmm3, %xmm4 + addsd 40+__dlog2_la__Q1(%rip), %xmm10 + addsd 32+__dlog2_la__Q1(%rip), %xmm4 + mulsd %xmm3, %xmm10 + mulsd %xmm3, %xmm4 + addsd 24+__dlog2_la__Q1(%rip), %xmm10 + addsd 16+__dlog2_la__Q1(%rip), %xmm4 + mulsd %xmm3, %xmm10 + mulsd %xmm2, %xmm4 + movsd __dlog2_la__TWO_32(%rip), %xmm3 + addsd %xmm4, %xmm10 + mulsd %xmm10, %xmm7 + movaps %xmm3, %xmm8 + mulsd %xmm10, %xmm8 + movsd %xmm5, -72(%rsp) + movsd -72(%rsp), %xmm1 + movsd %xmm7, -72(%rsp) + subsd %xmm6, %xmm1 + movsd -72(%rsp), %xmm9 + subsd %xmm1, %xmm0 + subsd %xmm8, %xmm9 + movsd %xmm1, -8(%rsp) + subsd %xmm9, %xmm10 + addsd %xmm9, %xmm14 + addsd 8+__dlog2_la__Q1(%rip), %xmm10 + movaps %xmm14, %xmm4 + mulsd %xmm0, %xmm4 + mulsd %xmm2, %xmm10 + mulsd %xmm1, %xmm14 + addsd %xmm0, %xmm1 + addsd %xmm10, %xmm4 + movaps %xmm4, %xmm12 + movsd 80+__dlog2_la__Q1(%rip), %xmm9 + addsd %xmm14, %xmm12 + mulsd %xmm12, %xmm11 + mulsd %xmm3, %xmm12 + movsd %xmm11, -72(%rsp) + movsd -72(%rsp), %xmm13 + subsd %xmm12, %xmm13 + subsd %xmm13, %xmm4 + addsd %xmm13, %xmm9 + addsd %xmm14, %xmm4 + movaps %xmm9, %xmm13 + addsd __dlog2_la__Q1(%rip), %xmm4 + addsd %xmm4, %xmm13 + mulsd %xmm13, %xmm15 + mulsd %xmm3, %xmm13 + movsd %xmm15, -72(%rsp) + movsd -72(%rsp), %xmm14 + subsd %xmm13, %xmm14 + mulsd %xmm14, %xmm1 + subsd %xmm14, %xmm9 + addsd %xmm9, %xmm4 + mulsd %xmm2, %xmm4 + addsd %xmm4, %xmm1 + movsd %xmm1, (%rsi) + ret + +.LBL_2_14: + + movl %eax, %ecx + movl %eax, %edx + shrl $20, %ecx + andl $1048575, %edx + addl $-1023, %ecx + cmpl $1048576, %eax + jae .LBL_2_18 + + + movl %edx, -4(%rsp) + movl -8(%rsp), %edx + orl %edx, %eax + jne .LBL_2_17 + + + movsd -32(%rsp), %xmm0 + movl $2, %eax + divsd -56(%rsp), %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_17: + + movsd -8(%rsp), %xmm0 + mulsd __dlog2_la__TWO_55(%rip), %xmm0 + movsd %xmm0, -8(%rsp) + movl -4(%rsp), %edx + movl %edx, %ecx + shrl $20, %ecx + movl %edx, %eax + addl $-1078, %ecx + +.LBL_2_18: + + shrl $12, %eax + orl $1072693248, %edx + movzbl %al, %edi + pxor %xmm7, %xmm7 + movl %edx, -4(%rsp) + lea __dlog2_la___libm_rcp_table_256(%rip), %rdx + movsd -8(%rsp), %xmm10 + pxor %xmm8, %xmm8 + movl $0, -8(%rsp) + lea __dlog2_la___libm_log2_table_256(%rip), %rax + movsd -8(%rsp), %xmm0 + cvtss2sd (%rdx,%rdi,4), %xmm7 + cvtsi2sd %ecx, %xmm8 + subsd %xmm0, %xmm10 + mulsd %xmm7, %xmm10 + mulsd %xmm0, %xmm7 + movsd 40+__dlog2_la__P(%rip), %xmm4 + movsd 32+__dlog2_la__P(%rip), %xmm3 + movsd 48+__dlog2_la__P(%rip), %xmm5 + movsd __dlog2_la__TWO_32(%rip), %xmm6 + shlq $4, %rdi + addsd -32(%rsp), %xmm7 + movaps %xmm7, %xmm2 + mulsd %xmm5, %xmm7 + addsd %xmm10, %xmm2 + mulsd %xmm5, %xmm10 + addsd %xmm7, %xmm6 + movaps %xmm2, %xmm1 + mulsd %xmm2, %xmm1 + mulsd %xmm1, %xmm4 + mulsd %xmm1, %xmm3 + addsd 24+__dlog2_la__P(%rip), %xmm4 + addsd 16+__dlog2_la__P(%rip), %xmm3 + mulsd %xmm1, %xmm4 + mulsd %xmm1, %xmm3 + addsd 8+__dlog2_la__P(%rip), %xmm4 + addsd __dlog2_la__P(%rip), %xmm3 + mulsd %xmm1, %xmm4 + mulsd %xmm2, %xmm3 + movsd %xmm6, -72(%rsp) + addsd %xmm3, %xmm4 + addsd 8(%rax,%rdi), %xmm8 + addsd %xmm4, %xmm10 + movsd -72(%rsp), %xmm9 + subsd __dlog2_la__TWO_32(%rip), %xmm9 + subsd %xmm9, %xmm7 + addsd %xmm8, %xmm9 + addsd (%rax,%rdi), %xmm7 + movsd %xmm9, -8(%rsp) + xorl %eax, %eax + addsd %xmm7, %xmm10 + addsd %xmm9, %xmm10 + movsd %xmm10, (%rsi) + ret + +.LBL_2_19: + + movl %eax, %edx + andl $2147483647, %edx + cmpl $2146435072, %edx + ja .LBL_2_28 + + + jne .LBL_2_22 + + + cmpl $0, -8(%rsp) + jne .LBL_2_28 + +.LBL_2_22: + + testl $-2147483648, %eax + je .LBL_2_27 + + + movl -8(%rsp), %eax + orl %eax, %edx + movsd -56(%rsp), %xmm1 + jne .LBL_2_25 + + + movsd -32(%rsp), %xmm0 + movl $2, %eax + divsd %xmm1, %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_25: + + movsd -24(%rsp), %xmm0 + movl $1, %eax + mulsd %xmm1, %xmm0 + movsd %xmm0, (%rsi) + + + ret + +.LBL_2_27: + + movq -8(%rsp), %rax + movq %rax, (%rsi) + xorl %eax, %eax + ret + +.LBL_2_28: + + movsd -8(%rsp), %xmm0 + xorl %eax, %eax + mulsd -40(%rsp), %xmm0 + movsd %xmm0, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_dlog2_cout_rare_internal,@function + .size __svml_dlog2_cout_rare_internal,.-__svml_dlog2_cout_rare_internal +..LN__svml_dlog2_cout_rare_internal.1: + .section .rodata, "a" + .align 64 + .align 16 +_zeros.402.0.0.1: + .long 0 + .long 0 + .long 0 + .long 2147483648 + .align 16 +_ones.402.0.0.1: + .long 0 + .long 1072693248 + .long 0 + .long 3220176896 + .align 16 +_infs.402.0.0.1: + .long 0 + .long 2146435072 + .long 0 + .long 4293918720 + + .section .rodata, "a" + .space 16, 0x00 + .align 64 +__svml_dlog2_data_internal_avx512: + .long 0 + .long 0 + .long 4207481622 + .long 3216401398 + .long 972805768 + .long 3217408026 + .long 3103942666 + .long 3218062358 + .long 1271733131 + .long 3218381432 + .long 2300516105 + .long 3218676666 + .long 3761433103 + .long 3218958163 + .long 14039718 + .long 3219177733 + .long 1904282206 + .long 1071288313 + .long 1751501034 + .long 1071041295 + .long 3815829096 + .long 1070803966 + .long 2835758645 + .long 1070555096 + .long 180337970 + .long 1070114968 + .long 3266000023 + .long 1069690285 + .long 2530196300 + .long 1069012484 + .long 3386464469 + .long 1067938708 + .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 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 3658358034 + .long 1069846603 + .long 3658358034 + .long 1069846603 + .long 3658358034 + .long 1069846603 + .long 3658358034 + .long 1069846603 + .long 3658358034 + .long 1069846603 + .long 3658358034 + .long 1069846603 + .long 3658358034 + .long 1069846603 + .long 3658358034 + .long 1069846603 + .long 1307270350 + .long 3217498040 + .long 1307270350 + .long 3217498040 + .long 1307270350 + .long 3217498040 + .long 1307270350 + .long 3217498040 + .long 1307270350 + .long 3217498040 + .long 1307270350 + .long 3217498040 + .long 1307270350 + .long 3217498040 + .long 1307270350 + .long 3217498040 + .long 1367442963 + .long 1070227827 + .long 1367442963 + .long 1070227827 + .long 1367442963 + .long 1070227827 + .long 1367442963 + .long 1070227827 + .long 1367442963 + .long 1070227827 + .long 1367442963 + .long 1070227827 + .long 1367442963 + .long 1070227827 + .long 1367442963 + .long 1070227827 + .long 3840087116 + .long 3217999623 + .long 3840087116 + .long 3217999623 + .long 3840087116 + .long 3217999623 + .long 3840087116 + .long 3217999623 + .long 3840087116 + .long 3217999623 + .long 3840087116 + .long 3217999623 + .long 3840087116 + .long 3217999623 + .long 3840087116 + .long 3217999623 + .long 1360320794 + .long 1070757740 + .long 1360320794 + .long 1070757740 + .long 1360320794 + .long 1070757740 + .long 1360320794 + .long 1070757740 + .long 1360320794 + .long 1070757740 + .long 1360320794 + .long 1070757740 + .long 1360320794 + .long 1070757740 + .long 1360320794 + .long 1070757740 + .long 1698500493 + .long 3218543943 + .long 1698500493 + .long 3218543943 + .long 1698500493 + .long 3218543943 + .long 1698500493 + .long 3218543943 + .long 1698500493 + .long 3218543943 + .long 1698500493 + .long 3218543943 + .long 1698500493 + .long 3218543943 + .long 1698500493 + .long 3218543943 + .long 3694789279 + .long 1071564553 + .long 3694789279 + .long 1071564553 + .long 3694789279 + .long 1071564553 + .long 3694789279 + .long 1071564553 + .long 3694789279 + .long 1071564553 + .long 3694789279 + .long 1071564553 + .long 3694789279 + .long 1071564553 + .long 3694789279 + .long 1071564553 + .long 1697350356 + .long 3219592519 + .long 1697350356 + .long 3219592519 + .long 1697350356 + .long 3219592519 + .long 1697350356 + .long 3219592519 + .long 1697350356 + .long 3219592519 + .long 1697350356 + .long 3219592519 + .long 1697350356 + .long 3219592519 + .long 1697350356 + .long 3219592519 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .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 + .type __svml_dlog2_data_internal_avx512,@object + .size __svml_dlog2_data_internal_avx512,1088 + .align 64 +__dlog2_la__Q3: + .long 3213221364 + .long 1050233568 + .long 1697350398 + .long 3219592519 + .long 3694789629 + .long 1071564553 + .long 0 + .long 1073157447 + .type __dlog2_la__Q3,@object + .size __dlog2_la__Q3,32 + .space 32, 0x00 + .align 64 +__dlog2_la__Q2: + .long 3213221358 + .long 1050233568 + .long 1697350398 + .long 3219592519 + .long 3695167823 + .long 1071564553 + .long 1697791998 + .long 3218543943 + .long 0 + .long 1073157447 + .type __dlog2_la__Q2,@object + .size __dlog2_la__Q2,40 + .space 24, 0x00 + .align 64 +__dlog2_la__Q1: + .long 3213221370 + .long 1050233568 + .long 3213207734 + .long 3196668640 + .long 3694789628 + .long 1071564553 + .long 1697350743 + .long 3218543943 + .long 1357908666 + .long 1070757740 + .long 3685007067 + .long 3217999625 + .long 96832070 + .long 1070227830 + .long 1140452344 + .long 3217495379 + .long 2606274745 + .long 1069844296 + .long 1933654871 + .long 3217172449 + .long 0 + .long 1073157447 + .long 0 + .long 3219592519 + .type __dlog2_la__Q1,@object + .size __dlog2_la__Q1,96 + .space 32, 0x00 + .align 64 +__dlog2_la__TWO_32P: + .long 1048576 + .long 1106247680 + .type __dlog2_la__TWO_32P,@object + .size __dlog2_la__TWO_32P,8 + .space 56, 0x00 + .align 64 +__dlog2_la__TWO_32: + .long 0 + .long 1106247680 + .type __dlog2_la__TWO_32,@object + .size __dlog2_la__TWO_32,8 + .space 56, 0x00 + .align 64 +__dlog2_la__TWO_55: + .long 0 + .long 1130364928 + .type __dlog2_la__TWO_55,@object + .size __dlog2_la__TWO_55,8 + .space 56, 0x00 + .align 64 +__dlog2_la___libm_rcp_table_256: + .long 0x3f7f8000 + .long 0x3f7e8000 + .long 0x3f7d8000 + .long 0x3f7c8000 + .long 0x3f7ba000 + .long 0x3f7aa000 + .long 0x3f79a000 + .long 0x3f78c000 + .long 0x3f77c000 + .long 0x3f76e000 + .long 0x3f75e000 + .long 0x3f750000 + .long 0x3f742000 + .long 0x3f732000 + .long 0x3f724000 + .long 0x3f716000 + .long 0x3f708000 + .long 0x3f6fa000 + .long 0x3f6ec000 + .long 0x3f6de000 + .long 0x3f6d0000 + .long 0x3f6c2000 + .long 0x3f6b6000 + .long 0x3f6a8000 + .long 0x3f69a000 + .long 0x3f68c000 + .long 0x3f680000 + .long 0x3f672000 + .long 0x3f666000 + .long 0x3f658000 + .long 0x3f64c000 + .long 0x3f640000 + .long 0x3f632000 + .long 0x3f626000 + .long 0x3f61a000 + .long 0x3f60e000 + .long 0x3f600000 + .long 0x3f5f4000 + .long 0x3f5e8000 + .long 0x3f5dc000 + .long 0x3f5d0000 + .long 0x3f5c4000 + .long 0x3f5b8000 + .long 0x3f5ae000 + .long 0x3f5a2000 + .long 0x3f596000 + .long 0x3f58a000 + .long 0x3f57e000 + .long 0x3f574000 + .long 0x3f568000 + .long 0x3f55e000 + .long 0x3f552000 + .long 0x3f546000 + .long 0x3f53c000 + .long 0x3f532000 + .long 0x3f526000 + .long 0x3f51c000 + .long 0x3f510000 + .long 0x3f506000 + .long 0x3f4fc000 + .long 0x3f4f2000 + .long 0x3f4e6000 + .long 0x3f4dc000 + .long 0x3f4d2000 + .long 0x3f4c8000 + .long 0x3f4be000 + .long 0x3f4b4000 + .long 0x3f4aa000 + .long 0x3f4a0000 + .long 0x3f496000 + .long 0x3f48c000 + .long 0x3f482000 + .long 0x3f478000 + .long 0x3f46e000 + .long 0x3f464000 + .long 0x3f45c000 + .long 0x3f452000 + .long 0x3f448000 + .long 0x3f43e000 + .long 0x3f436000 + .long 0x3f42c000 + .long 0x3f422000 + .long 0x3f41a000 + .long 0x3f410000 + .long 0x3f408000 + .long 0x3f3fe000 + .long 0x3f3f6000 + .long 0x3f3ec000 + .long 0x3f3e4000 + .long 0x3f3da000 + .long 0x3f3d2000 + .long 0x3f3ca000 + .long 0x3f3c0000 + .long 0x3f3b8000 + .long 0x3f3b0000 + .long 0x3f3a8000 + .long 0x3f39e000 + .long 0x3f396000 + .long 0x3f38e000 + .long 0x3f386000 + .long 0x3f37e000 + .long 0x3f376000 + .long 0x3f36c000 + .long 0x3f364000 + .long 0x3f35c000 + .long 0x3f354000 + .long 0x3f34c000 + .long 0x3f344000 + .long 0x3f33c000 + .long 0x3f334000 + .long 0x3f32e000 + .long 0x3f326000 + .long 0x3f31e000 + .long 0x3f316000 + .long 0x3f30e000 + .long 0x3f306000 + .long 0x3f2fe000 + .long 0x3f2f8000 + .long 0x3f2f0000 + .long 0x3f2e8000 + .long 0x3f2e2000 + .long 0x3f2da000 + .long 0x3f2d2000 + .long 0x3f2cc000 + .long 0x3f2c4000 + .long 0x3f2bc000 + .long 0x3f2b6000 + .long 0x3f2ae000 + .long 0x3f2a8000 + .long 0x3f2a0000 + .long 0x3f29a000 + .long 0x3f292000 + .long 0x3f28c000 + .long 0x3f284000 + .long 0x3f27e000 + .long 0x3f276000 + .long 0x3f270000 + .long 0x3f268000 + .long 0x3f262000 + .long 0x3f25c000 + .long 0x3f254000 + .long 0x3f24e000 + .long 0x3f248000 + .long 0x3f240000 + .long 0x3f23a000 + .long 0x3f234000 + .long 0x3f22e000 + .long 0x3f226000 + .long 0x3f220000 + .long 0x3f21a000 + .long 0x3f214000 + .long 0x3f20e000 + .long 0x3f206000 + .long 0x3f200000 + .long 0x3f1fa000 + .long 0x3f1f4000 + .long 0x3f1ee000 + .long 0x3f1e8000 + .long 0x3f1e2000 + .long 0x3f1dc000 + .long 0x3f1d6000 + .long 0x3f1d0000 + .long 0x3f1ca000 + .long 0x3f1c4000 + .long 0x3f1be000 + .long 0x3f1b8000 + .long 0x3f1b2000 + .long 0x3f1ac000 + .long 0x3f1a6000 + .long 0x3f1a0000 + .long 0x3f19a000 + .long 0x3f194000 + .long 0x3f190000 + .long 0x3f18a000 + .long 0x3f184000 + .long 0x3f17e000 + .long 0x3f178000 + .long 0x3f172000 + .long 0x3f16e000 + .long 0x3f168000 + .long 0x3f162000 + .long 0x3f15c000 + .long 0x3f158000 + .long 0x3f152000 + .long 0x3f14c000 + .long 0x3f148000 + .long 0x3f142000 + .long 0x3f13c000 + .long 0x3f138000 + .long 0x3f132000 + .long 0x3f12c000 + .long 0x3f128000 + .long 0x3f122000 + .long 0x3f11c000 + .long 0x3f118000 + .long 0x3f112000 + .long 0x3f10e000 + .long 0x3f108000 + .long 0x3f104000 + .long 0x3f0fe000 + .long 0x3f0f8000 + .long 0x3f0f4000 + .long 0x3f0ee000 + .long 0x3f0ea000 + .long 0x3f0e6000 + .long 0x3f0e0000 + .long 0x3f0dc000 + .long 0x3f0d6000 + .long 0x3f0d2000 + .long 0x3f0cc000 + .long 0x3f0c8000 + .long 0x3f0c2000 + .long 0x3f0be000 + .long 0x3f0ba000 + .long 0x3f0b4000 + .long 0x3f0b0000 + .long 0x3f0ac000 + .long 0x3f0a6000 + .long 0x3f0a2000 + .long 0x3f09e000 + .long 0x3f098000 + .long 0x3f094000 + .long 0x3f090000 + .long 0x3f08a000 + .long 0x3f086000 + .long 0x3f082000 + .long 0x3f07e000 + .long 0x3f078000 + .long 0x3f074000 + .long 0x3f070000 + .long 0x3f06c000 + .long 0x3f066000 + .long 0x3f062000 + .long 0x3f05e000 + .long 0x3f05a000 + .long 0x3f056000 + .long 0x3f052000 + .long 0x3f04c000 + .long 0x3f048000 + .long 0x3f044000 + .long 0x3f040000 + .long 0x3f03c000 + .long 0x3f038000 + .long 0x3f034000 + .long 0x3f030000 + .long 0x3f02a000 + .long 0x3f026000 + .long 0x3f022000 + .long 0x3f01e000 + .long 0x3f01a000 + .long 0x3f016000 + .long 0x3f012000 + .long 0x3f00e000 + .long 0x3f00a000 + .long 0x3f006000 + .long 0x3f002000 + .type __dlog2_la___libm_rcp_table_256,@object + .size __dlog2_la___libm_rcp_table_256,1024 + .align 64 +__dlog2_la___libm_log2_table_256: + .long 0xfb44c3b7,0x3e1485cb + .long 0x00000000,0x3f671b0e + .long 0x06028ac0,0x3e31d5d9 + .long 0x00000000,0x3f815cfe + .long 0xb8d7240b,0x3df8b9cb + .long 0x00000000,0x3f8cfee7 + .long 0x0d179106,0x3e38864a + .long 0x00000000,0x3f94564a + .long 0xecba1593,0x3e459c6a + .long 0x00000000,0x3f997723 + .long 0x94120c14,0x3e48d36a + .long 0x00000000,0x3f9f5923 + .long 0xd2571490,0x3e5410ba + .long 0x00000000,0x3fa2a094 + .long 0x1dc036a2,0x3e2776b0 + .long 0x00000000,0x3fa53894 + .long 0x78efe2b1,0x3e537229 + .long 0x00000000,0x3fa8324c + .long 0xfd29dc75,0x3e59c0fa + .long 0x00000000,0x3faacf54 + .long 0x046734f7,0x3e4636b7 + .long 0x00000000,0x3fadced9 + .long 0xd3b410b8,0x3e6f7950 + .long 0x00000000,0x3fb0387e + .long 0x00f2200a,0x3e19d1e7 + .long 0x00000000,0x3fb18ac6 + .long 0x8661ba82,0x3e4f09a9 + .long 0x00000000,0x3fb30edd + .long 0x9367107c,0x3e564d91 + .long 0x00000000,0x3fb463c1 + .long 0x0e4a4ce8,0x3e4e1fd1 + .long 0x00000000,0x3fb5b9e1 + .long 0x3cdb6374,0x3e492cf0 + .long 0x00000000,0x3fb7113f + .long 0x069c4f7f,0x3e61a364 + .long 0x00000000,0x3fb869dd + .long 0x427b631b,0x3e6493a6 + .long 0x00000000,0x3fb9c3be + .long 0xe02b3e8b,0x3e6af2c2 + .long 0x00000000,0x3fbb1ee4 + .long 0x389f4365,0x3e616e1e + .long 0x00000000,0x3fbc7b52 + .long 0x6a31fd96,0x3e4633b7 + .long 0x00000000,0x3fbdd90a + .long 0x0508664d,0x3e62ed84 + .long 0x00000000,0x3fbf05d4 + .long 0xaca1905c,0x3e775dcd + .long 0x00000000,0x3fc032fb + .long 0x094fbeeb,0x3e753e65 + .long 0x00000000,0x3fc0e3b5 + .long 0x96aa4b17,0x3e671f44 + .long 0x00000000,0x3fc19519 + .long 0x92da5a47,0x3e785566 + .long 0x00000000,0x3fc22dad + .long 0xbeb7d722,0x3e518efa + .long 0x00000000,0x3fc2e050 + .long 0xab57551c,0x3e738564 + .long 0x00000000,0x3fc379f7 + .long 0x54a914e3,0x3e55d0da + .long 0x00000000,0x3fc42ddd + .long 0xfe974017,0x3e73cd00 + .long 0x00000000,0x3fc4c89b + .long 0x59064390,0x3e54ffd6 + .long 0x00000000,0x3fc563dc + .long 0x633ab50f,0x3e67d75e + .long 0x00000000,0x3fc619a2 + .long 0xc8877e8a,0x3e77e6ce + .long 0x00000000,0x3fc6b5ff + .long 0x1ab7837f,0x3e7ecc1f + .long 0x00000000,0x3fc752e1 + .long 0xf9d5827a,0x3e7cea7c + .long 0x00000000,0x3fc7f049 + .long 0x64ccd537,0x3e357f7a + .long 0x00000000,0x3fc8a898 + .long 0xf7c9b05b,0x3e7994ca + .long 0x00000000,0x3fc94724 + .long 0xa2f56536,0x3e524b8f + .long 0x00000000,0x3fc9e63a + .long 0x5edaab42,0x3e7fd640 + .long 0x00000000,0x3fca85d8 + .long 0xd163379a,0x3e625f54 + .long 0x00000000,0x3fcb2602 + .long 0x936acd51,0x3e7ebdc3 + .long 0x00000000,0x3fcbc6b6 + .long 0xcfbc0aa0,0x3e7eee14 + .long 0x00000000,0x3fcc67f7 + .long 0xf73bcdad,0x3e764469 + .long 0x00000000,0x3fcceec4 + .long 0x60971b86,0x3e6eb44e + .long 0x00000000,0x3fcd9109 + .long 0xcd2052a5,0x3e65fcf4 + .long 0x00000000,0x3fce33dd + .long 0xc402867b,0x3e61af1e + .long 0x00000000,0x3fced741 + .long 0xa0c956e4,0x3e61bfbd + .long 0x00000000,0x3fcf7b36 + .long 0x831e77ff,0x3e85287b + .long 0x00000000,0x3fd00223 + .long 0xaddfdee2,0x3e7d2fc3 + .long 0x00000000,0x3fd054a4 + .long 0x342052c1,0x3e83724b + .long 0x00000000,0x3fd0999d + .long 0x602bcd34,0x3e7b4ec9 + .long 0x00000000,0x3fd0eca6 + .long 0x3aa20ead,0x3e6742da + .long 0x00000000,0x3fd13ffa + .long 0x9ecdadf4,0x3e713e82 + .long 0x00000000,0x3fd185a4 + .long 0xfef3031b,0x3e52f27e + .long 0x00000000,0x3fd1cb83 + .long 0x79e4af8a,0x3e710739 + .long 0x00000000,0x3fd21fa1 + .long 0xe59ad84a,0x3e637301 + .long 0x00000000,0x3fd265f5 + .long 0x3d7dfd9b,0x3e88697c + .long 0x00000000,0x3fd2baa0 + .long 0x738117b0,0x3e717788 + .long 0x00000000,0x3fd3016b + .long 0xd3c26a97,0x3e6c5514 + .long 0x00000000,0x3fd3486c + .long 0x4c4ff246,0x3e8df550 + .long 0x00000000,0x3fd38fa3 + .long 0x40340fa6,0x3e88102d + .long 0x00000000,0x3fd3e562 + .long 0x4592f4c3,0x3e5f53b6 + .long 0x00000000,0x3fd42d14 + .long 0x8b149a00,0x3e750fc8 + .long 0x00000000,0x3fd474fd + .long 0xa8f50e5f,0x3e86d01c + .long 0x00000000,0x3fd4bd1e + .long 0x7a22a88a,0x3e83c469 + .long 0x00000000,0x3fd50578 + .long 0xdc18b6d2,0x3e79000e + .long 0x00000000,0x3fd54e0b + .long 0x7c00250b,0x3e7870f0 + .long 0x00000000,0x3fd596d7 + .long 0xc1c885ae,0x3e8e3dd5 + .long 0x00000000,0x3fd5dfdc + .long 0xa6ecc47e,0x3e7bf64c + .long 0x00000000,0x3fd6291c + .long 0x0bc16c18,0x3e6bdaca + .long 0x00000000,0x3fd67296 + .long 0x1f925729,0x3e84d25c + .long 0x00000000,0x3fd6bc4a + .long 0xf23978de,0x3e5a5fb4 + .long 0x00000000,0x3fd7063a + .long 0xe2ac7f60,0x3e8e3da0 + .long 0x00000000,0x3fd75064 + .long 0x71f51a7b,0x3e819e20 + .long 0x00000000,0x3fd79acb + .long 0x5b924234,0x3e5e43ae + .long 0x00000000,0x3fd7d67c + .long 0xe9aedf37,0x3e701a2b + .long 0x00000000,0x3fd8214f + .long 0xeddd33ea,0x3e6b6f51 + .long 0x00000000,0x3fd86c5f + .long 0xe732b3c4,0x3e79375f + .long 0x00000000,0x3fd8b7ac + .long 0xe47cb9df,0x3e7e831b + .long 0x00000000,0x3fd8f416 + .long 0xe392d3c8,0x3e8abc37 + .long 0x00000000,0x3fd93fd2 + .long 0x28b35c77,0x3e80852d + .long 0x00000000,0x3fd98bcd + .long 0xd29cea36,0x3e69f374 + .long 0x00000000,0x3fd9c8c3 + .long 0xb3d7b0e6,0x3e542981 + .long 0x00000000,0x3fda152f + .long 0x1fe6d5ac,0x3e8b2bfb + .long 0x00000000,0x3fda527f + .long 0xf32e5dda,0x3e6f6f5c + .long 0x00000000,0x3fda9f5e + .long 0xd34d0d30,0x3e65abaa + .long 0x00000000,0x3fdadd0b + .long 0xe0ac9602,0x3e7bd47f + .long 0x00000000,0x3fdb2a5d + .long 0x7c5c784b,0x3e833601 + .long 0x00000000,0x3fdb6867 + .long 0xd7b0821f,0x3e5b887c + .long 0x00000000,0x3fdbb62f + .long 0xcd0a8f6a,0x3e83eccc + .long 0x00000000,0x3fdbf497 + .long 0x7500a4e8,0x3e7ba0e6 + .long 0x00000000,0x3fdc332a + .long 0xfc8712bb,0x3e885a8b + .long 0x00000000,0x3fdc819d + .long 0xf7a3a78f,0x3e81c336 + .long 0x00000000,0x3fdcc090 + .long 0x4ad8a38b,0x3e7846b4 + .long 0x00000000,0x3fdcffae + .long 0xfcfc3a99,0x3e7db50f + .long 0x00000000,0x3fdd3ef7 + .long 0x433cccd2,0x3e238809 + .long 0x00000000,0x3fdd8e50 + .long 0x6828fa82,0x3e721b2e + .long 0x00000000,0x3fddcdfb + .long 0xfc7c49c1,0x3e82848b + .long 0x00000000,0x3fde0dd2 + .long 0x1fce4d49,0x3e615144 + .long 0x00000000,0x3fde4dd6 + .long 0x77e2e8fd,0x3e68b88a + .long 0x00000000,0x3fde8e06 + .long 0x22a961b0,0x3e8fd353 + .long 0x00000000,0x3fdece62 + .long 0x266f2e1f,0x3e72854e + .long 0x00000000,0x3fdf1f16 + .long 0xc69211fe,0x3e8520c7 + .long 0x00000000,0x3fdf5fd8 + .long 0xaba878d5,0x3e826fcf + .long 0x00000000,0x3fdfa0c8 + .long 0xcd5b35b1,0x3e726ed8 + .long 0x00000000,0x3fdfe1e6 + .long 0x678a4f1c,0x3e49054d + .long 0x00000000,0x3fe01199 + .long 0x3bc19f18,0x3e5d23cb + .long 0x00000000,0x3fe03256 + .long 0x12772acb,0x3e87af35 + .long 0x00000000,0x3fe0532a + .long 0x2849c88a,0x3e67f5fc + .long 0x00000000,0x3fe07416 + .long 0x0e574fa1,0x3e84fce2 + .long 0x00000000,0x3fe08cd6 + .long 0x0ec2b5fa,0x3e857044 + .long 0x00000000,0x3fe0adeb + .long 0xd031f353,0x3e6d5d1d + .long 0x00000000,0x3fe0cf18 + .long 0xdae75c4d,0x3e99a159 + .long 0x00000000,0x3fe0f05c + .long 0x1553afb9,0x3e90eaf1 + .long 0x00000000,0x3fe111b9 + .long 0xdcc5c3c7,0x3e8bc6f3 + .long 0x00000000,0x3fe1332e + .long 0x1109e597,0x3e94ef84 + .long 0x00000000,0x3fe154bb + .long 0xd82adea4,0x3e937f40 + .long 0x00000000,0x3fe16df5 + .long 0x78336a2f,0x3e96dc5a + .long 0x00000000,0x3fe18fad + .long 0x84c2c804,0x3e90935b + .long 0x00000000,0x3fe1b17e + .long 0x04fd30aa,0x3e8a837a + .long 0x00000000,0x3fe1caeb + .long 0xd924b0ac,0x3e99061d + .long 0x00000000,0x3fe1ece7 + .long 0xef9b9d01,0x3e7ed700 + .long 0x00000000,0x3fe20efd + .long 0x202c81ec,0x3e9c6ebb + .long 0x00000000,0x3fe2289d + .long 0xfc0d7d76,0x3e936d4d + .long 0x00000000,0x3fe24adf + .long 0x9f8756ba,0x3e9a35d7 + .long 0x00000000,0x3fe26d3a + .long 0xe7c79d83,0x3e584ee3 + .long 0x00000000,0x3fe28710 + .long 0x942065a0,0x3e7d9e0d + .long 0x00000000,0x3fe2a998 + .long 0x2175afbf,0x3e872108 + .long 0x00000000,0x3fe2c38f + .long 0xfaf6283c,0x3e9f5809 + .long 0x00000000,0x3fe2e644 + .long 0x411d0507,0x3e871209 + .long 0x00000000,0x3fe3005e + .long 0x370c24bf,0x3e9c3b11 + .long 0x00000000,0x3fe32341 + .long 0x8044bb5a,0x3e9bce8e + .long 0x00000000,0x3fe33d7d + .long 0x698ea854,0x3e98aca0 + .long 0x00000000,0x3fe3608f + .long 0xd4d873bb,0x3e972a8e + .long 0x00000000,0x3fe37aee + .long 0x615e8182,0x3e8f669b + .long 0x00000000,0x3fe39e2f + .long 0xdda5b49a,0x3e98d1f4 + .long 0x00000000,0x3fe3b8b1 + .long 0xe72383f7,0x3e9cc279 + .long 0x00000000,0x3fe3dc21 + .long 0x497497f1,0x3e9c6774 + .long 0x00000000,0x3fe3f6c7 + .long 0x801bd0e6,0x3e82c7f6 + .long 0x00000000,0x3fe4117d + .long 0xd0ee28b4,0x3e9dfdd6 + .long 0x00000000,0x3fe43531 + .long 0xb70d3761,0x3e92d3a2 + .long 0x00000000,0x3fe4500b + .long 0xe7d6bcb2,0x3e9c8343 + .long 0x00000000,0x3fe46af4 + .long 0x90d43957,0x3e693179 + .long 0x00000000,0x3fe48eef + .long 0xf12570df,0x3e799eab + .long 0x00000000,0x3fe4a9fd + .long 0x1b88755d,0x3e78c5f8 + .long 0x00000000,0x3fe4c51b + .long 0xdf99a22c,0x3e7369be + .long 0x00000000,0x3fe4e049 + .long 0x6ed50f62,0x3e88fd93 + .long 0x00000000,0x3fe5049f + .long 0x978605ff,0x3e9c6042 + .long 0x00000000,0x3fe51ff2 + .long 0xe6c85f4c,0x3e930ae6 + .long 0x00000000,0x3fe53b56 + .long 0xc3275ba6,0x3e92e7b6 + .long 0x00000000,0x3fe556ca + .long 0x91597938,0x3e9e6401 + .long 0x00000000,0x3fe5724e + .long 0x448ebb62,0x3e3d2dee + .long 0x00000000,0x3fe59719 + .long 0x47501b6d,0x3e9b432e + .long 0x00000000,0x3fe5b2c3 + .long 0x571fa7cd,0x3e83cf9b + .long 0x00000000,0x3fe5ce7f + .long 0x7359819d,0x3e8dc615 + .long 0x00000000,0x3fe5ea4b + .long 0xc78a85ed,0x3e8973c3 + .long 0x00000000,0x3fe60628 + .long 0xc15a9f3d,0x3e77d788 + .long 0x00000000,0x3fe62216 + .long 0x51952736,0x3e9d2538 + .long 0x00000000,0x3fe63e14 + .long 0xde792c07,0x3e94dab9 + .long 0x00000000,0x3fe65a24 + .long 0x5bfa4318,0x3e8f5be1 + .long 0x00000000,0x3fe67645 + .long 0x55090ec8,0x3e903b26 + .long 0x00000000,0x3fe69277 + .long 0xc78b6175,0x3e99236f + .long 0x00000000,0x3fe6aeba + .long 0x3a80db6a,0x3e8a1972 + .long 0x00000000,0x3fe6cb0f + .long 0xf558aa96,0x3e8d43a2 + .long 0x00000000,0x3fe6e775 + .long 0xd9a82f2e,0x3e424ee3 + .long 0x00000000,0x3fe703ed + .long 0x583878f6,0x3e764d8e + .long 0x00000000,0x3fe72076 + .long 0xc1150a3e,0x3e379604 + .long 0x00000000,0x3fe73d11 + .long 0xed85584b,0x3e93b229 + .long 0x00000000,0x3fe759bd + .long 0x451a7b48,0x3e62967a + .long 0x00000000,0x3fe7767c + .long 0xc044e72d,0x3e8e12d7 + .long 0x00000000,0x3fe7934c + .long 0xfdfb6949,0x3e9ca45d + .long 0x00000000,0x3fe7b02e + .long 0xff690fce,0x3e9244fc + .long 0x00000000,0x3fe7c37a + .long 0x81487a2c,0x3e7e9cea + .long 0x00000000,0x3fe7e07b + .long 0xd0ad2d9a,0x3e760da0 + .long 0x00000000,0x3fe7fd8e + .long 0x096f45d9,0x3e8d7703 + .long 0x00000000,0x3fe81ab3 + .long 0x1b17115b,0x3e78dbee + .long 0x00000000,0x3fe837eb + .long 0x7c252ee0,0x3e8dc5a4 + .long 0x00000000,0x3fe85535 + .long 0x42d5123f,0x3e950116 + .long 0x00000000,0x3fe868c6 + .long 0xf11e41be,0x3e4c4eb7 + .long 0x00000000,0x3fe88630 + .long 0xdb2890b4,0x3e7773b8 + .long 0x00000000,0x3fe8a3ac + .long 0x7ffb4479,0x3e7bc8e7 + .long 0x00000000,0x3fe8c13b + .long 0x237693b3,0x3e8c388f + .long 0x00000000,0x3fe8d4fa + .long 0x45fcf1a0,0x3e731cd4 + .long 0x00000000,0x3fe8f2a9 + .long 0xe4895b91,0x3e9fae07 + .long 0x00000000,0x3fe9106a + .long 0x42d2824e,0x3e7d140d + .long 0x00000000,0x3fe9244c + .long 0x39900f67,0x3e75c3c8 + .long 0x00000000,0x3fe9422e + .long 0xa314252b,0x3e902422 + .long 0x00000000,0x3fe96023 + .long 0xf2a6b8ef,0x3e7b9be8 + .long 0x00000000,0x3fe97427 + .long 0x1476f5e9,0x3e66b188 + .long 0x00000000,0x3fe9923d + .long 0xdde10a6f,0x3e93c377 + .long 0x00000000,0x3fe9b066 + .long 0x4944a32c,0x3e817cad + .long 0x00000000,0x3fe9c48d + .long 0xc738e7ef,0x3e9927f2 + .long 0x00000000,0x3fe9e2d7 + .long 0xd25cfd94,0x3e7ccc41 + .long 0x00000000,0x3fea0136 + .long 0x2210e81b,0x3e8382fa + .long 0x00000000,0x3fea1580 + .long 0x1e690ce2,0x3e7752a7 + .long 0x00000000,0x3fea3400 + .long 0x122315d2,0x3e94cfee + .long 0x00000000,0x3fea4860 + .long 0xce98333b,0x3e80536e + .long 0x00000000,0x3fea6702 + .long 0xc30f00e9,0x3e838b7e + .long 0x00000000,0x3fea7b79 + .long 0x05b0c779,0x3e9dc380 + .long 0x00000000,0x3fea9a3c + .long 0xdd6dd3fe,0x3e6be168 + .long 0x00000000,0x3feab915 + .long 0x26e0d276,0x3e966757 + .long 0x00000000,0x3feacdb0 + .long 0x0aad615c,0x3e880252 + .long 0x00000000,0x3feaecab + .long 0x7927096a,0x3e607c31 + .long 0x00000000,0x3feb015e + .long 0x53b3d90e,0x3e596513 + .long 0x00000000,0x3feb161a + .long 0x8f2f0570,0x3e90ec3a + .long 0x00000000,0x3feb3545 + .long 0x81193954,0x3e9cb640 + .long 0x00000000,0x3feb4a18 + .long 0x311e7236,0x3e936479 + .long 0x00000000,0x3feb6967 + .long 0x3a42a413,0x3e9210e8 + .long 0x00000000,0x3feb7e52 + .long 0x4a0daeb2,0x3e9a1717 + .long 0x00000000,0x3feb9dc4 + .long 0xce900653,0x3e925bb7 + .long 0x00000000,0x3febb2c7 + .long 0xb5087588,0x3e95dbb8 + .long 0x00000000,0x3febd25d + .long 0x4a41204c,0x3e8d0aa9 + .long 0x00000000,0x3febe778 + .long 0x69a0d774,0x3e9c772f + .long 0x00000000,0x3febfc9c + .long 0x79d0a9a5,0x3e97b6a0 + .long 0x00000000,0x3fec1c65 + .long 0xd26f1a12,0x3e8f7402 + .long 0x00000000,0x3fec31a2 + .long 0x1243bc84,0x3e4db2f1 + .long 0x00000000,0x3fec46e9 + .long 0x477e1755,0x3e80dcc2 + .long 0x00000000,0x3fec66e5 + .long 0xc2f904c1,0x3e8b1e31 + .long 0x00000000,0x3fec7c44 + .long 0x1785b0c4,0x3e8fb619 + .long 0x00000000,0x3fec91ad + .long 0xedb052ef,0x3e98832d + .long 0x00000000,0x3fecb1dd + .long 0x9e373618,0x3e98c822 + .long 0x00000000,0x3fecc75f + .long 0x32954637,0x3e9a46e7 + .long 0x00000000,0x3fecdceb + .long 0xf0e6b2a9,0x3e996305 + .long 0x00000000,0x3fecfd50 + .long 0x1a6614ee,0x3e68c160 + .long 0x00000000,0x3fed12f6 + .long 0x09e33b28,0x3e9229c4 + .long 0x00000000,0x3fed28a5 + .long 0xe53b994c,0x3e7f281b + .long 0x00000000,0x3fed3e5f + .long 0x1124ac35,0x3e9f27f3 + .long 0x00000000,0x3fed5f08 + .long 0x3d2fdc03,0x3e84e779 + .long 0x00000000,0x3fed74dc + .long 0x1e93fd97,0x3e416c07 + .long 0x00000000,0x3fed8aba + .long 0x91b415ef,0x3e654669 + .long 0x00000000,0x3feda0a2 + .long 0x6495f594,0x3e9712d4 + .long 0x00000000,0x3fedc191 + .long 0x40171789,0x3e9ca7b2 + .long 0x00000000,0x3fedd793 + .long 0xe8fc4323,0x3e929afa + .long 0x00000000,0x3fededa0 + .long 0xeb03bd09,0x3e9a2e96 + .long 0x00000000,0x3fee03b7 + .long 0xca370ea2,0x3e94a63d + .long 0x00000000,0x3fee19d9 + .long 0xe30512ec,0x3e6a3bcb + .long 0x00000000,0x3fee3006 + .long 0x411c95ce,0x3e99d3ed + .long 0x00000000,0x3fee515c + .long 0x35cfaf8e,0x3e3e5b57 + .long 0x00000000,0x3fee67a4 + .long 0x5669df6a,0x3e9fca71 + .long 0x00000000,0x3fee7df5 + .long 0x04f19d94,0x3e9914e2 + .long 0x00000000,0x3fee9452 + .long 0xcaa19134,0x3e8b511c + .long 0x00000000,0x3feeaaba + .long 0x4bb3bfb1,0x3e9ed72f + .long 0x00000000,0x3feec12c + .long 0x3c29d75e,0x3e8be8d6 + .long 0x00000000,0x3feed7aa + .long 0x97da24fd,0x3e9c55d9 + .long 0x00000000,0x3feeee32 + .long 0x983c68ea,0x3e7ddfb1 + .long 0x00000000,0x3fef1014 + .long 0xf4425883,0x3e83ce66 + .long 0x00000000,0x3fef26b8 + .long 0xf7857f23,0x3e9055c3 + .long 0x00000000,0x3fef3d67 + .long 0x2805b525,0x3e9c2223 + .long 0x00000000,0x3fef5421 + .long 0x0c347fcf,0x3e8d59ba + .long 0x00000000,0x3fef6ae7 + .long 0x7c901c44,0x3e82b110 + .long 0x00000000,0x3fef81b8 + .long 0x74d1b482,0x3e8b1394 + .long 0x00000000,0x3fef9894 + .long 0x36fb9eb2,0x3e9ca75b + .long 0x00000000,0x3fefaf7b + .long 0x629b1b7e,0x3e981a0a + .long 0x00000000,0x3fefc66e + .long 0x7b8c1116,0x3e54cc20 + .long 0x00000000,0x3fefdd6d + .long 0xc0babe05,0x3e99ac8b + .long 0x00000000,0x3feff476 + .type __dlog2_la___libm_log2_table_256,@object + .size __dlog2_la___libm_log2_table_256,4096 + .space 512, 0x00 + .align 64 +__dlog2_la__P: + .long 3213235158 + .long 1050233568 + .long 1697350398 + .long 3219592519 + .long 3694740707 + .long 1071564553 + .long 1697260025 + .long 3218543943 + .long 2542794428 + .long 1070757746 + .long 2165113687 + .long 3217999640 + .long 0 + .long 1073157447 + .type __dlog2_la__P,@object + .size __dlog2_la__P,56 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_log2_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log2_s_la.s new file mode 100644 index 00000000..7f26b01b --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log2_s_la.s @@ -0,0 +1,728 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * * log2(x) = VGETEXP(x) + log2(VGETMANT(x)) + * * VGETEXP, VGETMANT will correctly treat special cases too (including denormals) + * * mx = VGETMANT(x) is in [1,2) for all x>=0 + * * log2(mx) = -log2(RCP(mx)) + log2(1 +(mx*RCP(mx)-1)) + * * RCP(mx) is rounded to 4 fractional bits, + * * and the table lookup for log2(RCP(mx)) is based on a small permute instruction + * * + * * LA, EP versions use interval interpolation (16 intervals) + * * + * + */ + + + .text +.L_2__routine_start___svml_log2f16_z0_0: + + .align 16,0x90 + .globl __svml_log2f16 + +__svml_log2f16: + + + .cfi_startproc +..L2: + + 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 + +/* GetMant(x), normalized to [.75,1.5) for x>=0, NaN for x<0 */ + vgetmantps $11, {sae}, %zmm0, %zmm3 + vmovups __svml_slog2_data_internal_avx512(%rip), %zmm1 + vgetexpps {sae}, %zmm0, %zmm5 + +/* x<=0? */ + vfpclassps $94, %zmm0, %k0 + vsubps {rn-sae}, %zmm1, %zmm3, %zmm9 + vpsrld $19, %zmm3, %zmm7 + vgetexpps {sae}, %zmm3, %zmm6 + vpermps 64+__svml_slog2_data_internal_avx512(%rip), %zmm7, %zmm1 + vpermps 128+__svml_slog2_data_internal_avx512(%rip), %zmm7, %zmm2 + vpermps 192+__svml_slog2_data_internal_avx512(%rip), %zmm7, %zmm4 + vpermps 256+__svml_slog2_data_internal_avx512(%rip), %zmm7, %zmm8 + vsubps {rn-sae}, %zmm6, %zmm5, %zmm10 + vfmadd213ps {rn-sae}, %zmm2, %zmm9, %zmm1 + kmovw %k0, %edx + vfmadd213ps {rn-sae}, %zmm4, %zmm9, %zmm1 + vfmadd213ps {rn-sae}, %zmm8, %zmm9, %zmm1 + vfmadd213ps {rn-sae}, %zmm10, %zmm9, %zmm1 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + vmovaps %zmm1, %zmm0 + 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 %zmm0, 64(%rsp) + vmovups %zmm1, 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), %zmm1 + 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_slog2_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_log2f16,@function + .size __svml_log2f16,.-__svml_log2f16 +..LN__svml_log2f16.0: + +.L_2__routine_start___svml_slog2_cout_rare_internal_1: + + .align 16,0x90 + +__svml_slog2_cout_rare_internal: + + + .cfi_startproc +..L53: + + xorl %eax, %eax + movzwl 2(%rdi), %edx + andl $32640, %edx + cmpl $32640, %edx + je .LBL_2_13 + + + movss (%rdi), %xmm2 + xorl %ecx, %ecx + pxor %xmm1, %xmm1 + movss %xmm2, -16(%rsp) + ucomiss %xmm1, %xmm2 + jp .LBL_2_3 + je .LBL_2_5 + +.LBL_2_3: + + movzwl -14(%rsp), %edx + testl $32640, %edx + jne .LBL_2_5 + + + movss .L_2il0floatpacket.76(%rip), %xmm0 + movl $-27, %ecx + mulss %xmm0, %xmm2 + movss %xmm2, -16(%rsp) + +.LBL_2_5: + + comiss %xmm1, %xmm2 + jbe .LBL_2_9 + + + movaps %xmm2, %xmm1 + subss .L_2il0floatpacket.90(%rip), %xmm1 + movss %xmm1, -20(%rsp) + andb $127, -17(%rsp) + movss -20(%rsp), %xmm0 + comiss .L_2il0floatpacket.77(%rip), %xmm0 + jbe .LBL_2_8 + + + movzwl -14(%rsp), %edx + pxor %xmm8, %xmm8 + andl $32640, %edx + lea __slog2_la_CoutTab(%rip), %r10 + shrl $7, %edx + movss %xmm2, -20(%rsp) + movss .L_2il0floatpacket.79(%rip), %xmm2 + movaps %xmm2, %xmm1 + movss .L_2il0floatpacket.88(%rip), %xmm6 + lea -127(%rcx,%rdx), %r9d + movzwl -18(%rsp), %ecx + andl $-32641, %ecx + addl $16256, %ecx + movw %cx, -18(%rsp) + movss -20(%rsp), %xmm3 + movaps %xmm3, %xmm0 + addss %xmm3, %xmm1 + addss .L_2il0floatpacket.78(%rip), %xmm0 + cvtsi2ss %r9d, %xmm8 + movss %xmm0, -24(%rsp) + movl -24(%rsp), %edi + movss %xmm1, -24(%rsp) + andl $127, %edi + movss -24(%rsp), %xmm7 + subss %xmm2, %xmm7 + lea (%rdi,%rdi,2), %r8d + movss (%r10,%r8,4), %xmm5 + subss %xmm7, %xmm3 + addss 4(%r10,%r8,4), %xmm8 + mulss %xmm5, %xmm7 + mulss %xmm3, %xmm5 + subss .L_2il0floatpacket.80(%rip), %xmm7 + movaps %xmm7, %xmm4 + addss %xmm7, %xmm8 + addss %xmm5, %xmm4 + mulss %xmm4, %xmm6 + addss .L_2il0floatpacket.87(%rip), %xmm6 + mulss %xmm4, %xmm6 + addss .L_2il0floatpacket.86(%rip), %xmm6 + mulss %xmm4, %xmm6 + addss .L_2il0floatpacket.85(%rip), %xmm6 + mulss %xmm4, %xmm6 + addss .L_2il0floatpacket.84(%rip), %xmm6 + mulss %xmm4, %xmm6 + addss .L_2il0floatpacket.83(%rip), %xmm6 + mulss %xmm4, %xmm6 + addss .L_2il0floatpacket.82(%rip), %xmm6 + mulss %xmm4, %xmm6 + addss .L_2il0floatpacket.81(%rip), %xmm6 + mulss %xmm6, %xmm7 + mulss %xmm5, %xmm6 + addss 8(%r10,%r8,4), %xmm6 + addss %xmm5, %xmm6 + addss %xmm6, %xmm7 + addss %xmm7, %xmm8 + movss %xmm8, (%rsi) + ret + +.LBL_2_8: + + movss .L_2il0floatpacket.80(%rip), %xmm0 + mulss %xmm0, %xmm1 + movss .L_2il0floatpacket.88(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss .L_2il0floatpacket.87(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss .L_2il0floatpacket.86(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss .L_2il0floatpacket.85(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss .L_2il0floatpacket.84(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss .L_2il0floatpacket.83(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss .L_2il0floatpacket.82(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss .L_2il0floatpacket.81(%rip), %xmm2 + mulss %xmm1, %xmm2 + addss %xmm1, %xmm2 + movss %xmm2, (%rsi) + ret + +.LBL_2_9: + + ucomiss %xmm1, %xmm2 + jp .LBL_2_10 + je .LBL_2_12 + +.LBL_2_10: + + divss %xmm1, %xmm1 + movss %xmm1, (%rsi) + movl $1, %eax + + + ret + +.LBL_2_12: + + movss .L_2il0floatpacket.89(%rip), %xmm0 + movl $2, %eax + divss %xmm1, %xmm0 + movss %xmm0, (%rsi) + ret + +.LBL_2_13: + + movb 3(%rdi), %dl + andb $-128, %dl + cmpb $-128, %dl + je .LBL_2_15 + +.LBL_2_14: + + movss (%rdi), %xmm0 + mulss %xmm0, %xmm0 + movss %xmm0, (%rsi) + ret + +.LBL_2_15: + + testl $8388607, (%rdi) + jne .LBL_2_14 + + + movl $1, %eax + pxor %xmm1, %xmm1 + pxor %xmm0, %xmm0 + divss %xmm0, %xmm1 + movss %xmm1, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_slog2_cout_rare_internal,@function + .size __svml_slog2_cout_rare_internal,.-__svml_slog2_cout_rare_internal +..LN__svml_slog2_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_slog2_data_internal_avx512: + .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 3198647882 + .long 3196759613 + .long 3194486322 + .long 3192115638 + .long 3190203785 + .long 3188646043 + .long 3187058849 + .long 3184933705 + .long 3210235473 + .long 3208544417 + .long 3207107312 + .long 3205878647 + .long 3204822309 + .long 3203370544 + .long 3201784975 + .long 3200401796 + .long 1056280844 + .long 1055933857 + .long 1055381630 + .long 1054718852 + .long 1054004959 + .long 1053277138 + .long 1052558383 + .long 1051862550 + .long 1049572249 + .long 1051796030 + .long 1053416266 + .long 1054571017 + .long 1055365658 + .long 1055881163 + .long 1056180132 + .long 1056311220 + .long 3208161588 + .long 3208150502 + .long 3208115952 + .long 3208053899 + .long 3207964810 + .long 3207851268 + .long 3207716694 + .long 3207564674 + .long 3208734740 + .long 3208490840 + .long 3208338440 + .long 3208247850 + .long 3208197907 + .long 3208173537 + .long 3208164045 + .long 3208161890 + .long 1069066811 + .long 1069066688 + .long 1069065960 + .long 1069064014 + .long 1069060299 + .long 1069054385 + .long 1069045976 + .long 1069034896 + .long 1069049182 + .long 1069058106 + .long 1069062890 + .long 1069065263 + .long 1069066312 + .long 1069066697 + .long 1069066799 + .long 1069066811 + .type __svml_slog2_data_internal_avx512,@object + .size __svml_slog2_data_internal_avx512,320 + .align 32 +__slog2_la_CoutTab: + .long 1136175680 + .long 0 + .long 0 + .long 1135986583 + .long 1018822656 + .long 930849160 + .long 1135809305 + .long 1026916352 + .long 941737263 + .long 1135632026 + .long 1032306688 + .long 936581683 + .long 1135466566 + .long 1035100160 + .long 929197062 + .long 1135301106 + .long 1037934592 + .long 897678483 + .long 1135135647 + .long 1040498688 + .long 3059980496 + .long 1134982005 + .long 1041852416 + .long 908010313 + .long 1134828364 + .long 1043226624 + .long 3073739761 + .long 1134686541 + .long 1044510720 + .long 918631281 + .long 1134538809 + .long 1045868544 + .long 3062817788 + .long 1134402896 + .long 1047134208 + .long 3064656237 + .long 1134266982 + .long 1048416256 + .long 3029590737 + .long 1134131069 + .long 1049145856 + .long 903671587 + .long 1134001065 + .long 1049775616 + .long 911388989 + .long 1133876970 + .long 1050384896 + .long 3069885983 + .long 1133752875 + .long 1051001344 + .long 3037530952 + .long 1133634689 + .long 1051596288 + .long 3069922038 + .long 1133516503 + .long 1052198400 + .long 3070222063 + .long 1133404227 + .long 1052776960 + .long 919559368 + .long 1133291951 + .long 1053363200 + .long 840060372 + .long 1133185584 + .long 1053924864 + .long 915603033 + .long 1133079217 + .long 1054493184 + .long 921334924 + .long 1132978759 + .long 1055036416 + .long 896601826 + .long 1132872392 + .long 1055618048 + .long 908913293 + .long 1132777843 + .long 1056141312 + .long 3065728751 + .long 1132677386 + .long 1056702976 + .long 909020429 + .long 1132582837 + .long 1057101312 + .long 3048020321 + .long 1132494198 + .long 1057354752 + .long 3038815896 + .long 1132337219 + .long 1057628160 + .long 3068137421 + .long 1132159940 + .long 1057887232 + .long 3069993595 + .long 1131994480 + .long 1058131456 + .long 3054354312 + .long 1131817202 + .long 1058395904 + .long 910223436 + .long 1131651742 + .long 1058645504 + .long 3046952660 + .long 1131486282 + .long 1058897664 + .long 3057670844 + .long 1131332641 + .long 1059133952 + .long 924929721 + .long 1131178999 + .long 1059373056 + .long 3068093797 + .long 1131025358 + .long 1059614208 + .long 3058851683 + .long 1130871717 + .long 1059857920 + .long 3069897752 + .long 1130729894 + .long 1060084736 + .long 924446297 + .long 1130576253 + .long 1060333312 + .long 903058075 + .long 1130434430 + .long 1060564992 + .long 3052757441 + .long 1130304426 + .long 1060779264 + .long 3045479197 + .long 1130162603 + .long 1061015040 + .long 924699798 + .long 1130032599 + .long 1061233664 + .long 3070937808 + .long 1129890776 + .long 1061473792 + .long 925912756 + .long 1129772591 + .long 1061676032 + .long 923952205 + .long 1129642586 + .long 1061900544 + .long 906547304 + .long 1129512582 + .long 1062127104 + .long 3050351427 + .long 1129394397 + .long 1062334976 + .long 3070601694 + .long 1129276211 + .long 1062544384 + .long 900519722 + .long 1129158025 + .long 1062755840 + .long 3055774932 + .long 1129039840 + .long 1062969088 + .long 3053661845 + .long 1128921654 + .long 1063184384 + .long 3073448373 + .long 1128815287 + .long 1063379456 + .long 907090876 + .long 1128697101 + .long 1063598336 + .long 881051555 + .long 1128590734 + .long 1063796992 + .long 898320955 + .long 1128484367 + .long 1063997440 + .long 3068804107 + .long 1128378000 + .long 1064199168 + .long 923531617 + .long 1128283452 + .long 1064380416 + .long 3070994608 + .long 1128177085 + .long 1064585472 + .long 901920533 + .long 1128082536 + .long 1064769536 + .long 3071653428 + .long 1127976169 + .long 1064977920 + .long 903017594 + .long 1127881621 + .long 1065164800 + .long 911713416 + .long 1127787072 + .long 1065353216 + .long 0 + .long 1065353216 + .long 0 + .long 1207959616 + .long 1174405120 + .long 1002438656 + .long 1291845632 + .long 0 + .long 1065353216 + .long 1136175680 + .long 3212771328 + .long 3065082383 + .long 841219731 + .long 2913632803 + .long 691870088 + .long 2765780188 + .long 545377693 + .long 2619180638 + .type __slog2_la_CoutTab,@object + .size __slog2_la_CoutTab,848 + .align 4 +.L_2il0floatpacket.76: + .long 0x4d000000 + .type .L_2il0floatpacket.76,@object + .size .L_2il0floatpacket.76,4 + .align 4 +.L_2il0floatpacket.77: + .long 0x3bc00000 + .type .L_2il0floatpacket.77,@object + .size .L_2il0floatpacket.77,4 + .align 4 +.L_2il0floatpacket.78: + .long 0x48000040 + .type .L_2il0floatpacket.78,@object + .size .L_2il0floatpacket.78,4 + .align 4 +.L_2il0floatpacket.79: + .long 0x46000000 + .type .L_2il0floatpacket.79,@object + .size .L_2il0floatpacket.79,4 + .align 4 +.L_2il0floatpacket.80: + .long 0x43b8aa40 + .type .L_2il0floatpacket.80,@object + .size .L_2il0floatpacket.80,4 + .align 4 +.L_2il0floatpacket.81: + .long 0xbf7f0000 + .type .L_2il0floatpacket.81,@object + .size .L_2il0floatpacket.81,4 + .align 4 +.L_2il0floatpacket.82: + .long 0xb6b1720f + .type .L_2il0floatpacket.82,@object + .size .L_2il0floatpacket.82,4 + .align 4 +.L_2il0floatpacket.83: + .long 0x3223fe93 + .type .L_2il0floatpacket.83,@object + .size .L_2il0floatpacket.83,4 + .align 4 +.L_2il0floatpacket.84: + .long 0xadaa8223 + .type .L_2il0floatpacket.84,@object + .size .L_2il0floatpacket.84,4 + .align 4 +.L_2il0floatpacket.85: + .long 0x293d1988 + .type .L_2il0floatpacket.85,@object + .size .L_2il0floatpacket.85,4 + .align 4 +.L_2il0floatpacket.86: + .long 0xa4da74dc + .type .L_2il0floatpacket.86,@object + .size .L_2il0floatpacket.86,4 + .align 4 +.L_2il0floatpacket.87: + .long 0x2081cd9d + .type .L_2il0floatpacket.87,@object + .size .L_2il0floatpacket.87,4 + .align 4 +.L_2il0floatpacket.88: + .long 0x9c1d865e + .type .L_2il0floatpacket.88,@object + .size .L_2il0floatpacket.88,4 + .align 4 +.L_2il0floatpacket.89: + .long 0xbf800000 + .type .L_2il0floatpacket.89,@object + .size .L_2il0floatpacket.89,4 + .align 4 +.L_2il0floatpacket.90: + .long 0x3f800000 + .type .L_2il0floatpacket.90,@object + .size .L_2il0floatpacket.90,4 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_log_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log_d_la.s new file mode 100644 index 00000000..42428c58 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log_d_la.s @@ -0,0 +1,1096 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * * + * * log(x) = -log(Rcp) + log(Rcp*x), + * * where Rcp ~ 1/x (accuracy ~9 bits, obtained by rounding HW approximation to 1+9 mantissa bits) + * * + * * Reduced argument R=Rcp*x-1 is used to approximate log(1+R) as polynomial + * * + * * log(Rcp) = exponent_Rcp*log(2) + log(mantissa_Rcp) + * * -log(mantissa_Rcp) is obtained from a lookup table, accessed by a 9-bit index + * + */ + + + .text +.L_2__routine_start___svml_log8_z0_0: + + .align 16,0x90 + .globl __svml_log8 + +__svml_log8: + + + .cfi_startproc +..L2: + + 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 + vgetmantpd $8, {sae}, %zmm0, %zmm6 + vmovups 128+__svml_dlog_data_internal_avx512(%rip), %zmm4 + vmovups 384+__svml_dlog_data_internal_avx512(%rip), %zmm11 + vmovups 448+__svml_dlog_data_internal_avx512(%rip), %zmm14 + vmovups 512+__svml_dlog_data_internal_avx512(%rip), %zmm12 + vmovups 256+__svml_dlog_data_internal_avx512(%rip), %zmm10 + +/* Start polynomial evaluation */ + vmovups 320+__svml_dlog_data_internal_avx512(%rip), %zmm1 + vmovups 640+__svml_dlog_data_internal_avx512(%rip), %zmm13 + vmovups 704+__svml_dlog_data_internal_avx512(%rip), %zmm15 + +/* Prepare exponent correction: DblRcp<0.75? */ + vmovups 192+__svml_dlog_data_internal_avx512(%rip), %zmm3 + +/* Table lookup */ + vmovups __svml_dlog_data_internal_avx512(%rip), %zmm5 + +/* GetExp(x) */ + vgetexppd {sae}, %zmm0, %zmm7 + +/* DblRcp ~ 1/Mantissa */ + vrcp14pd %zmm6, %zmm8 + +/* x<=0? */ + vfpclasspd $94, %zmm0, %k0 + +/* round DblRcp to 4 fractional bits (RN mode, no Precision exception) */ + vrndscalepd $88, {sae}, %zmm8, %zmm2 + kmovw %k0, %edx + +/* Reduced argument: R = DblRcp*Mantissa - 1 */ + vfmsub213pd {rn-sae}, %zmm4, %zmm2, %zmm6 + vcmppd $17, {sae}, %zmm3, %zmm2, %k1 + vfmadd231pd {rn-sae}, %zmm6, %zmm11, %zmm14 + vmovups 576+__svml_dlog_data_internal_avx512(%rip), %zmm11 + vfmadd231pd {rn-sae}, %zmm6, %zmm10, %zmm1 + vfmadd231pd {rn-sae}, %zmm6, %zmm13, %zmm15 + +/* R^2 */ + vmulpd {rn-sae}, %zmm6, %zmm6, %zmm8 + vfmadd231pd {rn-sae}, %zmm6, %zmm12, %zmm11 + +/* Prepare table index */ + vpsrlq $48, %zmm2, %zmm9 + +/* add 1 to Expon if DblRcp<0.75 */ + vaddpd {rn-sae}, %zmm4, %zmm7, %zmm7{%k1} + vmulpd {rn-sae}, %zmm8, %zmm8, %zmm12 + vfmadd213pd {rn-sae}, %zmm14, %zmm8, %zmm1 + vfmadd213pd {rn-sae}, %zmm15, %zmm8, %zmm11 + vpermt2pd 64+__svml_dlog_data_internal_avx512(%rip), %zmm9, %zmm5 + +/* polynomial */ + vfmadd213pd {rn-sae}, %zmm11, %zmm12, %zmm1 + vfmadd213pd {rn-sae}, %zmm6, %zmm8, %zmm1 + vaddpd {rn-sae}, %zmm1, %zmm5, %zmm2 + vmovups 768+__svml_dlog_data_internal_avx512(%rip), %zmm1 + vfmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm7 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + vmovaps %zmm7, %zmm0 + 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 %zmm0, 64(%rsp) + vmovups %zmm7, 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), %zmm7 + 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_dlog_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_log8,@function + .size __svml_log8,.-__svml_log8 +..LN__svml_log8.0: + +.L_2__routine_start___svml_dlog_cout_rare_internal_1: + + .align 16,0x90 + +__svml_dlog_cout_rare_internal: + + + .cfi_startproc +..L53: + + xorl %eax, %eax + movzwl 6(%rdi), %edx + andl $32752, %edx + cmpl $32752, %edx + je .LBL_2_12 + + + movsd (%rdi), %xmm2 + xorl %ecx, %ecx + movsd %xmm2, -8(%rsp) + movzwl -2(%rsp), %edx + testl $32752, %edx + jne .LBL_2_4 + + + mulsd 1600+__dlog_la_CoutTab(%rip), %xmm2 + movl $-60, %ecx + movsd %xmm2, -8(%rsp) + +.LBL_2_4: + + movsd 1608+__dlog_la_CoutTab(%rip), %xmm0 + comisd %xmm0, %xmm2 + jbe .LBL_2_8 + + + movsd .L_2il0floatpacket.80(%rip), %xmm3 + movaps %xmm2, %xmm1 + subsd %xmm3, %xmm1 + movsd %xmm1, -16(%rsp) + andb $127, -9(%rsp) + movsd -16(%rsp), %xmm0 + comisd 1592+__dlog_la_CoutTab(%rip), %xmm0 + jbe .LBL_2_7 + + + movsd %xmm2, -16(%rsp) + pxor %xmm7, %xmm7 + movzwl -10(%rsp), %edi + lea __dlog_la_CoutTab(%rip), %r10 + andl $-32753, %edi + addl $16368, %edi + movw %di, -10(%rsp) + movsd -16(%rsp), %xmm4 + movaps %xmm4, %xmm1 + movaps %xmm4, %xmm2 + movsd 1672+__dlog_la_CoutTab(%rip), %xmm8 + movzwl -2(%rsp), %edx + andl $32752, %edx + addsd 1576+__dlog_la_CoutTab(%rip), %xmm1 + addsd 1584+__dlog_la_CoutTab(%rip), %xmm2 + movsd %xmm1, -24(%rsp) + movl -24(%rsp), %r8d + movsd %xmm2, -24(%rsp) + andl $127, %r8d + movsd -24(%rsp), %xmm5 + movsd 1560+__dlog_la_CoutTab(%rip), %xmm9 + movsd 1568+__dlog_la_CoutTab(%rip), %xmm0 + shrl $4, %edx + subsd 1584+__dlog_la_CoutTab(%rip), %xmm5 + lea (%r8,%r8,2), %r9d + movsd (%r10,%r9,8), %xmm6 + lea -1023(%rcx,%rdx), %ecx + cvtsi2sd %ecx, %xmm7 + subsd %xmm5, %xmm4 + mulsd %xmm6, %xmm5 + mulsd %xmm7, %xmm9 + subsd %xmm3, %xmm5 + mulsd %xmm4, %xmm6 + mulsd %xmm0, %xmm7 + addsd 8(%r10,%r9,8), %xmm9 + addsd 16(%r10,%r9,8), %xmm7 + addsd %xmm5, %xmm9 + addsd %xmm6, %xmm7 + movaps %xmm5, %xmm3 + addsd %xmm6, %xmm3 + mulsd %xmm3, %xmm8 + addsd 1664+__dlog_la_CoutTab(%rip), %xmm8 + mulsd %xmm3, %xmm8 + addsd 1656+__dlog_la_CoutTab(%rip), %xmm8 + mulsd %xmm3, %xmm8 + addsd 1648+__dlog_la_CoutTab(%rip), %xmm8 + mulsd %xmm3, %xmm8 + addsd 1640+__dlog_la_CoutTab(%rip), %xmm8 + mulsd %xmm3, %xmm8 + addsd 1632+__dlog_la_CoutTab(%rip), %xmm8 + mulsd %xmm3, %xmm8 + addsd 1624+__dlog_la_CoutTab(%rip), %xmm8 + mulsd %xmm3, %xmm8 + mulsd %xmm3, %xmm8 + addsd %xmm7, %xmm8 + addsd %xmm8, %xmm9 + movsd %xmm9, (%rsi) + ret + +.LBL_2_7: + + movsd 1672+__dlog_la_CoutTab(%rip), %xmm0 + mulsd %xmm1, %xmm0 + addsd 1664+__dlog_la_CoutTab(%rip), %xmm0 + mulsd %xmm1, %xmm0 + addsd 1656+__dlog_la_CoutTab(%rip), %xmm0 + mulsd %xmm1, %xmm0 + addsd 1648+__dlog_la_CoutTab(%rip), %xmm0 + mulsd %xmm1, %xmm0 + addsd 1640+__dlog_la_CoutTab(%rip), %xmm0 + mulsd %xmm1, %xmm0 + addsd 1632+__dlog_la_CoutTab(%rip), %xmm0 + mulsd %xmm1, %xmm0 + addsd 1624+__dlog_la_CoutTab(%rip), %xmm0 + mulsd %xmm1, %xmm0 + mulsd %xmm1, %xmm0 + addsd %xmm1, %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_8: + + ucomisd %xmm0, %xmm2 + jp .LBL_2_9 + je .LBL_2_11 + +.LBL_2_9: + + divsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + movl $1, %eax + + + ret + +.LBL_2_11: + + movsd 1616+__dlog_la_CoutTab(%rip), %xmm1 + movl $2, %eax + xorps .L_2il0floatpacket.79(%rip), %xmm1 + divsd %xmm0, %xmm1 + movsd %xmm1, (%rsi) + ret + +.LBL_2_12: + + movb 7(%rdi), %dl + andb $-128, %dl + cmpb $-128, %dl + je .LBL_2_14 + +.LBL_2_13: + + movsd (%rdi), %xmm0 + mulsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + ret + +.LBL_2_14: + + testl $1048575, 4(%rdi) + jne .LBL_2_13 + + + cmpl $0, (%rdi) + jne .LBL_2_13 + + + movsd 1608+__dlog_la_CoutTab(%rip), %xmm0 + movl $1, %eax + divsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_dlog_cout_rare_internal,@function + .size __svml_dlog_cout_rare_internal,.-__svml_dlog_cout_rare_internal +..LN__svml_dlog_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_dlog_data_internal_avx512: + .long 0 + .long 0 + .long 3222364838 + .long 3215919664 + .long 1848308454 + .long 3216910087 + .long 1890030548 + .long 3217424176 + .long 3348797986 + .long 3217854455 + .long 2880153102 + .long 3218171740 + .long 3256639170 + .long 3218366859 + .long 4139503623 + .long 3218553303 + .long 288676754 + .long 1070754146 + .long 1823716217 + .long 1070569756 + .long 1015732707 + .long 1070240749 + .long 1800682930 + .long 1069924160 + .long 2183652476 + .long 1069619086 + .long 1566132617 + .long 1069101918 + .long 3047045639 + .long 1068533144 + .long 2313634884 + .long 1067467101 + .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 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 0 + .long 1072168960 + .long 815627376 + .long 1069318605 + .long 815627376 + .long 1069318605 + .long 815627376 + .long 1069318605 + .long 815627376 + .long 1069318605 + .long 815627376 + .long 1069318605 + .long 815627376 + .long 1069318605 + .long 815627376 + .long 1069318605 + .long 815627376 + .long 1069318605 + .long 2123607906 + .long 3217033013 + .long 2123607906 + .long 3217033013 + .long 2123607906 + .long 3217033013 + .long 2123607906 + .long 3217033013 + .long 2123607906 + .long 3217033013 + .long 2123607906 + .long 3217033013 + .long 2123607906 + .long 3217033013 + .long 2123607906 + .long 3217033013 + .long 2632876527 + .long 1069697314 + .long 2632876527 + .long 1069697314 + .long 2632876527 + .long 1069697314 + .long 2632876527 + .long 1069697314 + .long 2632876527 + .long 1069697314 + .long 2632876527 + .long 1069697314 + .long 2632876527 + .long 1069697314 + .long 2632876527 + .long 1069697314 + .long 4213758726 + .long 3217380691 + .long 4213758726 + .long 3217380691 + .long 4213758726 + .long 3217380691 + .long 4213758726 + .long 3217380691 + .long 4213758726 + .long 3217380691 + .long 4213758726 + .long 3217380691 + .long 4213758726 + .long 3217380691 + .long 4213758726 + .long 3217380691 + .long 2580324188 + .long 1070176665 + .long 2580324188 + .long 1070176665 + .long 2580324188 + .long 1070176665 + .long 2580324188 + .long 1070176665 + .long 2580324188 + .long 1070176665 + .long 2580324188 + .long 1070176665 + .long 2580324188 + .long 1070176665 + .long 2580324188 + .long 1070176665 + .long 787901 + .long 3218079744 + .long 787901 + .long 3218079744 + .long 787901 + .long 3218079744 + .long 787901 + .long 3218079744 + .long 787901 + .long 3218079744 + .long 787901 + .long 3218079744 + .long 787901 + .long 3218079744 + .long 787901 + .long 3218079744 + .long 1431655526 + .long 1070945621 + .long 1431655526 + .long 1070945621 + .long 1431655526 + .long 1070945621 + .long 1431655526 + .long 1070945621 + .long 1431655526 + .long 1070945621 + .long 1431655526 + .long 1070945621 + .long 1431655526 + .long 1070945621 + .long 1431655526 + .long 1070945621 + .long 4294967238 + .long 3219128319 + .long 4294967238 + .long 3219128319 + .long 4294967238 + .long 3219128319 + .long 4294967238 + .long 3219128319 + .long 4294967238 + .long 3219128319 + .long 4294967238 + .long 3219128319 + .long 4294967238 + .long 3219128319 + .long 4294967238 + .long 3219128319 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 4277811695 + .long 1072049730 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .long 0 + .long 1048576 + .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 + .type __svml_dlog_data_internal_avx512,@object + .size __svml_dlog_data_internal_avx512,1088 + .align 32 +__dlog_la_CoutTab: + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1072660480 + .long 1486880768 + .long 1066410070 + .long 1813744607 + .long 3179892593 + .long 0 + .long 1072629760 + .long 377487360 + .long 1067416219 + .long 919019713 + .long 3179241129 + .long 0 + .long 1072599040 + .long 1513619456 + .long 1067944025 + .long 874573033 + .long 3178512940 + .long 0 + .long 1072570368 + .long 3221749760 + .long 1068427825 + .long 4181665006 + .long 3177478212 + .long 0 + .long 1072541696 + .long 4162322432 + .long 1068708823 + .long 627020255 + .long 1028629941 + .long 0 + .long 1072513024 + .long 183107584 + .long 1068957907 + .long 2376703469 + .long 1030233118 + .long 0 + .long 1072486400 + .long 1053425664 + .long 1069192557 + .long 696277142 + .long 1030474863 + .long 0 + .long 1072459776 + .long 3996123136 + .long 1069430535 + .long 2630798680 + .long 1028792016 + .long 0 + .long 1072435200 + .long 3452764160 + .long 1069600382 + .long 624954044 + .long 3177101741 + .long 0 + .long 1072409600 + .long 207650816 + .long 1069717971 + .long 3272735636 + .long 3175176575 + .long 0 + .long 1072386048 + .long 2647228416 + .long 1069827627 + .long 3594228712 + .long 1029303785 + .long 0 + .long 1072362496 + .long 2712010752 + .long 1069938736 + .long 3653242769 + .long 3176839013 + .long 0 + .long 1072338944 + .long 374439936 + .long 1070051337 + .long 4072775574 + .long 3176577495 + .long 0 + .long 1072316416 + .long 3707174912 + .long 1070160474 + .long 1486946159 + .long 1023930920 + .long 0 + .long 1072294912 + .long 1443954688 + .long 1070265993 + .long 293532967 + .long 3176278277 + .long 0 + .long 1072273408 + .long 127762432 + .long 1070372856 + .long 3404145447 + .long 3177023955 + .long 0 + .long 1072252928 + .long 2053832704 + .long 1070475911 + .long 1575076358 + .long 1029048544 + .long 0 + .long 1072232448 + .long 3194093568 + .long 1070580248 + .long 1864169120 + .long 1026866084 + .long 0 + .long 1072212992 + .long 3917201408 + .long 1070638340 + .long 2362145246 + .long 3175606197 + .long 0 + .long 1072193536 + .long 3417112576 + .long 1070689116 + .long 70087871 + .long 3174183577 + .long 0 + .long 1072175104 + .long 4226777088 + .long 1070737793 + .long 1620410586 + .long 3174700065 + .long 0 + .long 1072156672 + .long 3168870400 + .long 1070787042 + .long 311238082 + .long 1025781772 + .long 0 + .long 1072139264 + .long 2150580224 + .long 1070834092 + .long 1664262457 + .long 3175299224 + .long 0 + .long 1072120832 + .long 4095672320 + .long 1070884491 + .long 1657121015 + .long 3174674199 + .long 0 + .long 1072104448 + .long 2595577856 + .long 1070929805 + .long 2014006823 + .long 3175423830 + .long 0 + .long 1072087040 + .long 3747176448 + .long 1070978493 + .long 144991708 + .long 3171552042 + .long 0 + .long 1072070656 + .long 1050435584 + .long 1071024840 + .long 3386227432 + .long 1027876916 + .long 0 + .long 1072055296 + .long 255516672 + .long 1071068760 + .long 2637594316 + .long 1028049573 + .long 0 + .long 1072038912 + .long 1640783872 + .long 1071116120 + .long 893247007 + .long 1028452162 + .long 0 + .long 1072023552 + .long 2940411904 + .long 1071161011 + .long 813240633 + .long 1027664048 + .long 0 + .long 1072009216 + .long 882917376 + .long 1071203348 + .long 2376597551 + .long 3175828767 + .long 0 + .long 1071993856 + .long 213966848 + .long 1071249188 + .long 2977204125 + .long 1028350609 + .long 0 + .long 1071979520 + .long 2921504768 + .long 1071292428 + .long 523218347 + .long 1028007004 + .long 0 + .long 1071965184 + .long 3186655232 + .long 1071336119 + .long 2352907891 + .long 1026967097 + .long 0 + .long 1071951872 + .long 2653364224 + .long 1071377101 + .long 2453418583 + .long 3174349512 + .long 0 + .long 1071938560 + .long 3759783936 + .long 1071418487 + .long 3685870403 + .long 3175415611 + .long 0 + .long 1071925248 + .long 2468364288 + .long 1071460286 + .long 1578908842 + .long 3175510517 + .long 0 + .long 1071911936 + .long 81903616 + .long 1071502506 + .long 770710269 + .long 1026742353 + .long 0 + .long 1071899648 + .long 2799321088 + .long 1071541858 + .long 3822266185 + .long 1028434427 + .long 0 + .long 1071886336 + .long 2142265344 + .long 1071584911 + .long 175901806 + .long 3173871540 + .long 0 + .long 1071874048 + .long 2944024576 + .long 1071625048 + .long 2747360403 + .long 1027672159 + .long 0 + .long 1071862784 + .long 3434301440 + .long 1071653426 + .long 4194662196 + .long 3173893003 + .long 0 + .long 1071850496 + .long 1547755520 + .long 1071673870 + .long 4248764681 + .long 3172759087 + .long 0 + .long 1071839232 + .long 4246986752 + .long 1071692786 + .long 2840205638 + .long 3174430911 + .long 0 + .long 1071826944 + .long 3418390528 + .long 1071713619 + .long 3041880823 + .long 1025440860 + .long 0 + .long 1071816704 + .long 4143093760 + .long 1071731139 + .long 2727587401 + .long 3173965207 + .long 0 + .long 1071805440 + .long 3121326080 + .long 1071750582 + .long 3173887692 + .long 3174190163 + .long 0 + .long 1071794176 + .long 1852893184 + .long 1071770207 + .long 3951060252 + .long 1027348295 + .long 0 + .long 1071783936 + .long 3636379648 + .long 1071788208 + .long 1684924001 + .long 3174777086 + .long 0 + .long 1071773696 + .long 516505600 + .long 1071806366 + .long 429181199 + .long 3173211033 + .long 0 + .long 1071763456 + .long 4186185728 + .long 1071824681 + .long 2044904577 + .long 3174967132 + .long 0 + .long 1071753216 + .long 877596672 + .long 1071843159 + .long 1396318105 + .long 3173959727 + .long 0 + .long 1071742976 + .long 2912784384 + .long 1071861800 + .long 448136789 + .long 3174814192 + .long 0 + .long 1071733760 + .long 3722825728 + .long 1071878720 + .long 714165913 + .long 3173439560 + .long 0 + .long 1071723520 + .long 2522374144 + .long 1071897682 + .long 3227240353 + .long 3173394323 + .long 0 + .long 1071714304 + .long 4165410816 + .long 1071914895 + .long 1365684961 + .long 3174365060 + .long 0 + .long 1071705088 + .long 3477135360 + .long 1071932251 + .long 368482985 + .long 3174140821 + .long 0 + .long 1071695872 + .long 2079455232 + .long 1071949752 + .long 1320576317 + .long 1026822714 + .long 0 + .long 1071687680 + .long 851795968 + .long 1071965432 + .long 3702467026 + .long 1025224125 + .long 0 + .long 1071678464 + .long 647743488 + .long 1071983213 + .long 772992109 + .long 3174038459 + .long 0 + .long 1071670272 + .long 26537984 + .long 1071999146 + .long 2360214276 + .long 3174861275 + .long 0 + .long 1071661056 + .long 1547061248 + .long 1072017216 + .long 2886781435 + .long 1026423395 + .long 0 + .long 1071652864 + .long 2854492160 + .long 1072033410 + .long 215631550 + .long 1025638968 + .long 0 + .long 1071644672 + .long 4277811200 + .long 1072049730 + .long 2479318832 + .long 1026487127 + .long 4277811200 + .long 1072049730 + .long 2479318832 + .long 1026487127 + .long 64 + .long 1120927744 + .long 0 + .long 1094713344 + .long 0 + .long 1065615360 + .long 0 + .long 1135607808 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 3219128320 + .long 1431655955 + .long 1070945621 + .long 610 + .long 3218079744 + .long 2545118337 + .long 1070176665 + .long 1378399119 + .long 3217380693 + .long 612435357 + .long 1069697472 + .long 94536557 + .long 3217031348 + .type __dlog_la_CoutTab,@object + .size __dlog_la_CoutTab,1680 + .align 16 +.L_2il0floatpacket.79: + .long 0x00000000,0x80000000,0x00000000,0x00000000 + .type .L_2il0floatpacket.79,@object + .size .L_2il0floatpacket.79,16 + .align 8 +.L_2il0floatpacket.80: + .long 0x00000000,0x3ff00000 + .type .L_2il0floatpacket.80,@object + .size .L_2il0floatpacket.80,8 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_log_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log_s_la.s new file mode 100644 index 00000000..d3bcca83 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_log_s_la.s @@ -0,0 +1,930 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * * + * * log(x) = exponent_x*log(2) + log(mantissa_x), if mantissa_x<4/3 + * * log(x) = (exponent_x+1)*log(2) + log(0.5*mantissa_x), if mantissa_x>4/3 + * * + * * R = mantissa_x - 1, if mantissa_x<4/3 + * * R = 0.5*mantissa_x - 1, if mantissa_x>4/3 + * * |R|< 1/3 + * * + * * log(1+R) is approximated as a polynomial: degree 9 for 1-ulp, degree 7 for 4-ulp, + * * degree 3 for half-precision + * + */ + + + .text +.L_2__routine_start___svml_logf16_z0_0: + + .align 16,0x90 + .globl __svml_logf16 + +__svml_logf16: + + + .cfi_startproc +..L2: + + 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 + vgetmantps $11, {sae}, %zmm0, %zmm3 + vmovups __svml_slog_data_internal_avx512(%rip), %zmm1 + vgetexpps {sae}, %zmm0, %zmm5 + vmovups 320+__svml_slog_data_internal_avx512(%rip), %zmm10 + vpsrld $19, %zmm3, %zmm7 + vgetexpps {sae}, %zmm3, %zmm6 + +/* reduced argument */ + vsubps {rn-sae}, %zmm1, %zmm3, %zmm11 + +/* + * read coefficients for polynomial interpolation, + * and evaluate polynomial + */ + vpermps 64+__svml_slog_data_internal_avx512(%rip), %zmm7, %zmm1 + vpermps 128+__svml_slog_data_internal_avx512(%rip), %zmm7, %zmm2 + vsubps {rn-sae}, %zmm6, %zmm5, %zmm9 + vpermps 192+__svml_slog_data_internal_avx512(%rip), %zmm7, %zmm4 + vpermps 256+__svml_slog_data_internal_avx512(%rip), %zmm7, %zmm8 + +/* x<=0? */ + vfpclassps $94, %zmm0, %k0 + vfmadd213ps {rn-sae}, %zmm2, %zmm11, %zmm1 + +/* exponent*log(2) */ + vmulps {rn-sae}, %zmm10, %zmm9, %zmm12 + vfmadd213ps {rn-sae}, %zmm4, %zmm11, %zmm1 + kmovw %k0, %edx + vfmadd213ps {rn-sae}, %zmm8, %zmm11, %zmm1 + +/* result */ + vfmadd213ps {rn-sae}, %zmm12, %zmm11, %zmm1 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + vmovaps %zmm1, %zmm0 + 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 %zmm0, 64(%rsp) + vmovups %zmm1, 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), %zmm1 + 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_slog_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_logf16,@function + .size __svml_logf16,.-__svml_logf16 +..LN__svml_logf16.0: + +.L_2__routine_start___svml_slog_cout_rare_internal_1: + + .align 16,0x90 + +__svml_slog_cout_rare_internal: + + + .cfi_startproc +..L53: + + xorl %eax, %eax + movzwl 2(%rdi), %edx + andl $32640, %edx + cmpl $32640, %edx + je .LBL_2_12 + + + pxor %xmm2, %xmm2 + xorl %ecx, %ecx + cvtss2sd (%rdi), %xmm2 + movsd %xmm2, -8(%rsp) + movzwl -2(%rsp), %edx + testl $32752, %edx + jne .LBL_2_4 + + + mulsd 1600+_imlsLnHATab(%rip), %xmm2 + movl $-60, %ecx + movsd %xmm2, -8(%rsp) + +.LBL_2_4: + + movsd 1608+_imlsLnHATab(%rip), %xmm0 + comisd %xmm0, %xmm2 + jbe .LBL_2_8 + + + movsd .L_2il0floatpacket.73(%rip), %xmm3 + movaps %xmm2, %xmm1 + subsd %xmm3, %xmm1 + movsd %xmm1, -16(%rsp) + andb $127, -9(%rsp) + movsd -16(%rsp), %xmm0 + comisd 1592+_imlsLnHATab(%rip), %xmm0 + jbe .LBL_2_7 + + + movsd %xmm2, -16(%rsp) + pxor %xmm6, %xmm6 + movzwl -10(%rsp), %edi + lea _imlsLnHATab(%rip), %r10 + andl $-32753, %edi + addl $16368, %edi + movw %di, -10(%rsp) + movsd -16(%rsp), %xmm4 + movaps %xmm4, %xmm1 + movaps %xmm4, %xmm2 + movsd 1672+_imlsLnHATab(%rip), %xmm9 + movzwl -2(%rsp), %edx + andl $32752, %edx + addsd 1576+_imlsLnHATab(%rip), %xmm1 + addsd 1584+_imlsLnHATab(%rip), %xmm2 + movsd %xmm1, -24(%rsp) + movl -24(%rsp), %r8d + movsd %xmm2, -24(%rsp) + andl $127, %r8d + movsd -24(%rsp), %xmm7 + movsd 1560+_imlsLnHATab(%rip), %xmm5 + movsd 1568+_imlsLnHATab(%rip), %xmm0 + shrl $4, %edx + subsd 1584+_imlsLnHATab(%rip), %xmm7 + lea (%r8,%r8,2), %r9d + movsd (%r10,%r9,8), %xmm8 + lea -1023(%rcx,%rdx), %ecx + cvtsi2sd %ecx, %xmm6 + subsd %xmm7, %xmm4 + mulsd %xmm8, %xmm7 + mulsd %xmm6, %xmm5 + subsd %xmm3, %xmm7 + mulsd %xmm4, %xmm8 + mulsd %xmm0, %xmm6 + addsd 8(%r10,%r9,8), %xmm5 + addsd 16(%r10,%r9,8), %xmm6 + movaps %xmm7, %xmm3 + addsd %xmm8, %xmm3 + mulsd %xmm3, %xmm9 + addsd 1664+_imlsLnHATab(%rip), %xmm9 + mulsd %xmm3, %xmm9 + addsd 1656+_imlsLnHATab(%rip), %xmm9 + mulsd %xmm3, %xmm9 + addsd 1648+_imlsLnHATab(%rip), %xmm9 + mulsd %xmm3, %xmm9 + addsd 1640+_imlsLnHATab(%rip), %xmm9 + mulsd %xmm3, %xmm9 + addsd 1632+_imlsLnHATab(%rip), %xmm9 + mulsd %xmm3, %xmm9 + mulsd %xmm3, %xmm3 + addsd 1624+_imlsLnHATab(%rip), %xmm9 + mulsd %xmm3, %xmm9 + addsd %xmm5, %xmm9 + addsd %xmm6, %xmm9 + addsd %xmm7, %xmm9 + addsd %xmm8, %xmm9 + cvtsd2ss %xmm9, %xmm9 + movss %xmm9, (%rsi) + ret + +.LBL_2_7: + + movsd 1672+_imlsLnHATab(%rip), %xmm2 + movaps %xmm1, %xmm0 + mulsd %xmm1, %xmm2 + mulsd %xmm1, %xmm0 + addsd 1664+_imlsLnHATab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1656+_imlsLnHATab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1648+_imlsLnHATab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1640+_imlsLnHATab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1632+_imlsLnHATab(%rip), %xmm2 + mulsd %xmm1, %xmm2 + addsd 1624+_imlsLnHATab(%rip), %xmm2 + mulsd %xmm0, %xmm2 + addsd %xmm1, %xmm2 + cvtsd2ss %xmm2, %xmm2 + movss %xmm2, (%rsi) + ret + +.LBL_2_8: + + ucomisd %xmm0, %xmm2 + jp .LBL_2_9 + je .LBL_2_11 + +.LBL_2_9: + + divsd %xmm0, %xmm0 + cvtsd2ss %xmm0, %xmm0 + movss %xmm0, (%rsi) + movl $1, %eax + + + ret + +.LBL_2_11: + + movsd 1616+_imlsLnHATab(%rip), %xmm1 + movl $2, %eax + xorps .L_2il0floatpacket.72(%rip), %xmm1 + divsd %xmm0, %xmm1 + cvtsd2ss %xmm1, %xmm1 + movss %xmm1, (%rsi) + ret + +.LBL_2_12: + + movb 3(%rdi), %dl + andb $-128, %dl + cmpb $-128, %dl + je .LBL_2_14 + +.LBL_2_13: + + movss (%rdi), %xmm0 + mulss %xmm0, %xmm0 + movss %xmm0, (%rsi) + ret + +.LBL_2_14: + + testl $8388607, (%rdi) + jne .LBL_2_13 + + + movsd 1608+_imlsLnHATab(%rip), %xmm0 + movl $1, %eax + divsd %xmm0, %xmm0 + cvtsd2ss %xmm0, %xmm0 + movss %xmm0, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_slog_cout_rare_internal,@function + .size __svml_slog_cout_rare_internal,.-__svml_slog_cout_rare_internal +..LN__svml_slog_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_slog_data_internal_avx512: + .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 3194499567 + .long 3191881870 + .long 3189820965 + .long 3188177733 + .long 3186034033 + .long 3183874545 + .long 3182098566 + .long 3180625528 + .long 3205885581 + .long 3204713431 + .long 3202986354 + .long 3201283063 + .long 3199818667 + .long 3198553107 + .long 3197454075 + .long 3196495328 + .long 1051342523 + .long 1051102009 + .long 1050719235 + .long 1050259833 + .long 1049764999 + .long 1049260512 + .long 1048762310 + .long 1047983990 + .long 1044808958 + .long 1047891773 + .long 1049356949 + .long 1050157361 + .long 1050708164 + .long 1051065485 + .long 1051272715 + .long 1051363578 + .long 3204447891 + .long 3204432523 + .long 3204384627 + .long 3204298603 + .long 3204175099 + .long 3204017696 + .long 3203831137 + .long 3203620393 + .long 3204845352 + .long 3204676294 + .long 3204570658 + .long 3204507866 + .long 3204473248 + .long 3204456356 + .long 3204449777 + .long 3204448283 + .long 1065353216 + .long 1065353045 + .long 1065352036 + .long 1065349339 + .long 1065344188 + .long 1065335989 + .long 1065324332 + .long 1065308972 + .long 1065328777 + .long 1065341148 + .long 1065347780 + .long 1065351069 + .long 1065352524 + .long 1065353058 + .long 1065353199 + .long 1065353216 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 1060205080 + .long 8388608 + .long 8388608 + .long 8388608 + .long 8388608 + .long 8388608 + .long 8388608 + .long 8388608 + .long 8388608 + .long 8388608 + .long 8388608 + .long 8388608 + .long 8388608 + .long 8388608 + .long 8388608 + .long 8388608 + .long 8388608 + .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 + .type __svml_slog_data_internal_avx512,@object + .size __svml_slog_data_internal_avx512,512 + .align 32 +_imlsLnHATab: + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1072660480 + .long 1486880768 + .long 1066410070 + .long 1813744607 + .long 3179892593 + .long 0 + .long 1072629760 + .long 377487360 + .long 1067416219 + .long 919019713 + .long 3179241129 + .long 0 + .long 1072599040 + .long 1513619456 + .long 1067944025 + .long 874573033 + .long 3178512940 + .long 0 + .long 1072570368 + .long 3221749760 + .long 1068427825 + .long 4181665006 + .long 3177478212 + .long 0 + .long 1072541696 + .long 4162322432 + .long 1068708823 + .long 627020255 + .long 1028629941 + .long 0 + .long 1072513024 + .long 183107584 + .long 1068957907 + .long 2376703469 + .long 1030233118 + .long 0 + .long 1072486400 + .long 1053425664 + .long 1069192557 + .long 696277142 + .long 1030474863 + .long 0 + .long 1072459776 + .long 3996123136 + .long 1069430535 + .long 2630798680 + .long 1028792016 + .long 0 + .long 1072435200 + .long 3452764160 + .long 1069600382 + .long 624954044 + .long 3177101741 + .long 0 + .long 1072409600 + .long 207650816 + .long 1069717971 + .long 3272735636 + .long 3175176575 + .long 0 + .long 1072386048 + .long 2647228416 + .long 1069827627 + .long 3594228712 + .long 1029303785 + .long 0 + .long 1072362496 + .long 2712010752 + .long 1069938736 + .long 3653242769 + .long 3176839013 + .long 0 + .long 1072338944 + .long 374439936 + .long 1070051337 + .long 4072775574 + .long 3176577495 + .long 0 + .long 1072316416 + .long 3707174912 + .long 1070160474 + .long 1486946159 + .long 1023930920 + .long 0 + .long 1072294912 + .long 1443954688 + .long 1070265993 + .long 293532967 + .long 3176278277 + .long 0 + .long 1072273408 + .long 127762432 + .long 1070372856 + .long 3404145447 + .long 3177023955 + .long 0 + .long 1072252928 + .long 2053832704 + .long 1070475911 + .long 1575076358 + .long 1029048544 + .long 0 + .long 1072232448 + .long 3194093568 + .long 1070580248 + .long 1864169120 + .long 1026866084 + .long 0 + .long 1072212992 + .long 3917201408 + .long 1070638340 + .long 2362145246 + .long 3175606197 + .long 0 + .long 1072193536 + .long 3417112576 + .long 1070689116 + .long 70087871 + .long 3174183577 + .long 0 + .long 1072175104 + .long 4226777088 + .long 1070737793 + .long 1620410586 + .long 3174700065 + .long 0 + .long 1072156672 + .long 3168870400 + .long 1070787042 + .long 311238082 + .long 1025781772 + .long 0 + .long 1072139264 + .long 2150580224 + .long 1070834092 + .long 1664262457 + .long 3175299224 + .long 0 + .long 1072120832 + .long 4095672320 + .long 1070884491 + .long 1657121015 + .long 3174674199 + .long 0 + .long 1072104448 + .long 2595577856 + .long 1070929805 + .long 2014006823 + .long 3175423830 + .long 0 + .long 1072087040 + .long 3747176448 + .long 1070978493 + .long 144991708 + .long 3171552042 + .long 0 + .long 1072070656 + .long 1050435584 + .long 1071024840 + .long 3386227432 + .long 1027876916 + .long 0 + .long 1072055296 + .long 255516672 + .long 1071068760 + .long 2637594316 + .long 1028049573 + .long 0 + .long 1072038912 + .long 1640783872 + .long 1071116120 + .long 893247007 + .long 1028452162 + .long 0 + .long 1072023552 + .long 2940411904 + .long 1071161011 + .long 813240633 + .long 1027664048 + .long 0 + .long 1072009216 + .long 882917376 + .long 1071203348 + .long 2376597551 + .long 3175828767 + .long 0 + .long 1071993856 + .long 213966848 + .long 1071249188 + .long 2977204125 + .long 1028350609 + .long 0 + .long 1071979520 + .long 2921504768 + .long 1071292428 + .long 523218347 + .long 1028007004 + .long 0 + .long 1071965184 + .long 3186655232 + .long 1071336119 + .long 2352907891 + .long 1026967097 + .long 0 + .long 1071951872 + .long 2653364224 + .long 1071377101 + .long 2453418583 + .long 3174349512 + .long 0 + .long 1071938560 + .long 3759783936 + .long 1071418487 + .long 3685870403 + .long 3175415611 + .long 0 + .long 1071925248 + .long 2468364288 + .long 1071460286 + .long 1578908842 + .long 3175510517 + .long 0 + .long 1071911936 + .long 81903616 + .long 1071502506 + .long 770710269 + .long 1026742353 + .long 0 + .long 1071899648 + .long 2799321088 + .long 1071541858 + .long 3822266185 + .long 1028434427 + .long 0 + .long 1071886336 + .long 2142265344 + .long 1071584911 + .long 175901806 + .long 3173871540 + .long 0 + .long 1071874048 + .long 2944024576 + .long 1071625048 + .long 2747360403 + .long 1027672159 + .long 0 + .long 1071862784 + .long 3434301440 + .long 1071653426 + .long 4194662196 + .long 3173893003 + .long 0 + .long 1071850496 + .long 1547755520 + .long 1071673870 + .long 4248764681 + .long 3172759087 + .long 0 + .long 1071839232 + .long 4246986752 + .long 1071692786 + .long 2840205638 + .long 3174430911 + .long 0 + .long 1071826944 + .long 3418390528 + .long 1071713619 + .long 3041880823 + .long 1025440860 + .long 0 + .long 1071816704 + .long 4143093760 + .long 1071731139 + .long 2727587401 + .long 3173965207 + .long 0 + .long 1071805440 + .long 3121326080 + .long 1071750582 + .long 3173887692 + .long 3174190163 + .long 0 + .long 1071794176 + .long 1852893184 + .long 1071770207 + .long 3951060252 + .long 1027348295 + .long 0 + .long 1071783936 + .long 3636379648 + .long 1071788208 + .long 1684924001 + .long 3174777086 + .long 0 + .long 1071773696 + .long 516505600 + .long 1071806366 + .long 429181199 + .long 3173211033 + .long 0 + .long 1071763456 + .long 4186185728 + .long 1071824681 + .long 2044904577 + .long 3174967132 + .long 0 + .long 1071753216 + .long 877596672 + .long 1071843159 + .long 1396318105 + .long 3173959727 + .long 0 + .long 1071742976 + .long 2912784384 + .long 1071861800 + .long 448136789 + .long 3174814192 + .long 0 + .long 1071733760 + .long 3722825728 + .long 1071878720 + .long 714165913 + .long 3173439560 + .long 0 + .long 1071723520 + .long 2522374144 + .long 1071897682 + .long 3227240353 + .long 3173394323 + .long 0 + .long 1071714304 + .long 4165410816 + .long 1071914895 + .long 1365684961 + .long 3174365060 + .long 0 + .long 1071705088 + .long 3477135360 + .long 1071932251 + .long 368482985 + .long 3174140821 + .long 0 + .long 1071695872 + .long 2079455232 + .long 1071949752 + .long 1320576317 + .long 1026822714 + .long 0 + .long 1071687680 + .long 851795968 + .long 1071965432 + .long 3702467026 + .long 1025224125 + .long 0 + .long 1071678464 + .long 647743488 + .long 1071983213 + .long 772992109 + .long 3174038459 + .long 0 + .long 1071670272 + .long 26537984 + .long 1071999146 + .long 2360214276 + .long 3174861275 + .long 0 + .long 1071661056 + .long 1547061248 + .long 1072017216 + .long 2886781435 + .long 1026423395 + .long 0 + .long 1071652864 + .long 2854492160 + .long 1072033410 + .long 215631550 + .long 1025638968 + .long 0 + .long 1071644672 + .long 4277811200 + .long 1072049730 + .long 2479318832 + .long 1026487127 + .long 4277811200 + .long 1072049730 + .long 2479318832 + .long 1026487127 + .long 64 + .long 1120927744 + .long 0 + .long 1094713344 + .long 0 + .long 1065615360 + .long 0 + .long 1135607808 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 3219128320 + .long 1431655955 + .long 1070945621 + .long 610 + .long 3218079744 + .long 2545118337 + .long 1070176665 + .long 1378399119 + .long 3217380693 + .long 612435357 + .long 1069697472 + .long 94536557 + .long 3217031348 + .type _imlsLnHATab,@object + .size _imlsLnHATab,1680 + .align 16 +.L_2il0floatpacket.72: + .long 0x00000000,0x80000000,0x00000000,0x00000000 + .type .L_2il0floatpacket.72,@object + .size .L_2il0floatpacket.72,16 + .align 8 +.L_2il0floatpacket.73: + .long 0x00000000,0x3ff00000 + .type .L_2il0floatpacket.73,@object + .size .L_2il0floatpacket.73,8 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_pow_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_pow_d_la.s new file mode 100644 index 00000000..3ae18749 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_pow_d_la.s @@ -0,0 +1,3525 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * + * 1) Calculating log2|x| + * + * Here we use the following formula. + * Let |x|=2^k1*X1, where k1 is integer, 1<=X1<2. + * Let C ~= 1/ln(2), + * Rcp1 ~= 1/X1, X2=Rcp1*X1, + * Rcp2 ~= 1/X2, X3=Rcp2*X2, + * Rcp3 ~= 1/X3, Rcp3C ~= C/X3. + * Then + * + * log2|x| = k1 + log2(1/Rcp1) + log2(1/Rcp2) + log2(C/Rcp3C) + + * + log2(X1*Rcp1*Rcp2*Rcp3C/C), + * + * where X1*Rcp1*Rcp2*Rcp3C = C*(1+q), q is very small. + * + * The values of Rcp1, log2(1/Rcp1), Rcp2, log2(1/Rcp2), + * Rcp3C, log2(C/Rcp3C) are taken from tables. + * Values of Rcp1, Rcp2, Rcp3C are such that RcpC=Rcp1*Rcp2*Rcp3C + * is exactly represented in target precision. + * + * log2(X1*Rcp1*Rcp2*Rcp3C/C) = log2(1+q) = ln(1+q)/ln2 = + * = 1/(ln2)*q - 1/(2ln2)*q^2 + 1/(3ln2)*q^3 - ... = + * = 1/(C*ln2)*cq - 1/(2*C^2*ln2)*cq^2 + 1/(3*C^3*ln2)*cq^3 - ... = + * = (1 + a1)*cq + a2*cq^2 + a3*cq^3 + ..., + * where + * cq=X1*Rcp1*Rcp2*Rcp3C-C, + * a1=1/(C*ln(2))-1 is small, + * a2=1/(2*C^2*ln2), + * a3=1/(3*C^3*ln2), + * ... + * We get 3 parts of log2 result: HH+HL+HLL ~= log2|x|. + * + * 2) Calculation of y*(HH+HL+HLL). + * Split y into YHi+YLo. + * Get high PH and medium PL parts of y*log2|x|. + * Get low PLL part of y*log2|x|. + * Now we have PH+PL+PLL ~= y*log2|x|. + * + * 3) Calculation of 2^(PH+PL+PLL). + * + * Mathematical idea of computing 2^(PH+PL+PLL) is the following. + * Let's represent PH+PL+PLL in the form N + j/2^expK + Z, + * where expK=7 in this implementation, N and j are integers, + * 0<=j<=2^expK-1, |Z|<2^(-expK-1). Hence + * + * 2^(PH+PL+PLL) ~= 2^N * 2^(j/2^expK) * 2^Z, + * + * where 2^(j/2^expK) is stored in a table, and + * + * 2^Z ~= 1 + B1*Z + B2*Z^2 ... + B5*Z^5. + * + * We compute 2^(PH+PL+PLL) as follows. + * + * Break PH into PHH + PHL, where PHH = N + j/2^expK. + * Z = PHL + PL + PLL + * Exp2Poly = B1*Z + B2*Z^2 ... + B5*Z^5 + * Get 2^(j/2^expK) from table in the form THI+TLO. + * Now we have 2^(PH+PL+PLL) ~= 2^N * (THI + TLO) * (1 + Exp2Poly). + * + * Get significand of 2^(PH+PL+PLL) in the form ResHi+ResLo: + * ResHi := THI + * ResLo := THI * Exp2Poly + TLO + * + * Get exponent ERes of the result: + * Res := ResHi + ResLo: + * Result := ex(Res) + N + * + * + */ + + + .text +.L_2__routine_start___svml_pow8_z0_0: + + .align 16,0x90 + .globl __svml_pow8 + +__svml_pow8: + + + .cfi_startproc +..L2: + + 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 + vgetmantpd $10, {sae}, %zmm0, %zmm10 + +/* Reduced argument: R = (DblRcp*Mantissa - 1) */ + vmovups 640+__svml_dpow_data_internal_avx512(%rip), %zmm15 + +/* Table lookup */ + vmovups __svml_dpow_data_internal_avx512(%rip), %zmm2 + vmovups 128+__svml_dpow_data_internal_avx512(%rip), %zmm3 + vmovups 256+__svml_dpow_data_internal_avx512(%rip), %zmm5 + vmovups 384+__svml_dpow_data_internal_avx512(%rip), %zmm4 + +/* Prepare exponent correction: DblRcp<1.5? -- was 0.75 in initial AVX3 version, which used Mantissa in [1,2) */ + vmovups 704+__svml_dpow_data_internal_avx512(%rip), %zmm14 + +/* GetExp(x) */ + vgetexppd {sae}, %zmm0, %zmm9 + +/* P8_9 */ + vmovups 960+__svml_dpow_data_internal_avx512(%rip), %zmm7 + +/* DblRcp ~ 1/Mantissa */ + vrcp14pd %zmm10, %zmm12 + +/* x<=0 or Inf/NaN? */ + vfpclasspd $223, %zmm0, %k0 + +/* round DblRcp to 5 fractional bits (RN mode, no Precision exception) */ + vrndscalepd $88, {sae}, %zmm12, %zmm13 + vmovups 896+__svml_dpow_data_internal_avx512(%rip), %zmm12 + kmovw %k0, %edx + vfmsub213pd {rn-sae}, %zmm15, %zmm13, %zmm10 + vcmppd $17, {sae}, %zmm14, %zmm13, %k1 + vfmadd231pd {rn-sae}, %zmm10, %zmm12, %zmm7 + +/* Prepare table index */ + vpsrlq $47, %zmm13, %zmm8 + vmovups 1024+__svml_dpow_data_internal_avx512(%rip), %zmm13 + vpermt2pd 64+__svml_dpow_data_internal_avx512(%rip), %zmm8, %zmm2 + vpermt2pd 192+__svml_dpow_data_internal_avx512(%rip), %zmm8, %zmm3 + vpermt2pd 320+__svml_dpow_data_internal_avx512(%rip), %zmm8, %zmm5 + vpermt2pd 448+__svml_dpow_data_internal_avx512(%rip), %zmm8, %zmm4 + +/* add 1 to Expon if DblRcp<1.5 */ + vaddpd {rn-sae}, %zmm15, %zmm9, %zmm9{%k1} + vmovaps %zmm1, %zmm11 + vpsllq $59, %zmm8, %zmm1 + +/* R^2 */ + vmulpd {rn-sae}, %zmm10, %zmm10, %zmm8 + vpmovq2m %zmm1, %k2 + +/* y Inf/NaN? */ + vfpclasspd $153, %zmm11, %k3 + +/* P6_7 */ + vmovups 1088+__svml_dpow_data_internal_avx512(%rip), %zmm1 + vblendmpd %zmm3, %zmm2, %zmm14{%k2} + vblendmpd %zmm4, %zmm5, %zmm6{%k2} + +/* P4_5 */ + vmovups 1216+__svml_dpow_data_internal_avx512(%rip), %zmm2 + vfmadd231pd {rn-sae}, %zmm10, %zmm13, %zmm1 + vmovups 832+__svml_dpow_data_internal_avx512(%rip), %zmm4 + vmovups 768+__svml_dpow_data_internal_avx512(%rip), %zmm3 + +/* Expon + Th */ + vaddpd {rn-sae}, %zmm9, %zmm14, %zmm15 + vmovups 1152+__svml_dpow_data_internal_avx512(%rip), %zmm9 + +/* P6_9 */ + vfmadd213pd {rn-sae}, %zmm1, %zmm8, %zmm7 + +/* P2_3 */ + vmovups 1344+__svml_dpow_data_internal_avx512(%rip), %zmm1 + +/* P1_2 */ + vmovups 1920+__svml_dpow_data_internal_avx512(%rip), %zmm14 + vfmadd231pd {rn-sae}, %zmm10, %zmm9, %zmm2 + kmovw %k3, %eax + +/* P4_9 */ + vfmadd213pd {rn-sae}, %zmm2, %zmm8, %zmm7 + +/* R2l */ + vmovaps %zmm10, %zmm5 + orl %eax, %edx + vfmsub213pd {rn-sae}, %zmm8, %zmm10, %zmm5 + +/* Tl + R2l*c2h */ + vfmadd213pd {rn-sae}, %zmm6, %zmm4, %zmm5 + vmovups 1280+__svml_dpow_data_internal_avx512(%rip), %zmm6 + vfmadd231pd {rn-sae}, %zmm10, %zmm6, %zmm1 + +/* Expon + Th+ R*c1h */ + vmovaps %zmm15, %zmm12 + vfmadd231pd {rn-sae}, %zmm10, %zmm3, %zmm12 + +/* P2_9 */ + vfmadd213pd {rn-sae}, %zmm1, %zmm8, %zmm7 + +/* (R*c1h)_h */ + vsubpd {rn-sae}, %zmm15, %zmm12, %zmm9 + +/* Tl + R2l*c2h + R2*P2_9 */ + vfmadd231pd {rn-sae}, %zmm8, %zmm7, %zmm5 + vmovups 1408+__svml_dpow_data_internal_avx512(%rip), %zmm7 + +/* (R*c1h)_l */ + vfmsub231pd {rn-sae}, %zmm3, %zmm10, %zmm9 + +/* Expon + Th+ R*c1h + R2*c2h */ + vmovaps %zmm12, %zmm13 + vfmadd231pd {rn-sae}, %zmm8, %zmm4, %zmm13 + +/* R*c1l + (R*c1h)_l */ + vfmadd213pd {rn-sae}, %zmm9, %zmm7, %zmm10 + vmovups 1728+__svml_dpow_data_internal_avx512(%rip), %zmm9 + +/* High2 + Tlh */ + vaddpd {rn-sae}, %zmm5, %zmm13, %zmm6 + +/* (R2*c2h)_h */ + vsubpd {rn-sae}, %zmm12, %zmm13, %zmm2 + +/* P3_4 */ + vmovups 1792+__svml_dpow_data_internal_avx512(%rip), %zmm12 + +/* y*High */ + vmulpd {rz-sae}, %zmm11, %zmm6, %zmm3 + +/* (R2*c2h)_l */ + vfmsub213pd {rn-sae}, %zmm2, %zmm4, %zmm8 + vsubpd {rn-sae}, %zmm13, %zmm6, %zmm1 + +/* (y*High)_low */ + vfmsub213pd {rz-sae}, %zmm3, %zmm11, %zmm6 + +/* Tll */ + vsubpd {rn-sae}, %zmm1, %zmm5, %zmm4 + +/* R*c1l + (R*c1h)_l+(R2*c2h)_l */ + vaddpd {rn-sae}, %zmm8, %zmm10, %zmm10 + vmovups 1472+__svml_dpow_data_internal_avx512(%rip), %zmm1 + vmovups 1600+__svml_dpow_data_internal_avx512(%rip), %zmm8 + +/* Tll + R*c1l + (R*c1h)_l */ + vaddpd {rn-sae}, %zmm10, %zmm4, %zmm5 + vaddpd {rd-sae}, %zmm1, %zmm3, %zmm2 + +/* + * / + * exp2 computation starts here + */ + vreducepd $65, {sae}, %zmm3, %zmm4 + +/* Zl = y*Tll + Zl */ + vfmadd213pd {rz-sae}, %zmm6, %zmm11, %zmm5 + +/* P5_6 */ + vmovups 1664+__svml_dpow_data_internal_avx512(%rip), %zmm1 + vmovups 1856+__svml_dpow_data_internal_avx512(%rip), %zmm10 + vaddpd {rn-sae}, %zmm5, %zmm4, %zmm7 + vandpd 2176+__svml_dpow_data_internal_avx512(%rip), %zmm3, %zmm3 + +/* Table lookup: The, Tle/The */ + vmovups 512+__svml_dpow_data_internal_avx512(%rip), %zmm4 + +/* + * scaled result + * Filter very large |y*log2(x)| and scale final result for LRB2 + */ + vmovups 2240+__svml_dpow_data_internal_avx512(%rip), %zmm5 + +/* ensure |R|<2 even for special cases */ + vandpd 1536+__svml_dpow_data_internal_avx512(%rip), %zmm7, %zmm15 + vpermt2pd 576+__svml_dpow_data_internal_avx512(%rip), %zmm2, %zmm4 + vcmppd $22, {sae}, %zmm5, %zmm3, %k0 + +/* Re^2 */ + vmulpd {rn-sae}, %zmm15, %zmm15, %zmm13 + +/* R*The */ + vmulpd {rn-sae}, %zmm4, %zmm15, %zmm7 + vfmadd231pd {rn-sae}, %zmm15, %zmm8, %zmm1 + vfmadd231pd {rn-sae}, %zmm15, %zmm9, %zmm12 + vfmadd231pd {rn-sae}, %zmm15, %zmm10, %zmm14 + vpsllq $48, %zmm2, %zmm2 + vfmadd213pd {rn-sae}, %zmm12, %zmm13, %zmm1 + vandpd 2304+__svml_dpow_data_internal_avx512(%rip), %zmm2, %zmm2 + kmovw %k0, %ecx + vfmadd213pd {rn-sae}, %zmm14, %zmm13, %zmm1 + +/* The + The*R*poly */ + vfmadd213pd {rn-sae}, %zmm4, %zmm7, %zmm1 + orl %ecx, %edx + vmulpd {rn-sae}, %zmm2, %zmm1, %zmm1 + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + vmovaps %zmm1, %zmm0 + 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 %zmm0, 64(%rsp) + vmovups %zmm11, 128(%rsp) + vmovups %zmm1, 192(%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, 0x28, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x38, 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, 0x30, 0xff, 0xff, 0xff, 0x22 + movl %edx, %r13d + .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x18, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x08, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 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 192(%rsp), %zmm1 + 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, 0x28, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x38, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x18, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x08, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22 + +.LBL_1_10: + + lea 64(%rsp,%r12,8), %rdi + lea 128(%rsp,%r12,8), %rsi + lea 192(%rsp,%r12,8), %rdx + + call __svml_dpow_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_pow8,@function + .size __svml_pow8,.-__svml_pow8 +..LN__svml_pow8.0: + +.L_2__routine_start___svml_dpow_cout_rare_internal_1: + + .align 16,0x90 + +__svml_dpow_cout_rare_internal: + + + .cfi_startproc +..L53: + + pushq %r12 + .cfi_def_cfa_offset 16 + .cfi_offset 12, -16 + pushq %r13 + .cfi_def_cfa_offset 24 + .cfi_offset 13, -24 + pushq %r15 + .cfi_def_cfa_offset 32 + .cfi_offset 15, -32 + pushq %rbx + .cfi_def_cfa_offset 40 + .cfi_offset 3, -40 + movq %rdx, %r8 + movsd 6824+__dpow_la_CoutTab(%rip), %xmm1 + xorl %eax, %eax + movsd (%rdi), %xmm3 + movsd (%rsi), %xmm0 + mulsd %xmm1, %xmm3 + mulsd %xmm1, %xmm0 + movsd %xmm3, -72(%rsp) + movsd %xmm0, -16(%rsp) + movzwl -66(%rsp), %r13d + movzwl -10(%rsp), %edx + andl $32752, %r13d + movzbl -65(%rsp), %r12d + andl $32752, %edx + movb -9(%rsp), %bl + andl $128, %r12d + andb $-128, %bl + shrl $4, %r13d + shrl $4, %edx + shrl $7, %r12d + shrb $7, %bl + testl $1048575, -68(%rsp) + jne .LBL_2_4 + + + cmpl $0, -72(%rsp) + jne .LBL_2_4 + + + movb $1, %r11b + jmp .LBL_2_5 + +.LBL_2_4: + + xorb %r11b, %r11b + +.LBL_2_5: + + movl -12(%rsp), %ecx + movl -16(%rsp), %edi + andl $1048575, %ecx + jne .LBL_2_8 + + + testl %edi, %edi + jne .LBL_2_8 + + + movl $1, %r10d + jmp .LBL_2_9 + +.LBL_2_8: + + xorl %r10d, %r10d + +.LBL_2_9: + + movl %edx, %r9d + xorl %esi, %esi + cmpl $2047, %edx + setne %sil + shll $20, %r9d + orl %ecx, %r9d + movl %edi, %ecx + orl %r9d, %ecx + je .LBL_2_24 + + + lea -1023(%rdx), %ecx + cmpl $1023, %edx + jl .LBL_2_23 + + + testl %esi, %esi + je .LBL_2_23 + + + cmpl $20, %ecx + jg .LBL_2_16 + + + movl %r9d, %r15d + shll %cl, %r15d + shll $12, %r15d + orl %edi, %r15d + je .LBL_2_15 + +.LBL_2_14: + + xorl %r9d, %r9d + jmp .LBL_2_21 + +.LBL_2_15: + + lea -1012(%rdx), %ecx + shll %cl, %r9d + notl %r9d + shrl $31, %r9d + incl %r9d + jmp .LBL_2_21 + +.LBL_2_16: + + cmpl $53, %ecx + jge .LBL_2_20 + + + lea -1012(%rdx), %ecx + shll %cl, %edi + testl $2147483647, %edi + jne .LBL_2_14 + + + notl %edi + shrl $31, %edi + lea 1(%rdi), %r9d + jmp .LBL_2_21 + +.LBL_2_20: + + movl $2, %r9d + +.LBL_2_21: + + testl %r12d, %r12d + jne .LBL_2_29 + + + cmpl $1023, %r13d + jne .LBL_2_29 + jmp .LBL_2_57 + +.LBL_2_23: + + xorl %r9d, %r9d + jmp .LBL_2_25 + +.LBL_2_24: + + movl $2, %r9d + +.LBL_2_25: + + testl %r12d, %r12d + jne .LBL_2_27 + + + cmpl $1023, %r13d + je .LBL_2_74 + +.LBL_2_27: + + testl %edx, %edx + jne .LBL_2_29 + + + testl %r10d, %r10d + jne .LBL_2_55 + +.LBL_2_29: + + cmpl $2047, %r13d + je .LBL_2_31 + +.LBL_2_30: + + movb $1, %cl + jmp .LBL_2_32 + +.LBL_2_31: + + xorb %cl, %cl + +.LBL_2_32: + + orb %cl, %r11b + je .LBL_2_54 + + + orl %esi, %r10d + je .LBL_2_54 + + + movsd 6816+__dpow_la_CoutTab(%rip), %xmm2 + ucomisd %xmm2, %xmm3 + jp .LBL_2_35 + je .LBL_2_71 + +.LBL_2_35: + + ucomisd 6832+__dpow_la_CoutTab(%rip), %xmm3 + jp .LBL_2_36 + je .LBL_2_68 + +.LBL_2_36: + + testb %cl, %cl + je .LBL_2_47 + + + testl %esi, %esi + je .LBL_2_47 + + + comisd %xmm2, %xmm3 + ja .LBL_2_40 + + + testl %r9d, %r9d + je .LBL_2_46 + +.LBL_2_40: + + lea 6824+__dpow_la_CoutTab(%rip), %rcx + andl %r12d, %r9d + movsd %xmm3, -72(%rsp) + andb $127, -65(%rsp) + movsd (%rcx,%r9,8), %xmm0 + xorl %ecx, %ecx + testl %r13d, %r13d + jne .LBL_2_42 + + + movsd -72(%rsp), %xmm2 + movl $-200, %ecx + mulsd 6864+__dpow_la_CoutTab(%rip), %xmm2 + movsd %xmm2, -72(%rsp) + jmp .LBL_2_43 + +.LBL_2_42: + + movsd -72(%rsp), %xmm2 + +.LBL_2_43: + + movzwl -66(%rsp), %esi + pxor %xmm7, %xmm7 + andl $32752, %esi + shrl $4, %esi + movl -68(%rsp), %r9d + shll $20, %esi + andl $1048575, %r9d + movsd %xmm2, -56(%rsp) + orl %r9d, %esi + movzwl -50(%rsp), %edi + addl $-1072152576, %esi + andl $-32753, %edi + addl $16368, %edi + movw %di, -50(%rsp) + sarl $20, %esi + movl -52(%rsp), %r10d + addl %ecx, %esi + lea __dpow_la_CoutTab(%rip), %rcx + andl $1032192, %r10d + addl $16384, %r10d + shrl $15, %r10d + movsd -56(%rsp), %xmm2 + movsd (%rcx,%r10,8), %xmm5 + addl %r10d, %r10d + movaps %xmm5, %xmm6 + movsd 6856+__dpow_la_CoutTab(%rip), %xmm14 + mulsd %xmm2, %xmm6 + cvtsi2sd %esi, %xmm7 + mulsd %xmm2, %xmm14 + addsd 264(%rcx,%r10,8), %xmm7 + movsd %xmm6, -48(%rsp) + movsd %xmm14, -32(%rsp) + movl -44(%rsp), %r11d + andl $64512, %r11d + movsd -32(%rsp), %xmm15 + addl $1024, %r11d + shrl $11, %r11d + subsd -56(%rsp), %xmm15 + movsd 792(%rcx,%r11,8), %xmm12 + addl %r11d, %r11d + mulsd %xmm12, %xmm6 + addsd 1056(%rcx,%r11,8), %xmm7 + mulsd %xmm12, %xmm5 + movsd %xmm15, -24(%rsp) + movsd -32(%rsp), %xmm4 + movsd -24(%rsp), %xmm3 + movsd %xmm6, -40(%rsp) + subsd %xmm3, %xmm4 + movl -36(%rsp), %r12d + andl $4080, %r12d + addl $16, %r12d + movsd %xmm4, -32(%rsp) + shrl $5, %r12d + movsd -32(%rsp), %xmm12 + movsd 1584(%rcx,%r12,8), %xmm13 + addl %r12d, %r12d + mulsd %xmm13, %xmm5 + subsd %xmm12, %xmm2 + addsd 2616(%rcx,%r12,8), %xmm7 + mulsd %xmm13, %xmm6 + movsd %xmm2, -24(%rsp) + movaps %xmm6, %xmm8 + movsd 6856+__dpow_la_CoutTab(%rip), %xmm2 + mulsd %xmm5, %xmm2 + subsd 6848+__dpow_la_CoutTab(%rip), %xmm8 + movsd -32(%rsp), %xmm3 + movsd -24(%rsp), %xmm4 + movsd %xmm2, -32(%rsp) + movsd -32(%rsp), %xmm13 + movsd 272(%rcx,%r10,8), %xmm11 + subsd %xmm5, %xmm13 + movsd %xmm13, -24(%rsp) + movsd -32(%rsp), %xmm2 + movsd -24(%rsp), %xmm14 + movsd 1064(%rcx,%r11,8), %xmm10 + subsd %xmm14, %xmm2 + movsd %xmm2, -32(%rsp) + movaps %xmm3, %xmm2 + movsd -32(%rsp), %xmm15 + movsd 2624(%rcx,%r12,8), %xmm9 + subsd %xmm15, %xmm5 + movsd %xmm5, -24(%rsp) + movsd -32(%rsp), %xmm5 + mulsd %xmm5, %xmm2 + mulsd %xmm4, %xmm5 + subsd %xmm6, %xmm2 + movaps %xmm7, %xmm6 + addsd %xmm5, %xmm2 + addsd %xmm8, %xmm6 + movsd -24(%rsp), %xmm12 + mulsd %xmm12, %xmm3 + mulsd %xmm12, %xmm4 + addsd %xmm3, %xmm2 + movsd %xmm6, -32(%rsp) + addsd %xmm4, %xmm2 + movsd -32(%rsp), %xmm3 + subsd %xmm3, %xmm7 + addsd %xmm8, %xmm7 + movsd %xmm7, -24(%rsp) + movsd -32(%rsp), %xmm4 + movsd %xmm4, -64(%rsp) + movzwl -58(%rsp), %ecx + andl $32752, %ecx + shrl $4, %ecx + addl %edx, %ecx + movsd -24(%rsp), %xmm3 + cmpl $2057, %ecx + jge .LBL_2_67 + + + cmpl $1984, %ecx + jg .LBL_2_58 + + + movsd %xmm1, -32(%rsp) + movsd -32(%rsp), %xmm1 + addsd 6808+__dpow_la_CoutTab(%rip), %xmm1 + movsd %xmm1, -32(%rsp) + movsd -32(%rsp), %xmm2 + mulsd %xmm0, %xmm2 + jmp .LBL_2_56 + +.LBL_2_46: + + movsd %xmm2, -32(%rsp) + movl $1, %eax + movsd -32(%rsp), %xmm1 + movsd -32(%rsp), %xmm0 + divsd %xmm0, %xmm1 + movsd %xmm1, -32(%rsp) + movsd -32(%rsp), %xmm2 + jmp .LBL_2_56 + +.LBL_2_47: + + cmpl $1023, %r13d + jge .LBL_2_51 + + + testb %bl, %bl + je .LBL_2_56 + + + movaps %xmm0, %xmm2 + mulsd %xmm0, %xmm2 + jmp .LBL_2_56 + +.LBL_2_51: + + testb %bl, %bl + je .LBL_2_53 + + + lea 6824+__dpow_la_CoutTab(%rip), %rdx + andl %r12d, %r9d + mulsd (%rdx,%r9,8), %xmm2 + jmp .LBL_2_56 + +.LBL_2_53: + + mulsd %xmm3, %xmm3 + lea 6824+__dpow_la_CoutTab(%rip), %rdx + mulsd %xmm0, %xmm3 + andl %r12d, %r9d + movaps %xmm3, %xmm2 + mulsd (%rdx,%r9,8), %xmm2 + jmp .LBL_2_56 + +.LBL_2_54: + + movaps %xmm3, %xmm2 + addsd %xmm0, %xmm2 + jmp .LBL_2_56 + +.LBL_2_55: + + movq 6824+__dpow_la_CoutTab(%rip), %rdx + addsd %xmm0, %xmm3 + movsd %xmm3, -32(%rsp) + movq %rdx, -24(%rsp) + movb -25(%rsp), %cl + movb -17(%rsp), %bl + andb $-128, %cl + andb $127, %bl + orb %cl, %bl + movb %bl, -17(%rsp) + movsd -24(%rsp), %xmm2 + movsd -24(%rsp), %xmm0 + mulsd %xmm0, %xmm2 + +.LBL_2_56: + + movsd %xmm2, (%r8) + .cfi_restore 3 + popq %rbx + .cfi_def_cfa_offset 32 + .cfi_restore 15 + popq %r15 + .cfi_def_cfa_offset 24 + .cfi_restore 13 + popq %r13 + .cfi_def_cfa_offset 16 + .cfi_restore 12 + popq %r12 + .cfi_def_cfa_offset 8 + ret + .cfi_def_cfa_offset 40 + .cfi_offset 3, -40 + .cfi_offset 12, -16 + .cfi_offset 13, -24 + .cfi_offset 15, -32 + +.LBL_2_57: + + testb %r11b, %r11b + je .LBL_2_30 + jmp .LBL_2_55 + +.LBL_2_58: + + lea 6752+__dpow_la_CoutTab(%rip), %rdx + movsd (%rdx), %xmm6 + lea 4688+__dpow_la_CoutTab(%rip), %rcx + movsd -64(%rsp), %xmm7 + addsd %xmm2, %xmm8 + addsd %xmm9, %xmm10 + addsd %xmm3, %xmm2 + mulsd %xmm8, %xmm6 + addsd %xmm10, %xmm11 + addsd -8(%rdx), %xmm6 + addsd %xmm2, %xmm11 + mulsd %xmm8, %xmm6 + movaps %xmm11, %xmm9 + addsd -16(%rdx), %xmm6 + mulsd %xmm8, %xmm6 + addsd -24(%rdx), %xmm6 + mulsd %xmm8, %xmm6 + addsd %xmm6, %xmm4 + lea -32(%rsp), %rbx + movsd %xmm4, (%rbx) + movsd (%rbx), %xmm8 + subsd %xmm8, %xmm7 + addsd %xmm6, %xmm7 + lea -24(%rsp), %rsi + movsd %xmm7, (%rsi) + movsd (%rbx), %xmm12 + movsd (%rsi), %xmm5 + addsd %xmm12, %xmm9 + movsd %xmm9, (%rbx) + movsd (%rbx), %xmm10 + subsd %xmm10, %xmm12 + addsd %xmm11, %xmm12 + movsd 104(%rdx), %xmm11 + movsd %xmm12, (%rsi) + movsd (%rbx), %xmm3 + mulsd %xmm3, %xmm11 + movsd (%rsi), %xmm4 + movsd %xmm11, (%rbx) + addsd %xmm5, %xmm4 + movsd (%rbx), %xmm13 + lea -16(%rsp), %rdi + movsd (%rdi), %xmm11 + subsd %xmm3, %xmm13 + mulsd (%rdi), %xmm4 + movsd %xmm13, (%rsi) + movaps %xmm11, %xmm6 + movsd (%rbx), %xmm15 + movsd (%rsi), %xmm14 + mulsd 104(%rdx), %xmm6 + subsd %xmm14, %xmm15 + movsd %xmm15, (%rbx) + movsd (%rbx), %xmm2 + movsd 88(%rdx), %xmm5 + subsd %xmm2, %xmm3 + movsd %xmm3, (%rsi) + movsd (%rbx), %xmm3 + movsd (%rsi), %xmm2 + movsd %xmm6, (%rbx) + movsd (%rbx), %xmm7 + subsd (%rdi), %xmm7 + movsd %xmm7, (%rsi) + movsd (%rbx), %xmm9 + movsd (%rsi), %xmm8 + subsd %xmm8, %xmm9 + movsd %xmm9, (%rbx) + movsd (%rbx), %xmm10 + subsd %xmm10, %xmm11 + movsd %xmm11, (%rsi) + movsd (%rbx), %xmm6 + movaps %xmm6, %xmm14 + mulsd %xmm3, %xmm14 + mulsd %xmm2, %xmm6 + addsd %xmm14, %xmm5 + movsd (%rsi), %xmm15 + mulsd %xmm15, %xmm2 + mulsd %xmm15, %xmm3 + addsd %xmm2, %xmm6 + movsd %xmm5, (%rbx) + addsd %xmm3, %xmm6 + movsd (%rbx), %xmm12 + addsd %xmm4, %xmm6 + subsd 88(%rdx), %xmm12 + movsd %xmm12, -88(%rsp) + movsd -88(%rsp), %xmm13 + movsd 40(%rdx), %xmm3 + subsd %xmm13, %xmm14 + movsd %xmm14, -80(%rsp) + movsd -80(%rsp), %xmm5 + movl (%rbx), %edx + movl %edx, %esi + andl $127, %edx + addsd %xmm6, %xmm5 + mulsd %xmm5, %xmm3 + addl %edx, %edx + movsd -8(%rcx,%rdx,8), %xmm2 + sarl $7, %esi + lea 6784+__dpow_la_CoutTab(%rip), %r9 + addsd (%r9), %xmm3 + mulsd %xmm5, %xmm3 + addsd -8(%r9), %xmm3 + mulsd %xmm5, %xmm3 + addsd -16(%r9), %xmm3 + mulsd %xmm5, %xmm3 + addsd -24(%r9), %xmm3 + mulsd %xmm5, %xmm3 + mulsd %xmm2, %xmm3 + addsd (%rcx,%rdx,8), %xmm3 + movaps %xmm3, %xmm4 + addsd %xmm2, %xmm4 + movsd %xmm4, -72(%rsp) + movzwl -66(%rsp), %ecx + movl %ecx, %ebx + andl $32752, %ebx + shrl $4, %ebx + lea -1023(%rsi,%rbx), %edx + cmpl $1024, %edx + jge .LBL_2_66 + + + cmpl $-1022, %edx + jl .LBL_2_61 + + + andl $-32753, %ecx + lea 1023(%rdx), %edx + andl $2047, %edx + shll $4, %edx + orl %edx, %ecx + movw %cx, -66(%rsp) + movsd -72(%rsp), %xmm2 + mulsd %xmm0, %xmm2 + movsd %xmm2, -72(%rsp) + jmp .LBL_2_56 + +.LBL_2_61: + + cmpl $-1032, %edx + jl .LBL_2_63 + + + lea -32(%rsp), %rcx + movsd %xmm4, (%rcx) + addl $1223, %esi + movsd (%rcx), %xmm1 + andl $2047, %esi + lea 6824+__dpow_la_CoutTab(%rip), %rbx + movq (%rbx), %rdx + subsd %xmm1, %xmm2 + movq %rdx, -64(%rsp) + addsd %xmm2, %xmm3 + lea -24(%rsp), %rdi + movsd %xmm3, (%rdi) + movsd (%rcx), %xmm7 + movsd 32(%rbx), %xmm2 + mulsd %xmm7, %xmm2 + movsd (%rdi), %xmm9 + movsd %xmm2, (%rcx) + movsd (%rcx), %xmm3 + shrq $48, %rdx + subsd %xmm7, %xmm3 + movsd %xmm3, (%rdi) + andl $-32753, %edx + movsd (%rcx), %xmm5 + movsd (%rdi), %xmm4 + shll $4, %esi + subsd %xmm4, %xmm5 + movsd %xmm5, (%rcx) + orl %esi, %edx + lea -32(%rsp), %rsi + movsd (%rsi), %xmm6 + movw %dx, -58(%rsp) + subsd %xmm6, %xmm7 + movsd %xmm7, (%rdi) + movsd (%rsi), %xmm11 + movsd (%rdi), %xmm12 + movsd -64(%rsp), %xmm10 + addsd %xmm9, %xmm12 + mulsd %xmm10, %xmm11 + mulsd %xmm10, %xmm12 + movsd 48(%rbx), %xmm8 + addsd %xmm11, %xmm12 + mulsd %xmm8, %xmm0 + movq -16(%rbx), %rcx + movq %rcx, (%rsi) + lea -32(%rsp), %rcx + movsd (%rcx), %xmm14 + movsd (%rcx), %xmm13 + mulsd %xmm13, %xmm14 + mulsd %xmm12, %xmm0 + movsd %xmm14, (%rcx) + movsd (%rcx), %xmm15 + addsd %xmm15, %xmm0 + movaps %xmm0, %xmm2 + movsd %xmm2, -72(%rsp) + jmp .LBL_2_56 + +.LBL_2_63: + + cmpl $-1084, %edx + jl .LBL_2_65 + + + addl $1223, %esi + andl $2047, %esi + lea 6830+__dpow_la_CoutTab(%rip), %rcx + movzwl (%rcx), %edx + shll $4, %esi + andl $-32753, %edx + movsd %xmm1, -64(%rsp) + orl %esi, %edx + movw %dx, -58(%rsp) + movsd 42(%rcx), %xmm2 + movsd -64(%rsp), %xmm1 + mulsd %xmm2, %xmm0 + mulsd %xmm1, %xmm4 + movq -22(%rcx), %rcx + movq %rcx, -32(%rsp) + mulsd %xmm4, %xmm0 + lea -32(%rsp), %rcx + movsd (%rcx), %xmm4 + movsd (%rcx), %xmm3 + mulsd %xmm3, %xmm4 + movsd %xmm4, (%rcx) + movsd (%rcx), %xmm5 + subsd %xmm5, %xmm0 + movaps %xmm0, %xmm2 + movsd %xmm2, -72(%rsp) + jmp .LBL_2_56 + +.LBL_2_65: + + movq 6808+__dpow_la_CoutTab(%rip), %rdx + movq %rdx, -32(%rsp) + lea -32(%rsp), %rdx + movsd (%rdx), %xmm2 + movsd (%rdx), %xmm1 + mulsd %xmm1, %xmm2 + movsd %xmm2, (%rdx) + movsd (%rdx), %xmm3 + mulsd %xmm3, %xmm0 + movaps %xmm0, %xmm2 + movsd %xmm2, -72(%rsp) + jmp .LBL_2_56 + +.LBL_2_66: + + movq 6800+__dpow_la_CoutTab(%rip), %rdx + movq %rdx, -32(%rsp) + lea -32(%rsp), %rdx + movsd (%rdx), %xmm2 + movsd (%rdx), %xmm1 + mulsd %xmm1, %xmm2 + movsd %xmm2, (%rdx) + movsd (%rdx), %xmm3 + mulsd %xmm3, %xmm0 + movaps %xmm0, %xmm2 + movsd %xmm2, -72(%rsp) + jmp .LBL_2_56 + +.LBL_2_67: + + movb -57(%rsp), %dl + lea 6800+__dpow_la_CoutTab(%rip), %rcx + andb $-128, %dl + shrb $7, %dl + xorb %dl, %bl + movzbl %bl, %ebx + movsd (%rcx,%rbx,8), %xmm2 + mulsd %xmm2, %xmm2 + mulsd %xmm0, %xmm2 + jmp .LBL_2_56 + +.LBL_2_68: + + testl %r9d, %r9d + jne .LBL_2_70 + + + testl %esi, %esi + jne .LBL_2_36 + +.LBL_2_70: + + lea 6824+__dpow_la_CoutTab(%rip), %rdx + andl $1, %r9d + movsd (%rdx,%r9,8), %xmm2 + jmp .LBL_2_56 + +.LBL_2_71: + + mulsd %xmm3, %xmm3 + testb %bl, %bl + je .LBL_2_73 + + + lea 6824+__dpow_la_CoutTab(%rip), %rax + andl %r12d, %r9d + movsd (%rax,%r9,8), %xmm2 + movl $1, %eax + divsd %xmm3, %xmm2 + jmp .LBL_2_56 + +.LBL_2_73: + + lea 6824+__dpow_la_CoutTab(%rip), %rdx + andl %r12d, %r9d + movsd (%rdx,%r9,8), %xmm2 + mulsd %xmm3, %xmm2 + jmp .LBL_2_56 + +.LBL_2_74: + + testb %r11b, %r11b + jne .LBL_2_55 + + + testl %edx, %edx + jne .LBL_2_30 + + + testl %r10d, %r10d + je .LBL_2_30 + jmp .LBL_2_55 + .align 16,0x90 + + .cfi_endproc + + .type __svml_dpow_cout_rare_internal,@function + .size __svml_dpow_cout_rare_internal,.-__svml_dpow_cout_rare_internal +..LN__svml_dpow_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_dpow_data_internal_avx512: + .long 0 + .long 0 + .long 1972240384 + .long 3215375059 + .long 4207476736 + .long 3216401398 + .long 2363129856 + .long 3217067096 + .long 972816384 + .long 3217408026 + .long 766836736 + .long 3217739614 + .long 3103948800 + .long 3218062358 + .long 2869821440 + .long 3218228231 + .long 1271726080 + .long 3218381432 + .long 3449618432 + .long 3218530849 + .long 2300510208 + .long 3218676666 + .long 4147675136 + .long 3218819051 + .long 3761438720 + .long 3218958163 + .long 1758134272 + .long 3219094149 + .long 14041088 + .long 3219177733 + .long 513138688 + .long 3219242801 + .long 1904279552 + .long 1071288313 + .long 180338688 + .long 1071163544 + .long 1751498752 + .long 1071041295 + .long 2999894016 + .long 1070921467 + .long 3815833600 + .long 1070803966 + .long 1399062528 + .long 1070688704 + .long 2835742720 + .long 1070555096 + .long 2818572288 + .long 1070333031 + .long 180322304 + .long 1070114968 + .long 704610304 + .long 1069900764 + .long 3265986560 + .long 1069690285 + .long 3908239360 + .long 1069419290 + .long 2530213888 + .long 1069012484 + .long 2785017856 + .long 1068612402 + .long 3386507264 + .long 1067938708 + .long 2250244096 + .long 1066877934 + .long 0 + .long 0 + .long 650173971 + .long 3177165030 + .long 3428024929 + .long 3174241916 + .long 1628324029 + .long 1026060711 + .long 804943611 + .long 1028963376 + .long 518075456 + .long 1027828752 + .long 1462134616 + .long 1028126172 + .long 384118417 + .long 3174884873 + .long 1227618047 + .long 3176893182 + .long 446961290 + .long 3175726255 + .long 2998207852 + .long 3176597684 + .long 2742536172 + .long 3173319968 + .long 3242321520 + .long 1029042433 + .long 1690697745 + .long 3174775608 + .long 4137858450 + .long 1027958429 + .long 2514005062 + .long 1029694520 + .long 804943611 + .long 1027914800 + .long 2871266960 + .long 3173412044 + .long 3679462403 + .long 1027724294 + .long 2476829589 + .long 1026974179 + .long 1572243234 + .long 3176241050 + .long 2514550597 + .long 3175960347 + .long 1207415416 + .long 1029642824 + .long 531120703 + .long 3174459378 + .long 894287639 + .long 1029609779 + .long 1133539114 + .long 1029069062 + .long 1763539348 + .long 1029327721 + .long 1658032750 + .long 3171241178 + .long 825146242 + .long 3176213734 + .long 831162967 + .long 1028990787 + .long 1128763360 + .long 3176457556 + .long 896504796 + .long 3175699769 + .long 0 + .long 1072693248 + .long 1828292879 + .long 1072739672 + .long 1014845819 + .long 1072788152 + .long 1853186616 + .long 1072838778 + .long 171030293 + .long 1072891646 + .long 1276261410 + .long 1072946854 + .long 3577096743 + .long 1073004506 + .long 3712504873 + .long 1073064711 + .long 1719614413 + .long 1073127582 + .long 1944781191 + .long 1073193236 + .long 1110089947 + .long 1073261797 + .long 2191782032 + .long 1073333393 + .long 2572866477 + .long 1073408159 + .long 3716502172 + .long 1073486235 + .long 3707479175 + .long 1073567768 + .long 2728693978 + .long 1073652911 + .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 0 + .long 1073217536 + .long 0 + .long 1073217536 + .long 0 + .long 1073217536 + .long 0 + .long 1073217536 + .long 0 + .long 1073217536 + .long 0 + .long 1073217536 + .long 0 + .long 1073217536 + .long 0 + .long 1073217536 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 3219592519 + .long 1697350398 + .long 3219592519 + .long 1697350398 + .long 3219592519 + .long 1697350398 + .long 3219592519 + .long 1697350398 + .long 3219592519 + .long 1697350398 + .long 3219592519 + .long 1697350398 + .long 3219592519 + .long 1697350398 + .long 3219592519 + .long 4114041750 + .long 1069844377 + .long 4114041750 + .long 1069844377 + .long 4114041750 + .long 1069844377 + .long 4114041750 + .long 1069844377 + .long 4114041750 + .long 1069844377 + .long 4114041750 + .long 1069844377 + .long 4114041750 + .long 1069844377 + .long 4114041750 + .long 1069844377 + .long 2589302621 + .long 3217496037 + .long 2589302621 + .long 3217496037 + .long 2589302621 + .long 3217496037 + .long 2589302621 + .long 3217496037 + .long 2589302621 + .long 3217496037 + .long 2589302621 + .long 3217496037 + .long 2589302621 + .long 3217496037 + .long 2589302621 + .long 3217496037 + .long 4238449923 + .long 1070227829 + .long 4238449923 + .long 1070227829 + .long 4238449923 + .long 1070227829 + .long 4238449923 + .long 1070227829 + .long 4238449923 + .long 1070227829 + .long 4238449923 + .long 1070227829 + .long 4238449923 + .long 1070227829 + .long 4238449923 + .long 1070227829 + .long 3163535583 + .long 3217999625 + .long 3163535583 + .long 3217999625 + .long 3163535583 + .long 3217999625 + .long 3163535583 + .long 3217999625 + .long 3163535583 + .long 3217999625 + .long 3163535583 + .long 3217999625 + .long 3163535583 + .long 3217999625 + .long 3163535583 + .long 3217999625 + .long 1357918834 + .long 1070757740 + .long 1357918834 + .long 1070757740 + .long 1357918834 + .long 1070757740 + .long 1357918834 + .long 1070757740 + .long 1357918834 + .long 1070757740 + .long 1357918834 + .long 1070757740 + .long 1357918834 + .long 1070757740 + .long 1357918834 + .long 1070757740 + .long 1697368554 + .long 3218543943 + .long 1697368554 + .long 3218543943 + .long 1697368554 + .long 3218543943 + .long 1697368554 + .long 3218543943 + .long 1697368554 + .long 3218543943 + .long 1697368554 + .long 3218543943 + .long 1697368554 + .long 3218543943 + .long 1697368554 + .long 3218543943 + .long 3694789628 + .long 1071564553 + .long 3694789628 + .long 1071564553 + .long 3694789628 + .long 1071564553 + .long 3694789628 + .long 1071564553 + .long 3694789628 + .long 1071564553 + .long 3694789628 + .long 1071564553 + .long 3694789628 + .long 1071564553 + .long 3694789628 + .long 1071564553 + .long 3757988711 + .long 1013148509 + .long 3757988711 + .long 1013148509 + .long 3757988711 + .long 1013148509 + .long 3757988711 + .long 1013148509 + .long 3757988711 + .long 1013148509 + .long 3757988711 + .long 1013148509 + .long 3757988711 + .long 1013148509 + .long 3757988711 + .long 1013148509 + .long 3999174959 + .long 1014462451 + .long 3999174959 + .long 1014462451 + .long 3999174959 + .long 1014462451 + .long 3999174959 + .long 1014462451 + .long 3999174959 + .long 1014462451 + .long 3999174959 + .long 1014462451 + .long 3999174959 + .long 1014462451 + .long 3999174959 + .long 1014462451 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 16368 + .long 1123549184 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4294967295 + .long 3221225471 + .long 4119604569 + .long 1059365335 + .long 4119604569 + .long 1059365335 + .long 4119604569 + .long 1059365335 + .long 4119604569 + .long 1059365335 + .long 4119604569 + .long 1059365335 + .long 4119604569 + .long 1059365335 + .long 4119604569 + .long 1059365335 + .long 4119604569 + .long 1059365335 + .long 662950521 + .long 1062590279 + .long 662950521 + .long 1062590279 + .long 662950521 + .long 1062590279 + .long 662950521 + .long 1062590279 + .long 662950521 + .long 1062590279 + .long 662950521 + .long 1062590279 + .long 662950521 + .long 1062590279 + .long 662950521 + .long 1062590279 + .long 454355882 + .long 1065595565 + .long 454355882 + .long 1065595565 + .long 454355882 + .long 1065595565 + .long 454355882 + .long 1065595565 + .long 454355882 + .long 1065595565 + .long 454355882 + .long 1065595565 + .long 454355882 + .long 1065595565 + .long 454355882 + .long 1065595565 + .long 3568144057 + .long 1068264200 + .long 3568144057 + .long 1068264200 + .long 3568144057 + .long 1068264200 + .long 3568144057 + .long 1068264200 + .long 3568144057 + .long 1068264200 + .long 3568144057 + .long 1068264200 + .long 3568144057 + .long 1068264200 + .long 3568144057 + .long 1068264200 + .long 4286862669 + .long 1070514109 + .long 4286862669 + .long 1070514109 + .long 4286862669 + .long 1070514109 + .long 4286862669 + .long 1070514109 + .long 4286862669 + .long 1070514109 + .long 4286862669 + .long 1070514109 + .long 4286862669 + .long 1070514109 + .long 4286862669 + .long 1070514109 + .long 4277811595 + .long 1072049730 + .long 4277811595 + .long 1072049730 + .long 4277811595 + .long 1072049730 + .long 4277811595 + .long 1072049730 + .long 4277811595 + .long 1072049730 + .long 4277811595 + .long 1072049730 + .long 4277811595 + .long 1072049730 + .long 4277811595 + .long 1072049730 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 248 + .long 0 + .long 248 + .long 0 + .long 248 + .long 0 + .long 248 + .long 0 + .long 248 + .long 0 + .long 248 + .long 0 + .long 248 + .long 0 + .long 248 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .long 120 + .long 0 + .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 1083173888 + .long 0 + .long 1083173888 + .long 0 + .long 1083173888 + .long 0 + .long 1083173888 + .long 0 + .long 1083173888 + .long 0 + .long 1083173888 + .long 0 + .long 1083173888 + .long 0 + .long 1083173888 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .type __svml_dpow_data_internal_avx512,@object + .size __svml_dpow_data_internal_avx512,2368 + .align 32 +__dpow_la_CoutTab: + .long 0 + .long 1072693248 + .long 0 + .long 1072629696 + .long 0 + .long 1072569856 + .long 0 + .long 1072513472 + .long 0 + .long 1072460224 + .long 0 + .long 1072409856 + .long 0 + .long 1072362112 + .long 0 + .long 1072316864 + .long 0 + .long 1072273792 + .long 0 + .long 1072232896 + .long 0 + .long 1072193920 + .long 0 + .long 1072156736 + .long 0 + .long 1072121280 + .long 0 + .long 1072087424 + .long 0 + .long 1072054976 + .long 0 + .long 1072023936 + .long 0 + .long 1071994176 + .long 0 + .long 1071965696 + .long 0 + .long 1071938304 + .long 0 + .long 1071911936 + .long 0 + .long 1071886656 + .long 0 + .long 1071862272 + .long 0 + .long 1071838848 + .long 0 + .long 1071816256 + .long 0 + .long 1071794496 + .long 0 + .long 1071773440 + .long 0 + .long 1071753152 + .long 0 + .long 1071733504 + .long 0 + .long 1071714560 + .long 0 + .long 1071696256 + .long 0 + .long 1071678528 + .long 0 + .long 1071661312 + .long 0 + .long 1071644672 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2686386176 + .long 1067891457 + .long 1949948785 + .long 1027381598 + .long 1341652992 + .long 1068918120 + .long 2376679344 + .long 1026589938 + .long 2182004736 + .long 1069583575 + .long 297009671 + .long 1026900933 + .long 1687183360 + .long 1069924424 + .long 2120169064 + .long 1026082260 + .long 53207040 + .long 1070255920 + .long 3737096550 + .long 1026438963 + .long 3818315776 + .long 1070578756 + .long 677794872 + .long 1028109305 + .long 2429726720 + .long 1070744485 + .long 3907638365 + .long 1027382133 + .long 2702757888 + .long 1070897876 + .long 1929563302 + .long 1027984695 + .long 2465140736 + .long 1071047207 + .long 243175481 + .long 1026641700 + .long 2657701888 + .long 1071193041 + .long 3841377895 + .long 1028504382 + .long 658427904 + .long 1071335525 + .long 161357665 + .long 1028306250 + .long 539168768 + .long 1071474585 + .long 2531816708 + .long 1025043792 + .long 2658430976 + .long 1071610420 + .long 2178519328 + .long 1028288112 + .long 1355743232 + .long 1071694102 + .long 3943781029 + .long 1028003666 + .long 1854838784 + .long 1071759170 + .long 1812291414 + .long 1027042047 + .long 473251840 + .long 3218771869 + .long 1330616404 + .long 3175482613 + .long 2315530240 + .long 3218647330 + .long 3482179716 + .long 3175726112 + .long 3886694400 + .long 3218525081 + .long 3584491563 + .long 3175164762 + .long 1568866304 + .long 3218405023 + .long 3528175174 + .long 3174626157 + .long 4172640256 + .long 3218287637 + .long 3760034354 + .long 3171774178 + .long 3545214976 + .long 3218172213 + .long 881689765 + .long 3173077446 + .long 2121375744 + .long 3218038698 + .long 549802690 + .long 3174897014 + .long 492560384 + .long 3217816668 + .long 239252792 + .long 3173483664 + .long 155754496 + .long 3217598893 + .long 1693604438 + .long 3175909818 + .long 4285202432 + .long 3217384365 + .long 127148739 + .long 3175942199 + .long 41181184 + .long 3217174003 + .long 3260046653 + .long 3174058211 + .long 2465087488 + .long 3216902292 + .long 4241850247 + .long 3175110025 + .long 1101037568 + .long 3216495763 + .long 3170347605 + .long 3176066808 + .long 3478798336 + .long 3216096373 + .long 329155479 + .long 3175972274 + .long 3246555136 + .long 3215423741 + .long 4071576371 + .long 3174315914 + .long 830078976 + .long 3214361213 + .long 1258533012 + .long 3175547121 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 1072689152 + .long 0 + .long 1072685056 + .long 0 + .long 1072681024 + .long 0 + .long 1072676992 + .long 0 + .long 1072672960 + .long 0 + .long 1072668928 + .long 0 + .long 1072664960 + .long 0 + .long 1072660992 + .long 0 + .long 1072657024 + .long 0 + .long 1072653056 + .long 0 + .long 1072649152 + .long 0 + .long 1072645248 + .long 0 + .long 1072641344 + .long 0 + .long 1072637440 + .long 0 + .long 1072710976 + .long 0 + .long 1072709888 + .long 0 + .long 1072708864 + .long 0 + .long 1072707776 + .long 0 + .long 1072706752 + .long 0 + .long 1072705664 + .long 0 + .long 1072704640 + .long 0 + .long 1072703616 + .long 0 + .long 1072702528 + .long 0 + .long 1072701504 + .long 0 + .long 1072700480 + .long 0 + .long 1072699456 + .long 0 + .long 1072698368 + .long 0 + .long 1072697344 + .long 0 + .long 1072696320 + .long 0 + .long 1072695296 + .long 0 + .long 1072694272 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2754084864 + .long 1063721742 + .long 2557931335 + .long 1028226920 + .long 3228041216 + .long 1064771801 + .long 930662348 + .long 1027873525 + .long 2323251200 + .long 1065436614 + .long 2596299912 + .long 1027915217 + .long 1641152512 + .long 1065811444 + .long 1188689655 + .long 1027383036 + .long 895221760 + .long 1066187001 + .long 2918954073 + .long 1026717129 + .long 3962896384 + .long 1066482539 + .long 1338190555 + .long 1024402868 + .long 2071330816 + .long 1066668054 + .long 2834125591 + .long 1027573772 + .long 830078976 + .long 1066853925 + .long 1683363035 + .long 1027948302 + .long 1828782080 + .long 1067040153 + .long 874130859 + .long 1026348678 + .long 2395996160 + .long 1067226740 + .long 1724975876 + .long 1028585613 + .long 3558866944 + .long 1067410669 + .long 2189961434 + .long 1027936707 + .long 2542927872 + .long 1067522658 + .long 3621009110 + .long 1028493916 + .long 4208394240 + .long 1067614973 + .long 2777386350 + .long 1028255456 + .long 3217162240 + .long 1067707465 + .long 772669574 + .long 1028516547 + .long 824377344 + .long 3214460051 + .long 1593617402 + .long 3175722247 + .long 830078976 + .long 3214361213 + .long 1258533012 + .long 3175547121 + .long 4002480128 + .long 3214268096 + .long 1397883555 + .long 3175764245 + .long 2914385920 + .long 3214169062 + .long 3775067953 + .long 3175176772 + .long 1460142080 + .long 3214075761 + .long 1592372614 + .long 3175907032 + .long 219152384 + .long 3213976530 + .long 1716511551 + .long 3175540921 + .long 3419144192 + .long 3213880645 + .long 1128677462 + .long 3174560569 + .long 3320446976 + .long 3213693490 + .long 2965227743 + .long 3172454196 + .long 677904384 + .long 3213494440 + .long 4029390031 + .long 3174409513 + .long 1290797056 + .long 3213306911 + .long 1477436787 + .long 3173730612 + .long 2800877568 + .long 3213119200 + .long 4281418519 + .long 3173304523 + .long 3692822528 + .long 3212931307 + .long 751117103 + .long 3175382448 + .long 2547253248 + .long 3212626079 + .long 2419265147 + .long 3175328924 + .long 1836580864 + .long 3212249540 + .long 1456335141 + .long 3175441338 + .long 3438542848 + .long 3211872634 + .long 3721652080 + .long 3176073447 + .long 4278714368 + .long 3211202435 + .long 836003693 + .long 3174279974 + .long 926941184 + .long 3210154597 + .long 4249864733 + .long 3174015648 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1073741824 + .long 1073157447 + .long 0 + .long 1073157401 + .long 0 + .long 1073157355 + .long 3221225472 + .long 1073157308 + .long 2147483648 + .long 1073157262 + .long 2147483648 + .long 1073157216 + .long 1073741824 + .long 1073157170 + .long 1073741824 + .long 1073157124 + .long 0 + .long 1073157078 + .long 3221225472 + .long 1073157031 + .long 3221225472 + .long 1073156985 + .long 2147483648 + .long 1073156939 + .long 2147483648 + .long 1073156893 + .long 1073741824 + .long 1073156847 + .long 1073741824 + .long 1073156801 + .long 0 + .long 1073156755 + .long 0 + .long 1073156709 + .long 3221225472 + .long 1073156662 + .long 3221225472 + .long 1073156616 + .long 2147483648 + .long 1073156570 + .long 2147483648 + .long 1073156524 + .long 2147483648 + .long 1073156478 + .long 1073741824 + .long 1073156432 + .long 1073741824 + .long 1073156386 + .long 0 + .long 1073156340 + .long 0 + .long 1073156294 + .long 0 + .long 1073156248 + .long 3221225472 + .long 1073156201 + .long 3221225472 + .long 1073156155 + .long 2147483648 + .long 1073156109 + .long 2147483648 + .long 1073156063 + .long 2147483648 + .long 1073156017 + .long 1073741824 + .long 1073155971 + .long 1073741824 + .long 1073155925 + .long 1073741824 + .long 1073155879 + .long 1073741824 + .long 1073155833 + .long 0 + .long 1073155787 + .long 0 + .long 1073155741 + .long 0 + .long 1073155695 + .long 0 + .long 1073155649 + .long 3221225472 + .long 1073155602 + .long 3221225472 + .long 1073155556 + .long 3221225472 + .long 1073155510 + .long 3221225472 + .long 1073155464 + .long 3221225472 + .long 1073155418 + .long 2147483648 + .long 1073155372 + .long 2147483648 + .long 1073155326 + .long 2147483648 + .long 1073155280 + .long 2147483648 + .long 1073155234 + .long 2147483648 + .long 1073155188 + .long 2147483648 + .long 1073155142 + .long 2147483648 + .long 1073155096 + .long 2147483648 + .long 1073155050 + .long 2147483648 + .long 1073155004 + .long 1073741824 + .long 1073154958 + .long 1073741824 + .long 1073154912 + .long 1073741824 + .long 1073154866 + .long 1073741824 + .long 1073154820 + .long 1073741824 + .long 1073154774 + .long 1073741824 + .long 1073154728 + .long 1073741824 + .long 1073154682 + .long 2147483648 + .long 1073158995 + .long 1073741824 + .long 1073158972 + .long 1073741824 + .long 1073158949 + .long 0 + .long 1073158926 + .long 0 + .long 1073158903 + .long 3221225472 + .long 1073158879 + .long 3221225472 + .long 1073158856 + .long 2147483648 + .long 1073158833 + .long 2147483648 + .long 1073158810 + .long 1073741824 + .long 1073158787 + .long 1073741824 + .long 1073158764 + .long 0 + .long 1073158741 + .long 0 + .long 1073158718 + .long 3221225472 + .long 1073158694 + .long 3221225472 + .long 1073158671 + .long 2147483648 + .long 1073158648 + .long 2147483648 + .long 1073158625 + .long 1073741824 + .long 1073158602 + .long 1073741824 + .long 1073158579 + .long 0 + .long 1073158556 + .long 0 + .long 1073158533 + .long 3221225472 + .long 1073158509 + .long 3221225472 + .long 1073158486 + .long 2147483648 + .long 1073158463 + .long 2147483648 + .long 1073158440 + .long 1073741824 + .long 1073158417 + .long 1073741824 + .long 1073158394 + .long 1073741824 + .long 1073158371 + .long 0 + .long 1073158348 + .long 0 + .long 1073158325 + .long 3221225472 + .long 1073158301 + .long 3221225472 + .long 1073158278 + .long 2147483648 + .long 1073158255 + .long 2147483648 + .long 1073158232 + .long 2147483648 + .long 1073158209 + .long 1073741824 + .long 1073158186 + .long 1073741824 + .long 1073158163 + .long 0 + .long 1073158140 + .long 0 + .long 1073158117 + .long 3221225472 + .long 1073158093 + .long 3221225472 + .long 1073158070 + .long 3221225472 + .long 1073158047 + .long 2147483648 + .long 1073158024 + .long 2147483648 + .long 1073158001 + .long 1073741824 + .long 1073157978 + .long 1073741824 + .long 1073157955 + .long 1073741824 + .long 1073157932 + .long 0 + .long 1073157909 + .long 0 + .long 1073157886 + .long 3221225472 + .long 1073157862 + .long 3221225472 + .long 1073157839 + .long 3221225472 + .long 1073157816 + .long 2147483648 + .long 1073157793 + .long 2147483648 + .long 1073157770 + .long 2147483648 + .long 1073157747 + .long 1073741824 + .long 1073157724 + .long 1073741824 + .long 1073157701 + .long 0 + .long 1073157678 + .long 0 + .long 1073157655 + .long 0 + .long 1073157632 + .long 3221225472 + .long 1073157608 + .long 3221225472 + .long 1073157585 + .long 3221225472 + .long 1073157562 + .long 2147483648 + .long 1073157539 + .long 2147483648 + .long 1073157516 + .long 2147483648 + .long 1073157493 + .long 1073741824 + .long 1073157470 + .long 1073741824 + .long 1073157447 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1342177280 + .long 1057431575 + .long 1679773494 + .long 1024039205 + .long 989855744 + .long 1058476078 + .long 3244478756 + .long 1024589954 + .long 209715200 + .long 1059147828 + .long 152199156 + .long 1027874535 + .long 2449473536 + .long 1059526748 + .long 2343302255 + .long 1022283036 + .long 1560281088 + .long 1059903632 + .long 4038848719 + .long 1027337824 + .long 4282384384 + .long 1060196455 + .long 2325104861 + .long 1027595231 + .long 1665138688 + .long 1060384909 + .long 2934027888 + .long 1026982347 + .long 3263168512 + .long 1060574392 + .long 3208451390 + .long 1027670758 + .long 3980394496 + .long 1060763881 + .long 863587004 + .long 1026973426 + .long 2470445056 + .long 1060952352 + .long 1027097864 + .long 1028644619 + .long 1296039936 + .long 1061141853 + .long 2016162954 + .long 1025089894 + .long 3107979264 + .long 1061244623 + .long 970842239 + .long 1028172704 + .long 3722444800 + .long 1061339379 + .long 2640304163 + .long 1027825546 + .long 2959081472 + .long 1061433626 + .long 306547692 + .long 1028101690 + .long 2631925760 + .long 1061528388 + .long 747377661 + .long 1028120913 + .long 794820608 + .long 1061622641 + .long 3406550266 + .long 1028182206 + .long 3825205248 + .long 1061717408 + .long 3705775220 + .long 1027201825 + .long 916455424 + .long 1061811667 + .long 1432750358 + .long 1028165990 + .long 3011510272 + .long 1061906440 + .long 3361908688 + .long 1027438936 + .long 3330277376 + .long 1062000704 + .long 3560665332 + .long 1027805882 + .long 3082813440 + .long 1062094971 + .long 2539531329 + .long 1028011583 + .long 3747610624 + .long 1062189753 + .long 2232403651 + .long 1025658467 + .long 1218445312 + .long 1062245757 + .long 396499622 + .long 1025861782 + .long 1086324736 + .long 1062293151 + .long 2757240868 + .long 1026731615 + .long 2047868928 + .long 1062340290 + .long 2226191703 + .long 1027982328 + .long 580911104 + .long 1062387431 + .long 1252857417 + .long 1028280924 + .long 1887436800 + .long 1062434829 + .long 659583454 + .long 1025370904 + .long 4186963968 + .long 1062481972 + .long 3587661750 + .long 1028188900 + .long 738197504 + .long 1062529374 + .long 3240696709 + .long 1027025093 + .long 2511339520 + .long 1062576520 + .long 2884432087 + .long 1028614554 + .long 1859125248 + .long 1062623668 + .long 2402099113 + .long 1025699109 + .long 4148166656 + .long 1062671073 + .long 2335237504 + .long 1026835951 + .long 2970615808 + .long 1062718224 + .long 3698719430 + .long 1027808594 + .long 3662675968 + .long 1062765376 + .long 2704653673 + .long 1027603403 + .long 1929379840 + .long 1062812530 + .long 761521627 + .long 1027109120 + .long 3273654272 + .long 1062859941 + .long 470528098 + .long 1027977181 + .long 1019215872 + .long 1062907098 + .long 3704635566 + .long 1027707215 + .long 635437056 + .long 1062954256 + .long 3676592927 + .long 1027502983 + .long 2122317824 + .long 1063001415 + .long 1497197375 + .long 1028267547 + .long 2529165312 + .long 1063048832 + .long 3425827878 + .long 1022000476 + .long 3498049536 + .long 1063095994 + .long 1982476393 + .long 1026289596 + .long 2043674624 + .long 1063143158 + .long 2502680620 + .long 1028471295 + .long 2463105024 + .long 1063190323 + .long 991567028 + .long 1027421239 + .long 460324864 + .long 1063237490 + .long 1461814384 + .long 1026181618 + .long 920125440 + .long 1063270489 + .long 1613472693 + .long 1027845558 + .long 3956277248 + .long 1063294073 + .long 93449747 + .long 1028284502 + .long 1487405056 + .long 1063317659 + .long 1336931403 + .long 1026834156 + .long 2102919168 + .long 1063341245 + .long 319680825 + .long 1027392710 + .long 1508376576 + .long 1063364832 + .long 2474643583 + .long 1027776685 + .long 3999268864 + .long 1063388419 + .long 3104004650 + .long 1024627034 + .long 985137152 + .long 1063412008 + .long 550153379 + .long 1026678253 + .long 1056440320 + .long 1063435597 + .long 672168391 + .long 1027731310 + .long 4213702656 + .long 1063459186 + .long 1805142399 + .long 1026660459 + .long 2772434944 + .long 1063482905 + .long 2448602160 + .long 1028404887 + .long 3528458240 + .long 1063506496 + .long 3457943394 + .long 1027665063 + .long 3075473408 + .long 1063530088 + .long 121314862 + .long 1027996294 + .long 1414004736 + .long 1063553681 + .long 94774013 + .long 1028053481 + .long 2839019520 + .long 1063577274 + .long 1263902834 + .long 1028588748 + .long 3056074752 + .long 1063600868 + .long 369708558 + .long 1028257136 + .long 2065170432 + .long 1063624463 + .long 1634529849 + .long 1027810905 + .long 1769996288 + .long 3210227157 + .long 1054279927 + .long 3174741313 + .long 2442133504 + .long 3210203373 + .long 2067107398 + .long 3175167430 + .long 456130560 + .long 3210179845 + .long 4142755806 + .long 3170825152 + .long 2302672896 + .long 3210156060 + .long 1526169727 + .long 3175523413 + .long 1524629504 + .long 3210132531 + .long 2442955053 + .long 3175425591 + .long 251658240 + .long 3210108746 + .long 2154729168 + .long 3175535488 + .long 681574400 + .long 3210085216 + .long 4275862891 + .long 3176027230 + .long 584056832 + .long 3210061430 + .long 4255852476 + .long 3173565530 + .long 2221932544 + .long 3210037899 + .long 2498876736 + .long 3175149504 + .long 3297771520 + .long 3210014112 + .long 1851620949 + .long 3175688865 + .long 1849688064 + .long 3209990581 + .long 2923055509 + .long 3171310641 + .long 4099932160 + .long 3209966793 + .long 2427653201 + .long 3173037457 + .long 3858759680 + .long 3209943261 + .long 1550068012 + .long 3173027359 + .long 2987393024 + .long 3209919473 + .long 4127650534 + .long 3175851613 + .long 3954180096 + .long 3209895940 + .long 442055840 + .long 3174771669 + .long 4257218560 + .long 3209872151 + .long 4113960829 + .long 3175350854 + .long 2135949312 + .long 3209848618 + .long 2076166727 + .long 3175229825 + .long 3613392896 + .long 3209824828 + .long 3476091171 + .long 3171604778 + .long 2699034624 + .long 3209801294 + .long 1765290157 + .long 3173591669 + .long 1053818880 + .long 3209777504 + .long 3761837094 + .long 3175683182 + .long 1346371584 + .long 3209753969 + .long 1459626820 + .long 3176031561 + .long 875560960 + .long 3209730178 + .long 2402361097 + .long 3174909319 + .long 2375024640 + .long 3209706642 + .long 687754918 + .long 3174943382 + .long 1858076672 + .long 3209674565 + .long 252333183 + .long 3175531572 + .long 2975858688 + .long 3209627492 + .long 1334776821 + .long 3174591557 + .long 2430599168 + .long 3209579907 + .long 1326030186 + .long 3173486707 + .long 1665138688 + .long 3209532833 + .long 737674412 + .long 3174401557 + .long 2122317824 + .long 3209485758 + .long 3987168834 + .long 3175346908 + .long 815792128 + .long 3209438171 + .long 3526910672 + .long 3176068855 + .long 3686793216 + .long 3209391094 + .long 587265932 + .long 3174950865 + .long 429916160 + .long 3209343506 + .long 3143915816 + .long 3175955609 + .long 1417674752 + .long 3209296428 + .long 2918285701 + .long 3174860756 + .long 505413632 + .long 3209248838 + .long 436607152 + .long 3175743066 + .long 3904897024 + .long 3209201758 + .long 2867787430 + .long 3173594277 + .long 4229955584 + .long 3209154678 + .long 3971699810 + .long 3174682560 + .long 2556428288 + .long 3209107086 + .long 3215049067 + .long 3174495054 + .long 998244352 + .long 3209060005 + .long 2424883713 + .long 3173182748 + .long 1667235840 + .long 3209012411 + .long 762177973 + .long 3175232288 + .long 2518679552 + .long 3208965328 + .long 282609672 + .long 3175635057 + .long 1237319680 + .long 3208917733 + .long 1502777354 + .long 3174942228 + .long 203423744 + .long 3208870649 + .long 4128371954 + .long 3175884977 + .long 392167424 + .long 3208823564 + .long 306802084 + .long 3175724146 + .long 2642411520 + .long 3208775966 + .long 2960876517 + .long 3173143647 + .long 945815552 + .long 3208728880 + .long 1800251929 + .long 3170106484 + .long 1241513984 + .long 3208681281 + .long 2675524524 + .long 3173521837 + .long 3904897024 + .long 3208625826 + .long 83988225 + .long 3175795858 + .long 3477078016 + .long 3208531649 + .long 1575792028 + .long 3175657512 + .long 2537553920 + .long 3208436447 + .long 1662079495 + .long 3175916253 + .long 2634022912 + .long 3208342267 + .long 2818347875 + .long 3174383619 + .long 2080374784 + .long 3208247062 + .long 1081767985 + .long 3175779040 + .long 2696937472 + .long 3208152879 + .long 2443744157 + .long 3175275915 + .long 1459617792 + .long 3208058695 + .long 790904149 + .long 3174713637 + .long 3670016000 + .long 3207963485 + .long 581064731 + .long 3173466591 + .long 2952790016 + .long 3207869298 + .long 1008918738 + .long 3171724149 + .long 377487360 + .long 3207775110 + .long 1606538461 + .long 3175837201 + .long 1052770304 + .long 3207679896 + .long 2534546984 + .long 3175060122 + .long 2298478592 + .long 3207577425 + .long 2154814426 + .long 3172198942 + .long 117440512 + .long 3207386992 + .long 1374248651 + .long 3174502065 + .long 1342177280 + .long 3207198603 + .long 4280579335 + .long 3175188313 + .long 3154116608 + .long 3207010211 + .long 3334926656 + .long 3174829419 + .long 2189426688 + .long 3206819769 + .long 3100885346 + .long 3175936751 + .long 746586112 + .long 3206631372 + .long 315615614 + .long 3173018851 + .long 4043309056 + .long 3206340535 + .long 274116456 + .long 3175970612 + .long 268435456 + .long 3205959634 + .long 691182319 + .long 3173304996 + .long 603979776 + .long 3205582822 + .long 112661265 + .long 3170010307 + .long 4194304000 + .long 3204915176 + .long 3717748378 + .long 3174284044 + .long 2885681152 + .long 3203858420 + .long 192153543 + .long 3175961815 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 2851812149 + .long 1072698941 + .long 2595802551 + .long 1016815913 + .long 1048019041 + .long 1072704666 + .long 1398474845 + .long 3161559171 + .long 3899555717 + .long 1072710421 + .long 427280750 + .long 3163595548 + .long 3541402996 + .long 1072716208 + .long 2759177317 + .long 1015903202 + .long 702412510 + .long 1072722027 + .long 3803266086 + .long 3163328991 + .long 410360776 + .long 1072727877 + .long 1269990655 + .long 1013024446 + .long 3402036099 + .long 1072733758 + .long 405889333 + .long 1016154232 + .long 1828292879 + .long 1072739672 + .long 1255956746 + .long 1016636974 + .long 728909815 + .long 1072745618 + .long 383930225 + .long 1016078044 + .long 852742562 + .long 1072751596 + .long 667253586 + .long 1010842135 + .long 2952712987 + .long 1072757606 + .long 3293494651 + .long 3161168877 + .long 3490863953 + .long 1072763649 + .long 960797497 + .long 3163997456 + .long 3228316108 + .long 1072769725 + .long 3010241991 + .long 3159471380 + .long 2930322912 + .long 1072775834 + .long 2599499422 + .long 3163762623 + .long 3366293073 + .long 1072781976 + .long 3119426313 + .long 1015169130 + .long 1014845819 + .long 1072788152 + .long 3117910645 + .long 3162607681 + .long 948735466 + .long 1072794361 + .long 3516338027 + .long 3163623459 + .long 3949972341 + .long 1072800603 + .long 2068408548 + .long 1015962444 + .long 2214878420 + .long 1072806880 + .long 892270087 + .long 3164164998 + .long 828946858 + .long 1072813191 + .long 10642492 + .long 1016988014 + .long 586995997 + .long 1072819536 + .long 41662347 + .long 3163676568 + .long 2288159958 + .long 1072825915 + .long 2169144468 + .long 1015924597 + .long 2440944790 + .long 1072832329 + .long 2492769773 + .long 1015196030 + .long 1853186616 + .long 1072838778 + .long 3066496370 + .long 1016705150 + .long 1337108031 + .long 1072845262 + .long 3203724452 + .long 1015726421 + .long 1709341917 + .long 1072851781 + .long 2571168217 + .long 1015201075 + .long 3790955393 + .long 1072858335 + .long 2352942461 + .long 3164228666 + .long 4112506593 + .long 1072864925 + .long 2947355221 + .long 1015419624 + .long 3504003472 + .long 1072871551 + .long 3594001059 + .long 3158379228 + .long 2799960843 + .long 1072878213 + .long 1423655380 + .long 1016070727 + .long 2839424854 + .long 1072884911 + .long 1171596163 + .long 1014090255 + .long 171030293 + .long 1072891646 + .long 3526460132 + .long 1015477354 + .long 4232894513 + .long 1072898416 + .long 2383938684 + .long 1015717095 + .long 2992903935 + .long 1072905224 + .long 2218154405 + .long 1016276769 + .long 1603444721 + .long 1072912069 + .long 1548633640 + .long 3163249902 + .long 926591435 + .long 1072918951 + .long 3208833761 + .long 3163962090 + .long 1829099622 + .long 1072925870 + .long 1016661180 + .long 3164509581 + .long 887463927 + .long 1072932827 + .long 3596744162 + .long 3161842742 + .long 3272845541 + .long 1072939821 + .long 928852419 + .long 3164536824 + .long 1276261410 + .long 1072946854 + .long 300981947 + .long 1015732745 + .long 78413852 + .long 1072953925 + .long 4183226867 + .long 3164065827 + .long 569847338 + .long 1072961034 + .long 472945272 + .long 3160339305 + .long 3645941911 + .long 1072968181 + .long 3814685080 + .long 3162621917 + .long 1617004845 + .long 1072975368 + .long 82804943 + .long 1011391354 + .long 3978100823 + .long 1072982593 + .long 3513027190 + .long 1016894539 + .long 3049340112 + .long 1072989858 + .long 3062915824 + .long 1014219171 + .long 4040676318 + .long 1072997162 + .long 4090609238 + .long 1016712034 + .long 3577096743 + .long 1073004506 + .long 2951496418 + .long 1014842263 + .long 2583551245 + .long 1073011890 + .long 3161094195 + .long 1016655067 + .long 1990012071 + .long 1073019314 + .long 3529070563 + .long 3163861769 + .long 2731501122 + .long 1073026778 + .long 1774031854 + .long 3163518597 + .long 1453150082 + .long 1073034283 + .long 498154668 + .long 3162536638 + .long 3395129871 + .long 1073041828 + .long 4025345434 + .long 3163383964 + .long 917841882 + .long 1073049415 + .long 18715564 + .long 1016707884 + .long 3566716925 + .long 1073057042 + .long 1536826855 + .long 1015191009 + .long 3712504873 + .long 1073064711 + .long 88491948 + .long 1016476236 + .long 2321106615 + .long 1073072422 + .long 2171176610 + .long 1010584347 + .long 363667784 + .long 1073080175 + .long 813753949 + .long 1016833785 + .long 3111574537 + .long 1073087969 + .long 2606161479 + .long 3163808322 + .long 2956612997 + .long 1073095806 + .long 2118169750 + .long 3163784129 + .long 885834528 + .long 1073103686 + .long 1973258546 + .long 3163310140 + .long 2186617381 + .long 1073111608 + .long 2270764083 + .long 3164321289 + .long 3561793907 + .long 1073119573 + .long 1157054052 + .long 1012938926 + .long 1719614413 + .long 1073127582 + .long 330458197 + .long 3164331316 + .long 1963711167 + .long 1073135634 + .long 1744767756 + .long 3161622870 + .long 1013258799 + .long 1073143730 + .long 1748797610 + .long 3161177658 + .long 4182873220 + .long 1073151869 + .long 629542646 + .long 3163044879 + .long 3907805044 + .long 1073160053 + .long 2257091225 + .long 3162598983 + .long 1218806132 + .long 1073168282 + .long 1818613051 + .long 3163597017 + .long 1447192521 + .long 1073176555 + .long 1462857171 + .long 3163563097 + .long 1339972927 + .long 1073184873 + .long 167908908 + .long 1016620728 + .long 1944781191 + .long 1073193236 + .long 3993278767 + .long 3162772855 + .long 19972402 + .long 1073201645 + .long 3507899861 + .long 1017057868 + .long 919555682 + .long 1073210099 + .long 3121969534 + .long 1013996802 + .long 1413356050 + .long 1073218599 + .long 1651349290 + .long 3163716742 + .long 2571947539 + .long 1073227145 + .long 3558159063 + .long 3164425245 + .long 1176749997 + .long 1073235738 + .long 2738998779 + .long 3163084420 + .long 2604962541 + .long 1073244377 + .long 2614425274 + .long 3164587768 + .long 3649726105 + .long 1073253063 + .long 4085036346 + .long 1016698050 + .long 1110089947 + .long 1073261797 + .long 1451641638 + .long 1016523249 + .long 380978316 + .long 1073270578 + .long 854188970 + .long 3161511262 + .long 2568320822 + .long 1073279406 + .long 2732824428 + .long 1015401491 + .long 194117574 + .long 1073288283 + .long 777528611 + .long 3164460665 + .long 2966275557 + .long 1073297207 + .long 2176155323 + .long 3160891335 + .long 3418903055 + .long 1073306180 + .long 2527457337 + .long 3161869180 + .long 2682146384 + .long 1073315202 + .long 2082178512 + .long 3164411995 + .long 1892288442 + .long 1073324273 + .long 2446255666 + .long 3163648957 + .long 2191782032 + .long 1073333393 + .long 2960257726 + .long 1014791238 + .long 434316067 + .long 1073342563 + .long 2028358766 + .long 1014506698 + .long 2069751141 + .long 1073351782 + .long 1562170674 + .long 3163773257 + .long 3964284211 + .long 1073361051 + .long 2111583915 + .long 1016475740 + .long 2990417245 + .long 1073370371 + .long 3683467745 + .long 3164417902 + .long 321958744 + .long 1073379742 + .long 3401933766 + .long 1016843134 + .long 1434058175 + .long 1073389163 + .long 251133233 + .long 1016134345 + .long 3218338682 + .long 1073398635 + .long 3404164304 + .long 3163525684 + .long 2572866477 + .long 1073408159 + .long 878562433 + .long 1016570317 + .long 697153126 + .long 1073417735 + .long 1283515428 + .long 3164331765 + .long 3092190715 + .long 1073427362 + .long 814012167 + .long 3160571998 + .long 2380618042 + .long 1073437042 + .long 3149557219 + .long 3164369375 + .long 4076559943 + .long 1073446774 + .long 2119478330 + .long 3161806927 + .long 815859274 + .long 1073456560 + .long 240396590 + .long 3164536019 + .long 2420883922 + .long 1073466398 + .long 2049810052 + .long 1015168464 + .long 1540824585 + .long 1073476290 + .long 1064017010 + .long 3164536266 + .long 3716502172 + .long 1073486235 + .long 2303740125 + .long 1015091301 + .long 1610600570 + .long 1073496235 + .long 3766732298 + .long 1016808759 + .long 777507147 + .long 1073506289 + .long 4282924204 + .long 1016236109 + .long 2483480501 + .long 1073516397 + .long 1216371780 + .long 1014082748 + .long 3706687593 + .long 1073526560 + .long 3521726939 + .long 1014301643 + .long 1432208378 + .long 1073536779 + .long 1401068914 + .long 3163412539 + .long 1242007932 + .long 1073547053 + .long 1132034716 + .long 3164388407 + .long 135105010 + .long 1073557383 + .long 1906148727 + .long 3164424315 + .long 3707479175 + .long 1073567768 + .long 3613079302 + .long 1015213314 + .long 382305176 + .long 1073578211 + .long 2347622376 + .long 3163627201 + .long 64696965 + .long 1073588710 + .long 1768797490 + .long 1016865536 + .long 4076975200 + .long 1073599265 + .long 2029000898 + .long 1016257111 + .long 863738719 + .long 1073609879 + .long 1326992219 + .long 3163661773 + .long 351641897 + .long 1073620550 + .long 2172261526 + .long 3164059175 + .long 3884662774 + .long 1073631278 + .long 2158611599 + .long 1015258761 + .long 4224142467 + .long 1073642065 + .long 3389820385 + .long 1016255778 + .long 2728693978 + .long 1073652911 + .long 396109971 + .long 3164511267 + .long 764307441 + .long 1073663816 + .long 3021057420 + .long 3164378099 + .long 3999357479 + .long 1073674779 + .long 2258941616 + .long 1016973300 + .long 929806999 + .long 1073685803 + .long 3205336643 + .long 1016308133 + .long 1533953344 + .long 1073696886 + .long 769171850 + .long 1016714209 + .long 2912730644 + .long 1073708029 + .long 3490067721 + .long 3164453650 + .long 2174652632 + .long 1073719233 + .long 4087714590 + .long 1015498835 + .long 730821105 + .long 1073730498 + .long 2523232743 + .long 1013115764 + .long 2523158504 + .long 1048167334 + .long 1181303047 + .long 3218484803 + .long 1656151777 + .long 1069842388 + .long 714085080 + .long 3216330823 + .long 4277811695 + .long 1072049730 + .long 4286760335 + .long 1070514109 + .long 3607404736 + .long 1068264200 + .long 1874480759 + .long 1065595563 + .long 3884607281 + .long 1062590591 + .long 0 + .long 2145386496 + .long 0 + .long 1048576 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 3220176896 + .long 0 + .long 1120403456 + .long 1073741824 + .long 1073157447 + .long 33554432 + .long 1101004800 + .long 0 + .long 1282408448 + .long 0 + .long 862978048 + .type __dpow_la_CoutTab,@object + .size __dpow_la_CoutTab,6880 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_pow_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_pow_s_la.s new file mode 100644 index 00000000..743321c8 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_pow_s_la.s @@ -0,0 +1,2012 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * * Typical computation sequences for log2() and exp2(), + * * with smaller tables (32- and 16-element tables) + * * The log2() part uses VGETEXP/VGETMANT (which treat denormals correctly), + * * similar to DP ln() algorithm + * * Branches are not needed for overflow/underflow: + * * - RZ mode used to prevent overflow to +/-Inf in intermediate computations + * * - final VSCALEF properly handles overflow and underflow cases + * * Callout is still used for Inf/NaNs or x<=0 + * * + * + */ + + + .text +.L_2__routine_start___svml_powf16_z0_0: + + .align 16,0x90 + .globl __svml_powf16 + +__svml_powf16: + + + .cfi_startproc +..L2: + + 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 + +/* GetMant(x), normalized to [0.5,1) for x>=0, NaN for x<0 */ + vgetmantps $10, {sae}, %zmm0, %zmm4 + vmovups 384+__svml_spow_data_internal_avx512(%rip), %zmm9 + vmovups 448+__svml_spow_data_internal_avx512(%rip), %zmm11 + vmovups 512+__svml_spow_data_internal_avx512(%rip), %zmm12 + vmovups 320+__svml_spow_data_internal_avx512(%rip), %zmm8 + vmovups 576+__svml_spow_data_internal_avx512(%rip), %zmm15 + +/* GetExp(x) */ + vgetexpps {sae}, %zmm0, %zmm14 + +/* Table lookup */ + vmovups __svml_spow_data_internal_avx512(%rip), %zmm13 + vmovups 128+__svml_spow_data_internal_avx512(%rip), %zmm3 + +/* SglRcp ~ 1/Mantissa */ + vrcp14ps %zmm4, %zmm6 + +/* x<=0 or Inf/NaN? */ + vfpclassps $223, %zmm0, %k0 + +/* round SglRcp to 5 fractional bits (RN mode, no Precision exception) */ + vrndscaleps $88, {sae}, %zmm6, %zmm7 + vmovups 704+__svml_spow_data_internal_avx512(%rip), %zmm6 + kmovw %k0, %edx + +/* Reduced argument: R = (SglRcp*Mantissa - 1) */ + vfmsub213ps {rn-sae}, %zmm9, %zmm7, %zmm4 + +/* Prepare exponent correction: SglRcp<1.5? */ + vcmpps $17, {sae}, %zmm8, %zmm7, %k1 + +/* start polynomial evaluation */ + vfmadd231ps {rn-sae}, %zmm4, %zmm11, %zmm12 + +/* Prepare table index */ + vpsrld $18, %zmm7, %zmm10 + vmovups 768+__svml_spow_data_internal_avx512(%rip), %zmm7 + vfmadd231ps {rn-sae}, %zmm4, %zmm12, %zmm15 + +/* add 1 to Expon if SglRcp<1.5 */ + vaddps {rn-sae}, %zmm9, %zmm14, %zmm14{%k1} + vpermt2ps 64+__svml_spow_data_internal_avx512(%rip), %zmm10, %zmm13 + vpermt2ps 192+__svml_spow_data_internal_avx512(%rip), %zmm10, %zmm3 + +/* Th+Expon */ + vaddps {rn-sae}, %zmm14, %zmm13, %zmm2 + vmovaps %zmm1, %zmm5 + vmovups 640+__svml_spow_data_internal_avx512(%rip), %zmm1 + +/* y Inf/NaN? */ + vfpclassps $153, %zmm5, %k2 + vfmadd231ps {rn-sae}, %zmm4, %zmm15, %zmm1 + kmovw %k2, %eax + +/* Poly_low */ + vfmadd231ps {rn-sae}, %zmm4, %zmm1, %zmm6 + +/* Th+Expon+R*c1h */ + vmovaps %zmm2, %zmm9 + orl %eax, %edx + vfmadd231ps {rn-sae}, %zmm4, %zmm7, %zmm9 + +/* Tl + R*Poly_low */ + vfmadd231ps {rn-sae}, %zmm4, %zmm6, %zmm3 + vmovups 960+__svml_spow_data_internal_avx512(%rip), %zmm6 + +/* (R*c1h)_high */ + vsubps {rn-sae}, %zmm2, %zmm9, %zmm8 + +/* High1 + Tl */ + vaddps {rn-sae}, %zmm3, %zmm9, %zmm11 + +/* (R*c1h)_low */ + vfmsub213ps {rn-sae}, %zmm8, %zmm7, %zmm4 + vmovups 1088+__svml_spow_data_internal_avx512(%rip), %zmm7 + +/* y*High */ + vmulps {rz-sae}, %zmm5, %zmm11, %zmm12 + +/* Tlh */ + vsubps {rn-sae}, %zmm9, %zmm11, %zmm10 + +/* (y*High)_low */ + vfmsub213ps {rz-sae}, %zmm12, %zmm5, %zmm11 + +/* Tll */ + vsubps {rn-sae}, %zmm10, %zmm3, %zmm3 + +/* Tll + (R*c1h)_low */ + vaddps {rn-sae}, %zmm4, %zmm3, %zmm13 + vmovups 832+__svml_spow_data_internal_avx512(%rip), %zmm4 + +/* Zl = y*Tll + Zl */ + vfmadd213ps {rz-sae}, %zmm11, %zmm5, %zmm13 + +/* + * scaled result + * Filter very large |y*log2(x)| and scale final result for LRB2 + */ + vmovups 1408+__svml_spow_data_internal_avx512(%rip), %zmm11 + vaddps {rz-sae}, %zmm13, %zmm12, %zmm2 + vsubps {rn-sae}, %zmm12, %zmm2, %zmm14 + vaddps {rd-sae}, %zmm4, %zmm2, %zmm1 + +/* + * / + * exp2 computation starts here + */ + vreduceps $65, {sae}, %zmm2, %zmm15 + vmovups 1024+__svml_spow_data_internal_avx512(%rip), %zmm12 + vsubps {rn-sae}, %zmm14, %zmm13, %zmm3 + +/* Table lookup: The, Tle/The */ + vpermps 256+__svml_spow_data_internal_avx512(%rip), %zmm1, %zmm10 + vandps 1344+__svml_spow_data_internal_avx512(%rip), %zmm2, %zmm2 + vaddps {rn-sae}, %zmm3, %zmm15, %zmm4 + vpslld $19, %zmm1, %zmm1 + vcmpps $22, {sae}, %zmm11, %zmm2, %k3 + +/* ensure |R|<2 even for special cases */ + vandps 896+__svml_spow_data_internal_avx512(%rip), %zmm4, %zmm8 + vandps 1472+__svml_spow_data_internal_avx512(%rip), %zmm1, %zmm13 + kmovw %k3, %ecx + +/* R*The */ + vmulps {rn-sae}, %zmm8, %zmm10, %zmm9 + +/* polynomial */ + vfmadd231ps {rn-sae}, %zmm8, %zmm6, %zmm12 + vfmadd213ps {rn-sae}, %zmm7, %zmm8, %zmm12 + orl %ecx, %edx + +/* The + The*R*poly */ + vfmadd213ps {rn-sae}, %zmm10, %zmm9, %zmm12 + vmulps {rn-sae}, %zmm13, %zmm12, %zmm1 + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + vmovaps %zmm1, %zmm0 + 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 %zmm0, 64(%rsp) + vmovups %zmm5, 128(%rsp) + vmovups %zmm1, 192(%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, 0x28, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x38, 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, 0x30, 0xff, 0xff, 0xff, 0x22 + movl %edx, %r13d + .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x18, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x08, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 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 192(%rsp), %zmm1 + 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, 0x28, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x38, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x18, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x08, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22 + +.LBL_1_10: + + lea 64(%rsp,%r12,4), %rdi + lea 128(%rsp,%r12,4), %rsi + lea 192(%rsp,%r12,4), %rdx + + call __svml_spow_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_powf16,@function + .size __svml_powf16,.-__svml_powf16 +..LN__svml_powf16.0: + +.L_2__routine_start___spow_la_TestIntFunc_1: + + .align 16,0x90 + +__spow_la_TestIntFunc: + + + .cfi_startproc +..L53: + + movd %xmm0, %edx + andl $2147483647, %edx + lea -1065353216(%rdx), %eax + cmpl $1073741824, %eax + jae .LBL_2_5 + + + cmpl $1266679808, %edx + jge .LBL_2_7 + + + movl %edx, %ecx + andl $-8388608, %ecx + addl $8388608, %ecx + shrl $23, %ecx + shll %cl, %edx + testl $8388607, %edx + jne .LBL_2_5 + + + andl $16777215, %edx + xorl %eax, %eax + cmpl $8388608, %edx + setne %al + incl %eax + ret + +.LBL_2_5: + + xorl %eax, %eax + ret + +.LBL_2_7: + + movl $2, %eax + ret + .align 16,0x90 + + .cfi_endproc + + .type __spow_la_TestIntFunc,@function + .size __spow_la_TestIntFunc,.-__spow_la_TestIntFunc +..LN__spow_la_TestIntFunc.1: + +.L_2__routine_start___svml_spow_cout_rare_internal_2: + + .align 16,0x90 + +__svml_spow_cout_rare_internal: + + + .cfi_startproc +..L56: + + pushq %r12 + .cfi_def_cfa_offset 16 + .cfi_offset 12, -16 + pushq %r13 + .cfi_def_cfa_offset 24 + .cfi_offset 13, -24 + pushq %r14 + .cfi_def_cfa_offset 32 + .cfi_offset 14, -32 + pushq %r15 + .cfi_def_cfa_offset 40 + .cfi_offset 15, -40 + pushq %rbx + .cfi_def_cfa_offset 48 + .cfi_offset 3, -48 + pushq %rbp + .cfi_def_cfa_offset 56 + .cfi_offset 6, -56 + subq $88, %rsp + .cfi_def_cfa_offset 144 + movq %rdx, %r15 + movss (%rdi), %xmm4 + pxor %xmm1, %xmm1 + movss (%rsi), %xmm3 + movaps %xmm4, %xmm2 + movl $0, 64(%rsp) + movaps %xmm3, %xmm0 + ucomiss %xmm1, %xmm4 + jp .LBL_3_2 + je .LBL_3_3 + +.LBL_3_2: + + movss %xmm4, 8(%rsp) + jmp .LBL_3_4 + +.LBL_3_3: + + movaps %xmm4, %xmm2 + addss %xmm4, %xmm2 + movss %xmm2, 8(%rsp) + +.LBL_3_4: + + pxor %xmm1, %xmm1 + ucomiss %xmm1, %xmm3 + jp .LBL_3_5 + je .LBL_3_6 + +.LBL_3_5: + + movss %xmm3, 28(%rsp) + jmp .LBL_3_7 + +.LBL_3_6: + + movaps %xmm3, %xmm0 + addss %xmm3, %xmm0 + movss %xmm0, 28(%rsp) + +.LBL_3_7: + + movb 31(%rsp), %al + xorl %ebx, %ebx + andb $-128, %al + xorl %ebp, %ebp + shrb $7, %al + testl $8388607, 8(%rsp) + movzwl 30(%rsp), %r13d + sete %bl + andl $32640, %r13d + testl $8388607, 28(%rsp) + movzwl 10(%rsp), %r14d + movzbl 11(%rsp), %r12d + sete %bpl + andl $32640, %r14d + andl $128, %r12d + shrl $7, %r13d + shrl $7, %r14d + shrl $7, %r12d + movb %al, 72(%rsp) + cmpl $255, %r13d + je .LBL_3_59 + + + movl $1, 8(%rsp) + movss %xmm2, 32(%rsp) + movss %xmm0, 40(%rsp) + movss %xmm3, 48(%rsp) + movss %xmm4, 56(%rsp) + + call __spow_la_TestIntFunc + + + movss 56(%rsp), %xmm4 + movl %eax, %edx + movss 48(%rsp), %xmm3 + movss 40(%rsp), %xmm0 + movss 32(%rsp), %xmm2 + testl %r12d, %r12d + jne .LBL_3_10 + + + cmpl $127, %r14d + je .LBL_3_56 + +.LBL_3_10: + + testl %r13d, %r13d + jne .LBL_3_12 + +.LBL_3_11: + + testl %ebp, %ebp + jne .LBL_3_38 + +.LBL_3_12: + + cmpl $255, %r14d + je .LBL_3_14 + +.LBL_3_13: + + movl $1, %eax + jmp .LBL_3_15 + +.LBL_3_14: + + xorl %eax, %eax + +.LBL_3_15: + + orl %eax, %ebx + je .LBL_3_37 + + + orl 8(%rsp), %ebp + je .LBL_3_37 + + + pxor %xmm1, %xmm1 + ucomiss %xmm1, %xmm2 + jp .LBL_3_18 + je .LBL_3_53 + +.LBL_3_18: + + ucomiss .L_2il0floatpacket.121(%rip), %xmm2 + jp .LBL_3_19 + je .LBL_3_50 + +.LBL_3_19: + + testl %eax, %eax + je .LBL_3_30 + + + cmpl $0, 8(%rsp) + je .LBL_3_30 + + + pxor %xmm0, %xmm0 + comiss %xmm0, %xmm2 + ja .LBL_3_23 + + + testl %edx, %edx + je .LBL_3_29 + +.LBL_3_23: + + lea 1484+__spow_la_CoutTab(%rip), %rax + andl %r12d, %edx + movss %xmm2, 12(%rsp) + xorl %ecx, %ecx + andb $127, 15(%rsp) + movss (%rax,%rdx,4), %xmm12 + testl %r14d, %r14d + jne .LBL_3_25 + + + movss 12(%rsp), %xmm0 + movl $-64, %ecx + mulss .L_2il0floatpacket.122(%rip), %xmm0 + movss %xmm0, 12(%rsp) + jmp .LBL_3_26 + +.LBL_3_25: + + movss 12(%rsp), %xmm0 + +.LBL_3_26: + + movzwl 14(%rsp), %edi + lea __spow_la_CoutTab(%rip), %rsi + andl $32640, %edi + pxor %xmm1, %xmm1 + shrl $7, %edi + movl 12(%rsp), %edx + shll $23, %edi + andl $8388607, %edx + movss %xmm0, 16(%rsp) + orl %edx, %edi + movzwl 18(%rsp), %eax + addl $-1060634624, %edi + andl $-32641, %eax + addl $16256, %eax + movw %ax, 18(%rsp) + sarl $23, %edi + addl %ecx, %edi + movl 16(%rsp), %ecx + andl $7864320, %ecx + addl $524288, %ecx + cvtsi2ss %edi, %xmm1 + shrl $20, %ecx + movss (%rsi,%rcx,4), %xmm4 + addl %ecx, %ecx + movss 36(%rsi,%rcx,4), %xmm13 + movaps %xmm13, %xmm7 + movss 16(%rsp), %xmm0 + addss %xmm1, %xmm7 + movaps %xmm0, %xmm6 + mulss %xmm4, %xmm6 + movss %xmm7, 20(%rsp) + movss 20(%rsp), %xmm3 + movd %xmm6, %ebx + subss %xmm3, %xmm1 + andl $1966080, %ebx + addss %xmm1, %xmm13 + addl $131072, %ebx + shrl $18, %ebx + movss 108(%rsi,%rbx,4), %xmm11 + addl %ebx, %ebx + movss 144(%rsi,%rbx,4), %xmm5 + movss %xmm13, 24(%rsp) + movaps %xmm5, %xmm14 + movss 20(%rsp), %xmm1 + addss %xmm1, %xmm14 + mulss %xmm11, %xmm6 + mulss %xmm11, %xmm4 + movd %xmm6, %ebp + movss 24(%rsp), %xmm7 + movss %xmm14, 20(%rsp) + movss 20(%rsp), %xmm3 + andl $507904, %ebp + addl $16384, %ebp + subss %xmm3, %xmm1 + shrl $15, %ebp + addss %xmm1, %xmm5 + movss 216(%rsi,%rbp,4), %xmm15 + addl %ebp, %ebp + movss 284(%rsi,%rbp,4), %xmm2 + movss %xmm5, 24(%rsp) + movaps %xmm2, %xmm13 + movss 20(%rsp), %xmm1 + movss 24(%rsp), %xmm5 + addss %xmm1, %xmm13 + mulss %xmm15, %xmm4 + movss %xmm13, 20(%rsp) + movss 20(%rsp), %xmm3 + movss .L_2il0floatpacket.124(%rip), %xmm11 + subss %xmm3, %xmm1 + addss %xmm1, %xmm2 + mulss %xmm15, %xmm6 + movaps %xmm11, %xmm15 + movaps %xmm6, %xmm3 + mulss %xmm0, %xmm15 + subss .L_2il0floatpacket.123(%rip), %xmm3 + movss %xmm2, 24(%rsp) + movss 20(%rsp), %xmm1 + movss 24(%rsp), %xmm2 + movss %xmm15, 20(%rsp) + movss 20(%rsp), %xmm13 + movss 40(%rsi,%rcx,4), %xmm9 + movss 148(%rsi,%rbx,4), %xmm8 + movss 288(%rsi,%rbp,4), %xmm10 + subss 16(%rsp), %xmm13 + movss %xmm13, 24(%rsp) + movss 20(%rsp), %xmm13 + movss 24(%rsp), %xmm14 + subss %xmm14, %xmm13 + movss %xmm13, 20(%rsp) + movss 20(%rsp), %xmm15 + subss %xmm15, %xmm0 + movss %xmm0, 24(%rsp) + movaps %xmm4, %xmm0 + mulss %xmm11, %xmm0 + movss 20(%rsp), %xmm13 + movss 24(%rsp), %xmm14 + movss %xmm0, 20(%rsp) + movss 20(%rsp), %xmm15 + subss %xmm4, %xmm15 + movss %xmm15, 24(%rsp) + movss 20(%rsp), %xmm15 + movss 24(%rsp), %xmm0 + subss %xmm0, %xmm15 + movss %xmm15, 20(%rsp) + movss 20(%rsp), %xmm0 + subss %xmm0, %xmm4 + movaps %xmm13, %xmm0 + movss %xmm4, 24(%rsp) + movss 20(%rsp), %xmm4 + mulss %xmm4, %xmm0 + mulss %xmm14, %xmm4 + subss %xmm6, %xmm0 + movaps %xmm3, %xmm6 + addss %xmm4, %xmm0 + addss %xmm1, %xmm6 + movss 24(%rsp), %xmm15 + movss %xmm6, 20(%rsp) + movss 20(%rsp), %xmm4 + mulss %xmm15, %xmm13 + subss %xmm4, %xmm1 + mulss %xmm15, %xmm14 + addss %xmm13, %xmm0 + addss %xmm3, %xmm1 + addss %xmm14, %xmm0 + movss %xmm1, 24(%rsp) + movss 20(%rsp), %xmm6 + movss %xmm6, 8(%rsp) + movzwl 10(%rsp), %eax + andl $32640, %eax + shrl $7, %eax + addl %r13d, %eax + movss 24(%rsp), %xmm4 + cmpl $265, %eax + jge .LBL_3_49 + + + cmpl $192, %eax + jg .LBL_3_40 + + + movl $1065353216, 20(%rsp) + movss 20(%rsp), %xmm0 + addss .L_2il0floatpacket.133(%rip), %xmm0 + movss %xmm0, 20(%rsp) + movss 20(%rsp), %xmm1 + mulss %xmm12, %xmm1 + movss %xmm1, (%r15) + jmp .LBL_3_39 + +.LBL_3_29: + + movl $1, 64(%rsp) + pxor %xmm0, %xmm0 + movss %xmm0, 20(%rsp) + movss 20(%rsp), %xmm2 + movss 20(%rsp), %xmm1 + divss %xmm1, %xmm2 + movss %xmm2, 20(%rsp) + movl 20(%rsp), %eax + movl %eax, (%r15) + jmp .LBL_3_39 + +.LBL_3_30: + + cmpl $127, %r14d + jge .LBL_3_34 + + + movb 72(%rsp), %al + testb %al, %al + je .LBL_3_33 + + + mulss %xmm0, %xmm0 + movss %xmm0, (%r15) + jmp .LBL_3_39 + +.LBL_3_33: + + pxor %xmm0, %xmm0 + movss %xmm0, (%r15) + jmp .LBL_3_39 + +.LBL_3_34: + + movb 72(%rsp), %al + testb %al, %al + je .LBL_3_36 + + + lea 1512+__spow_la_CoutTab(%rip), %rax + andl %r12d, %edx + movl (%rax,%rdx,4), %ecx + movl %ecx, 12(%rsp) + movl %ecx, (%r15) + jmp .LBL_3_39 + +.LBL_3_36: + + mulss %xmm2, %xmm2 + lea 1484+__spow_la_CoutTab(%rip), %rax + mulss %xmm0, %xmm2 + andl %r12d, %edx + mulss (%rax,%rdx,4), %xmm2 + movss %xmm2, (%r15) + jmp .LBL_3_39 + +.LBL_3_37: + + addss %xmm3, %xmm4 + movss %xmm4, (%r15) + jmp .LBL_3_39 + +.LBL_3_38: + + addss %xmm0, %xmm2 + movss %xmm2, 20(%rsp) + movl $1065353216, 24(%rsp) + movb 23(%rsp), %al + movb 27(%rsp), %dl + andb $-128, %al + andb $127, %dl + orb %al, %dl + movb %dl, 27(%rsp) + movss 24(%rsp), %xmm1 + movss 24(%rsp), %xmm0 + mulss %xmm0, %xmm1 + movss %xmm1, (%r15) + +.LBL_3_39: + + movl 64(%rsp), %eax + addq $88, %rsp + .cfi_def_cfa_offset 56 + .cfi_restore 6 + popq %rbp + .cfi_def_cfa_offset 48 + .cfi_restore 3 + popq %rbx + .cfi_def_cfa_offset 40 + .cfi_restore 15 + popq %r15 + .cfi_def_cfa_offset 32 + .cfi_restore 14 + popq %r14 + .cfi_def_cfa_offset 24 + .cfi_restore 13 + popq %r13 + .cfi_def_cfa_offset 16 + .cfi_restore 12 + popq %r12 + .cfi_def_cfa_offset 8 + ret + .cfi_def_cfa_offset 144 + .cfi_offset 3, -48 + .cfi_offset 6, -56 + .cfi_offset 12, -16 + .cfi_offset 13, -24 + .cfi_offset 14, -32 + .cfi_offset 15, -40 + +.LBL_3_40: + + movss .L_2il0floatpacket.128(%rip), %xmm1 + lea 424+__spow_la_CoutTab(%rip), %rdx + addss %xmm0, %xmm3 + addss %xmm5, %xmm7 + addss %xmm4, %xmm0 + mulss %xmm3, %xmm1 + addss %xmm7, %xmm2 + addss .L_2il0floatpacket.127(%rip), %xmm1 + addss %xmm2, %xmm9 + mulss %xmm3, %xmm1 + addss %xmm9, %xmm8 + addss .L_2il0floatpacket.126(%rip), %xmm1 + addss %xmm8, %xmm10 + mulss %xmm3, %xmm1 + addss %xmm0, %xmm10 + addss .L_2il0floatpacket.125(%rip), %xmm1 + mulss %xmm3, %xmm1 + movaps %xmm10, %xmm5 + movss 8(%rsp), %xmm4 + movaps %xmm11, %xmm8 + addss %xmm1, %xmm6 + lea 20(%rsp), %rax + movss %xmm6, (%rax) + movss (%rax), %xmm0 + subss %xmm0, %xmm4 + movaps %xmm11, %xmm0 + addss %xmm1, %xmm4 + lea 24(%rsp), %rcx + movss %xmm4, (%rcx) + movss (%rax), %xmm7 + movss (%rcx), %xmm3 + addss %xmm7, %xmm5 + movss %xmm5, (%rax) + movss (%rax), %xmm6 + subss %xmm6, %xmm7 + addss %xmm10, %xmm7 + movss %xmm7, (%rcx) + movss (%rax), %xmm10 + mulss %xmm10, %xmm8 + movss (%rcx), %xmm2 + movss %xmm8, (%rax) + addss %xmm3, %xmm2 + movss (%rax), %xmm9 + lea 28(%rsp), %rbx + movss (%rbx), %xmm7 + subss %xmm10, %xmm9 + mulss %xmm7, %xmm0 + mulss (%rbx), %xmm2 + movss %xmm9, (%rcx) + movss (%rax), %xmm14 + movss (%rcx), %xmm13 + movss .L_2il0floatpacket.129(%rip), %xmm9 + subss %xmm13, %xmm14 + movss %xmm14, (%rax) + movss (%rax), %xmm15 + subss %xmm15, %xmm10 + movss %xmm10, (%rcx) + movss (%rax), %xmm8 + movss (%rcx), %xmm10 + movss %xmm0, (%rax) + movss (%rax), %xmm1 + subss (%rbx), %xmm1 + movss %xmm1, (%rcx) + movss (%rax), %xmm5 + movss (%rcx), %xmm4 + subss %xmm4, %xmm5 + movss %xmm5, (%rax) + movss (%rax), %xmm6 + subss %xmm6, %xmm7 + movss %xmm7, (%rcx) + movss (%rax), %xmm1 + movss (%rcx), %xmm15 + movaps %xmm1, %xmm0 + mulss %xmm8, %xmm0 + mulss %xmm10, %xmm1 + mulss %xmm15, %xmm8 + mulss %xmm15, %xmm10 + addss %xmm8, %xmm1 + movaps %xmm0, %xmm8 + addss %xmm1, %xmm8 + movaps %xmm8, %xmm3 + subss %xmm8, %xmm0 + addss %xmm9, %xmm3 + addss %xmm0, %xmm1 + movss %xmm3, (%rax) + movaps %xmm8, %xmm3 + movss (%rax), %xmm13 + addss %xmm1, %xmm10 + subss %xmm9, %xmm13 + addss %xmm2, %xmm10 + movss %xmm13, (%rsp) + movss (%rsp), %xmm14 + movss .L_2il0floatpacket.132(%rip), %xmm2 + subss %xmm14, %xmm3 + movss %xmm3, 4(%rsp) + movss 4(%rsp), %xmm4 + movl (%rax), %eax + movl %eax, %ebx + andl $127, %eax + addss %xmm10, %xmm4 + mulss %xmm4, %xmm2 + addl %eax, %eax + movss -4(%rdx,%rax,4), %xmm1 + shll $10, %ebx + addss .L_2il0floatpacket.131(%rip), %xmm2 + mulss %xmm4, %xmm2 + sarl $17, %ebx + addss .L_2il0floatpacket.130(%rip), %xmm2 + mulss %xmm4, %xmm2 + mulss %xmm1, %xmm2 + addss (%rdx,%rax,4), %xmm2 + movaps %xmm2, %xmm5 + addss %xmm1, %xmm5 + movss %xmm5, 12(%rsp) + movzwl 14(%rsp), %edx + movl %edx, %ecx + andl $32640, %ecx + shrl $7, %ecx + lea -127(%rbx,%rcx), %eax + cmpl $128, %eax + jge .LBL_3_48 + + + cmpl $-126, %eax + jl .LBL_3_43 + + + andl $-32641, %edx + lea 127(%rax), %eax + movzbl %al, %eax + shll $7, %eax + orl %eax, %edx + movw %dx, 14(%rsp) + movss 12(%rsp), %xmm0 + mulss %xmm12, %xmm0 + movss %xmm0, 12(%rsp) + movss %xmm0, (%r15) + jmp .LBL_3_39 + +.LBL_3_43: + + cmpl $-136, %eax + jl .LBL_3_45 + + + lea 20(%rsp), %rdx + movss %xmm5, (%rdx) + movl $1065353216, %eax + movss (%rdx), %xmm0 + addl $191, %ebx + movl %eax, 8(%rsp) + subss %xmm0, %xmm1 + shrl $16, %eax + addss %xmm1, %xmm2 + movss %xmm2, 24(%rsp) + movss (%rdx), %xmm5 + mulss %xmm5, %xmm11 + movss 24(%rsp), %xmm6 + movss %xmm11, (%rdx) + movss (%rdx), %xmm1 + movzwl %ax, %edx + subss %xmm5, %xmm1 + lea 24(%rsp), %rax + movss %xmm1, (%rax) + andl $-32641, %edx + lea 20(%rsp), %rcx + movss (%rcx), %xmm3 + movss (%rax), %xmm2 + movzbl %bl, %ebx + subss %xmm2, %xmm3 + movss %xmm3, (%rcx) + movss (%rcx), %xmm4 + shll $7, %ebx + subss %xmm4, %xmm5 + movss %xmm5, (%rax) + orl %ebx, %edx + movss (%rcx), %xmm8 + movss (%rax), %xmm14 + movw %dx, 10(%rsp) + addss %xmm6, %xmm14 + movss 8(%rsp), %xmm7 + mulss %xmm7, %xmm14 + mulss %xmm7, %xmm8 + lea 20(%rsp), %rdx + movl $8388608, (%rdx) + addss %xmm8, %xmm14 + movss (%rdx), %xmm10 + movss (%rdx), %xmm9 + mulss %xmm9, %xmm10 + mulss .L_2il0floatpacket.135(%rip), %xmm14 + movss %xmm10, (%rdx) + movss (%rdx), %xmm13 + addss %xmm13, %xmm14 + mulss %xmm14, %xmm12 + movss %xmm14, 12(%rsp) + movss %xmm12, (%r15) + jmp .LBL_3_39 + +.LBL_3_45: + + cmpl $-159, %eax + jl .LBL_3_47 + + + movl $1065353216, %eax + addl $191, %ebx + movl %eax, 8(%rsp) + shrl $16, %eax + movzwl %ax, %edx + movzbl %bl, %ebx + andl $-32641, %edx + shll $7, %ebx + orl %ebx, %edx + movw %dx, 10(%rsp) + movss 8(%rsp), %xmm0 + movss .L_2il0floatpacket.135(%rip), %xmm1 + mulss %xmm0, %xmm5 + mulss %xmm1, %xmm12 + lea 20(%rsp), %rdx + movl $8388608, (%rdx) + movss (%rdx), %xmm3 + movss (%rdx), %xmm2 + mulss %xmm2, %xmm3 + mulss %xmm12, %xmm5 + movss %xmm3, (%rdx) + movss (%rdx), %xmm4 + subss %xmm4, %xmm5 + movss %xmm5, 12(%rsp) + movss %xmm5, (%r15) + jmp .LBL_3_39 + +.LBL_3_47: + + lea 20(%rsp), %rax + movl $8388608, (%rax) + movss (%rax), %xmm1 + movss (%rax), %xmm0 + mulss %xmm0, %xmm1 + movss %xmm1, (%rax) + movss (%rax), %xmm2 + mulss %xmm2, %xmm12 + movss %xmm12, 12(%rsp) + movss %xmm12, (%r15) + jmp .LBL_3_39 + +.LBL_3_48: + + lea 20(%rsp), %rax + movl $2130706432, (%rax) + movss (%rax), %xmm1 + movss (%rax), %xmm0 + mulss %xmm0, %xmm1 + movss %xmm1, (%rax) + movss (%rax), %xmm2 + mulss %xmm2, %xmm12 + movss %xmm12, 12(%rsp) + movss %xmm12, (%r15) + jmp .LBL_3_39 + +.LBL_3_49: + + movb 11(%rsp), %al + lea 1472+__spow_la_CoutTab(%rip), %rcx + andb $-128, %al + movb 72(%rsp), %dl + shrb $7, %al + xorb %al, %dl + movzbl %dl, %ebx + movss (%rcx,%rbx,4), %xmm0 + mulss %xmm0, %xmm0 + mulss %xmm12, %xmm0 + movss %xmm0, (%r15) + jmp .LBL_3_39 + +.LBL_3_50: + + testl %edx, %edx + jne .LBL_3_52 + + + cmpl $0, 8(%rsp) + jne .LBL_3_19 + +.LBL_3_52: + + lea 1484+__spow_la_CoutTab(%rip), %rax + andl $1, %edx + movl (%rax,%rdx,4), %ecx + movl %ecx, (%r15) + jmp .LBL_3_39 + +.LBL_3_53: + + movb 72(%rsp), %al + mulss %xmm2, %xmm2 + testb %al, %al + je .LBL_3_55 + + + lea 1484+__spow_la_CoutTab(%rip), %rax + andl %r12d, %edx + movl $1, 64(%rsp) + movss (%rax,%rdx,4), %xmm0 + divss %xmm2, %xmm0 + movss %xmm0, (%r15) + jmp .LBL_3_39 + +.LBL_3_55: + + lea 1484+__spow_la_CoutTab(%rip), %rax + andl %r12d, %edx + movss (%rax,%rdx,4), %xmm0 + mulss %xmm2, %xmm0 + movss %xmm0, (%r15) + jmp .LBL_3_39 + +.LBL_3_56: + + testl %ebx, %ebx + jne .LBL_3_38 + + + testl %r13d, %r13d + jne .LBL_3_13 + jmp .LBL_3_11 + +.LBL_3_59: + + movl $0, 8(%rsp) + movss %xmm2, 32(%rsp) + movss %xmm0, 40(%rsp) + movss %xmm3, 48(%rsp) + movss %xmm4, 56(%rsp) + + call __spow_la_TestIntFunc + + + movss 56(%rsp), %xmm4 + movl %eax, %edx + movss 48(%rsp), %xmm3 + movss 40(%rsp), %xmm0 + movss 32(%rsp), %xmm2 + testl %r12d, %r12d + jne .LBL_3_12 + + + cmpl $127, %r14d + jne .LBL_3_12 + + + testl %ebx, %ebx + je .LBL_3_13 + jmp .LBL_3_38 + .align 16,0x90 + + .cfi_endproc + + .type __svml_spow_cout_rare_internal,@function + .size __svml_spow_cout_rare_internal,.-__svml_spow_cout_rare_internal +..LN__svml_spow_cout_rare_internal.2: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_spow_data_internal_avx512: + .long 0 + .long 3174420480 + .long 3182632960 + .long 3187958784 + .long 3190685696 + .long 3193338880 + .long 3195920384 + .long 3197247488 + .long 3198473216 + .long 3199668736 + .long 3200835072 + .long 3201974272 + .long 3203086848 + .long 3204174848 + .long 3204843520 + .long 3205364224 + .long 1054113792 + .long 1053115392 + .long 1052137472 + .long 1051179008 + .long 1050238976 + .long 1049316864 + .long 1048248320 + .long 1046471680 + .long 1044726784 + .long 1043013632 + .long 1041329152 + .long 1039161344 + .long 1035907072 + .long 1032706048 + .long 1027317760 + .long 1018830848 + .long 0 + .long 3067311503 + .long 890262383 + .long 916311190 + .long 3058814943 + .long 914835756 + .long 3056977939 + .long 3052757441 + .long 905348701 + .long 921801496 + .long 900652061 + .long 916473404 + .long 3063873943 + .long 3048020321 + .long 3055557319 + .long 921573027 + .long 3050426335 + .long 918574590 + .long 913737309 + .long 3045697063 + .long 3029223305 + .long 866568163 + .long 3063765991 + .long 3057827840 + .long 910185982 + .long 3062847489 + .long 917965485 + .long 903301016 + .long 882039287 + .long 910858241 + .long 3059117133 + .long 3029061382 + .long 1065353216 + .long 1065724611 + .long 1066112450 + .long 1066517459 + .long 1066940400 + .long 1067382066 + .long 1067843287 + .long 1068324927 + .long 1068827891 + .long 1069353124 + .long 1069901610 + .long 1070474380 + .long 1071072509 + .long 1071697119 + .long 1072349383 + .long 1073030525 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .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 1049872133 + .long 1049872133 + .long 1049872133 + .long 1049872133 + .long 1049872133 + .long 1049872133 + .long 1049872133 + .long 1049872133 + .long 1049872133 + .long 1049872133 + .long 1049872133 + .long 1049872133 + .long 1049872133 + .long 1049872133 + .long 1049872133 + .long 1049872133 + .long 3199775725 + .long 3199775725 + .long 3199775725 + .long 3199775725 + .long 3199775725 + .long 3199775725 + .long 3199775725 + .long 3199775725 + .long 3199775725 + .long 3199775725 + .long 3199775725 + .long 3199775725 + .long 3199775725 + .long 3199775725 + .long 3199775725 + .long 3199775725 + .long 1056323663 + .long 1056323663 + .long 1056323663 + .long 1056323663 + .long 1056323663 + .long 1056323663 + .long 1056323663 + .long 1056323663 + .long 1056323663 + .long 1056323663 + .long 1056323663 + .long 1056323663 + .long 1056323663 + .long 1056323663 + .long 1056323663 + .long 1056323663 + .long 3208161851 + .long 3208161851 + .long 3208161851 + .long 3208161851 + .long 3208161851 + .long 3208161851 + .long 3208161851 + .long 3208161851 + .long 3208161851 + .long 3208161851 + .long 3208161851 + .long 3208161851 + .long 3208161851 + .long 3208161851 + .long 3208161851 + .long 3208161851 + .long 849703116 + .long 849703116 + .long 849703116 + .long 849703116 + .long 849703116 + .long 849703116 + .long 849703116 + .long 849703116 + .long 849703116 + .long 849703116 + .long 849703116 + .long 849703116 + .long 849703116 + .long 849703116 + .long 849703116 + .long 849703116 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1228933104 + .long 1228933104 + .long 1228933104 + .long 1228933104 + .long 1228933104 + .long 1228933104 + .long 1228933104 + .long 1228933104 + .long 1228933104 + .long 1228933104 + .long 1228933104 + .long 1228933104 + .long 1228933104 + .long 1228933104 + .long 1228933104 + .long 1228933104 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 3221225471 + .long 1030247627 + .long 1030247627 + .long 1030247627 + .long 1030247627 + .long 1030247627 + .long 1030247627 + .long 1030247627 + .long 1030247627 + .long 1030247627 + .long 1030247627 + .long 1030247627 + .long 1030247627 + .long 1030247627 + .long 1030247627 + .long 1030247627 + .long 1030247627 + .long 1047916908 + .long 1047916908 + .long 1047916908 + .long 1047916908 + .long 1047916908 + .long 1047916908 + .long 1047916908 + .long 1047916908 + .long 1047916908 + .long 1047916908 + .long 1047916908 + .long 1047916908 + .long 1047916908 + .long 1047916908 + .long 1047916908 + .long 1047916908 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 1060205090 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 124 + .long 60 + .long 60 + .long 60 + .long 60 + .long 60 + .long 60 + .long 60 + .long 60 + .long 60 + .long 60 + .long 60 + .long 60 + .long 60 + .long 60 + .long 60 + .long 60 + .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 1123745792 + .long 1123745792 + .long 1123745792 + .long 1123745792 + .long 1123745792 + .long 1123745792 + .long 1123745792 + .long 1123745792 + .long 1123745792 + .long 1123745792 + .long 1123745792 + .long 1123745792 + .long 1123745792 + .long 1123745792 + .long 1123745792 + .long 1123745792 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .type __svml_spow_data_internal_avx512,@object + .size __svml_spow_data_internal_avx512,1536 + .align 32 +__spow_la_CoutTab: + .long 1065353216 + .long 1063518208 + .long 1061945344 + .long 1060765696 + .long 1059717120 + .long 1058930688 + .long 1058144256 + .long 1057488896 + .long 1056964608 + .long 0 + .long 0 + .long 1043013120 + .long 912347133 + .long 1051178752 + .long 920491638 + .long 1055650560 + .long 910207939 + .long 3201407744 + .long 3065009147 + .long 3197864192 + .long 3046757530 + .long 3192020992 + .long 3064938684 + .long 3182631936 + .long 3069048210 + .long 0 + .long 0 + .long 1065353216 + .long 1064828928 + .long 1064304640 + .long 1066008576 + .long 1065877504 + .long 1065746432 + .long 1065615360 + .long 1065484288 + .long 1065353216 + .long 0 + .long 0 + .long 1027315712 + .long 915720665 + .long 1035907072 + .long 882039287 + .long 3185459200 + .long 3062137179 + .long 3182631936 + .long 3069048210 + .long 3179763712 + .long 3059908234 + .long 3174420480 + .long 3067311503 + .long 3166121984 + .long 3066774241 + .long 0 + .long 0 + .long 1069056000 + .long 1069006848 + .long 1068957696 + .long 1068908544 + .long 1068875776 + .long 1069318144 + .long 1069301760 + .long 1069268992 + .long 1069252608 + .long 1069219840 + .long 1069203456 + .long 1069170688 + .long 1069154304 + .long 1069121536 + .long 1069105152 + .long 1069072384 + .long 1069056000 + .long 0 + .long 0 + .long 1002471424 + .long 906080490 + .long 1010884608 + .long 916991201 + .long 1016135680 + .long 905081895 + .long 1018261504 + .long 918286540 + .long 3170725888 + .long 3067774196 + .long 3169697792 + .long 3068476631 + .long 3167637504 + .long 3069858259 + .long 3166609408 + .long 3020376912 + .long 3164540928 + .long 3039629966 + .long 3163504640 + .long 3043319364 + .long 3160350720 + .long 3046704089 + .long 3158269952 + .long 3047249178 + .long 3154083840 + .long 3046609959 + .long 3149905920 + .long 3045301896 + .long 3137339392 + .long 3034784887 + .long 0 + .long 0 + .long 1065353216 + .long 0 + .long 1065398766 + .long 3014665830 + .long 1065444562 + .long 2982428624 + .long 1065490608 + .long 3015478276 + .long 1065536902 + .long 865643564 + .long 1065583450 + .long 3014725705 + .long 1065630248 + .long 868461790 + .long 1065677302 + .long 858550072 + .long 1065724612 + .long 3013096376 + .long 1065772178 + .long 3013897664 + .long 1065820002 + .long 3008545510 + .long 1065868086 + .long 3011512679 + .long 1065916430 + .long 864064219 + .long 1065965038 + .long 819487640 + .long 1066013910 + .long 3012212369 + .long 1066063046 + .long 856316133 + .long 1066112450 + .long 2992679841 + .long 1066162122 + .long 3001970243 + .long 1066212064 + .long 3013902756 + .long 1066262276 + .long 847285146 + .long 1066312762 + .long 3010032741 + .long 1066363522 + .long 3018332471 + .long 1066414556 + .long 856041677 + .long 1066465868 + .long 864808677 + .long 1066517460 + .long 3012318446 + .long 1066569330 + .long 863709796 + .long 1066621484 + .long 3016813593 + .long 1066673920 + .long 3018872036 + .long 1066726640 + .long 3006136850 + .long 1066779646 + .long 864474828 + .long 1066832942 + .long 3016286184 + .long 1066886526 + .long 3015052933 + .long 1066940400 + .long 857938801 + .long 1066994568 + .long 2993474036 + .long 1067049030 + .long 3009003152 + .long 1067103786 + .long 872191232 + .long 1067158842 + .long 3003929955 + .long 1067214196 + .long 3013071165 + .long 1067269850 + .long 3006375425 + .long 1067325806 + .long 843377209 + .long 1067382066 + .long 859906882 + .long 1067438632 + .long 848662531 + .long 1067495506 + .long 3018868367 + .long 1067552686 + .long 868910405 + .long 1067610180 + .long 3019699127 + .long 1067667984 + .long 3013023741 + .long 1067726102 + .long 3005475891 + .long 1067784536 + .long 3010626242 + .long 1067843286 + .long 866758993 + .long 1067902356 + .long 869265128 + .long 1067961748 + .long 3004575030 + .long 1068021462 + .long 3018425550 + .long 1068081498 + .long 867494524 + .long 1068141862 + .long 858118433 + .long 1068202554 + .long 3004476802 + .long 1068263574 + .long 866434624 + .long 1068324926 + .long 870990497 + .long 1068386612 + .long 858100843 + .long 1068448632 + .long 867002634 + .long 1068510990 + .long 3000050815 + .long 1068573686 + .long 3011271336 + .long 1068636722 + .long 3006477262 + .long 1068700100 + .long 840255625 + .long 1068763822 + .long 866280780 + .long 1068827892 + .long 3016492578 + .long 1068892308 + .long 3006218836 + .long 1068957074 + .long 2993076596 + .long 1069022192 + .long 3000356208 + .long 1069087664 + .long 3015220484 + .long 1069153490 + .long 856315927 + .long 1069219674 + .long 867308350 + .long 1069286218 + .long 863888852 + .long 1069353124 + .long 3007401960 + .long 1069420392 + .long 832069785 + .long 1069488026 + .long 3004369690 + .long 1069556026 + .long 866250961 + .long 1069624396 + .long 868902513 + .long 1069693138 + .long 851736822 + .long 1069762252 + .long 869934231 + .long 1069831742 + .long 869028661 + .long 1069901610 + .long 839559223 + .long 1069971856 + .long 867543588 + .long 1070042484 + .long 868789178 + .long 1070113496 + .long 859381756 + .long 1070184894 + .long 3010667426 + .long 1070256678 + .long 859604257 + .long 1070328852 + .long 872346226 + .long 1070401420 + .long 3010682756 + .long 1070474380 + .long 841546788 + .long 1070547736 + .long 869210393 + .long 1070621492 + .long 2996061011 + .long 1070695648 + .long 3013455510 + .long 1070770206 + .long 3009158570 + .long 1070845168 + .long 865699227 + .long 1070920538 + .long 866897902 + .long 1070996318 + .long 2955948569 + .long 1071072508 + .long 868931229 + .long 1071149114 + .long 3014890061 + .long 1071226134 + .long 3002473793 + .long 1071303572 + .long 861820308 + .long 1071381432 + .long 3008383516 + .long 1071459714 + .long 3010850715 + .long 1071538420 + .long 864181775 + .long 1071617554 + .long 870234352 + .long 1071697118 + .long 871115413 + .long 1071777114 + .long 872414852 + .long 1071857546 + .long 3012378998 + .long 1071938412 + .long 866137918 + .long 1072019718 + .long 870808707 + .long 1072101466 + .long 866840096 + .long 1072183658 + .long 857766040 + .long 1072266296 + .long 855693471 + .long 1072349382 + .long 870833444 + .long 1072432920 + .long 867585053 + .long 1072516912 + .long 846646433 + .long 1072601360 + .long 3008357562 + .long 1072686266 + .long 3007858250 + .long 1072771632 + .long 866626825 + .long 1072857464 + .long 3015943680 + .long 1072943760 + .long 2995197552 + .long 1073030526 + .long 3018513273 + .long 1073117762 + .long 3012791488 + .long 1073205472 + .long 3012359471 + .long 1073293658 + .long 3003728983 + .long 1073382322 + .long 870019626 + .long 1073471470 + .long 3012762127 + .long 1073561100 + .long 835668076 + .long 1073651218 + .long 3013837936 + .long 980050793 + .long 3199320925 + .long 1042575209 + .long 3182108321 + .long 1060205080 + .long 1047920112 + .long 1029920839 + .long 2130706432 + .long 8388608 + .long 0 + .long 1065353216 + .long 3212836864 + .long 1203765248 + .long 1069056000 + .long 1166018560 + .long 1602224128 + .long 528482304 + .long 0 + .long 2147483648 + .type __spow_la_CoutTab,@object + .size __spow_la_CoutTab,1520 + .align 4 +.L_2il0floatpacket.121: + .long 0xbf800000 + .type .L_2il0floatpacket.121,@object + .size .L_2il0floatpacket.121,4 + .align 4 +.L_2il0floatpacket.122: + .long 0x5f800000 + .type .L_2il0floatpacket.122,@object + .size .L_2il0floatpacket.122,4 + .align 4 +.L_2il0floatpacket.123: + .long 0x3fb88000 + .type .L_2il0floatpacket.123,@object + .size .L_2il0floatpacket.123,4 + .align 4 +.L_2il0floatpacket.124: + .long 0x45800800 + .type .L_2il0floatpacket.124,@object + .size .L_2il0floatpacket.124,4 + .align 4 +.L_2il0floatpacket.125: + .long 0x3a6a6369 + .type .L_2il0floatpacket.125,@object + .size .L_2il0floatpacket.125,4 + .align 4 +.L_2il0floatpacket.126: + .long 0xbeb1c35d + .type .L_2il0floatpacket.126,@object + .size .L_2il0floatpacket.126,4 + .align 4 +.L_2il0floatpacket.127: + .long 0x3e246f69 + .type .L_2il0floatpacket.127,@object + .size .L_2il0floatpacket.127,4 + .align 4 +.L_2il0floatpacket.128: + .long 0xbdab1ea1 + .type .L_2il0floatpacket.128,@object + .size .L_2il0floatpacket.128,4 + .align 4 +.L_2il0floatpacket.129: + .long 0x47c00000 + .type .L_2il0floatpacket.129,@object + .size .L_2il0floatpacket.129,4 + .align 4 +.L_2il0floatpacket.130: + .long 0x3f317218 + .type .L_2il0floatpacket.130,@object + .size .L_2il0floatpacket.130,4 + .align 4 +.L_2il0floatpacket.131: + .long 0x3e75fdf0 + .type .L_2il0floatpacket.131,@object + .size .L_2il0floatpacket.131,4 + .align 4 +.L_2il0floatpacket.132: + .long 0x3d635847 + .type .L_2il0floatpacket.132,@object + .size .L_2il0floatpacket.132,4 + .align 4 +.L_2il0floatpacket.133: + .long 0x00800000 + .type .L_2il0floatpacket.133,@object + .size .L_2il0floatpacket.133,4 + .align 4 +.L_2il0floatpacket.134: + .long 0x7f000000 + .type .L_2il0floatpacket.134,@object + .size .L_2il0floatpacket.134,4 + .align 4 +.L_2il0floatpacket.135: + .long 0x1f800000 + .type .L_2il0floatpacket.135,@object + .size .L_2il0floatpacket.135,4 + .align 4 +.L_2il0floatpacket.136: + .long 0x3f800000 + .type .L_2il0floatpacket.136,@object + .size .L_2il0floatpacket.136,4 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_sin_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_sin_d_la.s new file mode 100644 index 00000000..fcd28895 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_sin_d_la.s @@ -0,0 +1,17544 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * + * ( low accuracy ( < 4ulp ) or enhanced performance ( half of correct mantissa ) implementation ) + * + * Argument representation: + * arg = N*Pi + R + * + * Result calculation: + * sin(arg) = sin(N*Pi + R) = (-1)^N * sin(R) + * sin(R) is approximated by corresponding polynomial + * + */ + + + .text +.L_2__routine_start___svml_sin8_z0_0: + + .align 16,0x90 + .globl __svml_sin8 + +__svml_sin8: + + + .cfi_startproc +..L2: + + 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 + xorl %edx, %edx + +/* start arg. reduction */ + vmovups 128+__svml_dsin_data_internal(%rip), %zmm3 + vmovups 192+__svml_dsin_data_internal(%rip), %zmm9 + vmovups 640+__svml_dsin_data_internal(%rip), %zmm7 + vmovups 704+__svml_dsin_data_internal(%rip), %zmm5 + vmovups 1216+__svml_dsin_data_internal(%rip), %zmm8 + vmovups 1088+__svml_dsin_data_internal(%rip), %zmm10 + vmovups 1024+__svml_dsin_data_internal(%rip), %zmm11 + vmovups 768+__svml_dsin_data_internal(%rip), %zmm6 + vmovups 960+__svml_dsin_data_internal(%rip), %zmm12 + vmovups 320+__svml_dsin_data_internal(%rip), %zmm4 + vmovups 896+__svml_dsin_data_internal(%rip), %zmm13 + vmovups 64+__svml_dsin_data_internal(%rip), %zmm14 + vmovaps %zmm0, %zmm2 + vfmadd213pd {rn-sae}, %zmm9, %zmm2, %zmm3 + vcmppd $0, {sae}, %zmm4, %zmm2, %k1 + vpsllq $63, %zmm3, %zmm0 + +/* dN */ + vsubpd {rn-sae}, %zmm9, %zmm3, %zmm1 + vandpd __svml_dsin_data_internal(%rip), %zmm2, %zmm9 + vxorpd %zmm2, %zmm0, %zmm0{%k1} + vfnmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm7 + vmovups 1152+__svml_dsin_data_internal(%rip), %zmm3 + vcmppd $22, {sae}, %zmm14, %zmm9, %k1 + vfnmadd231pd {rn-sae}, %zmm1, %zmm5, %zmm7 + +/* will branch if long arg. reduction needed */ + kortestw %k1, %k1 + vmulpd {rn-sae}, %zmm7, %zmm7, %zmm15 + vfnmadd213pd {rn-sae}, %zmm7, %zmm6, %zmm1 + vfmadd231pd {rn-sae}, %zmm15, %zmm8, %zmm3 + vmulpd {rn-sae}, %zmm1, %zmm15, %zmm8 + vfmadd213pd {rn-sae}, %zmm10, %zmm15, %zmm3 + vfmadd213pd {rn-sae}, %zmm11, %zmm15, %zmm3 + vfmadd213pd {rn-sae}, %zmm12, %zmm15, %zmm3 + vfmadd213pd {rn-sae}, %zmm13, %zmm15, %zmm3 + +/* mask will be used to decide whether long arg. reduction is needed */ + vmovups 832+__svml_dsin_data_internal(%rip), %zmm13 + vfmadd213pd {rn-sae}, %zmm13, %zmm15, %zmm3 + vfmadd213pd {rn-sae}, %zmm1, %zmm8, %zmm3 + vxorpd %zmm0, %zmm3, %zmm0 + jne .LBL_1_12 + +.LBL_1_2: + + testl %edx, %edx + jne .LBL_1_4 + +.LBL_1_3: + + +/* no invcbrt in libm, so taking it out here */ + 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_4: + + vmovups %zmm2, 64(%rsp) + vmovups %zmm0, 128(%rsp) + je .LBL_1_3 + + + 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_8: + + btl %r12d, %r13d + jc .LBL_1_11 + +.LBL_1_9: + + incl %r12d + cmpl $8, %r12d + jl .LBL_1_8 + + + 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_3 + .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_11: + + lea 64(%rsp,%r12,8), %rdi + lea 128(%rsp,%r12,8), %rsi + + call __svml_dsin_cout_rare_internal + jmp .LBL_1_9 + .cfi_restore 4 + .cfi_restore 5 + .cfi_restore 12 + .cfi_restore 13 + .cfi_restore 122 + .cfi_restore 123 + .cfi_restore 124 + .cfi_restore 125 + +.LBL_1_12: + + +/* ............Check for Inf and NaNs................. */ + vmovups 16512+__svml_dsin_data_internal_ha(%rip), %zmm1 + +/* + * Get the (2^a / 2pi) mod 1 values from the table. + * Because VLANG doesn't have L-type gather, we need a trivial cast + */ + lea __svml_dsin_reduction_data_internal(%rip), %rax + vmovups %zmm2, 64(%rsp) + vmovups %zmm0, (%rsp) + vandpd %zmm9, %zmm1, %zmm6 + vxorpd %zmm2, %zmm9, %zmm8 + vpbroadcastq .L_2il0floatpacket.26(%rip), %zmm11 + vcmppd $4, {sae}, %zmm1, %zmm6, %k2 + vmovups %zmm8, 128(%rsp) + vmovaps %zmm11, %zmm5 + +/* + * The output is _VRES_Z (high) + _VRES_E (low), and the integer part is _VRES_IND + * Now resume the original code. + * ..................... Table look-up ........................ + */ + lea __svml_dsin_data_internal_ha(%rip), %rcx + vpandq .L_2il0floatpacket.27(%rip){1to8}, %zmm9, %zmm4 + vpandnq %zmm6, %zmm6, %zmm5{%k2} + vpsrlq $52, %zmm4, %zmm3 + vcmppd $3, {sae}, %zmm5, %zmm5, %k0 + vpsllq $1, %zmm3, %zmm15 + +/* + * Break the P_xxx and m into 32-bit chunks ready for + * the long multiplication via 32x32->64 multiplications + */ + vpbroadcastq .L_2il0floatpacket.30(%rip), %zmm6 + kxnorw %k0, %k0, %k3 + kxnorw %k0, %k0, %k2 + kmovw %k0, %edx + vpaddq %zmm3, %zmm15, %zmm2 + vpsllq $3, %zmm2, %zmm14 + vpmovqd %zmm14, %ymm12 + vpxord %zmm1, %zmm1, %zmm1 + vgatherdpd (%rax,%ymm12), %zmm1{%k3} + kxnorw %k0, %k0, %k3 + vpsrlq $32, %zmm1, %zmm7 + vpxord %zmm5, %zmm5, %zmm5 + vpxord %zmm4, %zmm4, %zmm4 + vgatherdpd 8(%rax,%ymm12), %zmm5{%k2} + vgatherdpd 16(%rax,%ymm12), %zmm4{%k3} + vpsrlq $32, %zmm5, %zmm10 + vpsrlq $32, %zmm4, %zmm13 + +/* + * Also get the significand as an integer + * NB: adding in the integer bit is wrong for denorms! + * To make this work for denorms we should do something slightly different + */ + vpandq .L_2il0floatpacket.28(%rip){1to8}, %zmm9, %zmm8 + vpaddq .L_2il0floatpacket.29(%rip){1to8}, %zmm8, %zmm15 + vpsrlq $32, %zmm15, %zmm8 + vpmullq %zmm10, %zmm8, %zmm3 + vpandq %zmm6, %zmm1, %zmm0 + vpandq %zmm6, %zmm5, %zmm12 + vpandq %zmm6, %zmm4, %zmm5 + vpandq %zmm6, %zmm15, %zmm14 + +/* Now do the big multiplication and carry propagation */ + vpmullq %zmm0, %zmm8, %zmm4 + vpmullq %zmm12, %zmm8, %zmm2 + vpmullq %zmm13, %zmm8, %zmm1 + vpmullq %zmm5, %zmm8, %zmm8 + vpmullq %zmm0, %zmm14, %zmm5 + vpmullq %zmm12, %zmm14, %zmm0 + vpmullq %zmm13, %zmm14, %zmm13 + vpmullq %zmm7, %zmm14, %zmm7 + vpmullq %zmm10, %zmm14, %zmm10 + vpsrlq $32, %zmm13, %zmm14 + vpsrlq $32, %zmm0, %zmm13 + vpsrlq $32, %zmm5, %zmm12 + vpsrlq $32, %zmm10, %zmm15 + vpaddq %zmm14, %zmm1, %zmm1 + vpaddq %zmm13, %zmm2, %zmm14 + vpaddq %zmm12, %zmm4, %zmm2 + vpaddq %zmm15, %zmm3, %zmm13 + vpandq %zmm6, %zmm7, %zmm7 + vpaddq %zmm2, %zmm7, %zmm4 + vpsrlq $32, %zmm8, %zmm2 + vpandq %zmm6, %zmm0, %zmm0 + vpaddq %zmm1, %zmm0, %zmm1 + vpaddq %zmm1, %zmm2, %zmm15 + vpsrlq $32, %zmm15, %zmm8 + vpandq %zmm6, %zmm10, %zmm10 + vpaddq %zmm14, %zmm10, %zmm0 + vpaddq %zmm0, %zmm8, %zmm12 + +/* + * Now round at the 2^-9 bit position for reduction mod pi/2^8 + * instead of the original 2pi (but still with the same 2pi scaling). + * Use a shifter of 2^43 + 2^42. + * The N we get is our final version; it has an offset of + * 2^9 because of the implicit integer bit, and anyway for negative + * starting value it's a 2s complement thing. But we need to mask + * off the exponent part anyway so it's fine. + */ + vpbroadcastq .L_2il0floatpacket.33(%rip), %zmm0 + vpsrlq $32, %zmm12, %zmm7 + vpandq %zmm6, %zmm5, %zmm3 + vpaddq %zmm13, %zmm3, %zmm5 + vpaddq %zmm5, %zmm7, %zmm3 + vpsllq $32, %zmm12, %zmm7 + vpsrlq $32, %zmm3, %zmm10 + vpaddq %zmm4, %zmm10, %zmm2 + +/* Assemble reduced argument from the pieces */ + vpandq %zmm6, %zmm15, %zmm13 + vpandq %zmm6, %zmm3, %zmm8 + vpsllq $32, %zmm2, %zmm6 + vpaddq %zmm13, %zmm7, %zmm4 + +/* + * If the magnitude of the input is <= 2^-20, then + * just pass through the input, since no reduction will be needed and + * the main path will only work accurately if the reduced argument is + * about >= 2^-70 (which it is for all large pi multiples) + */ + vpbroadcastq .L_2il0floatpacket.42(%rip), %zmm13 + vpaddq %zmm8, %zmm6, %zmm15 + vpsrlq $12, %zmm15, %zmm1 + +/* + * We want to incorporate the original sign now too. + * Do it here for convenience in getting the right N value, + * though we could wait right to the end if we were prepared + * to modify the sign of N later too. + * So get the appropriate sign mask now (or sooner). + */ + vpandq .L_2il0floatpacket.31(%rip){1to8}, %zmm9, %zmm3 + +/* + * Create floating-point high part, implicitly adding integer bit 1 + * Incorporate overall sign at this stage too. + */ + vpxorq .L_2il0floatpacket.32(%rip){1to8}, %zmm3, %zmm6 + vporq %zmm6, %zmm1, %zmm5 + vaddpd {rn-sae}, %zmm5, %zmm0, %zmm2 + vsubpd {rn-sae}, %zmm0, %zmm2, %zmm10 + vsubpd {rn-sae}, %zmm10, %zmm5, %zmm10 + vpandq .L_2il0floatpacket.36(%rip){1to8}, %zmm4, %zmm12 + vpsllq $28, %zmm12, %zmm14 + vpsrlq $24, %zmm4, %zmm4 + vpandq .L_2il0floatpacket.38(%rip){1to8}, %zmm15, %zmm15 + +/* + * Create floating-point low and medium parts, respectively + * lo_23, ... lo_0, 0, ..., 0 + * hi_11, ... hi_0, lo_63, ..., lo_24 + * then subtract off the implicitly added integer bits, + * 2^-104 and 2^-52, respectively. + * Put the original sign into all of them at this stage. + */ + vpxorq .L_2il0floatpacket.35(%rip){1to8}, %zmm3, %zmm7 + vpxorq .L_2il0floatpacket.37(%rip){1to8}, %zmm3, %zmm1 + vpsllq $40, %zmm15, %zmm3 + vporq %zmm7, %zmm14, %zmm8 + vsubpd {rn-sae}, %zmm7, %zmm8, %zmm5 + vandpd .L_2il0floatpacket.41(%rip){1to8}, %zmm9, %zmm14 + vcmppd $22, {sae}, %zmm13, %zmm14, %k3 + vcmppd $26, {sae}, %zmm13, %zmm14, %k2 + vporq %zmm4, %zmm3, %zmm8 + vporq %zmm1, %zmm8, %zmm7 + vsubpd {rn-sae}, %zmm1, %zmm7, %zmm6 + +/* + * Now multiply those numbers all by 2 pi, reasonably accurately. + * (RHi + RLo) * (pi_lead + pi_trail) ~= + * RHi * pi_lead + (RHi * pi_trail + RLo * pi_lead) + */ + vpbroadcastq .L_2il0floatpacket.39(%rip), %zmm4 + +/* Now add them up into 2 reasonably aligned pieces */ + vaddpd {rn-sae}, %zmm6, %zmm10, %zmm12 + vmulpd {rn-sae}, %zmm4, %zmm12, %zmm15 + vsubpd {rn-sae}, %zmm12, %zmm10, %zmm10 + vmovaps %zmm4, %zmm3 + vfmsub213pd {rn-sae}, %zmm15, %zmm12, %zmm3 + vmovaps %zmm11, %zmm1 + +/* Grab our final N value as an integer, appropriately masked mod 2^9 */ + vpandq .L_2il0floatpacket.34(%rip){1to8}, %zmm2, %zmm0 + vaddpd {rn-sae}, %zmm10, %zmm6, %zmm2 + vaddpd {rn-sae}, %zmm5, %zmm2, %zmm6 + vpbroadcastq .L_2il0floatpacket.40(%rip), %zmm5 + vfmadd213pd {rn-sae}, %zmm3, %zmm5, %zmm12 + vfmadd213pd {rn-sae}, %zmm12, %zmm4, %zmm6 + vmovups 16960+__svml_dsin_data_internal_ha(%rip), %zmm4 + vpandnq %zmm14, %zmm14, %zmm11{%k3} + vandpd %zmm9, %zmm11, %zmm9 + vpsllq $5, %zmm0, %zmm11 + kxnorw %k0, %k0, %k3 + vpandnq %zmm14, %zmm14, %zmm1{%k2} + vandpd %zmm15, %zmm1, %zmm8 + vandpd %zmm6, %zmm1, %zmm1 + vpmovqd %zmm11, %ymm6 + vorpd %zmm8, %zmm9, %zmm7 + vmovups 17216+__svml_dsin_data_internal_ha(%rip), %zmm14 + vmovups 17088+__svml_dsin_data_internal_ha(%rip), %zmm15 + +/* ............... Polynomial approximation ................... */ + vmulpd {rn-sae}, %zmm7, %zmm7, %zmm9 + kxnorw %k0, %k0, %k2 + +/* ................. Reconstruction: res_hi ................... */ + vmovaps %zmm7, %zmm0 + vmovaps %zmm7, %zmm8 + vpxord %zmm10, %zmm10, %zmm10 + vgatherdpd (%rcx,%ymm6), %zmm10{%k2} + kxnorw %k0, %k0, %k2 + vpxord %zmm12, %zmm12, %zmm12 + vpxord %zmm11, %zmm11, %zmm11 + vgatherdpd 8(%rcx,%ymm6), %zmm12{%k3} + vgatherdpd 16(%rcx,%ymm6), %zmm11{%k2} + kxnorw %k0, %k0, %k3 + vfmadd213pd {rn-sae}, %zmm11, %zmm12, %zmm0 + vfmadd132pd {rn-sae}, %zmm10, %zmm0, %zmm8 + +/* ................. Reconstruction: res_lo ................... */ + vsubpd {rn-sae}, %zmm0, %zmm11, %zmm3 + vsubpd {rn-sae}, %zmm8, %zmm0, %zmm2 + vmovups 17024+__svml_dsin_data_internal_ha(%rip), %zmm0 + vfmadd231pd {rn-sae}, %zmm7, %zmm12, %zmm3 + vfmadd231pd {rn-sae}, %zmm10, %zmm7, %zmm2 + vfmadd231pd {rn-sae}, %zmm9, %zmm0, %zmm4 + vaddpd {rn-sae}, %zmm3, %zmm2, %zmm13 + vaddpd {rn-sae}, %zmm12, %zmm10, %zmm2 + vmulpd {rn-sae}, %zmm9, %zmm4, %zmm5 + vmulpd {rn-sae}, %zmm7, %zmm5, %zmm0 + +/* ................. Reconstruction: res_lo+corr ................... */ + vfnmadd213pd {rn-sae}, %zmm2, %zmm11, %zmm7 + vfmadd213pd {rn-sae}, %zmm13, %zmm2, %zmm0 + vmovups 17152+__svml_dsin_data_internal_ha(%rip), %zmm13 + vmovups 64(%rsp), %zmm2 + vfmadd231pd {rn-sae}, %zmm9, %zmm14, %zmm13 + vfmadd213pd {rn-sae}, %zmm15, %zmm9, %zmm13 + vmulpd {rn-sae}, %zmm9, %zmm13, %zmm3 + vfmadd213pd {rn-sae}, %zmm0, %zmm11, %zmm3 + vmovups (%rsp), %zmm0 + vpxord %zmm11, %zmm11, %zmm11 + vgatherdpd 24(%rcx,%ymm6), %zmm11{%k3} + vfmadd213pd {rn-sae}, %zmm11, %zmm7, %zmm1 + vaddpd {rn-sae}, %zmm1, %zmm3, %zmm7 + +/* .................. Final reconstruction ................... */ + vaddpd {rn-sae}, %zmm7, %zmm8, %zmm9 + vxorpd 128(%rsp), %zmm9, %zmm0{%k1} + jmp .LBL_1_2 + .align 16,0x90 + + .cfi_endproc + + .type __svml_sin8,@function + .size __svml_sin8,.-__svml_sin8 +..LN__svml_sin8.0: + +.L_2__routine_start___svml_dsin_cout_rare_internal_1: + + .align 16,0x90 + +__svml_dsin_cout_rare_internal: + + + .cfi_startproc +..L67: + + movzwl 6(%rdi), %eax + andl $32752, %eax + movsd (%rdi), %xmm1 + movb 7(%rdi), %dl + andb $127, %dl + movsd %xmm1, -8(%rsp) + cmpl $32752, %eax + jne .LBL_2_6 + + + cmpl $0, -8(%rsp) + jne .LBL_2_5 + + + movb %dl, -1(%rsp) + cmpl $2146435072, -4(%rsp) + jne .LBL_2_5 + + + movsd __dsin_la_CoutTab(%rip), %xmm0 + movl $1, %eax + mulsd %xmm0, %xmm1 + movsd %xmm1, (%rsi) + ret + +.LBL_2_5: + + mulsd %xmm1, %xmm1 + xorl %eax, %eax + movsd %xmm1, (%rsi) + ret + +.LBL_2_6: + + xorl %eax, %eax + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_dsin_cout_rare_internal,@function + .size __svml_dsin_cout_rare_internal,.-__svml_dsin_cout_rare_internal +..LN__svml_dsin_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_dsin_data_internal: + .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 1097859072 + .long 0 + .long 1097859072 + .long 0 + .long 1097859072 + .long 0 + .long 1097859072 + .long 0 + .long 1097859072 + .long 0 + .long 1097859072 + .long 0 + .long 1097859072 + .long 0 + .long 1097859072 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 1841940611 + .long 1070882608 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 1073741824 + .long 1074340347 + .long 1073741824 + .long 1074340347 + .long 1073741824 + .long 1074340347 + .long 1073741824 + .long 1074340347 + .long 1073741824 + .long 1074340347 + .long 1073741824 + .long 1074340347 + .long 1073741824 + .long 1074340347 + .long 1073741824 + .long 1074340347 + .long 0 + .long 1048855597 + .long 0 + .long 1048855597 + .long 0 + .long 1048855597 + .long 0 + .long 1048855597 + .long 0 + .long 1048855597 + .long 0 + .long 1048855597 + .long 0 + .long 1048855597 + .long 0 + .long 1048855597 + .long 2147483648 + .long 1023952536 + .long 2147483648 + .long 1023952536 + .long 2147483648 + .long 1023952536 + .long 2147483648 + .long 1023952536 + .long 2147483648 + .long 1023952536 + .long 2147483648 + .long 1023952536 + .long 2147483648 + .long 1023952536 + .long 2147483648 + .long 1023952536 + .long 1880851354 + .long 998820945 + .long 1880851354 + .long 998820945 + .long 1880851354 + .long 998820945 + .long 1880851354 + .long 998820945 + .long 1880851354 + .long 998820945 + .long 1880851354 + .long 998820945 + .long 1880851354 + .long 998820945 + .long 1880851354 + .long 998820945 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 1413754136 + .long 1074340347 + .long 856972294 + .long 1017226790 + .long 856972294 + .long 1017226790 + .long 856972294 + .long 1017226790 + .long 856972294 + .long 1017226790 + .long 856972294 + .long 1017226790 + .long 856972294 + .long 1017226790 + .long 856972294 + .long 1017226790 + .long 856972294 + .long 1017226790 + .long 688016905 + .long 962338001 + .long 688016905 + .long 962338001 + .long 688016905 + .long 962338001 + .long 688016905 + .long 962338001 + .long 688016905 + .long 962338001 + .long 688016905 + .long 962338001 + .long 688016905 + .long 962338001 + .long 688016905 + .long 962338001 + .long 1431655592 + .long 3217380693 + .long 1431655592 + .long 3217380693 + .long 1431655592 + .long 3217380693 + .long 1431655592 + .long 3217380693 + .long 1431655592 + .long 3217380693 + .long 1431655592 + .long 3217380693 + .long 1431655592 + .long 3217380693 + .long 1431655592 + .long 3217380693 + .long 286303603 + .long 1065423121 + .long 286303603 + .long 1065423121 + .long 286303603 + .long 1065423121 + .long 286303603 + .long 1065423121 + .long 286303603 + .long 1065423121 + .long 286303603 + .long 1065423121 + .long 286303603 + .long 1065423121 + .long 286303603 + .long 1065423121 + .long 430332381 + .long 3207201184 + .long 430332381 + .long 3207201184 + .long 430332381 + .long 3207201184 + .long 430332381 + .long 3207201184 + .long 430332381 + .long 3207201184 + .long 430332381 + .long 3207201184 + .long 430332381 + .long 3207201184 + .long 430332381 + .long 3207201184 + .long 2154487066 + .long 1053236707 + .long 2154487066 + .long 1053236707 + .long 2154487066 + .long 1053236707 + .long 2154487066 + .long 1053236707 + .long 2154487066 + .long 1053236707 + .long 2154487066 + .long 1053236707 + .long 2154487066 + .long 1053236707 + .long 2154487066 + .long 1053236707 + .long 1521109587 + .long 3193628213 + .long 1521109587 + .long 3193628213 + .long 1521109587 + .long 3193628213 + .long 1521109587 + .long 3193628213 + .long 1521109587 + .long 3193628213 + .long 1521109587 + .long 3193628213 + .long 1521109587 + .long 3193628213 + .long 1521109587 + .long 3193628213 + .long 3993098302 + .long 1038487147 + .long 3993098302 + .long 1038487147 + .long 3993098302 + .long 1038487147 + .long 3993098302 + .long 1038487147 + .long 3993098302 + .long 1038487147 + .long 3993098302 + .long 1038487147 + .long 3993098302 + .long 1038487147 + .long 3993098302 + .long 1038487147 + .long 2124375536 + .long 3177836881 + .long 2124375536 + .long 3177836881 + .long 2124375536 + .long 3177836881 + .long 2124375536 + .long 3177836881 + .long 2124375536 + .long 3177836881 + .long 2124375536 + .long 3177836881 + .long 2124375536 + .long 3177836881 + .long 2124375536 + .long 3177836881 + .type __svml_dsin_data_internal,@object + .size __svml_dsin_data_internal,1280 + .align 64 +__svml_dsin_data_internal_ha: + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2376373521 + .long 3205741868 + .long 0 + .long 1072693248 + .long 4242458500 + .long 1065951697 + .long 2684354560 + .long 1009354638 + .long 3650591271 + .long 3207838971 + .long 0 + .long 1072693248 + .long 4154680958 + .long 1067000149 + .long 0 + .long 3153796451 + .long 69373323 + .long 3209049152 + .long 0 + .long 1072693248 + .long 1972655565 + .long 1067636837 + .long 1073741824 + .long 1009157878 + .long 220529721 + .long 3209935929 + .long 0 + .long 1072693248 + .long 4044216340 + .long 1068048229 + .long 0 + .long 3156808381 + .long 3810305407 + .long 3210663220 + .long 0 + .long 1072693248 + .long 2046304480 + .long 1068459374 + .long 3758096384 + .long 3156402667 + .long 4269262315 + .long 3211145810 + .long 0 + .long 1072693248 + .long 2462980598 + .long 1068684576 + .long 2684354560 + .long 3158941832 + .long 1118107366 + .long 3211670787 + .long 0 + .long 1072693248 + .long 177906713 + .long 1068889808 + .long 3221225472 + .long 3159310370 + .long 393047345 + .long 3212032302 + .long 0 + .long 1072693248 + .long 3156849708 + .long 1069094822 + .long 3221225472 + .long 3158189848 + .long 1227670166 + .long 3212375297 + .long 0 + .long 1072693248 + .long 3349070549 + .long 1069299589 + .long 3758096384 + .long 3156538269 + .long 2402293340 + .long 3212758471 + .long 0 + .long 1072693248 + .long 1453945614 + .long 1069504078 + .long 1610612736 + .long 1011492612 + .long 2592747447 + .long 3213009315 + .long 0 + .long 1072693248 + .long 3470456183 + .long 1069627888 + .long 1073741824 + .long 3160744771 + .long 1037482584 + .long 3213240992 + .long 0 + .long 1072693248 + .long 1854824762 + .long 1069729808 + .long 2684354560 + .long 1011953664 + .long 3451754846 + .long 3213492662 + .long 0 + .long 1072693248 + .long 2972270170 + .long 1069831542 + .long 1073741824 + .long 3159524770 + .long 1672287667 + .long 3213764289 + .long 0 + .long 1072693248 + .long 1149976518 + .long 1069933076 + .long 1610612736 + .long 1013264895 + .long 2346447124 + .long 3213970635 + .long 0 + .long 1072693248 + .long 3729833777 + .long 1070034393 + .long 3758096384 + .long 1013044718 + .long 18115067 + .long 3214126342 + .long 0 + .long 1072693248 + .long 1013556747 + .long 1070135480 + .long 2684354560 + .long 3160567065 + .long 2660899430 + .long 3214291960 + .long 0 + .long 1072693248 + .long 632292433 + .long 1070236320 + .long 3758096384 + .long 3160963333 + .long 1935888103 + .long 3214467466 + .long 0 + .long 1072693248 + .long 1786662755 + .long 1070336898 + .long 2147483648 + .long 3155882307 + .long 288924873 + .long 3214652833 + .long 0 + .long 1072693248 + .long 3846521617 + .long 1070437199 + .long 536870912 + .long 1013406610 + .long 2377770267 + .long 3214848032 + .long 0 + .long 1072693248 + .long 2065784603 + .long 1070537209 + .long 3758096384 + .long 3160681966 + .long 3250111450 + .long 3214993525 + .long 0 + .long 1072693248 + .long 238550446 + .long 1070616504 + .long 2684354560 + .long 3154383565 + .long 2306566604 + .long 3215100913 + .long 0 + .long 1072693248 + .long 1655830135 + .long 1070666194 + .long 0 + .long 1014506690 + .long 1913604284 + .long 3215213171 + .long 0 + .long 1072693248 + .long 1062001470 + .long 1070715716 + .long 0 + .long 3160875220 + .long 2476548698 + .long 3215330282 + .long 0 + .long 1072693248 + .long 785751814 + .long 1070765062 + .long 2684354560 + .long 3161838221 + .long 1261629236 + .long 3215452229 + .long 0 + .long 1072693248 + .long 3269558610 + .long 1070814224 + .long 536870912 + .long 3161705216 + .long 997322465 + .long 3215578993 + .long 0 + .long 1072693248 + .long 2484561409 + .long 1070863196 + .long 1073741824 + .long 1014024572 + .long 1296295961 + .long 3215710555 + .long 0 + .long 1072693248 + .long 1115219818 + .long 1070911970 + .long 0 + .long 1013072242 + .long 2962723252 + .long 3215846895 + .long 0 + .long 1072693248 + .long 1974149085 + .long 1070960538 + .long 3221225472 + .long 3156147648 + .long 4002549419 + .long 3215985292 + .long 0 + .long 1072693248 + .long 3711903686 + .long 1071008893 + .long 1073741824 + .long 1011944747 + .long 1234824733 + .long 3216058210 + .long 0 + .long 1072693248 + .long 821708191 + .long 1071057029 + .long 3758096384 + .long 3161738009 + .long 3996842794 + .long 3216133484 + .long 0 + .long 1072693248 + .long 824036583 + .long 1071104937 + .long 0 + .long 1008313330 + .long 2255197647 + .long 3216211105 + .long 0 + .long 1072693248 + .long 2796464483 + .long 1071152610 + .long 3221225472 + .long 3160878317 + .long 1638976426 + .long 3216291060 + .long 0 + .long 1072693248 + .long 1673302999 + .long 1071200042 + .long 2147483648 + .long 1013351473 + .long 1972483635 + .long 3216373337 + .long 0 + .long 1072693248 + .long 1135144330 + .long 1071247225 + .long 536870912 + .long 1013373569 + .long 1577996576 + .long 3216457924 + .long 0 + .long 1072693248 + .long 728580042 + .long 1071294152 + .long 1610612736 + .long 3162332944 + .long 1578746984 + .long 3216544808 + .long 0 + .long 1072693248 + .long 165764288 + .long 1071340816 + .long 3221225472 + .long 1013298018 + .long 1612193054 + .long 3216633976 + .long 0 + .long 1072693248 + .long 3623952103 + .long 1071387209 + .long 2684354560 + .long 3161985962 + .long 4133449816 + .long 3216725414 + .long 0 + .long 1072693248 + .long 2570175582 + .long 1071433326 + .long 1073741824 + .long 1012303118 + .long 1539072807 + .long 3216819110 + .long 0 + .long 1072693248 + .long 1535566729 + .long 1071479159 + .long 2147483648 + .long 1014321388 + .long 1945768569 + .long 3216915048 + .long 0 + .long 1072693248 + .long 939980347 + .long 1071524701 + .long 0 + .long 1012796809 + .long 3429717432 + .long 3217013214 + .long 0 + .long 1072693248 + .long 1391425750 + .long 1071569945 + .long 3221225472 + .long 3162362103 + .long 1312926554 + .long 3217072381 + .long 0 + .long 1072693248 + .long 3690502842 + .long 1071614884 + .long 3221225472 + .long 3157453855 + .long 1663679671 + .long 3217123670 + .long 0 + .long 1072693248 + .long 2269920951 + .long 1071652092 + .long 3758096384 + .long 3161672245 + .long 3952756490 + .long 3217176050 + .long 0 + .long 1072693248 + .long 2569207790 + .long 1071674247 + .long 1073741824 + .long 3163183617 + .long 69903290 + .long 3217229515 + .long 0 + .long 1072693248 + .long 1297975695 + .long 1071696240 + .long 3221225472 + .long 3163083735 + .long 2678847490 + .long 3217284054 + .long 0 + .long 1072693248 + .long 1411074851 + .long 1071718067 + .long 1610612736 + .long 3163484731 + .long 2272832445 + .long 3217339661 + .long 0 + .long 1072693248 + .long 1675549513 + .long 1071739725 + .long 3221225472 + .long 3163025138 + .long 1539668340 + .long 3217396327 + .long 0 + .long 1072693248 + .long 967731400 + .long 1071761211 + .long 536870912 + .long 1015752157 + .long 2482246777 + .long 3217454043 + .long 0 + .long 1072693248 + .long 2570316633 + .long 1071782521 + .long 1610612736 + .long 3162744753 + .long 2129093113 + .long 3217512801 + .long 0 + .long 1072693248 + .long 1289556703 + .long 1071803653 + .long 536870912 + .long 3162888820 + .long 1129922991 + .long 3217572592 + .long 0 + .long 1072693248 + .long 637203434 + .long 1071824603 + .long 3221225472 + .long 3159443841 + .long 3761365757 + .long 3217633406 + .long 0 + .long 1072693248 + .long 4242632757 + .long 1071845367 + .long 536870912 + .long 3161390278 + .long 752919289 + .long 3217695236 + .long 0 + .long 1072693248 + .long 2969983475 + .long 1071865944 + .long 2684354560 + .long 3162635443 + .long 3652612115 + .long 3217758070 + .long 0 + .long 1072693248 + .long 689983673 + .long 1071886330 + .long 3758096384 + .long 1014906405 + .long 1883353036 + .long 3217821901 + .long 0 + .long 1072693248 + .long 1397053140 + .long 1071906521 + .long 1610612736 + .long 1015245078 + .long 1403757309 + .long 3217886718 + .long 0 + .long 1072693248 + .long 621354454 + .long 1071926515 + .long 536870912 + .long 1013450602 + .long 3239527685 + .long 3217952511 + .long 0 + .long 1072693248 + .long 2610628921 + .long 1071946308 + .long 1610612736 + .long 3162668769 + .long 3489768009 + .long 3218019271 + .long 0 + .long 1072693248 + .long 3152274921 + .long 1071965898 + .long 3758096384 + .long 1013170835 + .long 2371640770 + .long 1070588851 + .long 0 + .long 1071644672 + .long 2460177814 + .long 1071985282 + .long 2147483648 + .long 3162116843 + .long 2309668539 + .long 1070520188 + .long 0 + .long 1071644672 + .long 881650848 + .long 1072004457 + .long 2147483648 + .long 3162986272 + .long 2081278341 + .long 1070450589 + .long 0 + .long 1071644672 + .long 3194290572 + .long 1072023419 + .long 2147483648 + .long 1015048682 + .long 3753901657 + .long 1070380064 + .long 0 + .long 1071644672 + .long 1427975391 + .long 1072042167 + .long 1073741824 + .long 3161608627 + .long 1403691706 + .long 1070308625 + .long 0 + .long 1071644672 + .long 636516413 + .long 1072060697 + .long 3758096384 + .long 1015823716 + .long 2583490354 + .long 1070236281 + .long 0 + .long 1071644672 + .long 1719614413 + .long 1072079006 + .long 0 + .long 3163282740 + .long 2546065654 + .long 1070163044 + .long 0 + .long 1071644672 + .long 1424664751 + .long 1072097092 + .long 3221225472 + .long 3163405315 + .long 1416934267 + .long 1070088925 + .long 0 + .long 1071644672 + .long 938475414 + .long 1072114952 + .long 0 + .long 1015076079 + .long 4187227697 + .long 1070013934 + .long 0 + .long 1071644672 + .long 1594061409 + .long 1072132583 + .long 2147483648 + .long 1014353870 + .long 3526603391 + .long 1069938084 + .long 0 + .long 1071644672 + .long 577417135 + .long 1072149983 + .long 2684354560 + .long 3161519415 + .long 1250776663 + .long 1069861386 + .long 0 + .long 1071644672 + .long 3814135665 + .long 1072167148 + .long 3221225472 + .long 3163146456 + .long 4019165092 + .long 1069783850 + .long 0 + .long 1071644672 + .long 201299822 + .long 1072184078 + .long 3758096384 + .long 3161912352 + .long 1852581091 + .long 1069705490 + .long 0 + .long 1071644672 + .long 263859903 + .long 1072200768 + .long 0 + .long 3162692284 + .long 2485417816 + .long 1069626316 + .long 0 + .long 1071644672 + .long 1796544321 + .long 1072217216 + .long 536870912 + .long 3162686945 + .long 2586490530 + .long 1069545162 + .long 0 + .long 1071644672 + .long 2750387213 + .long 1072233420 + .long 2147483648 + .long 3160858537 + .long 1224902090 + .long 1069383633 + .long 0 + .long 1071644672 + .long 1234330619 + .long 1072249378 + .long 2684354560 + .long 1015272473 + .long 2285031318 + .long 1069220549 + .long 0 + .long 1071644672 + .long 4106737474 + .long 1072265086 + .long 2684354560 + .long 3162592377 + .long 3876290983 + .long 1069055935 + .long 0 + .long 1071644672 + .long 1207142209 + .long 1072280544 + .long 2147483648 + .long 3162705634 + .long 802660176 + .long 1068889817 + .long 0 + .long 1071644672 + .long 4012486548 + .long 1072295747 + .long 2684354560 + .long 1014701564 + .long 1726519029 + .long 1068722218 + .long 0 + .long 1071644672 + .long 2688952194 + .long 1072310695 + .long 0 + .long 3161532603 + .long 3382663878 + .long 1068553164 + .long 0 + .long 1071644672 + .long 453180130 + .long 1072325385 + .long 1073741824 + .long 3162411281 + .long 2598800519 + .long 1068266419 + .long 0 + .long 1071644672 + .long 688824739 + .long 1072339814 + .long 3758096384 + .long 1010431536 + .long 1038988426 + .long 1067922646 + .long 0 + .long 1071644672 + .long 2653017361 + .long 1072353980 + .long 0 + .long 3162800062 + .long 1102361128 + .long 1067576117 + .long 0 + .long 1071644672 + .long 1477771776 + .long 1072367882 + .long 536870912 + .long 3163104986 + .long 2880516564 + .long 1067003401 + .long 0 + .long 1071644672 + .long 1056266002 + .long 1072381517 + .long 2684354560 + .long 3163469496 + .long 1220541286 + .long 1066197478 + .long 0 + .long 1071644672 + .long 1159294526 + .long 1072394883 + .long 536870912 + .long 3163276959 + .long 1279178457 + .long 1064107143 + .long 0 + .long 1071644672 + .long 1731563730 + .long 1072407978 + .long 536870912 + .long 1015540302 + .long 31019393 + .long 3212646089 + .long 0 + .long 1071644672 + .long 2892993834 + .long 1072420800 + .long 536870912 + .long 3163039143 + .long 3506991783 + .long 3214032490 + .long 0 + .long 1071644672 + .long 645027145 + .long 1072433348 + .long 3221225472 + .long 1012602239 + .long 2140183630 + .long 3214756396 + .long 0 + .long 1071644672 + .long 4051746225 + .long 1072445618 + .long 1610612736 + .long 3161907377 + .long 600368053 + .long 3215209541 + .long 0 + .long 1071644672 + .long 881357723 + .long 1072457611 + .long 3221225472 + .long 1013810890 + .long 913431823 + .long 3215576203 + .long 0 + .long 1071644672 + .long 557060597 + .long 1072469323 + .long 0 + .long 3159554934 + .long 1073154251 + .long 3215945137 + .long 0 + .long 1071644672 + .long 4093443164 + .long 1072480752 + .long 536870912 + .long 1014912865 + .long 3631910143 + .long 3216149439 + .long 0 + .long 1071644672 + .long 4097623923 + .long 1072491898 + .long 2684354560 + .long 3160308587 + .long 1380647130 + .long 3216336095 + .long 0 + .long 1071644672 + .long 1950234076 + .long 1072502759 + .long 536870912 + .long 3159425498 + .long 4049357271 + .long 3216523802 + .long 0 + .long 1071644672 + .long 3511535930 + .long 1072513332 + .long 2147483648 + .long 3162828626 + .long 1896722595 + .long 3216712534 + .long 0 + .long 1071644672 + .long 1942611595 + .long 1072523617 + .long 3221225472 + .long 3162410081 + .long 1699043957 + .long 3216902261 + .long 0 + .long 1071644672 + .long 3476196678 + .long 1072533611 + .long 0 + .long 1014257638 + .long 3296146332 + .long 1069485732 + .long 0 + .long 1070596096 + .long 1647878299 + .long 1072543314 + .long 3758096384 + .long 3162169063 + .long 3286832763 + .long 1069294100 + .long 0 + .long 1070596096 + .long 3066872380 + .long 1072552723 + .long 3221225472 + .long 1015561271 + .long 1962712856 + .long 1069101559 + .long 0 + .long 1070596096 + .long 1647164971 + .long 1072561838 + .long 2147483648 + .long 3162838250 + .long 3601629044 + .long 1068908137 + .long 0 + .long 1070596096 + .long 83265253 + .long 1072570657 + .long 1610612736 + .long 3162510535 + .long 165911977 + .long 1068713865 + .long 0 + .long 1070596096 + .long 1261158782 + .long 1072579178 + .long 2147483648 + .long 1015711544 + .long 1348311045 + .long 1068518770 + .long 0 + .long 1070596096 + .long 3964199186 + .long 1072587400 + .long 3758096384 + .long 3160501078 + .long 386665102 + .long 1068146822 + .long 0 + .long 1070596096 + .long 2873938189 + .long 1072595323 + .long 1610612736 + .long 3162311422 + .long 1991047213 + .long 1067753521 + .long 0 + .long 1070596096 + .long 1455828442 + .long 1072602945 + .long 3758096384 + .long 1015505073 + .long 4107121629 + .long 1067267139 + .long 0 + .long 1070596096 + .long 3370060660 + .long 1072610264 + .long 1610612736 + .long 1014787212 + .long 723478390 + .long 1066474790 + .long 0 + .long 1070596096 + .long 3882371427 + .long 1072617280 + .long 2147483648 + .long 1014923975 + .long 2382326656 + .long 1064562179 + .long 0 + .long 1070596096 + .long 2749658050 + .long 1072623992 + .long 1610612736 + .long 1015427338 + .long 2614369450 + .long 3212624080 + .long 0 + .long 1070596096 + .long 4220661975 + .long 1072630398 + .long 3221225472 + .long 1014312058 + .long 3587565429 + .long 3214108032 + .long 0 + .long 1070596096 + .long 4151720666 + .long 1072636498 + .long 0 + .long 3162639544 + .long 2886567144 + .long 3214910444 + .long 0 + .long 1070596096 + .long 2892293513 + .long 1072642291 + .long 2684354560 + .long 3162340271 + .long 1765797566 + .long 3215324543 + .long 0 + .long 1070596096 + .long 990588717 + .long 1072647776 + .long 3758096384 + .long 3162041857 + .long 240740309 + .long 3215727903 + .long 0 + .long 1070596096 + .long 3489094832 + .long 1072652951 + .long 536870912 + .long 1014325783 + .long 2034433221 + .long 1068349287 + .long 0 + .long 1069547520 + .long 2745245815 + .long 1072657817 + .long 3221225472 + .long 1015566129 + .long 304938777 + .long 1067944017 + .long 0 + .long 1069547520 + .long 4201728937 + .long 1072662372 + .long 1610612736 + .long 1014674006 + .long 3299146087 + .long 1067537882 + .long 0 + .long 1069547520 + .long 617154971 + .long 1072666617 + .long 3758096384 + .long 3163433696 + .long 1953696209 + .long 1066811523 + .long 0 + .long 1069547520 + .long 2131272983 + .long 1072670549 + .long 3221225472 + .long 3163005096 + .long 3987691371 + .long 1065590540 + .long 0 + .long 1069547520 + .long 1905645377 + .long 1072674169 + .long 1610612736 + .long 1014087596 + .long 718380601 + .long 3211081269 + .long 0 + .long 1069547520 + .long 1893834707 + .long 1072677476 + .long 1610612736 + .long 1015147654 + .long 3272206680 + .long 3213771729 + .long 0 + .long 1069547520 + .long 4251821691 + .long 1072680469 + .long 2147483648 + .long 3161841007 + .long 257503056 + .long 3214647653 + .long 0 + .long 1069547520 + .long 2748392742 + .long 1072683149 + .long 536870912 + .long 3163061750 + .long 711626851 + .long 1066916672 + .long 0 + .long 1068498944 + .long 4240268041 + .long 1072685514 + .long 536870912 + .long 1013588963 + .long 2523975598 + .long 1065789700 + .long 0 + .long 1068498944 + .long 2902558778 + .long 1072687565 + .long 3221225472 + .long 1013260780 + .long 3237733378 + .long 3209908784 + .long 0 + .long 1068498944 + .long 1703834029 + .long 1072689301 + .long 3758096384 + .long 1015028364 + .long 1003003824 + .long 3213591144 + .long 0 + .long 1068498944 + .long 3816385918 + .long 1072690721 + .long 536870912 + .long 3161216956 + .long 2896342633 + .long 1064747819 + .long 0 + .long 1067450368 + .long 4026464093 + .long 1072691826 + .long 3221225472 + .long 3163075789 + .long 561145352 + .long 3212540584 + .long 0 + .long 1067450368 + .long 1619315981 + .long 1072692616 + .long 1073741824 + .long 3162584397 + .long 210035182 + .long 3211491512 + .long 0 + .long 1066401792 + .long 379294427 + .long 1072693090 + .long 3221225472 + .long 1015405987 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 210035182 + .long 1064007864 + .long 0 + .long 3213885440 + .long 379294427 + .long 1072693090 + .long 3221225472 + .long 1015405987 + .long 561145352 + .long 1065056936 + .long 0 + .long 3214934016 + .long 1619315981 + .long 1072692616 + .long 1073741824 + .long 3162584397 + .long 2896342633 + .long 3212231467 + .long 0 + .long 3214934016 + .long 4026464093 + .long 1072691826 + .long 3221225472 + .long 3163075789 + .long 1003003824 + .long 1066107496 + .long 0 + .long 3215982592 + .long 3816385918 + .long 1072690721 + .long 536870912 + .long 3161216956 + .long 3237733378 + .long 1062425136 + .long 0 + .long 3215982592 + .long 1703834029 + .long 1072689301 + .long 3758096384 + .long 1015028364 + .long 2523975598 + .long 3213273348 + .long 0 + .long 3215982592 + .long 2902558778 + .long 1072687565 + .long 3221225472 + .long 1013260780 + .long 711626851 + .long 3214400320 + .long 0 + .long 3215982592 + .long 4240268041 + .long 1072685514 + .long 536870912 + .long 1013588963 + .long 257503056 + .long 1067164005 + .long 0 + .long 3217031168 + .long 2748392742 + .long 1072683149 + .long 536870912 + .long 3163061750 + .long 3272206680 + .long 1066288081 + .long 0 + .long 3217031168 + .long 4251821691 + .long 1072680469 + .long 2147483648 + .long 3161841007 + .long 718380601 + .long 1063597621 + .long 0 + .long 3217031168 + .long 1893834707 + .long 1072677476 + .long 1610612736 + .long 1015147654 + .long 3987691371 + .long 3213074188 + .long 0 + .long 3217031168 + .long 1905645377 + .long 1072674169 + .long 1610612736 + .long 1014087596 + .long 1953696209 + .long 3214295171 + .long 0 + .long 3217031168 + .long 2131272983 + .long 1072670549 + .long 3221225472 + .long 3163005096 + .long 3299146087 + .long 3215021530 + .long 0 + .long 3217031168 + .long 617154971 + .long 1072666617 + .long 3758096384 + .long 3163433696 + .long 304938777 + .long 3215427665 + .long 0 + .long 3217031168 + .long 4201728937 + .long 1072662372 + .long 1610612736 + .long 1014674006 + .long 2034433221 + .long 3215832935 + .long 0 + .long 3217031168 + .long 2745245815 + .long 1072657817 + .long 3221225472 + .long 1015566129 + .long 240740309 + .long 1068244255 + .long 0 + .long 3218079744 + .long 3489094832 + .long 1072652951 + .long 536870912 + .long 1014325783 + .long 1765797566 + .long 1067840895 + .long 0 + .long 3218079744 + .long 990588717 + .long 1072647776 + .long 3758096384 + .long 3162041857 + .long 2886567144 + .long 1067426796 + .long 0 + .long 3218079744 + .long 2892293513 + .long 1072642291 + .long 2684354560 + .long 3162340271 + .long 3587565429 + .long 1066624384 + .long 0 + .long 3218079744 + .long 4151720666 + .long 1072636498 + .long 0 + .long 3162639544 + .long 2614369450 + .long 1065140432 + .long 0 + .long 3218079744 + .long 4220661975 + .long 1072630398 + .long 3221225472 + .long 1014312058 + .long 2382326656 + .long 3212045827 + .long 0 + .long 3218079744 + .long 2749658050 + .long 1072623992 + .long 1610612736 + .long 1015427338 + .long 723478390 + .long 3213958438 + .long 0 + .long 3218079744 + .long 3882371427 + .long 1072617280 + .long 2147483648 + .long 1014923975 + .long 4107121629 + .long 3214750787 + .long 0 + .long 3218079744 + .long 3370060660 + .long 1072610264 + .long 1610612736 + .long 1014787212 + .long 1991047213 + .long 3215237169 + .long 0 + .long 3218079744 + .long 1455828442 + .long 1072602945 + .long 3758096384 + .long 1015505073 + .long 386665102 + .long 3215630470 + .long 0 + .long 3218079744 + .long 2873938189 + .long 1072595323 + .long 1610612736 + .long 3162311422 + .long 1348311045 + .long 3216002418 + .long 0 + .long 3218079744 + .long 3964199186 + .long 1072587400 + .long 3758096384 + .long 3160501078 + .long 165911977 + .long 3216197513 + .long 0 + .long 3218079744 + .long 1261158782 + .long 1072579178 + .long 2147483648 + .long 1015711544 + .long 3601629044 + .long 3216391785 + .long 0 + .long 3218079744 + .long 83265253 + .long 1072570657 + .long 1610612736 + .long 3162510535 + .long 1962712856 + .long 3216585207 + .long 0 + .long 3218079744 + .long 1647164971 + .long 1072561838 + .long 2147483648 + .long 3162838250 + .long 3286832763 + .long 3216777748 + .long 0 + .long 3218079744 + .long 3066872380 + .long 1072552723 + .long 3221225472 + .long 1015561271 + .long 3296146332 + .long 3216969380 + .long 0 + .long 3218079744 + .long 1647878299 + .long 1072543314 + .long 3758096384 + .long 3162169063 + .long 1699043957 + .long 1069418613 + .long 0 + .long 3219128320 + .long 3476196678 + .long 1072533611 + .long 0 + .long 1014257638 + .long 1896722595 + .long 1069228886 + .long 0 + .long 3219128320 + .long 1942611595 + .long 1072523617 + .long 3221225472 + .long 3162410081 + .long 4049357271 + .long 1069040154 + .long 0 + .long 3219128320 + .long 3511535930 + .long 1072513332 + .long 2147483648 + .long 3162828626 + .long 1380647130 + .long 1068852447 + .long 0 + .long 3219128320 + .long 1950234076 + .long 1072502759 + .long 536870912 + .long 3159425498 + .long 3631910143 + .long 1068665791 + .long 0 + .long 3219128320 + .long 4097623923 + .long 1072491898 + .long 2684354560 + .long 3160308587 + .long 1073154251 + .long 1068461489 + .long 0 + .long 3219128320 + .long 4093443164 + .long 1072480752 + .long 536870912 + .long 1014912865 + .long 913431823 + .long 1068092555 + .long 0 + .long 3219128320 + .long 557060597 + .long 1072469323 + .long 0 + .long 3159554934 + .long 600368053 + .long 1067725893 + .long 0 + .long 3219128320 + .long 881357723 + .long 1072457611 + .long 3221225472 + .long 1013810890 + .long 2140183630 + .long 1067272748 + .long 0 + .long 3219128320 + .long 4051746225 + .long 1072445618 + .long 1610612736 + .long 3161907377 + .long 3506991783 + .long 1066548842 + .long 0 + .long 3219128320 + .long 645027145 + .long 1072433348 + .long 3221225472 + .long 1012602239 + .long 31019393 + .long 1065162441 + .long 0 + .long 3219128320 + .long 2892993834 + .long 1072420800 + .long 536870912 + .long 3163039143 + .long 1279178457 + .long 3211590791 + .long 0 + .long 3219128320 + .long 1731563730 + .long 1072407978 + .long 536870912 + .long 1015540302 + .long 1220541286 + .long 3213681126 + .long 0 + .long 3219128320 + .long 1159294526 + .long 1072394883 + .long 536870912 + .long 3163276959 + .long 2880516564 + .long 3214487049 + .long 0 + .long 3219128320 + .long 1056266002 + .long 1072381517 + .long 2684354560 + .long 3163469496 + .long 1102361128 + .long 3215059765 + .long 0 + .long 3219128320 + .long 1477771776 + .long 1072367882 + .long 536870912 + .long 3163104986 + .long 1038988426 + .long 3215406294 + .long 0 + .long 3219128320 + .long 2653017361 + .long 1072353980 + .long 0 + .long 3162800062 + .long 2598800519 + .long 3215750067 + .long 0 + .long 3219128320 + .long 688824739 + .long 1072339814 + .long 3758096384 + .long 1010431536 + .long 3382663878 + .long 3216036812 + .long 0 + .long 3219128320 + .long 453180130 + .long 1072325385 + .long 1073741824 + .long 3162411281 + .long 1726519029 + .long 3216205866 + .long 0 + .long 3219128320 + .long 2688952194 + .long 1072310695 + .long 0 + .long 3161532603 + .long 802660176 + .long 3216373465 + .long 0 + .long 3219128320 + .long 4012486548 + .long 1072295747 + .long 2684354560 + .long 1014701564 + .long 3876290983 + .long 3216539583 + .long 0 + .long 3219128320 + .long 1207142209 + .long 1072280544 + .long 2147483648 + .long 3162705634 + .long 2285031318 + .long 3216704197 + .long 0 + .long 3219128320 + .long 4106737474 + .long 1072265086 + .long 2684354560 + .long 3162592377 + .long 1224902090 + .long 3216867281 + .long 0 + .long 3219128320 + .long 1234330619 + .long 1072249378 + .long 2684354560 + .long 1015272473 + .long 2586490530 + .long 3217028810 + .long 0 + .long 3219128320 + .long 2750387213 + .long 1072233420 + .long 2147483648 + .long 3160858537 + .long 2485417816 + .long 3217109964 + .long 0 + .long 3219128320 + .long 1796544321 + .long 1072217216 + .long 536870912 + .long 3162686945 + .long 1852581091 + .long 3217189138 + .long 0 + .long 3219128320 + .long 263859903 + .long 1072200768 + .long 0 + .long 3162692284 + .long 4019165092 + .long 3217267498 + .long 0 + .long 3219128320 + .long 201299822 + .long 1072184078 + .long 3758096384 + .long 3161912352 + .long 1250776663 + .long 3217345034 + .long 0 + .long 3219128320 + .long 3814135665 + .long 1072167148 + .long 3221225472 + .long 3163146456 + .long 3526603391 + .long 3217421732 + .long 0 + .long 3219128320 + .long 577417135 + .long 1072149983 + .long 2684354560 + .long 3161519415 + .long 4187227697 + .long 3217497582 + .long 0 + .long 3219128320 + .long 1594061409 + .long 1072132583 + .long 2147483648 + .long 1014353870 + .long 1416934267 + .long 3217572573 + .long 0 + .long 3219128320 + .long 938475414 + .long 1072114952 + .long 0 + .long 1015076079 + .long 2546065654 + .long 3217646692 + .long 0 + .long 3219128320 + .long 1424664751 + .long 1072097092 + .long 3221225472 + .long 3163405315 + .long 2583490354 + .long 3217719929 + .long 0 + .long 3219128320 + .long 1719614413 + .long 1072079006 + .long 0 + .long 3163282740 + .long 1403691706 + .long 3217792273 + .long 0 + .long 3219128320 + .long 636516413 + .long 1072060697 + .long 3758096384 + .long 1015823716 + .long 3753901657 + .long 3217863712 + .long 0 + .long 3219128320 + .long 1427975391 + .long 1072042167 + .long 1073741824 + .long 3161608627 + .long 2081278341 + .long 3217934237 + .long 0 + .long 3219128320 + .long 3194290572 + .long 1072023419 + .long 2147483648 + .long 1015048682 + .long 2309668539 + .long 3218003836 + .long 0 + .long 3219128320 + .long 881650848 + .long 1072004457 + .long 2147483648 + .long 3162986272 + .long 2371640770 + .long 3218072499 + .long 0 + .long 3219128320 + .long 2460177814 + .long 1071985282 + .long 2147483648 + .long 3162116843 + .long 3489768009 + .long 1070535623 + .long 0 + .long 3220176896 + .long 3152274921 + .long 1071965898 + .long 3758096384 + .long 1013170835 + .long 3239527685 + .long 1070468863 + .long 0 + .long 3220176896 + .long 2610628921 + .long 1071946308 + .long 1610612736 + .long 3162668769 + .long 1403757309 + .long 1070403070 + .long 0 + .long 3220176896 + .long 621354454 + .long 1071926515 + .long 536870912 + .long 1013450602 + .long 1883353036 + .long 1070338253 + .long 0 + .long 3220176896 + .long 1397053140 + .long 1071906521 + .long 1610612736 + .long 1015245078 + .long 3652612115 + .long 1070274422 + .long 0 + .long 3220176896 + .long 689983673 + .long 1071886330 + .long 3758096384 + .long 1014906405 + .long 752919289 + .long 1070211588 + .long 0 + .long 3220176896 + .long 2969983475 + .long 1071865944 + .long 2684354560 + .long 3162635443 + .long 3761365757 + .long 1070149758 + .long 0 + .long 3220176896 + .long 4242632757 + .long 1071845367 + .long 536870912 + .long 3161390278 + .long 1129922991 + .long 1070088944 + .long 0 + .long 3220176896 + .long 637203434 + .long 1071824603 + .long 3221225472 + .long 3159443841 + .long 2129093113 + .long 1070029153 + .long 0 + .long 3220176896 + .long 1289556703 + .long 1071803653 + .long 536870912 + .long 3162888820 + .long 2482246777 + .long 1069970395 + .long 0 + .long 3220176896 + .long 2570316633 + .long 1071782521 + .long 1610612736 + .long 3162744753 + .long 1539668340 + .long 1069912679 + .long 0 + .long 3220176896 + .long 967731400 + .long 1071761211 + .long 536870912 + .long 1015752157 + .long 2272832445 + .long 1069856013 + .long 0 + .long 3220176896 + .long 1675549513 + .long 1071739725 + .long 3221225472 + .long 3163025138 + .long 2678847490 + .long 1069800406 + .long 0 + .long 3220176896 + .long 1411074851 + .long 1071718067 + .long 1610612736 + .long 3163484731 + .long 69903290 + .long 1069745867 + .long 0 + .long 3220176896 + .long 1297975695 + .long 1071696240 + .long 3221225472 + .long 3163083735 + .long 3952756490 + .long 1069692402 + .long 0 + .long 3220176896 + .long 2569207790 + .long 1071674247 + .long 1073741824 + .long 3163183617 + .long 1663679671 + .long 1069640022 + .long 0 + .long 3220176896 + .long 2269920951 + .long 1071652092 + .long 3758096384 + .long 3161672245 + .long 1312926554 + .long 1069588733 + .long 0 + .long 3220176896 + .long 3690502842 + .long 1071614884 + .long 3221225472 + .long 3157453855 + .long 3429717432 + .long 1069529566 + .long 0 + .long 3220176896 + .long 1391425750 + .long 1071569945 + .long 3221225472 + .long 3162362103 + .long 1945768569 + .long 1069431400 + .long 0 + .long 3220176896 + .long 939980347 + .long 1071524701 + .long 0 + .long 1012796809 + .long 1539072807 + .long 1069335462 + .long 0 + .long 3220176896 + .long 1535566729 + .long 1071479159 + .long 2147483648 + .long 1014321388 + .long 4133449816 + .long 1069241766 + .long 0 + .long 3220176896 + .long 2570175582 + .long 1071433326 + .long 1073741824 + .long 1012303118 + .long 1612193054 + .long 1069150328 + .long 0 + .long 3220176896 + .long 3623952103 + .long 1071387209 + .long 2684354560 + .long 3161985962 + .long 1578746984 + .long 1069061160 + .long 0 + .long 3220176896 + .long 165764288 + .long 1071340816 + .long 3221225472 + .long 1013298018 + .long 1577996576 + .long 1068974276 + .long 0 + .long 3220176896 + .long 728580042 + .long 1071294152 + .long 1610612736 + .long 3162332944 + .long 1972483635 + .long 1068889689 + .long 0 + .long 3220176896 + .long 1135144330 + .long 1071247225 + .long 536870912 + .long 1013373569 + .long 1638976426 + .long 1068807412 + .long 0 + .long 3220176896 + .long 1673302999 + .long 1071200042 + .long 2147483648 + .long 1013351473 + .long 2255197647 + .long 1068727457 + .long 0 + .long 3220176896 + .long 2796464483 + .long 1071152610 + .long 3221225472 + .long 3160878317 + .long 3996842794 + .long 1068649836 + .long 0 + .long 3220176896 + .long 824036583 + .long 1071104937 + .long 0 + .long 1008313330 + .long 1234824733 + .long 1068574562 + .long 0 + .long 3220176896 + .long 821708191 + .long 1071057029 + .long 3758096384 + .long 3161738009 + .long 4002549419 + .long 1068501644 + .long 0 + .long 3220176896 + .long 3711903686 + .long 1071008893 + .long 1073741824 + .long 1011944747 + .long 2962723252 + .long 1068363247 + .long 0 + .long 3220176896 + .long 1974149085 + .long 1070960538 + .long 3221225472 + .long 3156147648 + .long 1296295961 + .long 1068226907 + .long 0 + .long 3220176896 + .long 1115219818 + .long 1070911970 + .long 0 + .long 1013072242 + .long 997322465 + .long 1068095345 + .long 0 + .long 3220176896 + .long 2484561409 + .long 1070863196 + .long 1073741824 + .long 1014024572 + .long 1261629236 + .long 1067968581 + .long 0 + .long 3220176896 + .long 3269558610 + .long 1070814224 + .long 536870912 + .long 3161705216 + .long 2476548698 + .long 1067846634 + .long 0 + .long 3220176896 + .long 785751814 + .long 1070765062 + .long 2684354560 + .long 3161838221 + .long 1913604284 + .long 1067729523 + .long 0 + .long 3220176896 + .long 1062001470 + .long 1070715716 + .long 0 + .long 3160875220 + .long 2306566604 + .long 1067617265 + .long 0 + .long 3220176896 + .long 1655830135 + .long 1070666194 + .long 0 + .long 1014506690 + .long 3250111450 + .long 1067509877 + .long 0 + .long 3220176896 + .long 238550446 + .long 1070616504 + .long 2684354560 + .long 3154383565 + .long 2377770267 + .long 1067364384 + .long 0 + .long 3220176896 + .long 2065784603 + .long 1070537209 + .long 3758096384 + .long 3160681966 + .long 288924873 + .long 1067169185 + .long 0 + .long 3220176896 + .long 3846521617 + .long 1070437199 + .long 536870912 + .long 1013406610 + .long 1935888103 + .long 1066983818 + .long 0 + .long 3220176896 + .long 1786662755 + .long 1070336898 + .long 2147483648 + .long 3155882307 + .long 2660899430 + .long 1066808312 + .long 0 + .long 3220176896 + .long 632292433 + .long 1070236320 + .long 3758096384 + .long 3160963333 + .long 18115067 + .long 1066642694 + .long 0 + .long 3220176896 + .long 1013556747 + .long 1070135480 + .long 2684354560 + .long 3160567065 + .long 2346447124 + .long 1066486987 + .long 0 + .long 3220176896 + .long 3729833777 + .long 1070034393 + .long 3758096384 + .long 1013044718 + .long 1672287667 + .long 1066280641 + .long 0 + .long 3220176896 + .long 1149976518 + .long 1069933076 + .long 1610612736 + .long 1013264895 + .long 3451754846 + .long 1066009014 + .long 0 + .long 3220176896 + .long 2972270170 + .long 1069831542 + .long 1073741824 + .long 3159524770 + .long 1037482584 + .long 1065757344 + .long 0 + .long 3220176896 + .long 1854824762 + .long 1069729808 + .long 2684354560 + .long 1011953664 + .long 2592747447 + .long 1065525667 + .long 0 + .long 3220176896 + .long 3470456183 + .long 1069627888 + .long 1073741824 + .long 3160744771 + .long 2402293340 + .long 1065274823 + .long 0 + .long 3220176896 + .long 1453945614 + .long 1069504078 + .long 1610612736 + .long 1011492612 + .long 1227670166 + .long 1064891649 + .long 0 + .long 3220176896 + .long 3349070549 + .long 1069299589 + .long 3758096384 + .long 3156538269 + .long 393047345 + .long 1064548654 + .long 0 + .long 3220176896 + .long 3156849708 + .long 1069094822 + .long 3221225472 + .long 3158189848 + .long 1118107366 + .long 1064187139 + .long 0 + .long 3220176896 + .long 177906713 + .long 1068889808 + .long 3221225472 + .long 3159310370 + .long 4269262315 + .long 1063662162 + .long 0 + .long 3220176896 + .long 2462980598 + .long 1068684576 + .long 2684354560 + .long 3158941832 + .long 3810305407 + .long 1063179572 + .long 0 + .long 3220176896 + .long 2046304480 + .long 1068459374 + .long 3758096384 + .long 3156402667 + .long 220529721 + .long 1062452281 + .long 0 + .long 3220176896 + .long 4044216340 + .long 1068048229 + .long 0 + .long 3156808381 + .long 69373323 + .long 1061565504 + .long 0 + .long 3220176896 + .long 1972655565 + .long 1067636837 + .long 1073741824 + .long 1009157878 + .long 3650591271 + .long 1060355323 + .long 0 + .long 3220176896 + .long 4154680958 + .long 1067000149 + .long 0 + .long 3153796451 + .long 2376373521 + .long 1058258220 + .long 0 + .long 3220176896 + .long 4242458500 + .long 1065951697 + .long 2684354560 + .long 1009354638 + .long 0 + .long 0 + .long 0 + .long 3220176896 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2376373521 + .long 1058258220 + .long 0 + .long 3220176896 + .long 4242458500 + .long 3213435345 + .long 2684354560 + .long 3156838286 + .long 3650591271 + .long 1060355323 + .long 0 + .long 3220176896 + .long 4154680958 + .long 3214483797 + .long 0 + .long 1006312803 + .long 69373323 + .long 1061565504 + .long 0 + .long 3220176896 + .long 1972655565 + .long 3215120485 + .long 1073741824 + .long 3156641526 + .long 220529721 + .long 1062452281 + .long 0 + .long 3220176896 + .long 4044216340 + .long 3215531877 + .long 0 + .long 1009324733 + .long 3810305407 + .long 1063179572 + .long 0 + .long 3220176896 + .long 2046304480 + .long 3215943022 + .long 3758096384 + .long 1008919019 + .long 4269262315 + .long 1063662162 + .long 0 + .long 3220176896 + .long 2462980598 + .long 3216168224 + .long 2684354560 + .long 1011458184 + .long 1118107366 + .long 1064187139 + .long 0 + .long 3220176896 + .long 177906713 + .long 3216373456 + .long 3221225472 + .long 1011826722 + .long 393047345 + .long 1064548654 + .long 0 + .long 3220176896 + .long 3156849708 + .long 3216578470 + .long 3221225472 + .long 1010706200 + .long 1227670166 + .long 1064891649 + .long 0 + .long 3220176896 + .long 3349070549 + .long 3216783237 + .long 3758096384 + .long 1009054621 + .long 2402293340 + .long 1065274823 + .long 0 + .long 3220176896 + .long 1453945614 + .long 3216987726 + .long 1610612736 + .long 3158976260 + .long 2592747447 + .long 1065525667 + .long 0 + .long 3220176896 + .long 3470456183 + .long 3217111536 + .long 1073741824 + .long 1013261123 + .long 1037482584 + .long 1065757344 + .long 0 + .long 3220176896 + .long 1854824762 + .long 3217213456 + .long 2684354560 + .long 3159437312 + .long 3451754846 + .long 1066009014 + .long 0 + .long 3220176896 + .long 2972270170 + .long 3217315190 + .long 1073741824 + .long 1012041122 + .long 1672287667 + .long 1066280641 + .long 0 + .long 3220176896 + .long 1149976518 + .long 3217416724 + .long 1610612736 + .long 3160748543 + .long 2346447124 + .long 1066486987 + .long 0 + .long 3220176896 + .long 3729833777 + .long 3217518041 + .long 3758096384 + .long 3160528366 + .long 18115067 + .long 1066642694 + .long 0 + .long 3220176896 + .long 1013556747 + .long 3217619128 + .long 2684354560 + .long 1013083417 + .long 2660899430 + .long 1066808312 + .long 0 + .long 3220176896 + .long 632292433 + .long 3217719968 + .long 3758096384 + .long 1013479685 + .long 1935888103 + .long 1066983818 + .long 0 + .long 3220176896 + .long 1786662755 + .long 3217820546 + .long 2147483648 + .long 1008398659 + .long 288924873 + .long 1067169185 + .long 0 + .long 3220176896 + .long 3846521617 + .long 3217920847 + .long 536870912 + .long 3160890258 + .long 2377770267 + .long 1067364384 + .long 0 + .long 3220176896 + .long 2065784603 + .long 3218020857 + .long 3758096384 + .long 1013198318 + .long 3250111450 + .long 1067509877 + .long 0 + .long 3220176896 + .long 238550446 + .long 3218100152 + .long 2684354560 + .long 1006899917 + .long 2306566604 + .long 1067617265 + .long 0 + .long 3220176896 + .long 1655830135 + .long 3218149842 + .long 0 + .long 3161990338 + .long 1913604284 + .long 1067729523 + .long 0 + .long 3220176896 + .long 1062001470 + .long 3218199364 + .long 0 + .long 1013391572 + .long 2476548698 + .long 1067846634 + .long 0 + .long 3220176896 + .long 785751814 + .long 3218248710 + .long 2684354560 + .long 1014354573 + .long 1261629236 + .long 1067968581 + .long 0 + .long 3220176896 + .long 3269558610 + .long 3218297872 + .long 536870912 + .long 1014221568 + .long 997322465 + .long 1068095345 + .long 0 + .long 3220176896 + .long 2484561409 + .long 3218346844 + .long 1073741824 + .long 3161508220 + .long 1296295961 + .long 1068226907 + .long 0 + .long 3220176896 + .long 1115219818 + .long 3218395618 + .long 0 + .long 3160555890 + .long 2962723252 + .long 1068363247 + .long 0 + .long 3220176896 + .long 1974149085 + .long 3218444186 + .long 3221225472 + .long 1008664000 + .long 4002549419 + .long 1068501644 + .long 0 + .long 3220176896 + .long 3711903686 + .long 3218492541 + .long 1073741824 + .long 3159428395 + .long 1234824733 + .long 1068574562 + .long 0 + .long 3220176896 + .long 821708191 + .long 3218540677 + .long 3758096384 + .long 1014254361 + .long 3996842794 + .long 1068649836 + .long 0 + .long 3220176896 + .long 824036583 + .long 3218588585 + .long 0 + .long 3155796978 + .long 2255197647 + .long 1068727457 + .long 0 + .long 3220176896 + .long 2796464483 + .long 3218636258 + .long 3221225472 + .long 1013394669 + .long 1638976426 + .long 1068807412 + .long 0 + .long 3220176896 + .long 1673302999 + .long 3218683690 + .long 2147483648 + .long 3160835121 + .long 1972483635 + .long 1068889689 + .long 0 + .long 3220176896 + .long 1135144330 + .long 3218730873 + .long 536870912 + .long 3160857217 + .long 1577996576 + .long 1068974276 + .long 0 + .long 3220176896 + .long 728580042 + .long 3218777800 + .long 1610612736 + .long 1014849296 + .long 1578746984 + .long 1069061160 + .long 0 + .long 3220176896 + .long 165764288 + .long 3218824464 + .long 3221225472 + .long 3160781666 + .long 1612193054 + .long 1069150328 + .long 0 + .long 3220176896 + .long 3623952103 + .long 3218870857 + .long 2684354560 + .long 1014502314 + .long 4133449816 + .long 1069241766 + .long 0 + .long 3220176896 + .long 2570175582 + .long 3218916974 + .long 1073741824 + .long 3159786766 + .long 1539072807 + .long 1069335462 + .long 0 + .long 3220176896 + .long 1535566729 + .long 3218962807 + .long 2147483648 + .long 3161805036 + .long 1945768569 + .long 1069431400 + .long 0 + .long 3220176896 + .long 939980347 + .long 3219008349 + .long 0 + .long 3160280457 + .long 3429717432 + .long 1069529566 + .long 0 + .long 3220176896 + .long 1391425750 + .long 3219053593 + .long 3221225472 + .long 1014878455 + .long 1312926554 + .long 1069588733 + .long 0 + .long 3220176896 + .long 3690502842 + .long 3219098532 + .long 3221225472 + .long 1009970207 + .long 1663679671 + .long 1069640022 + .long 0 + .long 3220176896 + .long 2269920951 + .long 3219135740 + .long 3758096384 + .long 1014188597 + .long 3952756490 + .long 1069692402 + .long 0 + .long 3220176896 + .long 2569207790 + .long 3219157895 + .long 1073741824 + .long 1015699969 + .long 69903290 + .long 1069745867 + .long 0 + .long 3220176896 + .long 1297975695 + .long 3219179888 + .long 3221225472 + .long 1015600087 + .long 2678847490 + .long 1069800406 + .long 0 + .long 3220176896 + .long 1411074851 + .long 3219201715 + .long 1610612736 + .long 1016001083 + .long 2272832445 + .long 1069856013 + .long 0 + .long 3220176896 + .long 1675549513 + .long 3219223373 + .long 3221225472 + .long 1015541490 + .long 1539668340 + .long 1069912679 + .long 0 + .long 3220176896 + .long 967731400 + .long 3219244859 + .long 536870912 + .long 3163235805 + .long 2482246777 + .long 1069970395 + .long 0 + .long 3220176896 + .long 2570316633 + .long 3219266169 + .long 1610612736 + .long 1015261105 + .long 2129093113 + .long 1070029153 + .long 0 + .long 3220176896 + .long 1289556703 + .long 3219287301 + .long 536870912 + .long 1015405172 + .long 1129922991 + .long 1070088944 + .long 0 + .long 3220176896 + .long 637203434 + .long 3219308251 + .long 3221225472 + .long 1011960193 + .long 3761365757 + .long 1070149758 + .long 0 + .long 3220176896 + .long 4242632757 + .long 3219329015 + .long 536870912 + .long 1013906630 + .long 752919289 + .long 1070211588 + .long 0 + .long 3220176896 + .long 2969983475 + .long 3219349592 + .long 2684354560 + .long 1015151795 + .long 3652612115 + .long 1070274422 + .long 0 + .long 3220176896 + .long 689983673 + .long 3219369978 + .long 3758096384 + .long 3162390053 + .long 1883353036 + .long 1070338253 + .long 0 + .long 3220176896 + .long 1397053140 + .long 3219390169 + .long 1610612736 + .long 3162728726 + .long 1403757309 + .long 1070403070 + .long 0 + .long 3220176896 + .long 621354454 + .long 3219410163 + .long 536870912 + .long 3160934250 + .long 3239527685 + .long 1070468863 + .long 0 + .long 3220176896 + .long 2610628921 + .long 3219429956 + .long 1610612736 + .long 1015185121 + .long 3489768009 + .long 1070535623 + .long 0 + .long 3220176896 + .long 3152274921 + .long 3219449546 + .long 3758096384 + .long 3160654483 + .long 2371640770 + .long 3218072499 + .long 0 + .long 3219128320 + .long 2460177814 + .long 3219468930 + .long 2147483648 + .long 1014633195 + .long 2309668539 + .long 3218003836 + .long 0 + .long 3219128320 + .long 881650848 + .long 3219488105 + .long 2147483648 + .long 1015502624 + .long 2081278341 + .long 3217934237 + .long 0 + .long 3219128320 + .long 3194290572 + .long 3219507067 + .long 2147483648 + .long 3162532330 + .long 3753901657 + .long 3217863712 + .long 0 + .long 3219128320 + .long 1427975391 + .long 3219525815 + .long 1073741824 + .long 1014124979 + .long 1403691706 + .long 3217792273 + .long 0 + .long 3219128320 + .long 636516413 + .long 3219544345 + .long 3758096384 + .long 3163307364 + .long 2583490354 + .long 3217719929 + .long 0 + .long 3219128320 + .long 1719614413 + .long 3219562654 + .long 0 + .long 1015799092 + .long 2546065654 + .long 3217646692 + .long 0 + .long 3219128320 + .long 1424664751 + .long 3219580740 + .long 3221225472 + .long 1015921667 + .long 1416934267 + .long 3217572573 + .long 0 + .long 3219128320 + .long 938475414 + .long 3219598600 + .long 0 + .long 3162559727 + .long 4187227697 + .long 3217497582 + .long 0 + .long 3219128320 + .long 1594061409 + .long 3219616231 + .long 2147483648 + .long 3161837518 + .long 3526603391 + .long 3217421732 + .long 0 + .long 3219128320 + .long 577417135 + .long 3219633631 + .long 2684354560 + .long 1014035767 + .long 1250776663 + .long 3217345034 + .long 0 + .long 3219128320 + .long 3814135665 + .long 3219650796 + .long 3221225472 + .long 1015662808 + .long 4019165092 + .long 3217267498 + .long 0 + .long 3219128320 + .long 201299822 + .long 3219667726 + .long 3758096384 + .long 1014428704 + .long 1852581091 + .long 3217189138 + .long 0 + .long 3219128320 + .long 263859903 + .long 3219684416 + .long 0 + .long 1015208636 + .long 2485417816 + .long 3217109964 + .long 0 + .long 3219128320 + .long 1796544321 + .long 3219700864 + .long 536870912 + .long 1015203297 + .long 2586490530 + .long 3217028810 + .long 0 + .long 3219128320 + .long 2750387213 + .long 3219717068 + .long 2147483648 + .long 1013374889 + .long 1224902090 + .long 3216867281 + .long 0 + .long 3219128320 + .long 1234330619 + .long 3219733026 + .long 2684354560 + .long 3162756121 + .long 2285031318 + .long 3216704197 + .long 0 + .long 3219128320 + .long 4106737474 + .long 3219748734 + .long 2684354560 + .long 1015108729 + .long 3876290983 + .long 3216539583 + .long 0 + .long 3219128320 + .long 1207142209 + .long 3219764192 + .long 2147483648 + .long 1015221986 + .long 802660176 + .long 3216373465 + .long 0 + .long 3219128320 + .long 4012486548 + .long 3219779395 + .long 2684354560 + .long 3162185212 + .long 1726519029 + .long 3216205866 + .long 0 + .long 3219128320 + .long 2688952194 + .long 3219794343 + .long 0 + .long 1014048955 + .long 3382663878 + .long 3216036812 + .long 0 + .long 3219128320 + .long 453180130 + .long 3219809033 + .long 1073741824 + .long 1014927633 + .long 2598800519 + .long 3215750067 + .long 0 + .long 3219128320 + .long 688824739 + .long 3219823462 + .long 3758096384 + .long 3157915184 + .long 1038988426 + .long 3215406294 + .long 0 + .long 3219128320 + .long 2653017361 + .long 3219837628 + .long 0 + .long 1015316414 + .long 1102361128 + .long 3215059765 + .long 0 + .long 3219128320 + .long 1477771776 + .long 3219851530 + .long 536870912 + .long 1015621338 + .long 2880516564 + .long 3214487049 + .long 0 + .long 3219128320 + .long 1056266002 + .long 3219865165 + .long 2684354560 + .long 1015985848 + .long 1220541286 + .long 3213681126 + .long 0 + .long 3219128320 + .long 1159294526 + .long 3219878531 + .long 536870912 + .long 1015793311 + .long 1279178457 + .long 3211590791 + .long 0 + .long 3219128320 + .long 1731563730 + .long 3219891626 + .long 536870912 + .long 3163023950 + .long 31019393 + .long 1065162441 + .long 0 + .long 3219128320 + .long 2892993834 + .long 3219904448 + .long 536870912 + .long 1015555495 + .long 3506991783 + .long 1066548842 + .long 0 + .long 3219128320 + .long 645027145 + .long 3219916996 + .long 3221225472 + .long 3160085887 + .long 2140183630 + .long 1067272748 + .long 0 + .long 3219128320 + .long 4051746225 + .long 3219929266 + .long 1610612736 + .long 1014423729 + .long 600368053 + .long 1067725893 + .long 0 + .long 3219128320 + .long 881357723 + .long 3219941259 + .long 3221225472 + .long 3161294538 + .long 913431823 + .long 1068092555 + .long 0 + .long 3219128320 + .long 557060597 + .long 3219952971 + .long 0 + .long 1012071286 + .long 1073154251 + .long 1068461489 + .long 0 + .long 3219128320 + .long 4093443164 + .long 3219964400 + .long 536870912 + .long 3162396513 + .long 3631910143 + .long 1068665791 + .long 0 + .long 3219128320 + .long 4097623923 + .long 3219975546 + .long 2684354560 + .long 1012824939 + .long 1380647130 + .long 1068852447 + .long 0 + .long 3219128320 + .long 1950234076 + .long 3219986407 + .long 536870912 + .long 1011941850 + .long 4049357271 + .long 1069040154 + .long 0 + .long 3219128320 + .long 3511535930 + .long 3219996980 + .long 2147483648 + .long 1015344978 + .long 1896722595 + .long 1069228886 + .long 0 + .long 3219128320 + .long 1942611595 + .long 3220007265 + .long 3221225472 + .long 1014926433 + .long 1699043957 + .long 1069418613 + .long 0 + .long 3219128320 + .long 3476196678 + .long 3220017259 + .long 0 + .long 3161741286 + .long 3296146332 + .long 3216969380 + .long 0 + .long 3218079744 + .long 1647878299 + .long 3220026962 + .long 3758096384 + .long 1014685415 + .long 3286832763 + .long 3216777748 + .long 0 + .long 3218079744 + .long 3066872380 + .long 3220036371 + .long 3221225472 + .long 3163044919 + .long 1962712856 + .long 3216585207 + .long 0 + .long 3218079744 + .long 1647164971 + .long 3220045486 + .long 2147483648 + .long 1015354602 + .long 3601629044 + .long 3216391785 + .long 0 + .long 3218079744 + .long 83265253 + .long 3220054305 + .long 1610612736 + .long 1015026887 + .long 165911977 + .long 3216197513 + .long 0 + .long 3218079744 + .long 1261158782 + .long 3220062826 + .long 2147483648 + .long 3163195192 + .long 1348311045 + .long 3216002418 + .long 0 + .long 3218079744 + .long 3964199186 + .long 3220071048 + .long 3758096384 + .long 1013017430 + .long 386665102 + .long 3215630470 + .long 0 + .long 3218079744 + .long 2873938189 + .long 3220078971 + .long 1610612736 + .long 1014827774 + .long 1991047213 + .long 3215237169 + .long 0 + .long 3218079744 + .long 1455828442 + .long 3220086593 + .long 3758096384 + .long 3162988721 + .long 4107121629 + .long 3214750787 + .long 0 + .long 3218079744 + .long 3370060660 + .long 3220093912 + .long 1610612736 + .long 3162270860 + .long 723478390 + .long 3213958438 + .long 0 + .long 3218079744 + .long 3882371427 + .long 3220100928 + .long 2147483648 + .long 3162407623 + .long 2382326656 + .long 3212045827 + .long 0 + .long 3218079744 + .long 2749658050 + .long 3220107640 + .long 1610612736 + .long 3162910986 + .long 2614369450 + .long 1065140432 + .long 0 + .long 3218079744 + .long 4220661975 + .long 3220114046 + .long 3221225472 + .long 3161795706 + .long 3587565429 + .long 1066624384 + .long 0 + .long 3218079744 + .long 4151720666 + .long 3220120146 + .long 0 + .long 1015155896 + .long 2886567144 + .long 1067426796 + .long 0 + .long 3218079744 + .long 2892293513 + .long 3220125939 + .long 2684354560 + .long 1014856623 + .long 1765797566 + .long 1067840895 + .long 0 + .long 3218079744 + .long 990588717 + .long 3220131424 + .long 3758096384 + .long 1014558209 + .long 240740309 + .long 1068244255 + .long 0 + .long 3218079744 + .long 3489094832 + .long 3220136599 + .long 536870912 + .long 3161809431 + .long 2034433221 + .long 3215832935 + .long 0 + .long 3217031168 + .long 2745245815 + .long 3220141465 + .long 3221225472 + .long 3163049777 + .long 304938777 + .long 3215427665 + .long 0 + .long 3217031168 + .long 4201728937 + .long 3220146020 + .long 1610612736 + .long 3162157654 + .long 3299146087 + .long 3215021530 + .long 0 + .long 3217031168 + .long 617154971 + .long 3220150265 + .long 3758096384 + .long 1015950048 + .long 1953696209 + .long 3214295171 + .long 0 + .long 3217031168 + .long 2131272983 + .long 3220154197 + .long 3221225472 + .long 1015521448 + .long 3987691371 + .long 3213074188 + .long 0 + .long 3217031168 + .long 1905645377 + .long 3220157817 + .long 1610612736 + .long 3161571244 + .long 718380601 + .long 1063597621 + .long 0 + .long 3217031168 + .long 1893834707 + .long 3220161124 + .long 1610612736 + .long 3162631302 + .long 3272206680 + .long 1066288081 + .long 0 + .long 3217031168 + .long 4251821691 + .long 3220164117 + .long 2147483648 + .long 1014357359 + .long 257503056 + .long 1067164005 + .long 0 + .long 3217031168 + .long 2748392742 + .long 3220166797 + .long 536870912 + .long 1015578102 + .long 711626851 + .long 3214400320 + .long 0 + .long 3215982592 + .long 4240268041 + .long 3220169162 + .long 536870912 + .long 3161072611 + .long 2523975598 + .long 3213273348 + .long 0 + .long 3215982592 + .long 2902558778 + .long 3220171213 + .long 3221225472 + .long 3160744428 + .long 3237733378 + .long 1062425136 + .long 0 + .long 3215982592 + .long 1703834029 + .long 3220172949 + .long 3758096384 + .long 3162512012 + .long 1003003824 + .long 1066107496 + .long 0 + .long 3215982592 + .long 3816385918 + .long 3220174369 + .long 536870912 + .long 1013733308 + .long 2896342633 + .long 3212231467 + .long 0 + .long 3214934016 + .long 4026464093 + .long 3220175474 + .long 3221225472 + .long 1015592141 + .long 561145352 + .long 1065056936 + .long 0 + .long 3214934016 + .long 1619315981 + .long 3220176264 + .long 1073741824 + .long 1015100749 + .long 210035182 + .long 1064007864 + .long 0 + .long 3213885440 + .long 379294427 + .long 3220176738 + .long 3221225472 + .long 3162889635 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3220176896 + .long 0 + .long 0 + .long 210035182 + .long 3211491512 + .long 0 + .long 1066401792 + .long 379294427 + .long 3220176738 + .long 3221225472 + .long 3162889635 + .long 561145352 + .long 3212540584 + .long 0 + .long 1067450368 + .long 1619315981 + .long 3220176264 + .long 1073741824 + .long 1015100749 + .long 2896342633 + .long 1064747819 + .long 0 + .long 1067450368 + .long 4026464093 + .long 3220175474 + .long 3221225472 + .long 1015592141 + .long 1003003824 + .long 3213591144 + .long 0 + .long 1068498944 + .long 3816385918 + .long 3220174369 + .long 536870912 + .long 1013733308 + .long 3237733378 + .long 3209908784 + .long 0 + .long 1068498944 + .long 1703834029 + .long 3220172949 + .long 3758096384 + .long 3162512012 + .long 2523975598 + .long 1065789700 + .long 0 + .long 1068498944 + .long 2902558778 + .long 3220171213 + .long 3221225472 + .long 3160744428 + .long 711626851 + .long 1066916672 + .long 0 + .long 1068498944 + .long 4240268041 + .long 3220169162 + .long 536870912 + .long 3161072611 + .long 257503056 + .long 3214647653 + .long 0 + .long 1069547520 + .long 2748392742 + .long 3220166797 + .long 536870912 + .long 1015578102 + .long 3272206680 + .long 3213771729 + .long 0 + .long 1069547520 + .long 4251821691 + .long 3220164117 + .long 2147483648 + .long 1014357359 + .long 718380601 + .long 3211081269 + .long 0 + .long 1069547520 + .long 1893834707 + .long 3220161124 + .long 1610612736 + .long 3162631302 + .long 3987691371 + .long 1065590540 + .long 0 + .long 1069547520 + .long 1905645377 + .long 3220157817 + .long 1610612736 + .long 3161571244 + .long 1953696209 + .long 1066811523 + .long 0 + .long 1069547520 + .long 2131272983 + .long 3220154197 + .long 3221225472 + .long 1015521448 + .long 3299146087 + .long 1067537882 + .long 0 + .long 1069547520 + .long 617154971 + .long 3220150265 + .long 3758096384 + .long 1015950048 + .long 304938777 + .long 1067944017 + .long 0 + .long 1069547520 + .long 4201728937 + .long 3220146020 + .long 1610612736 + .long 3162157654 + .long 2034433221 + .long 1068349287 + .long 0 + .long 1069547520 + .long 2745245815 + .long 3220141465 + .long 3221225472 + .long 3163049777 + .long 240740309 + .long 3215727903 + .long 0 + .long 1070596096 + .long 3489094832 + .long 3220136599 + .long 536870912 + .long 3161809431 + .long 1765797566 + .long 3215324543 + .long 0 + .long 1070596096 + .long 990588717 + .long 3220131424 + .long 3758096384 + .long 1014558209 + .long 2886567144 + .long 3214910444 + .long 0 + .long 1070596096 + .long 2892293513 + .long 3220125939 + .long 2684354560 + .long 1014856623 + .long 3587565429 + .long 3214108032 + .long 0 + .long 1070596096 + .long 4151720666 + .long 3220120146 + .long 0 + .long 1015155896 + .long 2614369450 + .long 3212624080 + .long 0 + .long 1070596096 + .long 4220661975 + .long 3220114046 + .long 3221225472 + .long 3161795706 + .long 2382326656 + .long 1064562179 + .long 0 + .long 1070596096 + .long 2749658050 + .long 3220107640 + .long 1610612736 + .long 3162910986 + .long 723478390 + .long 1066474790 + .long 0 + .long 1070596096 + .long 3882371427 + .long 3220100928 + .long 2147483648 + .long 3162407623 + .long 4107121629 + .long 1067267139 + .long 0 + .long 1070596096 + .long 3370060660 + .long 3220093912 + .long 1610612736 + .long 3162270860 + .long 1991047213 + .long 1067753521 + .long 0 + .long 1070596096 + .long 1455828442 + .long 3220086593 + .long 3758096384 + .long 3162988721 + .long 386665102 + .long 1068146822 + .long 0 + .long 1070596096 + .long 2873938189 + .long 3220078971 + .long 1610612736 + .long 1014827774 + .long 1348311045 + .long 1068518770 + .long 0 + .long 1070596096 + .long 3964199186 + .long 3220071048 + .long 3758096384 + .long 1013017430 + .long 165911977 + .long 1068713865 + .long 0 + .long 1070596096 + .long 1261158782 + .long 3220062826 + .long 2147483648 + .long 3163195192 + .long 3601629044 + .long 1068908137 + .long 0 + .long 1070596096 + .long 83265253 + .long 3220054305 + .long 1610612736 + .long 1015026887 + .long 1962712856 + .long 1069101559 + .long 0 + .long 1070596096 + .long 1647164971 + .long 3220045486 + .long 2147483648 + .long 1015354602 + .long 3286832763 + .long 1069294100 + .long 0 + .long 1070596096 + .long 3066872380 + .long 3220036371 + .long 3221225472 + .long 3163044919 + .long 3296146332 + .long 1069485732 + .long 0 + .long 1070596096 + .long 1647878299 + .long 3220026962 + .long 3758096384 + .long 1014685415 + .long 1699043957 + .long 3216902261 + .long 0 + .long 1071644672 + .long 3476196678 + .long 3220017259 + .long 0 + .long 3161741286 + .long 1896722595 + .long 3216712534 + .long 0 + .long 1071644672 + .long 1942611595 + .long 3220007265 + .long 3221225472 + .long 1014926433 + .long 4049357271 + .long 3216523802 + .long 0 + .long 1071644672 + .long 3511535930 + .long 3219996980 + .long 2147483648 + .long 1015344978 + .long 1380647130 + .long 3216336095 + .long 0 + .long 1071644672 + .long 1950234076 + .long 3219986407 + .long 536870912 + .long 1011941850 + .long 3631910143 + .long 3216149439 + .long 0 + .long 1071644672 + .long 4097623923 + .long 3219975546 + .long 2684354560 + .long 1012824939 + .long 1073154251 + .long 3215945137 + .long 0 + .long 1071644672 + .long 4093443164 + .long 3219964400 + .long 536870912 + .long 3162396513 + .long 913431823 + .long 3215576203 + .long 0 + .long 1071644672 + .long 557060597 + .long 3219952971 + .long 0 + .long 1012071286 + .long 600368053 + .long 3215209541 + .long 0 + .long 1071644672 + .long 881357723 + .long 3219941259 + .long 3221225472 + .long 3161294538 + .long 2140183630 + .long 3214756396 + .long 0 + .long 1071644672 + .long 4051746225 + .long 3219929266 + .long 1610612736 + .long 1014423729 + .long 3506991783 + .long 3214032490 + .long 0 + .long 1071644672 + .long 645027145 + .long 3219916996 + .long 3221225472 + .long 3160085887 + .long 31019393 + .long 3212646089 + .long 0 + .long 1071644672 + .long 2892993834 + .long 3219904448 + .long 536870912 + .long 1015555495 + .long 1279178457 + .long 1064107143 + .long 0 + .long 1071644672 + .long 1731563730 + .long 3219891626 + .long 536870912 + .long 3163023950 + .long 1220541286 + .long 1066197478 + .long 0 + .long 1071644672 + .long 1159294526 + .long 3219878531 + .long 536870912 + .long 1015793311 + .long 2880516564 + .long 1067003401 + .long 0 + .long 1071644672 + .long 1056266002 + .long 3219865165 + .long 2684354560 + .long 1015985848 + .long 1102361128 + .long 1067576117 + .long 0 + .long 1071644672 + .long 1477771776 + .long 3219851530 + .long 536870912 + .long 1015621338 + .long 1038988426 + .long 1067922646 + .long 0 + .long 1071644672 + .long 2653017361 + .long 3219837628 + .long 0 + .long 1015316414 + .long 2598800519 + .long 1068266419 + .long 0 + .long 1071644672 + .long 688824739 + .long 3219823462 + .long 3758096384 + .long 3157915184 + .long 3382663878 + .long 1068553164 + .long 0 + .long 1071644672 + .long 453180130 + .long 3219809033 + .long 1073741824 + .long 1014927633 + .long 1726519029 + .long 1068722218 + .long 0 + .long 1071644672 + .long 2688952194 + .long 3219794343 + .long 0 + .long 1014048955 + .long 802660176 + .long 1068889817 + .long 0 + .long 1071644672 + .long 4012486548 + .long 3219779395 + .long 2684354560 + .long 3162185212 + .long 3876290983 + .long 1069055935 + .long 0 + .long 1071644672 + .long 1207142209 + .long 3219764192 + .long 2147483648 + .long 1015221986 + .long 2285031318 + .long 1069220549 + .long 0 + .long 1071644672 + .long 4106737474 + .long 3219748734 + .long 2684354560 + .long 1015108729 + .long 1224902090 + .long 1069383633 + .long 0 + .long 1071644672 + .long 1234330619 + .long 3219733026 + .long 2684354560 + .long 3162756121 + .long 2586490530 + .long 1069545162 + .long 0 + .long 1071644672 + .long 2750387213 + .long 3219717068 + .long 2147483648 + .long 1013374889 + .long 2485417816 + .long 1069626316 + .long 0 + .long 1071644672 + .long 1796544321 + .long 3219700864 + .long 536870912 + .long 1015203297 + .long 1852581091 + .long 1069705490 + .long 0 + .long 1071644672 + .long 263859903 + .long 3219684416 + .long 0 + .long 1015208636 + .long 4019165092 + .long 1069783850 + .long 0 + .long 1071644672 + .long 201299822 + .long 3219667726 + .long 3758096384 + .long 1014428704 + .long 1250776663 + .long 1069861386 + .long 0 + .long 1071644672 + .long 3814135665 + .long 3219650796 + .long 3221225472 + .long 1015662808 + .long 3526603391 + .long 1069938084 + .long 0 + .long 1071644672 + .long 577417135 + .long 3219633631 + .long 2684354560 + .long 1014035767 + .long 4187227697 + .long 1070013934 + .long 0 + .long 1071644672 + .long 1594061409 + .long 3219616231 + .long 2147483648 + .long 3161837518 + .long 1416934267 + .long 1070088925 + .long 0 + .long 1071644672 + .long 938475414 + .long 3219598600 + .long 0 + .long 3162559727 + .long 2546065654 + .long 1070163044 + .long 0 + .long 1071644672 + .long 1424664751 + .long 3219580740 + .long 3221225472 + .long 1015921667 + .long 2583490354 + .long 1070236281 + .long 0 + .long 1071644672 + .long 1719614413 + .long 3219562654 + .long 0 + .long 1015799092 + .long 1403691706 + .long 1070308625 + .long 0 + .long 1071644672 + .long 636516413 + .long 3219544345 + .long 3758096384 + .long 3163307364 + .long 3753901657 + .long 1070380064 + .long 0 + .long 1071644672 + .long 1427975391 + .long 3219525815 + .long 1073741824 + .long 1014124979 + .long 2081278341 + .long 1070450589 + .long 0 + .long 1071644672 + .long 3194290572 + .long 3219507067 + .long 2147483648 + .long 3162532330 + .long 2309668539 + .long 1070520188 + .long 0 + .long 1071644672 + .long 881650848 + .long 3219488105 + .long 2147483648 + .long 1015502624 + .long 2371640770 + .long 1070588851 + .long 0 + .long 1071644672 + .long 2460177814 + .long 3219468930 + .long 2147483648 + .long 1014633195 + .long 3489768009 + .long 3218019271 + .long 0 + .long 1072693248 + .long 3152274921 + .long 3219449546 + .long 3758096384 + .long 3160654483 + .long 3239527685 + .long 3217952511 + .long 0 + .long 1072693248 + .long 2610628921 + .long 3219429956 + .long 1610612736 + .long 1015185121 + .long 1403757309 + .long 3217886718 + .long 0 + .long 1072693248 + .long 621354454 + .long 3219410163 + .long 536870912 + .long 3160934250 + .long 1883353036 + .long 3217821901 + .long 0 + .long 1072693248 + .long 1397053140 + .long 3219390169 + .long 1610612736 + .long 3162728726 + .long 3652612115 + .long 3217758070 + .long 0 + .long 1072693248 + .long 689983673 + .long 3219369978 + .long 3758096384 + .long 3162390053 + .long 752919289 + .long 3217695236 + .long 0 + .long 1072693248 + .long 2969983475 + .long 3219349592 + .long 2684354560 + .long 1015151795 + .long 3761365757 + .long 3217633406 + .long 0 + .long 1072693248 + .long 4242632757 + .long 3219329015 + .long 536870912 + .long 1013906630 + .long 1129922991 + .long 3217572592 + .long 0 + .long 1072693248 + .long 637203434 + .long 3219308251 + .long 3221225472 + .long 1011960193 + .long 2129093113 + .long 3217512801 + .long 0 + .long 1072693248 + .long 1289556703 + .long 3219287301 + .long 536870912 + .long 1015405172 + .long 2482246777 + .long 3217454043 + .long 0 + .long 1072693248 + .long 2570316633 + .long 3219266169 + .long 1610612736 + .long 1015261105 + .long 1539668340 + .long 3217396327 + .long 0 + .long 1072693248 + .long 967731400 + .long 3219244859 + .long 536870912 + .long 3163235805 + .long 2272832445 + .long 3217339661 + .long 0 + .long 1072693248 + .long 1675549513 + .long 3219223373 + .long 3221225472 + .long 1015541490 + .long 2678847490 + .long 3217284054 + .long 0 + .long 1072693248 + .long 1411074851 + .long 3219201715 + .long 1610612736 + .long 1016001083 + .long 69903290 + .long 3217229515 + .long 0 + .long 1072693248 + .long 1297975695 + .long 3219179888 + .long 3221225472 + .long 1015600087 + .long 3952756490 + .long 3217176050 + .long 0 + .long 1072693248 + .long 2569207790 + .long 3219157895 + .long 1073741824 + .long 1015699969 + .long 1663679671 + .long 3217123670 + .long 0 + .long 1072693248 + .long 2269920951 + .long 3219135740 + .long 3758096384 + .long 1014188597 + .long 1312926554 + .long 3217072381 + .long 0 + .long 1072693248 + .long 3690502842 + .long 3219098532 + .long 3221225472 + .long 1009970207 + .long 3429717432 + .long 3217013214 + .long 0 + .long 1072693248 + .long 1391425750 + .long 3219053593 + .long 3221225472 + .long 1014878455 + .long 1945768569 + .long 3216915048 + .long 0 + .long 1072693248 + .long 939980347 + .long 3219008349 + .long 0 + .long 3160280457 + .long 1539072807 + .long 3216819110 + .long 0 + .long 1072693248 + .long 1535566729 + .long 3218962807 + .long 2147483648 + .long 3161805036 + .long 4133449816 + .long 3216725414 + .long 0 + .long 1072693248 + .long 2570175582 + .long 3218916974 + .long 1073741824 + .long 3159786766 + .long 1612193054 + .long 3216633976 + .long 0 + .long 1072693248 + .long 3623952103 + .long 3218870857 + .long 2684354560 + .long 1014502314 + .long 1578746984 + .long 3216544808 + .long 0 + .long 1072693248 + .long 165764288 + .long 3218824464 + .long 3221225472 + .long 3160781666 + .long 1577996576 + .long 3216457924 + .long 0 + .long 1072693248 + .long 728580042 + .long 3218777800 + .long 1610612736 + .long 1014849296 + .long 1972483635 + .long 3216373337 + .long 0 + .long 1072693248 + .long 1135144330 + .long 3218730873 + .long 536870912 + .long 3160857217 + .long 1638976426 + .long 3216291060 + .long 0 + .long 1072693248 + .long 1673302999 + .long 3218683690 + .long 2147483648 + .long 3160835121 + .long 2255197647 + .long 3216211105 + .long 0 + .long 1072693248 + .long 2796464483 + .long 3218636258 + .long 3221225472 + .long 1013394669 + .long 3996842794 + .long 3216133484 + .long 0 + .long 1072693248 + .long 824036583 + .long 3218588585 + .long 0 + .long 3155796978 + .long 1234824733 + .long 3216058210 + .long 0 + .long 1072693248 + .long 821708191 + .long 3218540677 + .long 3758096384 + .long 1014254361 + .long 4002549419 + .long 3215985292 + .long 0 + .long 1072693248 + .long 3711903686 + .long 3218492541 + .long 1073741824 + .long 3159428395 + .long 2962723252 + .long 3215846895 + .long 0 + .long 1072693248 + .long 1974149085 + .long 3218444186 + .long 3221225472 + .long 1008664000 + .long 1296295961 + .long 3215710555 + .long 0 + .long 1072693248 + .long 1115219818 + .long 3218395618 + .long 0 + .long 3160555890 + .long 997322465 + .long 3215578993 + .long 0 + .long 1072693248 + .long 2484561409 + .long 3218346844 + .long 1073741824 + .long 3161508220 + .long 1261629236 + .long 3215452229 + .long 0 + .long 1072693248 + .long 3269558610 + .long 3218297872 + .long 536870912 + .long 1014221568 + .long 2476548698 + .long 3215330282 + .long 0 + .long 1072693248 + .long 785751814 + .long 3218248710 + .long 2684354560 + .long 1014354573 + .long 1913604284 + .long 3215213171 + .long 0 + .long 1072693248 + .long 1062001470 + .long 3218199364 + .long 0 + .long 1013391572 + .long 2306566604 + .long 3215100913 + .long 0 + .long 1072693248 + .long 1655830135 + .long 3218149842 + .long 0 + .long 3161990338 + .long 3250111450 + .long 3214993525 + .long 0 + .long 1072693248 + .long 238550446 + .long 3218100152 + .long 2684354560 + .long 1006899917 + .long 2377770267 + .long 3214848032 + .long 0 + .long 1072693248 + .long 2065784603 + .long 3218020857 + .long 3758096384 + .long 1013198318 + .long 288924873 + .long 3214652833 + .long 0 + .long 1072693248 + .long 3846521617 + .long 3217920847 + .long 536870912 + .long 3160890258 + .long 1935888103 + .long 3214467466 + .long 0 + .long 1072693248 + .long 1786662755 + .long 3217820546 + .long 2147483648 + .long 1008398659 + .long 2660899430 + .long 3214291960 + .long 0 + .long 1072693248 + .long 632292433 + .long 3217719968 + .long 3758096384 + .long 1013479685 + .long 18115067 + .long 3214126342 + .long 0 + .long 1072693248 + .long 1013556747 + .long 3217619128 + .long 2684354560 + .long 1013083417 + .long 2346447124 + .long 3213970635 + .long 0 + .long 1072693248 + .long 3729833777 + .long 3217518041 + .long 3758096384 + .long 3160528366 + .long 1672287667 + .long 3213764289 + .long 0 + .long 1072693248 + .long 1149976518 + .long 3217416724 + .long 1610612736 + .long 3160748543 + .long 3451754846 + .long 3213492662 + .long 0 + .long 1072693248 + .long 2972270170 + .long 3217315190 + .long 1073741824 + .long 1012041122 + .long 1037482584 + .long 3213240992 + .long 0 + .long 1072693248 + .long 1854824762 + .long 3217213456 + .long 2684354560 + .long 3159437312 + .long 2592747447 + .long 3213009315 + .long 0 + .long 1072693248 + .long 3470456183 + .long 3217111536 + .long 1073741824 + .long 1013261123 + .long 2402293340 + .long 3212758471 + .long 0 + .long 1072693248 + .long 1453945614 + .long 3216987726 + .long 1610612736 + .long 3158976260 + .long 1227670166 + .long 3212375297 + .long 0 + .long 1072693248 + .long 3349070549 + .long 3216783237 + .long 3758096384 + .long 1009054621 + .long 393047345 + .long 3212032302 + .long 0 + .long 1072693248 + .long 3156849708 + .long 3216578470 + .long 3221225472 + .long 1010706200 + .long 1118107366 + .long 3211670787 + .long 0 + .long 1072693248 + .long 177906713 + .long 3216373456 + .long 3221225472 + .long 1011826722 + .long 4269262315 + .long 3211145810 + .long 0 + .long 1072693248 + .long 2462980598 + .long 3216168224 + .long 2684354560 + .long 1011458184 + .long 3810305407 + .long 3210663220 + .long 0 + .long 1072693248 + .long 2046304480 + .long 3215943022 + .long 3758096384 + .long 1008919019 + .long 220529721 + .long 3209935929 + .long 0 + .long 1072693248 + .long 4044216340 + .long 3215531877 + .long 0 + .long 1009324733 + .long 69373323 + .long 3209049152 + .long 0 + .long 1072693248 + .long 1972655565 + .long 3215120485 + .long 1073741824 + .long 3156641526 + .long 3650591271 + .long 3207838971 + .long 0 + .long 1072693248 + .long 4154680958 + .long 3214483797 + .long 0 + .long 1006312803 + .long 2376373521 + .long 3205741868 + .long 0 + .long 1072693248 + .long 4242458500 + .long 3213435345 + .long 2684354560 + .long 3156838286 + .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 239972940 + .long 1089470464 + .long 239972940 + .long 1089470464 + .long 239972940 + .long 1089470464 + .long 239972940 + .long 1089470464 + .long 239972940 + .long 1089470464 + .long 239972940 + .long 1089470464 + .long 239972940 + .long 1089470464 + .long 239972940 + .long 1089470464 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 1431651400 + .long 3217380693 + .long 1431651400 + .long 3217380693 + .long 1431651400 + .long 3217380693 + .long 1431651400 + .long 3217380693 + .long 1431651400 + .long 3217380693 + .long 1431651400 + .long 3217380693 + .long 1431651400 + .long 3217380693 + .long 1431651400 + .long 3217380693 + .long 2880656668 + .long 1065423119 + .long 2880656668 + .long 1065423119 + .long 2880656668 + .long 1065423119 + .long 2880656668 + .long 1065423119 + .long 2880656668 + .long 1065423119 + .long 2880656668 + .long 1065423119 + .long 2880656668 + .long 1065423119 + .long 2880656668 + .long 1065423119 + .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 1431653583 + .long 1067799893 + .long 1431653583 + .long 1067799893 + .long 1431653583 + .long 1067799893 + .long 1431653583 + .long 1067799893 + .long 1431653583 + .long 1067799893 + .long 1431653583 + .long 1067799893 + .long 1431653583 + .long 1067799893 + .long 1431653583 + .long 1067799893 + .long 2976101079 + .long 3210133866 + .long 2976101079 + .long 3210133866 + .long 2976101079 + .long 3210133866 + .long 2976101079 + .long 3210133866 + .long 2976101079 + .long 3210133866 + .long 2976101079 + .long 3210133866 + .long 2976101079 + .long 3210133866 + .long 2976101079 + .long 3210133866 + .type __svml_dsin_data_internal_ha,@object + .size __svml_dsin_data_internal_ha,17280 + .align 64 +__svml_dsin_reduction_data_internal: + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 5 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 10 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 20 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 40 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 81 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 162 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 325 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 651 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1303 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2607 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 5215 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 10430 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 20860 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 41721 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 83443 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 166886 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 333772 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 667544 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1335088 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2670176 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 5340353 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 10680707 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 21361414 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 42722829 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 85445659 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 170891318 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 341782637 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 683565275 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1367130551 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2734261102 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1173554908 + .long 1 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2347109817 + .long 2 + .long 0 + .long 0 + .long 0 + .long 0 + .long 399252338 + .long 5 + .long 0 + .long 0 + .long 0 + .long 0 + .long 798504676 + .long 10 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1597009353 + .long 20 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3194018707 + .long 40 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2093070119 + .long 81 + .long 0 + .long 0 + .long 0 + .long 0 + .long 4186140238 + .long 162 + .long 0 + .long 0 + .long 0 + .long 0 + .long 4077313180 + .long 325 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3859659065 + .long 651 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3424350834 + .long 1303 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2553734372 + .long 2607 + .long 0 + .long 0 + .long 0 + .long 0 + .long 812501448 + .long 5215 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1625002897 + .long 10430 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3250005794 + .long 20860 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2205044292 + .long 41721 + .long 0 + .long 0 + .long 0 + .long 0 + .long 115121288 + .long 83443 + .long 0 + .long 0 + .long 0 + .long 0 + .long 230242576 + .long 166886 + .long 0 + .long 0 + .long 0 + .long 0 + .long 460485152 + .long 333772 + .long 0 + .long 0 + .long 0 + .long 0 + .long 920970305 + .long 667544 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1841940610 + .long 1335088 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3683881221 + .long 2670176 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3072795146 + .long 5340353 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1850622997 + .long 10680707 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3701245994 + .long 21361414 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3107524692 + .long 42722829 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1920082089 + .long 85445659 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3840164178 + .long 170891318 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3385361061 + .long 341782637 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2475754826 + .long 683565275 + .long 0 + .long 0 + .long 0 + .long 0 + .long 656542356 + .long 1367130551 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1313084713 + .long 2734261102 + .long 0 + .long 0 + .long 1 + .long 0 + .long 2626169427 + .long 1173554908 + .long 0 + .long 0 + .long 2 + .long 0 + .long 957371559 + .long 2347109817 + .long 0 + .long 0 + .long 5 + .long 0 + .long 1914743119 + .long 399252338 + .long 0 + .long 0 + .long 10 + .long 0 + .long 3829486239 + .long 798504676 + .long 0 + .long 0 + .long 20 + .long 0 + .long 3364005183 + .long 1597009353 + .long 0 + .long 0 + .long 40 + .long 0 + .long 2433043071 + .long 3194018707 + .long 0 + .long 0 + .long 81 + .long 0 + .long 571118846 + .long 2093070119 + .long 0 + .long 0 + .long 162 + .long 0 + .long 1142237692 + .long 4186140238 + .long 0 + .long 0 + .long 325 + .long 0 + .long 2284475384 + .long 4077313180 + .long 0 + .long 0 + .long 651 + .long 0 + .long 273983472 + .long 3859659065 + .long 0 + .long 0 + .long 1303 + .long 0 + .long 547966945 + .long 3424350834 + .long 0 + .long 0 + .long 2607 + .long 0 + .long 1095933890 + .long 2553734372 + .long 0 + .long 0 + .long 5215 + .long 0 + .long 2191867780 + .long 812501448 + .long 0 + .long 0 + .long 10430 + .long 0 + .long 88768265 + .long 1625002897 + .long 0 + .long 0 + .long 20860 + .long 0 + .long 177536531 + .long 3250005794 + .long 0 + .long 0 + .long 41721 + .long 0 + .long 355073063 + .long 2205044292 + .long 0 + .long 0 + .long 83443 + .long 0 + .long 710146126 + .long 115121288 + .long 0 + .long 0 + .long 166886 + .long 0 + .long 1420292253 + .long 230242576 + .long 0 + .long 0 + .long 333772 + .long 0 + .long 2840584506 + .long 460485152 + .long 0 + .long 0 + .long 667544 + .long 0 + .long 1386201717 + .long 920970305 + .long 0 + .long 0 + .long 1335088 + .long 0 + .long 2772403434 + .long 1841940610 + .long 0 + .long 0 + .long 2670176 + .long 0 + .long 1249839573 + .long 3683881221 + .long 0 + .long 0 + .long 5340353 + .long 0 + .long 2499679147 + .long 3072795146 + .long 0 + .long 0 + .long 10680707 + .long 0 + .long 704390999 + .long 1850622997 + .long 0 + .long 0 + .long 21361414 + .long 0 + .long 1408781999 + .long 3701245994 + .long 0 + .long 0 + .long 42722829 + .long 0 + .long 2817563999 + .long 3107524692 + .long 0 + .long 0 + .long 85445659 + .long 0 + .long 1340160702 + .long 1920082089 + .long 0 + .long 0 + .long 170891318 + .long 0 + .long 2680321405 + .long 3840164178 + .long 0 + .long 0 + .long 341782637 + .long 0 + .long 1065675514 + .long 3385361061 + .long 0 + .long 0 + .long 683565275 + .long 0 + .long 2131351028 + .long 2475754826 + .long 0 + .long 0 + .long 1367130551 + .long 0 + .long 4262702056 + .long 656542356 + .long 0 + .long 0 + .long 2734261102 + .long 0 + .long 4230436817 + .long 1313084713 + .long 0 + .long 0 + .long 1173554908 + .long 1 + .long 4165906339 + .long 2626169427 + .long 0 + .long 0 + .long 2347109817 + .long 2 + .long 4036845383 + .long 957371559 + .long 0 + .long 0 + .long 399252338 + .long 5 + .long 3778723471 + .long 1914743119 + .long 0 + .long 0 + .long 798504676 + .long 10 + .long 3262479647 + .long 3829486239 + .long 0 + .long 0 + .long 1597009353 + .long 20 + .long 2229991998 + .long 3364005183 + .long 0 + .long 0 + .long 3194018707 + .long 40 + .long 165016701 + .long 2433043071 + .long 0 + .long 0 + .long 2093070119 + .long 81 + .long 330033402 + .long 571118846 + .long 0 + .long 0 + .long 4186140238 + .long 162 + .long 660066805 + .long 1142237692 + .long 0 + .long 0 + .long 4077313180 + .long 325 + .long 1320133610 + .long 2284475384 + .long 0 + .long 0 + .long 3859659065 + .long 651 + .long 2640267220 + .long 273983472 + .long 0 + .long 0 + .long 3424350834 + .long 1303 + .long 985567145 + .long 547966945 + .long 0 + .long 0 + .long 2553734372 + .long 2607 + .long 1971134291 + .long 1095933890 + .long 0 + .long 0 + .long 812501448 + .long 5215 + .long 3942268582 + .long 2191867780 + .long 0 + .long 0 + .long 1625002897 + .long 10430 + .long 3589569869 + .long 88768265 + .long 0 + .long 0 + .long 3250005794 + .long 20860 + .long 2884172442 + .long 177536531 + .long 0 + .long 0 + .long 2205044292 + .long 41721 + .long 1473377588 + .long 355073063 + .long 0 + .long 0 + .long 115121288 + .long 83443 + .long 2946755177 + .long 710146126 + .long 0 + .long 0 + .long 230242576 + .long 166886 + .long 1598543059 + .long 1420292253 + .long 0 + .long 0 + .long 460485152 + .long 333772 + .long 3197086118 + .long 2840584506 + .long 0 + .long 0 + .long 920970305 + .long 667544 + .long 2099204941 + .long 1386201717 + .long 0 + .long 0 + .long 1841940610 + .long 1335088 + .long 4198409883 + .long 2772403434 + .long 0 + .long 0 + .long 3683881221 + .long 2670176 + .long 4101852471 + .long 1249839573 + .long 0 + .long 0 + .long 3072795146 + .long 5340353 + .long 3908737646 + .long 2499679147 + .long 0 + .long 0 + .long 1850622997 + .long 10680707 + .long 3522507997 + .long 704390999 + .long 0 + .long 0 + .long 3701245994 + .long 21361414 + .long 2750048699 + .long 1408781999 + .long 0 + .long 0 + .long 3107524692 + .long 42722829 + .long 1205130103 + .long 2817563999 + .long 0 + .long 0 + .long 1920082089 + .long 85445659 + .long 2410260206 + .long 1340160702 + .long 0 + .long 0 + .long 3840164178 + .long 170891318 + .long 525553116 + .long 2680321405 + .long 0 + .long 0 + .long 3385361061 + .long 341782637 + .long 1051106232 + .long 1065675514 + .long 0 + .long 0 + .long 2475754826 + .long 683565275 + .long 2102212464 + .long 2131351028 + .long 0 + .long 0 + .long 656542356 + .long 1367130551 + .long 4204424928 + .long 4262702056 + .long 0 + .long 0 + .long 1313084713 + .long 2734261102 + .long 4113882560 + .long 4230436817 + .long 1 + .long 0 + .long 2626169427 + .long 1173554908 + .long 3932797825 + .long 4165906339 + .long 2 + .long 0 + .long 957371559 + .long 2347109817 + .long 3570628355 + .long 4036845383 + .long 5 + .long 0 + .long 1914743119 + .long 399252338 + .long 2846289414 + .long 3778723471 + .long 10 + .long 0 + .long 3829486239 + .long 798504676 + .long 1397611533 + .long 3262479647 + .long 20 + .long 0 + .long 3364005183 + .long 1597009353 + .long 2795223067 + .long 2229991998 + .long 40 + .long 0 + .long 2433043071 + .long 3194018707 + .long 1295478838 + .long 165016701 + .long 81 + .long 0 + .long 571118846 + .long 2093070119 + .long 2590957677 + .long 330033402 + .long 162 + .long 0 + .long 1142237692 + .long 4186140238 + .long 886948059 + .long 660066805 + .long 325 + .long 0 + .long 2284475384 + .long 4077313180 + .long 1773896118 + .long 1320133610 + .long 651 + .long 0 + .long 273983472 + .long 3859659065 + .long 3547792237 + .long 2640267220 + .long 1303 + .long 0 + .long 547966945 + .long 3424350834 + .long 2800617179 + .long 985567145 + .long 2607 + .long 0 + .long 1095933890 + .long 2553734372 + .long 1306267062 + .long 1971134291 + .long 5215 + .long 0 + .long 2191867780 + .long 812501448 + .long 2612534124 + .long 3942268582 + .long 10430 + .long 0 + .long 88768265 + .long 1625002897 + .long 930100952 + .long 3589569869 + .long 20860 + .long 0 + .long 177536531 + .long 3250005794 + .long 1860201905 + .long 2884172442 + .long 41721 + .long 0 + .long 355073063 + .long 2205044292 + .long 3720403810 + .long 1473377588 + .long 83443 + .long 0 + .long 710146126 + .long 115121288 + .long 3145840325 + .long 2946755177 + .long 166886 + .long 0 + .long 1420292253 + .long 230242576 + .long 1996713354 + .long 1598543059 + .long 333772 + .long 0 + .long 2840584506 + .long 460485152 + .long 3993426708 + .long 3197086118 + .long 667544 + .long 0 + .long 1386201717 + .long 920970305 + .long 3691886121 + .long 2099204941 + .long 1335088 + .long 0 + .long 2772403434 + .long 1841940610 + .long 3088804946 + .long 4198409883 + .long 2670176 + .long 0 + .long 1249839573 + .long 3683881221 + .long 1882642597 + .long 4101852471 + .long 5340353 + .long 0 + .long 2499679147 + .long 3072795146 + .long 3765285194 + .long 3908737646 + .long 10680707 + .long 0 + .long 704390999 + .long 1850622997 + .long 3235603093 + .long 3522507997 + .long 21361414 + .long 0 + .long 1408781999 + .long 3701245994 + .long 2176238891 + .long 2750048699 + .long 42722829 + .long 0 + .long 2817563999 + .long 3107524692 + .long 57510486 + .long 1205130103 + .long 85445659 + .long 0 + .long 1340160702 + .long 1920082089 + .long 115020972 + .long 2410260206 + .long 170891318 + .long 0 + .long 2680321405 + .long 3840164178 + .long 230041945 + .long 525553116 + .long 341782637 + .long 0 + .long 1065675514 + .long 3385361061 + .long 460083891 + .long 1051106232 + .long 683565275 + .long 0 + .long 2131351028 + .long 2475754826 + .long 920167782 + .long 2102212464 + .long 1367130551 + .long 0 + .long 4262702056 + .long 656542356 + .long 1840335564 + .long 4204424928 + .long 2734261102 + .long 0 + .long 4230436817 + .long 1313084713 + .long 3680671129 + .long 4113882560 + .long 1173554908 + .long 1 + .long 4165906339 + .long 2626169427 + .long 3066374962 + .long 3932797825 + .long 2347109817 + .long 2 + .long 4036845383 + .long 957371559 + .long 1837782628 + .long 3570628355 + .long 399252338 + .long 5 + .long 3778723471 + .long 1914743119 + .long 3675565257 + .long 2846289414 + .long 798504676 + .long 10 + .long 3262479647 + .long 3829486239 + .long 3056163219 + .long 1397611533 + .long 1597009353 + .long 20 + .long 2229991998 + .long 3364005183 + .long 1817359143 + .long 2795223067 + .long 3194018707 + .long 40 + .long 165016701 + .long 2433043071 + .long 3634718287 + .long 1295478838 + .long 2093070119 + .long 81 + .long 330033402 + .long 571118846 + .long 2974469278 + .long 2590957677 + .long 4186140238 + .long 162 + .long 660066805 + .long 1142237692 + .long 1653971260 + .long 886948059 + .long 4077313180 + .long 325 + .long 1320133610 + .long 2284475384 + .long 3307942520 + .long 1773896118 + .long 3859659065 + .long 651 + .long 2640267220 + .long 273983472 + .long 2320917745 + .long 3547792237 + .long 3424350834 + .long 1303 + .long 985567145 + .long 547966945 + .long 346868194 + .long 2800617179 + .long 2553734372 + .long 2607 + .long 1971134291 + .long 1095933890 + .long 693736388 + .long 1306267062 + .long 812501448 + .long 5215 + .long 3942268582 + .long 2191867780 + .long 1387472776 + .long 2612534124 + .long 1625002897 + .long 10430 + .long 3589569869 + .long 88768265 + .long 2774945552 + .long 930100952 + .long 3250005794 + .long 20860 + .long 2884172442 + .long 177536531 + .long 1254923809 + .long 1860201905 + .long 2205044292 + .long 41721 + .long 1473377588 + .long 355073063 + .long 2509847619 + .long 3720403810 + .long 115121288 + .long 83443 + .long 2946755177 + .long 710146126 + .long 724727943 + .long 3145840325 + .long 230242576 + .long 166886 + .long 1598543059 + .long 1420292253 + .long 1449455886 + .long 1996713354 + .long 460485152 + .long 333772 + .long 3197086118 + .long 2840584506 + .long 2898911772 + .long 3993426708 + .long 920970305 + .long 667544 + .long 2099204941 + .long 1386201717 + .long 1502856249 + .long 3691886121 + .long 1841940610 + .long 1335088 + .long 4198409883 + .long 2772403434 + .long 3005712498 + .long 3088804946 + .long 3683881221 + .long 2670176 + .long 4101852471 + .long 1249839573 + .long 1716457700 + .long 1882642597 + .long 3072795146 + .long 5340353 + .long 3908737646 + .long 2499679147 + .long 3432915400 + .long 3765285194 + .long 1850622997 + .long 10680707 + .long 3522507997 + .long 704390999 + .long 2570863504 + .long 3235603093 + .long 3701245994 + .long 21361414 + .long 2750048699 + .long 1408781999 + .long 846759712 + .long 2176238891 + .long 3107524692 + .long 42722829 + .long 1205130103 + .long 2817563999 + .long 1693519425 + .long 57510486 + .long 1920082089 + .long 85445659 + .long 2410260206 + .long 1340160702 + .long 3387038850 + .long 115020972 + .long 3840164178 + .long 170891318 + .long 525553116 + .long 2680321405 + .long 2479110404 + .long 230041945 + .long 3385361061 + .long 341782637 + .long 1051106232 + .long 1065675514 + .long 663253512 + .long 460083891 + .long 2475754826 + .long 683565275 + .long 2102212464 + .long 2131351028 + .long 1326507024 + .long 920167782 + .long 656542356 + .long 1367130551 + .long 4204424928 + .long 4262702056 + .long 2653014048 + .long 1840335564 + .long 1313084713 + .long 2734261102 + .long 4113882560 + .long 4230436817 + .long 1011060801 + .long 3680671129 + .long 2626169427 + .long 1173554908 + .long 3932797825 + .long 4165906339 + .long 2022121603 + .long 3066374962 + .long 957371559 + .long 2347109817 + .long 3570628355 + .long 4036845383 + .long 4044243207 + .long 1837782628 + .long 1914743119 + .long 399252338 + .long 2846289414 + .long 3778723471 + .long 3793519119 + .long 3675565257 + .long 3829486239 + .long 798504676 + .long 1397611533 + .long 3262479647 + .long 3292070943 + .long 3056163219 + .long 3364005183 + .long 1597009353 + .long 2795223067 + .long 2229991998 + .long 2289174591 + .long 1817359143 + .long 2433043071 + .long 3194018707 + .long 1295478838 + .long 165016701 + .long 283381887 + .long 3634718287 + .long 571118846 + .long 2093070119 + .long 2590957677 + .long 330033402 + .long 566763775 + .long 2974469278 + .long 1142237692 + .long 4186140238 + .long 886948059 + .long 660066805 + .long 1133527550 + .long 1653971260 + .long 2284475384 + .long 4077313180 + .long 1773896118 + .long 1320133610 + .long 2267055100 + .long 3307942520 + .long 273983472 + .long 3859659065 + .long 3547792237 + .long 2640267220 + .long 239142905 + .long 2320917745 + .long 547966945 + .long 3424350834 + .long 2800617179 + .long 985567145 + .long 478285810 + .long 346868194 + .long 1095933890 + .long 2553734372 + .long 1306267062 + .long 1971134291 + .long 956571621 + .long 693736388 + .long 2191867780 + .long 812501448 + .long 2612534124 + .long 3942268582 + .long 1913143242 + .long 1387472776 + .long 88768265 + .long 1625002897 + .long 930100952 + .long 3589569869 + .long 3826286484 + .long 2774945552 + .long 177536531 + .long 3250005794 + .long 1860201905 + .long 2884172442 + .long 3357605672 + .long 1254923809 + .long 355073063 + .long 2205044292 + .long 3720403810 + .long 1473377588 + .long 2420244049 + .long 2509847619 + .long 710146126 + .long 115121288 + .long 3145840325 + .long 2946755177 + .long 545520802 + .long 724727943 + .long 1420292253 + .long 230242576 + .long 1996713354 + .long 1598543059 + .long 1091041605 + .long 1449455886 + .long 2840584506 + .long 460485152 + .long 3993426708 + .long 3197086118 + .long 2182083211 + .long 2898911772 + .long 1386201717 + .long 920970305 + .long 3691886121 + .long 2099204941 + .long 69199126 + .long 1502856249 + .long 2772403434 + .long 1841940610 + .long 3088804946 + .long 4198409883 + .long 138398252 + .long 3005712498 + .long 1249839573 + .long 3683881221 + .long 1882642597 + .long 4101852471 + .long 276796504 + .long 1716457700 + .long 2499679147 + .long 3072795146 + .long 3765285194 + .long 3908737646 + .long 553593009 + .long 3432915400 + .long 704390999 + .long 1850622997 + .long 3235603093 + .long 3522507997 + .long 1107186019 + .long 2570863504 + .long 1408781999 + .long 3701245994 + .long 2176238891 + .long 2750048699 + .long 2214372039 + .long 846759712 + .long 2817563999 + .long 3107524692 + .long 57510486 + .long 1205130103 + .long 133776782 + .long 1693519425 + .long 1340160702 + .long 1920082089 + .long 115020972 + .long 2410260206 + .long 267553565 + .long 3387038850 + .long 2680321405 + .long 3840164178 + .long 230041945 + .long 525553116 + .long 535107130 + .long 2479110404 + .long 1065675514 + .long 3385361061 + .long 460083891 + .long 1051106232 + .long 1070214261 + .long 663253512 + .long 2131351028 + .long 2475754826 + .long 920167782 + .long 2102212464 + .long 2140428522 + .long 1326507024 + .long 4262702056 + .long 656542356 + .long 1840335564 + .long 4204424928 + .long 4280857045 + .long 2653014048 + .long 4230436817 + .long 1313084713 + .long 3680671129 + .long 4113882560 + .long 4266746795 + .long 1011060801 + .long 4165906339 + .long 2626169427 + .long 3066374962 + .long 3932797825 + .long 4238526295 + .long 2022121603 + .long 4036845383 + .long 957371559 + .long 1837782628 + .long 3570628355 + .long 4182085295 + .long 4044243207 + .long 3778723471 + .long 1914743119 + .long 3675565257 + .long 2846289414 + .long 4069203294 + .long 3793519119 + .long 3262479647 + .long 3829486239 + .long 3056163219 + .long 1397611533 + .long 3843439293 + .long 3292070943 + .long 2229991998 + .long 3364005183 + .long 1817359143 + .long 2795223067 + .long 3391911291 + .long 2289174591 + .long 165016701 + .long 2433043071 + .long 3634718287 + .long 1295478838 + .long 2488855287 + .long 283381887 + .long 330033402 + .long 571118846 + .long 2974469278 + .long 2590957677 + .long 682743279 + .long 566763775 + .long 660066805 + .long 1142237692 + .long 1653971260 + .long 886948059 + .long 1365486558 + .long 1133527550 + .long 1320133610 + .long 2284475384 + .long 3307942520 + .long 1773896118 + .long 2730973117 + .long 2267055100 + .long 2640267220 + .long 273983472 + .long 2320917745 + .long 3547792237 + .long 1166978938 + .long 239142905 + .long 985567145 + .long 547966945 + .long 346868194 + .long 2800617179 + .long 2333957877 + .long 478285810 + .long 1971134291 + .long 1095933890 + .long 693736388 + .long 1306267062 + .long 372948459 + .long 956571621 + .long 3942268582 + .long 2191867780 + .long 1387472776 + .long 2612534124 + .long 745896919 + .long 1913143242 + .long 3589569869 + .long 88768265 + .long 2774945552 + .long 930100952 + .long 1491793838 + .long 3826286484 + .long 2884172442 + .long 177536531 + .long 1254923809 + .long 1860201905 + .long 2983587677 + .long 3357605672 + .long 1473377588 + .long 355073063 + .long 2509847619 + .long 3720403810 + .long 1672208059 + .long 2420244049 + .long 2946755177 + .long 710146126 + .long 724727943 + .long 3145840325 + .long 3344416119 + .long 545520802 + .long 1598543059 + .long 1420292253 + .long 1449455886 + .long 1996713354 + .long 2393864943 + .long 1091041605 + .long 3197086118 + .long 2840584506 + .long 2898911772 + .long 3993426708 + .long 492762590 + .long 2182083211 + .long 2099204941 + .long 1386201717 + .long 1502856249 + .long 3691886121 + .long 985525180 + .long 69199126 + .long 4198409883 + .long 2772403434 + .long 3005712498 + .long 3088804946 + .long 1971050360 + .long 138398252 + .long 4101852471 + .long 1249839573 + .long 1716457700 + .long 1882642597 + .long 3942100721 + .long 276796504 + .long 3908737646 + .long 2499679147 + .long 3432915400 + .long 3765285194 + .long 3589234146 + .long 553593009 + .long 3522507997 + .long 704390999 + .long 2570863504 + .long 3235603093 + .long 2883500997 + .long 1107186019 + .long 2750048699 + .long 1408781999 + .long 846759712 + .long 2176238891 + .long 1472034698 + .long 2214372039 + .long 1205130103 + .long 2817563999 + .long 1693519425 + .long 57510486 + .long 2944069397 + .long 133776782 + .long 2410260206 + .long 1340160702 + .long 3387038850 + .long 115020972 + .long 1593171499 + .long 267553565 + .long 525553116 + .long 2680321405 + .long 2479110404 + .long 230041945 + .long 3186342998 + .long 535107130 + .long 1051106232 + .long 1065675514 + .long 663253512 + .long 460083891 + .long 2077718700 + .long 1070214261 + .long 2102212464 + .long 2131351028 + .long 1326507024 + .long 920167782 + .long 4155437400 + .long 2140428522 + .long 4204424928 + .long 4262702056 + .long 2653014048 + .long 1840335564 + .long 4015907504 + .long 4280857045 + .long 4113882560 + .long 4230436817 + .long 1011060801 + .long 3680671129 + .long 3736847713 + .long 4266746795 + .long 3932797825 + .long 4165906339 + .long 2022121603 + .long 3066374962 + .long 3178728131 + .long 4238526295 + .long 3570628355 + .long 4036845383 + .long 4044243207 + .long 1837782628 + .long 2062488966 + .long 4182085295 + .long 2846289414 + .long 3778723471 + .long 3793519119 + .long 3675565257 + .long 4124977933 + .long 4069203294 + .long 1397611533 + .long 3262479647 + .long 3292070943 + .long 3056163219 + .long 3954988571 + .long 3843439293 + .long 2795223067 + .long 2229991998 + .long 2289174591 + .long 1817359143 + .long 3615009846 + .long 3391911291 + .long 1295478838 + .long 165016701 + .long 283381887 + .long 3634718287 + .long 2935052397 + .long 2488855287 + .long 2590957677 + .long 330033402 + .long 566763775 + .long 2974469278 + .long 1575137499 + .long 682743279 + .long 886948059 + .long 660066805 + .long 1133527550 + .long 1653971260 + .long 3150274999 + .long 1365486558 + .long 1773896118 + .long 1320133610 + .long 2267055100 + .long 3307942520 + .long 2005582702 + .long 2730973117 + .long 3547792237 + .long 2640267220 + .long 239142905 + .long 2320917745 + .long 4011165404 + .long 1166978938 + .long 2800617179 + .long 985567145 + .long 478285810 + .long 346868194 + .long 3727363513 + .long 2333957877 + .long 1306267062 + .long 1971134291 + .long 956571621 + .long 693736388 + .long 3159759730 + .long 372948459 + .long 2612534124 + .long 3942268582 + .long 1913143242 + .long 1387472776 + .long 2024552164 + .long 745896919 + .long 930100952 + .long 3589569869 + .long 3826286484 + .long 2774945552 + .long 4049104329 + .long 1491793838 + .long 1860201905 + .long 2884172442 + .long 3357605672 + .long 1254923809 + .long 3803241362 + .long 2983587677 + .long 3720403810 + .long 1473377588 + .long 2420244049 + .long 2509847619 + .long 3311515428 + .long 1672208059 + .long 3145840325 + .long 2946755177 + .long 545520802 + .long 724727943 + .long 2328063560 + .long 3344416119 + .long 1996713354 + .long 1598543059 + .long 1091041605 + .long 1449455886 + .long 361159825 + .long 2393864943 + .long 3993426708 + .long 3197086118 + .long 2182083211 + .long 2898911772 + .long 722319651 + .long 492762590 + .long 3691886121 + .long 2099204941 + .long 69199126 + .long 1502856249 + .long 1444639302 + .long 985525180 + .long 3088804946 + .long 4198409883 + .long 138398252 + .long 3005712498 + .long 2889278605 + .long 1971050360 + .long 1882642597 + .long 4101852471 + .long 276796504 + .long 1716457700 + .long 1483589915 + .long 3942100721 + .long 3765285194 + .long 3908737646 + .long 553593009 + .long 3432915400 + .long 2967179831 + .long 3589234146 + .long 3235603093 + .long 3522507997 + .long 1107186019 + .long 2570863504 + .long 1639392366 + .long 2883500997 + .long 2176238891 + .long 2750048699 + .long 2214372039 + .long 846759712 + .long 3278784732 + .long 1472034698 + .long 57510486 + .long 1205130103 + .long 133776782 + .long 1693519425 + .long 2262602168 + .long 2944069397 + .long 115020972 + .long 2410260206 + .long 267553565 + .long 3387038850 + .long 230237041 + .long 1593171499 + .long 230041945 + .long 525553116 + .long 535107130 + .long 2479110404 + .long 460474083 + .long 3186342998 + .long 460083891 + .long 1051106232 + .long 1070214261 + .long 663253512 + .long 920948167 + .long 2077718700 + .long 920167782 + .long 2102212464 + .long 2140428522 + .long 1326507024 + .long 1841896334 + .long 4155437400 + .long 1840335564 + .long 4204424928 + .long 4280857045 + .long 2653014048 + .long 3683792669 + .long 4015907504 + .long 3680671129 + .long 4113882560 + .long 4266746795 + .long 1011060801 + .long 3072618042 + .long 3736847713 + .long 3066374962 + .long 3932797825 + .long 4238526295 + .long 2022121603 + .long 1850268788 + .long 3178728131 + .long 1837782628 + .long 3570628355 + .long 4182085295 + .long 4044243207 + .long 3700537577 + .long 2062488966 + .long 3675565257 + .long 2846289414 + .long 4069203294 + .long 3793519119 + .long 3106107858 + .long 4124977933 + .long 3056163219 + .long 1397611533 + .long 3843439293 + .long 3292070943 + .long 1917248420 + .long 3954988571 + .long 1817359143 + .long 2795223067 + .long 3391911291 + .long 2289174591 + .long 3834496840 + .long 3615009846 + .long 3634718287 + .long 1295478838 + .long 2488855287 + .long 283381887 + .long 3374026384 + .long 2935052397 + .long 2974469278 + .long 2590957677 + .long 682743279 + .long 566763775 + .long 2453085473 + .long 1575137499 + .long 1653971260 + .long 886948059 + .long 1365486558 + .long 1133527550 + .long 611203650 + .long 3150274999 + .long 3307942520 + .long 1773896118 + .long 2730973117 + .long 2267055100 + .long 1222407300 + .long 2005582702 + .long 2320917745 + .long 3547792237 + .long 1166978938 + .long 239142905 + .long 2444814601 + .long 4011165404 + .long 346868194 + .long 2800617179 + .long 2333957877 + .long 478285810 + .long 594661906 + .long 3727363513 + .long 693736388 + .long 1306267062 + .long 372948459 + .long 956571621 + .long 1189323812 + .long 3159759730 + .long 1387472776 + .long 2612534124 + .long 745896919 + .long 1913143242 + .long 2378647625 + .long 2024552164 + .long 2774945552 + .long 930100952 + .long 1491793838 + .long 3826286484 + .long 462327955 + .long 4049104329 + .long 1254923809 + .long 1860201905 + .long 2983587677 + .long 3357605672 + .long 924655910 + .long 3803241362 + .long 2509847619 + .long 3720403810 + .long 1672208059 + .long 2420244049 + .long 1849311821 + .long 3311515428 + .long 724727943 + .long 3145840325 + .long 3344416119 + .long 545520802 + .long 3698623643 + .long 2328063560 + .long 1449455886 + .long 1996713354 + .long 2393864943 + .long 1091041605 + .long 3102279991 + .long 361159825 + .long 2898911772 + .long 3993426708 + .long 492762590 + .long 2182083211 + .long 1909592686 + .long 722319651 + .long 1502856249 + .long 3691886121 + .long 985525180 + .long 69199126 + .long 3819185373 + .long 1444639302 + .long 3005712498 + .long 3088804946 + .long 1971050360 + .long 138398252 + .long 3343403450 + .long 2889278605 + .long 1716457700 + .long 1882642597 + .long 3942100721 + .long 276796504 + .long 2391839604 + .long 1483589915 + .long 3432915400 + .long 3765285194 + .long 3589234146 + .long 553593009 + .long 488711913 + .long 2967179831 + .long 2570863504 + .long 3235603093 + .long 2883500997 + .long 1107186019 + .long 977423826 + .long 1639392366 + .long 846759712 + .long 2176238891 + .long 1472034698 + .long 2214372039 + .long 1954847653 + .long 3278784732 + .long 1693519425 + .long 57510486 + .long 2944069397 + .long 133776782 + .long 3909695307 + .long 2262602168 + .long 3387038850 + .long 115020972 + .long 1593171499 + .long 267553565 + .long 3524423319 + .long 230237041 + .long 2479110404 + .long 230041945 + .long 3186342998 + .long 535107130 + .long 2753879342 + .long 460474083 + .long 663253512 + .long 460083891 + .long 2077718700 + .long 1070214261 + .long 1212791388 + .long 920948167 + .long 1326507024 + .long 920167782 + .long 4155437400 + .long 2140428522 + .long 2425582776 + .long 1841896334 + .long 2653014048 + .long 1840335564 + .long 4015907504 + .long 4280857045 + .long 556198256 + .long 3683792669 + .long 1011060801 + .long 3680671129 + .long 3736847713 + .long 4266746795 + .long 1112396512 + .long 3072618042 + .long 2022121603 + .long 3066374962 + .long 3178728131 + .long 4238526295 + .long 2224793024 + .long 1850268788 + .long 4044243207 + .long 1837782628 + .long 2062488966 + .long 4182085295 + .long 154618752 + .long 3700537577 + .long 3793519119 + .long 3675565257 + .long 4124977933 + .long 4069203294 + .long 309237504 + .long 3106107858 + .long 3292070943 + .long 3056163219 + .long 3954988571 + .long 3843439293 + .long 618475008 + .long 1917248420 + .long 2289174591 + .long 1817359143 + .long 3615009846 + .long 3391911291 + .long 1236950016 + .long 3834496840 + .long 283381887 + .long 3634718287 + .long 2935052397 + .long 2488855287 + .long 2473900033 + .long 3374026384 + .long 566763775 + .long 2974469278 + .long 1575137499 + .long 682743279 + .long 652832771 + .long 2453085473 + .long 1133527550 + .long 1653971260 + .long 3150274999 + .long 1365486558 + .long 1305665542 + .long 611203650 + .long 2267055100 + .long 3307942520 + .long 2005582702 + .long 2730973117 + .long 2611331084 + .long 1222407300 + .long 239142905 + .long 2320917745 + .long 4011165404 + .long 1166978938 + .long 927694873 + .long 2444814601 + .long 478285810 + .long 346868194 + .long 3727363513 + .long 2333957877 + .long 1855389746 + .long 594661906 + .long 956571621 + .long 693736388 + .long 3159759730 + .long 372948459 + .long 3710779492 + .long 1189323812 + .long 1913143242 + .long 1387472776 + .long 2024552164 + .long 745896919 + .long 3126591689 + .long 2378647625 + .long 3826286484 + .long 2774945552 + .long 4049104329 + .long 1491793838 + .long 1958216082 + .long 462327955 + .long 3357605672 + .long 1254923809 + .long 3803241362 + .long 2983587677 + .long 3916432164 + .long 924655910 + .long 2420244049 + .long 2509847619 + .long 3311515428 + .long 1672208059 + .long 3537897033 + .long 1849311821 + .long 545520802 + .long 724727943 + .long 2328063560 + .long 3344416119 + .long 2780826770 + .long 3698623643 + .long 1091041605 + .long 1449455886 + .long 361159825 + .long 2393864943 + .long 1266686244 + .long 3102279991 + .long 2182083211 + .long 2898911772 + .long 722319651 + .long 492762590 + .long 2533372489 + .long 1909592686 + .long 69199126 + .long 1502856249 + .long 1444639302 + .long 985525180 + .long 771777682 + .long 3819185373 + .long 138398252 + .long 3005712498 + .long 2889278605 + .long 1971050360 + .long 1543555365 + .long 3343403450 + .long 276796504 + .long 1716457700 + .long 1483589915 + .long 3942100721 + .long 3087110731 + .long 2391839604 + .long 553593009 + .long 3432915400 + .long 2967179831 + .long 3589234146 + .long 1879254167 + .long 488711913 + .long 1107186019 + .long 2570863504 + .long 1639392366 + .long 2883500997 + .long 3758508334 + .long 977423826 + .long 2214372039 + .long 846759712 + .long 3278784732 + .long 1472034698 + .long 3222049373 + .long 1954847653 + .long 133776782 + .long 1693519425 + .long 2262602168 + .long 2944069397 + .long 2149131451 + .long 3909695307 + .long 267553565 + .long 3387038850 + .long 230237041 + .long 1593171499 + .long 3295607 + .long 3524423319 + .long 535107130 + .long 2479110404 + .long 460474083 + .long 3186342998 + .long 6591214 + .long 2753879342 + .long 1070214261 + .long 663253512 + .long 920948167 + .long 2077718700 + .long 13182429 + .long 1212791388 + .long 2140428522 + .long 1326507024 + .long 1841896334 + .long 4155437400 + .long 26364858 + .long 2425582776 + .long 4280857045 + .long 2653014048 + .long 3683792669 + .long 4015907504 + .long 52729717 + .long 556198256 + .long 4266746795 + .long 1011060801 + .long 3072618042 + .long 3736847713 + .long 105459434 + .long 1112396512 + .long 4238526295 + .long 2022121603 + .long 1850268788 + .long 3178728131 + .long 210918868 + .long 2224793024 + .long 4182085295 + .long 4044243207 + .long 3700537577 + .long 2062488966 + .long 421837736 + .long 154618752 + .long 4069203294 + .long 3793519119 + .long 3106107858 + .long 4124977933 + .long 843675472 + .long 309237504 + .long 3843439293 + .long 3292070943 + .long 1917248420 + .long 3954988571 + .long 1687350944 + .long 618475008 + .long 3391911291 + .long 2289174591 + .long 3834496840 + .long 3615009846 + .long 3374701889 + .long 1236950016 + .long 2488855287 + .long 283381887 + .long 3374026384 + .long 2935052397 + .long 2454436482 + .long 2473900033 + .long 682743279 + .long 566763775 + .long 2453085473 + .long 1575137499 + .long 613905668 + .long 652832771 + .long 1365486558 + .long 1133527550 + .long 611203650 + .long 3150274999 + .long 1227811337 + .long 1305665542 + .long 2730973117 + .long 2267055100 + .long 1222407300 + .long 2005582702 + .long 2455622675 + .long 2611331084 + .long 1166978938 + .long 239142905 + .long 2444814601 + .long 4011165404 + .long 616278055 + .long 927694873 + .long 2333957877 + .long 478285810 + .long 594661906 + .long 3727363513 + .long 1232556110 + .long 1855389746 + .long 372948459 + .long 956571621 + .long 1189323812 + .long 3159759730 + .long 2465112221 + .long 3710779492 + .long 745896919 + .long 1913143242 + .long 2378647625 + .long 2024552164 + .long 635257146 + .long 3126591689 + .long 1491793838 + .long 3826286484 + .long 462327955 + .long 4049104329 + .long 1270514292 + .long 1958216082 + .long 2983587677 + .long 3357605672 + .long 924655910 + .long 3803241362 + .long 2541028584 + .long 3916432164 + .long 1672208059 + .long 2420244049 + .long 1849311821 + .long 3311515428 + .long 787089873 + .long 3537897033 + .long 3344416119 + .long 545520802 + .long 3698623643 + .long 2328063560 + .long 1574179747 + .long 2780826770 + .long 2393864943 + .long 1091041605 + .long 3102279991 + .long 361159825 + .long 3148359494 + .long 1266686244 + .long 492762590 + .long 2182083211 + .long 1909592686 + .long 722319651 + .long 2001751692 + .long 2533372489 + .long 985525180 + .long 69199126 + .long 3819185373 + .long 1444639302 + .long 4003503385 + .long 771777682 + .long 1971050360 + .long 138398252 + .long 3343403450 + .long 2889278605 + .long 3712039474 + .long 1543555365 + .long 3942100721 + .long 276796504 + .long 2391839604 + .long 1483589915 + .long 3129111652 + .long 3087110731 + .long 3589234146 + .long 553593009 + .long 488711913 + .long 2967179831 + .long 1963256009 + .long 1879254167 + .long 2883500997 + .long 1107186019 + .long 977423826 + .long 1639392366 + .long 3926512018 + .long 3758508334 + .long 1472034698 + .long 2214372039 + .long 1954847653 + .long 3278784732 + .long 3558056740 + .long 3222049373 + .long 2944069397 + .long 133776782 + .long 3909695307 + .long 2262602168 + .long 2821146184 + .long 2149131451 + .long 1593171499 + .long 267553565 + .long 3524423319 + .long 230237041 + .long 1347325072 + .long 3295607 + .long 3186342998 + .long 535107130 + .long 2753879342 + .long 460474083 + .long 2694650145 + .long 6591214 + .long 2077718700 + .long 1070214261 + .long 1212791388 + .long 920948167 + .long 1094332995 + .long 13182429 + .long 4155437400 + .long 2140428522 + .long 2425582776 + .long 1841896334 + .long 2188665991 + .long 26364858 + .long 4015907504 + .long 4280857045 + .long 556198256 + .long 3683792669 + .long 82364686 + .long 52729717 + .long 3736847713 + .long 4266746795 + .long 1112396512 + .long 3072618042 + .long 164729372 + .long 105459434 + .long 3178728131 + .long 4238526295 + .long 2224793024 + .long 1850268788 + .long 329458745 + .long 210918868 + .long 2062488966 + .long 4182085295 + .long 154618752 + .long 3700537577 + .long 658917491 + .long 421837736 + .long 4124977933 + .long 4069203294 + .long 309237504 + .long 3106107858 + .long 1317834983 + .long 843675472 + .long 3954988571 + .long 3843439293 + .long 618475008 + .long 1917248420 + .long 2635669967 + .long 1687350944 + .long 3615009846 + .long 3391911291 + .long 1236950016 + .long 3834496840 + .long 976372639 + .long 3374701889 + .long 2935052397 + .long 2488855287 + .long 2473900033 + .long 3374026384 + .long 1952745279 + .long 2454436482 + .long 1575137499 + .long 682743279 + .long 652832771 + .long 2453085473 + .long 3905490559 + .long 613905668 + .long 3150274999 + .long 1365486558 + .long 1305665542 + .long 611203650 + .long 3516013822 + .long 1227811337 + .long 2005582702 + .long 2730973117 + .long 2611331084 + .long 1222407300 + .long 2737060348 + .long 2455622675 + .long 4011165404 + .long 1166978938 + .long 927694873 + .long 2444814601 + .long 1179153400 + .long 616278055 + .long 3727363513 + .long 2333957877 + .long 1855389746 + .long 594661906 + .long 2358306800 + .long 1232556110 + .long 3159759730 + .long 372948459 + .long 3710779492 + .long 1189323812 + .long 421646305 + .long 2465112221 + .long 2024552164 + .long 745896919 + .long 3126591689 + .long 2378647625 + .long 843292611 + .long 635257146 + .long 4049104329 + .long 1491793838 + .long 1958216082 + .long 462327955 + .long 1686585223 + .long 1270514292 + .long 3803241362 + .long 2983587677 + .long 3916432164 + .long 924655910 + .long 3373170446 + .long 2541028584 + .long 3311515428 + .long 1672208059 + .long 3537897033 + .long 1849311821 + .long 2451373597 + .long 787089873 + .long 2328063560 + .long 3344416119 + .long 2780826770 + .long 3698623643 + .long 607779899 + .long 1574179747 + .long 361159825 + .long 2393864943 + .long 1266686244 + .long 3102279991 + .long 1215559799 + .long 3148359494 + .long 722319651 + .long 492762590 + .long 2533372489 + .long 1909592686 + .long 2431119599 + .long 2001751692 + .long 1444639302 + .long 985525180 + .long 771777682 + .long 3819185373 + .long 567271902 + .long 4003503385 + .long 2889278605 + .long 1971050360 + .long 1543555365 + .long 3343403450 + .long 1134543805 + .long 3712039474 + .long 1483589915 + .long 3942100721 + .long 3087110731 + .long 2391839604 + .long 2269087610 + .long 3129111652 + .long 2967179831 + .long 3589234146 + .long 1879254167 + .long 488711913 + .long 243207925 + .long 1963256009 + .long 1639392366 + .long 2883500997 + .long 3758508334 + .long 977423826 + .long 486415851 + .long 3926512018 + .long 3278784732 + .long 1472034698 + .long 3222049373 + .long 1954847653 + .long 972831702 + .long 3558056740 + .long 2262602168 + .long 2944069397 + .long 2149131451 + .long 3909695307 + .long 1945663404 + .long 2821146184 + .long 230237041 + .long 1593171499 + .long 3295607 + .long 3524423319 + .long 3891326808 + .long 1347325072 + .long 460474083 + .long 3186342998 + .long 6591214 + .long 2753879342 + .long 3487686321 + .long 2694650145 + .long 920948167 + .long 2077718700 + .long 13182429 + .long 1212791388 + .long 2680405347 + .long 1094332995 + .long 1841896334 + .long 4155437400 + .long 26364858 + .long 2425582776 + .long 1065843399 + .long 2188665991 + .long 3683792669 + .long 4015907504 + .long 52729717 + .long 556198256 + .long 2131686798 + .long 82364686 + .long 3072618042 + .long 3736847713 + .long 105459434 + .long 1112396512 + .long 4263373596 + .long 164729372 + .long 1850268788 + .long 3178728131 + .long 210918868 + .long 2224793024 + .long 4231779897 + .long 329458745 + .long 3700537577 + .long 2062488966 + .long 421837736 + .long 154618752 + .long 4168592498 + .long 658917491 + .long 3106107858 + .long 4124977933 + .long 843675472 + .long 309237504 + .long 4042217701 + .long 1317834983 + .long 1917248420 + .long 3954988571 + .long 1687350944 + .long 618475008 + .long 3789468107 + .long 2635669967 + .long 3834496840 + .long 3615009846 + .long 3374701889 + .long 1236950016 + .long 3283968918 + .long 976372639 + .long 3374026384 + .long 2935052397 + .long 2454436482 + .long 2473900033 + .long 2272970540 + .long 1952745279 + .long 2453085473 + .long 1575137499 + .long 613905668 + .long 652832771 + .long 250973784 + .long 3905490559 + .long 611203650 + .long 3150274999 + .long 1227811337 + .long 1305665542 + .long 501947569 + .long 3516013822 + .long 1222407300 + .long 2005582702 + .long 2455622675 + .long 2611331084 + .long 1003895138 + .long 2737060348 + .long 2444814601 + .long 4011165404 + .long 616278055 + .long 927694873 + .long 2007790276 + .long 1179153400 + .long 594661906 + .long 3727363513 + .long 1232556110 + .long 1855389746 + .long 4015580553 + .long 2358306800 + .long 1189323812 + .long 3159759730 + .long 2465112221 + .long 3710779492 + .long 3736193810 + .long 421646305 + .long 2378647625 + .long 2024552164 + .long 635257146 + .long 3126591689 + .long 3177420325 + .long 843292611 + .long 462327955 + .long 4049104329 + .long 1270514292 + .long 1958216082 + .long 2059873354 + .long 1686585223 + .long 924655910 + .long 3803241362 + .long 2541028584 + .long 3916432164 + .long 4119746708 + .long 3373170446 + .long 1849311821 + .long 3311515428 + .long 787089873 + .long 3537897033 + .long 3944526121 + .long 2451373597 + .long 3698623643 + .long 2328063560 + .long 1574179747 + .long 2780826770 + .long 3594084947 + .long 607779899 + .long 3102279991 + .long 361159825 + .long 3148359494 + .long 1266686244 + .long 2893202598 + .long 1215559799 + .long 1909592686 + .long 722319651 + .long 2001751692 + .long 2533372489 + .long 1491437901 + .long 2431119599 + .long 3819185373 + .long 1444639302 + .long 4003503385 + .long 771777682 + .long 2982875802 + .long 567271902 + .long 3343403450 + .long 2889278605 + .long 3712039474 + .long 1543555365 + .long 1670784308 + .long 1134543805 + .long 2391839604 + .long 1483589915 + .long 3129111652 + .long 3087110731 + .long 3341568617 + .long 2269087610 + .long 488711913 + .long 2967179831 + .long 1963256009 + .long 1879254167 + .long 2388169939 + .long 243207925 + .long 977423826 + .long 1639392366 + .long 3926512018 + .long 3758508334 + .long 481372583 + .long 486415851 + .long 1954847653 + .long 3278784732 + .long 3558056740 + .long 3222049373 + .long 962745166 + .long 972831702 + .long 3909695307 + .long 2262602168 + .long 2821146184 + .long 2149131451 + .long 1925490332 + .long 1945663404 + .long 3524423319 + .long 230237041 + .long 1347325072 + .long 3295607 + .long 3850980665 + .long 3891326808 + .long 2753879342 + .long 460474083 + .long 2694650145 + .long 6591214 + .long 3406994035 + .long 3487686321 + .long 1212791388 + .long 920948167 + .long 1094332995 + .long 13182429 + .long 2519020775 + .long 2680405347 + .long 2425582776 + .long 1841896334 + .long 2188665991 + .long 26364858 + .long 743074255 + .long 1065843399 + .long 556198256 + .long 3683792669 + .long 82364686 + .long 52729717 + .long 1486148511 + .long 2131686798 + .long 1112396512 + .long 3072618042 + .long 164729372 + .long 105459434 + .long 2972297022 + .long 4263373596 + .long 2224793024 + .long 1850268788 + .long 329458745 + .long 210918868 + .long 1649626749 + .long 4231779897 + .long 154618752 + .long 3700537577 + .long 658917491 + .long 421837736 + .long 3299253499 + .long 4168592498 + .long 309237504 + .long 3106107858 + .long 1317834983 + .long 843675472 + .long 2303539703 + .long 4042217701 + .long 618475008 + .long 1917248420 + .long 2635669967 + .long 1687350944 + .long 312112110 + .long 3789468107 + .long 1236950016 + .long 3834496840 + .long 976372639 + .long 3374701889 + .long 624224221 + .long 3283968918 + .long 2473900033 + .long 3374026384 + .long 1952745279 + .long 2454436482 + .long 1248448442 + .long 2272970540 + .long 652832771 + .long 2453085473 + .long 3905490559 + .long 613905668 + .long 2496896884 + .long 250973784 + .long 1305665542 + .long 611203650 + .long 3516013822 + .long 1227811337 + .long 698826472 + .long 501947569 + .long 2611331084 + .long 1222407300 + .long 2737060348 + .long 2455622675 + .long 1397652945 + .long 1003895138 + .long 927694873 + .long 2444814601 + .long 1179153400 + .long 616278055 + .long 2795305890 + .long 2007790276 + .long 1855389746 + .long 594661906 + .long 2358306800 + .long 1232556110 + .long 1295644484 + .long 4015580553 + .long 3710779492 + .long 1189323812 + .long 421646305 + .long 2465112221 + .long 2591288968 + .long 3736193810 + .long 3126591689 + .long 2378647625 + .long 843292611 + .long 635257146 + .long 887610640 + .long 3177420325 + .long 1958216082 + .long 462327955 + .long 1686585223 + .long 1270514292 + .long 1775221280 + .long 2059873354 + .long 3916432164 + .long 924655910 + .long 3373170446 + .long 2541028584 + .long 3550442561 + .long 4119746708 + .long 3537897033 + .long 1849311821 + .long 2451373597 + .long 787089873 + .long 2805917826 + .long 3944526121 + .long 2780826770 + .long 3698623643 + .long 607779899 + .long 1574179747 + .long 1316868356 + .long 3594084947 + .long 1266686244 + .long 3102279991 + .long 1215559799 + .long 3148359494 + .long 2633736712 + .long 2893202598 + .long 2533372489 + .long 1909592686 + .long 2431119599 + .long 2001751692 + .long 972506129 + .long 1491437901 + .long 771777682 + .long 3819185373 + .long 567271902 + .long 4003503385 + .long 1945012259 + .long 2982875802 + .long 1543555365 + .long 3343403450 + .long 1134543805 + .long 3712039474 + .long 3890024518 + .long 1670784308 + .long 3087110731 + .long 2391839604 + .long 2269087610 + .long 3129111652 + .long 3485081741 + .long 3341568617 + .long 1879254167 + .long 488711913 + .long 243207925 + .long 1963256009 + .long 2675196186 + .long 2388169939 + .long 3758508334 + .long 977423826 + .long 486415851 + .long 3926512018 + .long 1055425077 + .long 481372583 + .long 3222049373 + .long 1954847653 + .long 972831702 + .long 3558056740 + .long 2110850155 + .long 962745166 + .long 2149131451 + .long 3909695307 + .long 1945663404 + .long 2821146184 + .long 4221700311 + .long 1925490332 + .long 3295607 + .long 3524423319 + .long 3891326808 + .long 1347325072 + .long 4148433327 + .long 3850980665 + .long 6591214 + .long 2753879342 + .long 3487686321 + .long 2694650145 + .long 4001899359 + .long 3406994035 + .long 13182429 + .long 1212791388 + .long 2680405347 + .long 1094332995 + .long 3708831422 + .long 2519020775 + .long 26364858 + .long 2425582776 + .long 1065843399 + .long 2188665991 + .long 3122695549 + .long 743074255 + .long 52729717 + .long 556198256 + .long 2131686798 + .long 82364686 + .long 1950423802 + .long 1486148511 + .long 105459434 + .long 1112396512 + .long 4263373596 + .long 164729372 + .long 3900847605 + .long 2972297022 + .long 210918868 + .long 2224793024 + .long 4231779897 + .long 329458745 + .long 3506727914 + .long 1649626749 + .long 421837736 + .long 154618752 + .long 4168592498 + .long 658917491 + .long 2718488532 + .long 3299253499 + .long 843675472 + .long 309237504 + .long 4042217701 + .long 1317834983 + .long 1142009769 + .long 2303539703 + .long 1687350944 + .long 618475008 + .long 3789468107 + .long 2635669967 + .long 2284019538 + .long 312112110 + .long 3374701889 + .long 1236950016 + .long 3283968918 + .long 976372639 + .long 273071781 + .long 624224221 + .long 2454436482 + .long 2473900033 + .long 2272970540 + .long 1952745279 + .long 546143563 + .long 1248448442 + .long 613905668 + .long 652832771 + .long 250973784 + .long 3905490559 + .long 1092287127 + .long 2496896884 + .long 1227811337 + .long 1305665542 + .long 501947569 + .long 3516013822 + .long 2184574254 + .long 698826472 + .long 2455622675 + .long 2611331084 + .long 1003895138 + .long 2737060348 + .long 74181213 + .long 1397652945 + .long 616278055 + .long 927694873 + .long 2007790276 + .long 1179153400 + .long 148362426 + .long 2795305890 + .long 1232556110 + .long 1855389746 + .long 4015580553 + .long 2358306800 + .long 296724853 + .long 1295644484 + .long 2465112221 + .long 3710779492 + .long 3736193810 + .long 421646305 + .long 593449707 + .long 2591288968 + .long 635257146 + .long 3126591689 + .long 3177420325 + .long 843292611 + .long 1186899415 + .long 887610640 + .long 1270514292 + .long 1958216082 + .long 2059873354 + .long 1686585223 + .long 2373798830 + .long 1775221280 + .long 2541028584 + .long 3916432164 + .long 4119746708 + .long 3373170446 + .long 452630365 + .long 3550442561 + .long 787089873 + .long 3537897033 + .long 3944526121 + .long 2451373597 + .long 905260731 + .long 2805917826 + .long 1574179747 + .long 2780826770 + .long 3594084947 + .long 607779899 + .long 1810521462 + .long 1316868356 + .long 3148359494 + .long 1266686244 + .long 2893202598 + .long 1215559799 + .long 3621042925 + .long 2633736712 + .long 2001751692 + .long 2533372489 + .long 1491437901 + .long 2431119599 + .long 2947118554 + .long 972506129 + .long 4003503385 + .long 771777682 + .long 2982875802 + .long 567271902 + .long 1599269812 + .long 1945012259 + .long 3712039474 + .long 1543555365 + .long 1670784308 + .long 1134543805 + .long 3198539624 + .long 3890024518 + .long 3129111652 + .long 3087110731 + .long 3341568617 + .long 2269087610 + .long 2102111953 + .long 3485081741 + .long 1963256009 + .long 1879254167 + .long 2388169939 + .long 243207925 + .long 4204223906 + .long 2675196186 + .long 3926512018 + .long 3758508334 + .long 481372583 + .long 486415851 + .long 4113480516 + .long 1055425077 + .long 3558056740 + .long 3222049373 + .long 962745166 + .long 972831702 + .long 3931993737 + .long 2110850155 + .long 2821146184 + .long 2149131451 + .long 1925490332 + .long 1945663404 + .long 3569020178 + .long 4221700311 + .long 1347325072 + .long 3295607 + .long 3850980665 + .long 3891326808 + .long 2843073060 + .long 4148433327 + .long 2694650145 + .long 6591214 + .long 3406994035 + .long 3487686321 + .long 1391178824 + .long 4001899359 + .long 1094332995 + .long 13182429 + .long 2519020775 + .long 2680405347 + .long 2782357648 + .long 3708831422 + .long 2188665991 + .long 26364858 + .long 743074255 + .long 1065843399 + .long 1269748001 + .long 3122695549 + .long 82364686 + .long 52729717 + .long 1486148511 + .long 2131686798 + .long 2539496002 + .long 1950423802 + .long 164729372 + .long 105459434 + .long 2972297022 + .long 4263373596 + .long 784024708 + .long 3900847605 + .long 329458745 + .long 210918868 + .long 1649626749 + .long 4231779897 + .long 1568049417 + .long 3506727914 + .long 658917491 + .long 421837736 + .long 3299253499 + .long 4168592498 + .long 3136098835 + .long 2718488532 + .long 1317834983 + .long 843675472 + .long 2303539703 + .long 4042217701 + .long 1977230375 + .long 1142009769 + .long 2635669967 + .long 1687350944 + .long 312112110 + .long 3789468107 + .long 3954460750 + .long 2284019538 + .long 976372639 + .long 3374701889 + .long 624224221 + .long 3283968918 + .long 3613954205 + .long 273071781 + .long 1952745279 + .long 2454436482 + .long 1248448442 + .long 2272970540 + .long 2932941114 + .long 546143563 + .long 3905490559 + .long 613905668 + .long 2496896884 + .long 250973784 + .long 1570914932 + .long 1092287127 + .long 3516013822 + .long 1227811337 + .long 698826472 + .long 501947569 + .long 3141829865 + .long 2184574254 + .long 2737060348 + .long 2455622675 + .long 1397652945 + .long 1003895138 + .long 1988692435 + .long 74181213 + .long 1179153400 + .long 616278055 + .long 2795305890 + .long 2007790276 + .long 3977384870 + .long 148362426 + .long 2358306800 + .long 1232556110 + .long 1295644484 + .long 4015580553 + .long 3659802444 + .long 296724853 + .long 421646305 + .long 2465112221 + .long 2591288968 + .long 3736193810 + .long 3024637593 + .long 593449707 + .long 843292611 + .long 635257146 + .long 887610640 + .long 3177420325 + .long 1754307891 + .long 1186899415 + .long 1686585223 + .long 1270514292 + .long 1775221280 + .long 2059873354 + .long 3508615783 + .long 2373798830 + .long 3373170446 + .long 2541028584 + .long 3550442561 + .long 4119746708 + .long 2722264270 + .long 452630365 + .long 2451373597 + .long 787089873 + .long 2805917826 + .long 3944526121 + .long 1149561244 + .long 905260731 + .long 607779899 + .long 1574179747 + .long 1316868356 + .long 3594084947 + .long 2299122488 + .long 1810521462 + .long 1215559799 + .long 3148359494 + .long 2633736712 + .long 2893202598 + .long 303277681 + .long 3621042925 + .long 2431119599 + .long 2001751692 + .long 972506129 + .long 1491437901 + .long 606555363 + .long 2947118554 + .long 567271902 + .long 4003503385 + .long 1945012259 + .long 2982875802 + .long 1213110727 + .long 1599269812 + .long 1134543805 + .long 3712039474 + .long 3890024518 + .long 1670784308 + .long 2426221454 + .long 3198539624 + .long 2269087610 + .long 3129111652 + .long 3485081741 + .long 3341568617 + .long 557475612 + .long 2102111953 + .long 243207925 + .long 1963256009 + .long 2675196186 + .long 2388169939 + .long 1114951224 + .long 4204223906 + .long 486415851 + .long 3926512018 + .long 1055425077 + .long 481372583 + .long 2229902448 + .long 4113480516 + .long 972831702 + .long 3558056740 + .long 2110850155 + .long 962745166 + .long 164837600 + .long 3931993737 + .long 1945663404 + .long 2821146184 + .long 4221700311 + .long 1925490332 + .long 329675200 + .long 3569020178 + .long 3891326808 + .long 1347325072 + .long 4148433327 + .long 3850980665 + .long 659350401 + .long 2843073060 + .long 3487686321 + .long 2694650145 + .long 4001899359 + .long 3406994035 + .long 1318700802 + .long 1391178824 + .long 2680405347 + .long 1094332995 + .long 3708831422 + .long 2519020775 + .long 2637401604 + .long 2782357648 + .long 1065843399 + .long 2188665991 + .long 3122695549 + .long 743074255 + .long 979835913 + .long 1269748001 + .long 2131686798 + .long 82364686 + .long 1950423802 + .long 1486148511 + .long 1959671827 + .long 2539496002 + .long 4263373596 + .long 164729372 + .long 3900847605 + .long 2972297022 + .long 3919343654 + .long 784024708 + .long 4231779897 + .long 329458745 + .long 3506727914 + .long 1649626749 + .long 3543720013 + .long 1568049417 + .long 4168592498 + .long 658917491 + .long 2718488532 + .long 3299253499 + .long 2792472730 + .long 3136098835 + .long 4042217701 + .long 1317834983 + .long 1142009769 + .long 2303539703 + .long 1289978165 + .long 1977230375 + .long 3789468107 + .long 2635669967 + .long 2284019538 + .long 312112110 + .long 2579956331 + .long 3954460750 + .long 3283968918 + .long 976372639 + .long 273071781 + .long 624224221 + .long 864945366 + .long 3613954205 + .long 2272970540 + .long 1952745279 + .long 546143563 + .long 1248448442 + .long 1729890733 + .long 2932941114 + .long 250973784 + .long 3905490559 + .long 1092287127 + .long 2496896884 + .long 3459781466 + .long 1570914932 + .long 501947569 + .long 3516013822 + .long 2184574254 + .long 698826472 + .long 2624595636 + .long 3141829865 + .long 1003895138 + .long 2737060348 + .long 74181213 + .long 1397652945 + .long 954223976 + .long 1988692435 + .long 2007790276 + .long 1179153400 + .long 148362426 + .long 2795305890 + .long 1908447953 + .long 3977384870 + .long 4015580553 + .long 2358306800 + .long 296724853 + .long 1295644484 + .long 3816895906 + .long 3659802444 + .long 3736193810 + .long 421646305 + .long 593449707 + .long 2591288968 + .long 3338824517 + .long 3024637593 + .long 3177420325 + .long 843292611 + .long 1186899415 + .long 887610640 + .long 2382681739 + .long 1754307891 + .long 2059873354 + .long 1686585223 + .long 2373798830 + .long 1775221280 + .long 470396183 + .long 3508615783 + .long 4119746708 + .long 3373170446 + .long 452630365 + .long 3550442561 + .long 940792367 + .long 2722264270 + .long 3944526121 + .long 2451373597 + .long 905260731 + .long 2805917826 + .long 1881584735 + .long 1149561244 + .long 3594084947 + .long 607779899 + .long 1810521462 + .long 1316868356 + .long 3763169470 + .long 2299122488 + .long 2893202598 + .long 1215559799 + .long 3621042925 + .long 2633736712 + .long 3231371645 + .long 303277681 + .long 1491437901 + .long 2431119599 + .long 2947118554 + .long 972506129 + .long 2167775995 + .long 606555363 + .long 2982875802 + .long 567271902 + .long 1599269812 + .long 1945012259 + .long 40584695 + .long 1213110727 + .long 1670784308 + .long 1134543805 + .long 3198539624 + .long 3890024518 + .long 81169391 + .long 2426221454 + .long 3341568617 + .long 2269087610 + .long 2102111953 + .long 3485081741 + .long 162338783 + .long 557475612 + .long 2388169939 + .long 243207925 + .long 4204223906 + .long 2675196186 + .long 324677567 + .long 1114951224 + .long 481372583 + .long 486415851 + .long 4113480516 + .long 1055425077 + .long 649355134 + .long 2229902448 + .long 962745166 + .long 972831702 + .long 3931993737 + .long 2110850155 + .long 1298710268 + .long 164837600 + .long 1925490332 + .long 1945663404 + .long 3569020178 + .long 4221700311 + .long 2597420537 + .long 329675200 + .long 3850980665 + .long 3891326808 + .long 2843073060 + .long 4148433327 + .long 899873778 + .long 659350401 + .long 3406994035 + .long 3487686321 + .long 1391178824 + .long 4001899359 + .long 1799747556 + .long 1318700802 + .long 2519020775 + .long 2680405347 + .long 2782357648 + .long 3708831422 + .long 3599495112 + .long 2637401604 + .long 743074255 + .long 1065843399 + .long 1269748001 + .long 3122695549 + .long 2904022928 + .long 979835913 + .long 1486148511 + .long 2131686798 + .long 2539496002 + .long 1950423802 + .long 1513078560 + .long 1959671827 + .long 2972297022 + .long 4263373596 + .long 784024708 + .long 3900847605 + .long 3026157121 + .long 3919343654 + .long 1649626749 + .long 4231779897 + .long 1568049417 + .long 3506727914 + .long 1757346946 + .long 3543720013 + .long 3299253499 + .long 4168592498 + .long 3136098835 + .long 2718488532 + .long 3514693892 + .long 2792472730 + .long 2303539703 + .long 4042217701 + .long 1977230375 + .long 1142009769 + .long 2734420489 + .long 1289978165 + .long 312112110 + .long 3789468107 + .long 3954460750 + .long 2284019538 + .long 1173873683 + .long 2579956331 + .long 624224221 + .long 3283968918 + .long 3613954205 + .long 273071781 + .long 2347747367 + .long 864945366 + .long 1248448442 + .long 2272970540 + .long 2932941114 + .long 546143563 + .long 400527438 + .long 1729890733 + .long 2496896884 + .long 250973784 + .long 1570914932 + .long 1092287127 + .long 801054876 + .long 3459781466 + .long 698826472 + .long 501947569 + .long 3141829865 + .long 2184574254 + .long 1602109753 + .long 2624595636 + .long 1397652945 + .long 1003895138 + .long 1988692435 + .long 74181213 + .long 3204219507 + .long 954223976 + .long 2795305890 + .long 2007790276 + .long 3977384870 + .long 148362426 + .long 2113471718 + .long 1908447953 + .long 1295644484 + .long 4015580553 + .long 3659802444 + .long 296724853 + .long 4226943436 + .long 3816895906 + .long 2591288968 + .long 3736193810 + .long 3024637593 + .long 593449707 + .long 4158919577 + .long 3338824517 + .long 887610640 + .long 3177420325 + .long 1754307891 + .long 1186899415 + .long 4022871858 + .long 2382681739 + .long 1775221280 + .long 2059873354 + .long 3508615783 + .long 2373798830 + .long 3750776420 + .long 470396183 + .long 3550442561 + .long 4119746708 + .long 2722264270 + .long 452630365 + .long 3206585544 + .long 940792367 + .long 2805917826 + .long 3944526121 + .long 1149561244 + .long 905260731 + .long 2118203793 + .long 1881584735 + .long 1316868356 + .long 3594084947 + .long 2299122488 + .long 1810521462 + .long 4236407587 + .long 3763169470 + .long 2633736712 + .long 2893202598 + .long 303277681 + .long 3621042925 + .long 4177847879 + .long 3231371645 + .long 972506129 + .long 1491437901 + .long 606555363 + .long 2947118554 + .long 4060728462 + .long 2167775995 + .long 1945012259 + .long 2982875802 + .long 1213110727 + .long 1599269812 + .long 3826489629 + .long 40584695 + .long 3890024518 + .long 1670784308 + .long 2426221454 + .long 3198539624 + .long 3358011962 + .long 81169391 + .long 3485081741 + .long 3341568617 + .long 557475612 + .long 2102111953 + .long 2421056629 + .long 162338783 + .long 2675196186 + .long 2388169939 + .long 1114951224 + .long 4204223906 + .long 547145963 + .long 324677567 + .long 1055425077 + .long 481372583 + .long 2229902448 + .long 4113480516 + .long 1094291926 + .long 649355134 + .long 2110850155 + .long 962745166 + .long 164837600 + .long 3931993737 + .long 2188583852 + .long 1298710268 + .long 4221700311 + .long 1925490332 + .long 329675200 + .long 3569020178 + .long 82200408 + .long 2597420537 + .long 4148433327 + .long 3850980665 + .long 659350401 + .long 2843073060 + .long 164400817 + .long 899873778 + .long 4001899359 + .long 3406994035 + .long 1318700802 + .long 1391178824 + .long 328801635 + .long 1799747556 + .long 3708831422 + .long 2519020775 + .long 2637401604 + .long 2782357648 + .long 657603271 + .long 3599495112 + .long 3122695549 + .long 743074255 + .long 979835913 + .long 1269748001 + .long 1315206542 + .long 2904022928 + .long 1950423802 + .long 1486148511 + .long 1959671827 + .long 2539496002 + .long 2630413084 + .long 1513078560 + .long 3900847605 + .long 2972297022 + .long 3919343654 + .long 784024708 + .long 965858873 + .long 3026157121 + .long 3506727914 + .long 1649626749 + .long 3543720013 + .long 1568049417 + .long 1931717747 + .long 1757346946 + .long 2718488532 + .long 3299253499 + .long 2792472730 + .long 3136098835 + .long 3863435494 + .long 3514693892 + .long 1142009769 + .long 2303539703 + .long 1289978165 + .long 1977230375 + .long 3431903692 + .long 2734420489 + .long 2284019538 + .long 312112110 + .long 2579956331 + .long 3954460750 + .long 2568840088 + .long 1173873683 + .long 273071781 + .long 624224221 + .long 864945366 + .long 3613954205 + .long 842712880 + .long 2347747367 + .long 546143563 + .long 1248448442 + .long 1729890733 + .long 2932941114 + .long 1685425760 + .long 400527438 + .long 1092287127 + .long 2496896884 + .long 3459781466 + .long 1570914932 + .long 3370851521 + .long 801054876 + .long 2184574254 + .long 698826472 + .long 2624595636 + .long 3141829865 + .long 2446735747 + .long 1602109753 + .long 74181213 + .long 1397652945 + .long 954223976 + .long 1988692435 + .long 598504198 + .long 3204219507 + .long 148362426 + .long 2795305890 + .long 1908447953 + .long 3977384870 + .long 1197008397 + .long 2113471718 + .long 296724853 + .long 1295644484 + .long 3816895906 + .long 3659802444 + .long 2394016794 + .long 4226943436 + .long 593449707 + .long 2591288968 + .long 3338824517 + .long 3024637593 + .long 493066293 + .long 4158919577 + .long 1186899415 + .long 887610640 + .long 2382681739 + .long 1754307891 + .long 986132586 + .long 4022871858 + .long 2373798830 + .long 1775221280 + .long 470396183 + .long 3508615783 + .long 1972265172 + .long 3750776420 + .long 452630365 + .long 3550442561 + .long 940792367 + .long 2722264270 + .long 3944530345 + .long 3206585544 + .long 905260731 + .long 2805917826 + .long 1881584735 + .long 1149561244 + .long 3594093395 + .long 2118203793 + .long 1810521462 + .long 1316868356 + .long 3763169470 + .long 2299122488 + .long 2893219494 + .long 4236407587 + .long 3621042925 + .long 2633736712 + .long 3231371645 + .long 303277681 + .long 1491471692 + .long 4177847879 + .long 2947118554 + .long 972506129 + .long 2167775995 + .long 606555363 + .long 2982943385 + .long 4060728462 + .long 1599269812 + .long 1945012259 + .long 40584695 + .long 1213110727 + .long 1670919475 + .long 3826489629 + .long 3198539624 + .long 3890024518 + .long 81169391 + .long 2426221454 + .long 3341838951 + .long 3358011962 + .long 2102111953 + .long 3485081741 + .long 162338783 + .long 557475612 + .long 2388710606 + .long 2421056629 + .long 4204223906 + .long 2675196186 + .long 324677567 + .long 1114951224 + .long 482453916 + .long 547145963 + .long 4113480516 + .long 1055425077 + .long 649355134 + .long 2229902448 + .long 964907833 + .long 1094291926 + .long 3931993737 + .long 2110850155 + .long 1298710268 + .long 164837600 + .long 1929815667 + .long 2188583852 + .long 3569020178 + .long 4221700311 + .long 2597420537 + .long 329675200 + .long 3859631335 + .long 82200408 + .long 2843073060 + .long 4148433327 + .long 899873778 + .long 659350401 + .long 3424295375 + .long 164400817 + .long 1391178824 + .long 4001899359 + .long 1799747556 + .long 1318700802 + .long 2553623455 + .long 328801635 + .long 2782357648 + .long 3708831422 + .long 3599495112 + .long 2637401604 + .long 812279614 + .long 657603271 + .long 1269748001 + .long 3122695549 + .long 2904022928 + .long 979835913 + .long 1624559229 + .long 1315206542 + .long 2539496002 + .long 1950423802 + .long 1513078560 + .long 1959671827 + .long 3249118458 + .long 2630413084 + .long 784024708 + .long 3900847605 + .long 3026157121 + .long 3919343654 + .long 2203269620 + .long 965858873 + .long 1568049417 + .long 3506727914 + .long 1757346946 + .long 3543720013 + .long 111571945 + .long 1931717747 + .long 3136098835 + .long 2718488532 + .long 3514693892 + .long 2792472730 + .long 223143890 + .long 3863435494 + .long 1977230375 + .long 1142009769 + .long 2734420489 + .long 1289978165 + .long 446287780 + .long 3431903692 + .long 3954460750 + .long 2284019538 + .long 1173873683 + .long 2579956331 + .long 892575561 + .long 2568840088 + .long 3613954205 + .long 273071781 + .long 2347747367 + .long 864945366 + .long 1785151123 + .long 842712880 + .long 2932941114 + .long 546143563 + .long 400527438 + .long 1729890733 + .long 3570302247 + .long 1685425760 + .long 1570914932 + .long 1092287127 + .long 801054876 + .long 3459781466 + .long 2845637198 + .long 3370851521 + .long 3141829865 + .long 2184574254 + .long 1602109753 + .long 2624595636 + .long 1396307100 + .long 2446735747 + .long 1988692435 + .long 74181213 + .long 3204219507 + .long 954223976 + .long 2792614201 + .long 598504198 + .long 3977384870 + .long 148362426 + .long 2113471718 + .long 1908447953 + .long 1290261106 + .long 1197008397 + .long 3659802444 + .long 296724853 + .long 4226943436 + .long 3816895906 + .long 2580522212 + .long 2394016794 + .long 3024637593 + .long 593449707 + .long 4158919577 + .long 3338824517 + .long 866077128 + .long 493066293 + .long 1754307891 + .long 1186899415 + .long 4022871858 + .long 2382681739 + .long 1732154256 + .long 986132586 + .long 3508615783 + .long 2373798830 + .long 3750776420 + .long 470396183 + .long 3464308513 + .long 1972265172 + .long 2722264270 + .long 452630365 + .long 3206585544 + .long 940792367 + .long 2633649730 + .long 3944530345 + .long 1149561244 + .long 905260731 + .long 2118203793 + .long 1881584735 + .long 972332164 + .long 3594093395 + .long 2299122488 + .long 1810521462 + .long 4236407587 + .long 3763169470 + .long 1944664328 + .long 2893219494 + .long 303277681 + .long 3621042925 + .long 4177847879 + .long 3231371645 + .long 3889328657 + .long 1491471692 + .long 606555363 + .long 2947118554 + .long 4060728462 + .long 2167775995 + .long 3483690018 + .long 2982943385 + .long 1213110727 + .long 1599269812 + .long 3826489629 + .long 40584695 + .long 2672412741 + .long 1670919475 + .long 2426221454 + .long 3198539624 + .long 3358011962 + .long 81169391 + .long 1049858187 + .long 3341838951 + .long 557475612 + .long 2102111953 + .long 2421056629 + .long 162338783 + .long 2099716375 + .long 2388710606 + .long 1114951224 + .long 4204223906 + .long 547145963 + .long 324677567 + .long 4199432751 + .long 482453916 + .long 2229902448 + .long 4113480516 + .long 1094291926 + .long 649355134 + .long 4103898207 + .long 964907833 + .long 164837600 + .long 3931993737 + .long 2188583852 + .long 1298710268 + .long 3912829119 + .long 1929815667 + .long 329675200 + .long 3569020178 + .long 82200408 + .long 2597420537 + .long 3530690942 + .long 3859631335 + .long 659350401 + .long 2843073060 + .long 164400817 + .long 899873778 + .long 2766414588 + .long 3424295375 + .long 1318700802 + .long 1391178824 + .long 328801635 + .long 1799747556 + .long 1237861880 + .long 2553623455 + .long 2637401604 + .long 2782357648 + .long 657603271 + .long 3599495112 + .long 2475723761 + .long 812279614 + .long 979835913 + .long 1269748001 + .long 1315206542 + .long 2904022928 + .long 656480226 + .long 1624559229 + .long 1959671827 + .long 2539496002 + .long 2630413084 + .long 1513078560 + .long 1312960453 + .long 3249118458 + .long 3919343654 + .long 784024708 + .long 965858873 + .long 3026157121 + .long 2625920907 + .long 2203269620 + .long 3543720013 + .long 1568049417 + .long 1931717747 + .long 1757346946 + .long 956874519 + .long 111571945 + .long 2792472730 + .long 3136098835 + .long 3863435494 + .long 3514693892 + .long 1913749038 + .long 223143890 + .long 1289978165 + .long 1977230375 + .long 3431903692 + .long 2734420489 + .long 3827498077 + .long 446287780 + .long 2579956331 + .long 3954460750 + .long 2568840088 + .long 1173873683 + .long 3360028859 + .long 892575561 + .long 864945366 + .long 3613954205 + .long 842712880 + .long 2347747367 + .long 2425090423 + .long 1785151123 + .long 1729890733 + .long 2932941114 + .long 1685425760 + .long 400527438 + .long 555213551 + .long 3570302247 + .long 3459781466 + .long 1570914932 + .long 3370851521 + .long 801054876 + .long 1110427102 + .long 2845637198 + .long 2624595636 + .long 3141829865 + .long 2446735747 + .long 1602109753 + .long 2220854205 + .long 1396307100 + .long 954223976 + .long 1988692435 + .long 598504198 + .long 3204219507 + .long 146741115 + .long 2792614201 + .long 1908447953 + .long 3977384870 + .long 1197008397 + .long 2113471718 + .long 293482231 + .long 1290261106 + .long 3816895906 + .long 3659802444 + .long 2394016794 + .long 4226943436 + .long 586964463 + .long 2580522212 + .long 3338824517 + .long 3024637593 + .long 493066293 + .long 4158919577 + .long 1173928927 + .long 866077128 + .long 2382681739 + .long 1754307891 + .long 986132586 + .long 4022871858 + .long 2347857855 + .long 1732154256 + .long 470396183 + .long 3508615783 + .long 1972265172 + .long 3750776420 + .long 400748414 + .long 3464308513 + .long 940792367 + .long 2722264270 + .long 3944530345 + .long 3206585544 + .long 801496828 + .long 2633649730 + .long 1881584735 + .long 1149561244 + .long 3594093395 + .long 2118203793 + .long 1602993657 + .long 972332164 + .long 3763169470 + .long 2299122488 + .long 2893219494 + .long 4236407587 + .long 3205987314 + .long 1944664328 + .long 3231371645 + .long 303277681 + .long 1491471692 + .long 4177847879 + .long 2117007332 + .long 3889328657 + .long 2167775995 + .long 606555363 + .long 2982943385 + .long 4060728462 + .long 4234014665 + .long 3483690018 + .long 40584695 + .long 1213110727 + .long 1670919475 + .long 3826489629 + .long 4173062034 + .long 2672412741 + .long 81169391 + .long 2426221454 + .long 3341838951 + .long 3358011962 + .long 4051156773 + .long 1049858187 + .long 162338783 + .long 557475612 + .long 2388710606 + .long 2421056629 + .long 3807346250 + .long 2099716375 + .long 324677567 + .long 1114951224 + .long 482453916 + .long 547145963 + .long 3319725204 + .long 4199432751 + .long 649355134 + .long 2229902448 + .long 964907833 + .long 1094291926 + .long 2344483112 + .long 4103898207 + .long 1298710268 + .long 164837600 + .long 1929815667 + .long 2188583852 + .long 393998928 + .long 3912829119 + .long 2597420537 + .long 329675200 + .long 3859631335 + .long 82200408 + .long 787997856 + .long 3530690942 + .long 899873778 + .long 659350401 + .long 3424295375 + .long 164400817 + .long 1575995713 + .long 2766414588 + .long 1799747556 + .long 1318700802 + .long 2553623455 + .long 328801635 + .long 3151991427 + .long 1237861880 + .long 3599495112 + .long 2637401604 + .long 812279614 + .long 657603271 + .long 2009015559 + .long 2475723761 + .long 2904022928 + .long 979835913 + .long 1624559229 + .long 1315206542 + .long 4018031118 + .long 656480226 + .long 1513078560 + .long 1959671827 + .long 3249118458 + .long 2630413084 + .long 3741094941 + .long 1312960453 + .long 3026157121 + .long 3919343654 + .long 2203269620 + .long 965858873 + .long 3187222587 + .long 2625920907 + .long 1757346946 + .long 3543720013 + .long 111571945 + .long 1931717747 + .long 2079477878 + .long 956874519 + .long 3514693892 + .long 2792472730 + .long 223143890 + .long 3863435494 + .long 4158955756 + .long 1913749038 + .long 2734420489 + .long 1289978165 + .long 446287780 + .long 3431903692 + .long 4022944216 + .long 3827498077 + .long 1173873683 + .long 2579956331 + .long 892575561 + .long 2568840088 + .long 3750921137 + .long 3360028859 + .long 2347747367 + .long 864945366 + .long 1785151123 + .long 842712880 + .long 3206874979 + .long 2425090423 + .long 400527438 + .long 1729890733 + .long 3570302247 + .long 1685425760 + .long 2118782663 + .long 555213551 + .long 801054876 + .long 3459781466 + .long 2845637198 + .long 3370851521 + .long 4237565327 + .long 1110427102 + .long 1602109753 + .long 2624595636 + .long 1396307100 + .long 2446735747 + .long 4180163359 + .long 2220854205 + .long 3204219507 + .long 954223976 + .long 2792614201 + .long 598504198 + .long 4065359423 + .long 146741115 + .long 2113471718 + .long 1908447953 + .long 1290261106 + .long 1197008397 + .long 3835751551 + .long 293482231 + .long 4226943436 + .long 3816895906 + .long 2580522212 + .long 2394016794 + .long 3376535807 + .long 586964463 + .long 4158919577 + .long 3338824517 + .long 866077128 + .long 493066293 + .long 2458104319 + .long 1173928927 + .long 4022871858 + .long 2382681739 + .long 1732154256 + .long 986132586 + .long 621241343 + .long 2347857855 + .long 3750776420 + .long 470396183 + .long 3464308513 + .long 1972265172 + .long 1242482686 + .long 400748414 + .long 3206585544 + .long 940792367 + .long 2633649730 + .long 3944530345 + .long 2484965372 + .long 801496828 + .long 2118203793 + .long 1881584735 + .long 972332164 + .long 3594093395 + .long 674963448 + .long 1602993657 + .long 4236407587 + .long 3763169470 + .long 1944664328 + .long 2893219494 + .long 1349926897 + .long 3205987314 + .long 4177847879 + .long 3231371645 + .long 3889328657 + .long 1491471692 + .long 2699853794 + .long 2117007332 + .long 4060728462 + .long 2167775995 + .long 3483690018 + .long 2982943385 + .long 1104740292 + .long 4234014665 + .long 3826489629 + .long 40584695 + .long 2672412741 + .long 1670919475 + .long 2209480585 + .long 4173062034 + .long 3358011962 + .long 81169391 + .long 1049858187 + .long 3341838951 + .long 123993874 + .long 4051156773 + .long 2421056629 + .long 162338783 + .long 2099716375 + .long 2388710606 + .long 247987749 + .long 3807346250 + .long 547145963 + .long 324677567 + .long 4199432751 + .long 482453916 + .long 495975499 + .long 3319725204 + .long 1094291926 + .long 649355134 + .long 4103898207 + .long 964907833 + .long 991950999 + .long 2344483112 + .long 2188583852 + .long 1298710268 + .long 3912829119 + .long 1929815667 + .long 1983901999 + .long 393998928 + .long 82200408 + .long 2597420537 + .long 3530690942 + .long 3859631335 + .long 3967803999 + .long 787997856 + .long 164400817 + .long 899873778 + .long 2766414588 + .long 3424295375 + .long 3640640703 + .long 1575995713 + .long 328801635 + .long 1799747556 + .long 1237861880 + .long 2553623455 + .long 2986314111 + .long 3151991427 + .long 657603271 + .long 3599495112 + .long 2475723761 + .long 812279614 + .long 1677660927 + .long 2009015559 + .long 1315206542 + .long 2904022928 + .long 656480226 + .long 1624559229 + .long 3355321855 + .long 4018031118 + .long 2630413084 + .long 1513078560 + .long 1312960453 + .long 3249118458 + .long 2415676415 + .long 3741094941 + .long 965858873 + .long 3026157121 + .long 2625920907 + .long 2203269620 + .long 536385535 + .long 3187222587 + .long 1931717747 + .long 1757346946 + .long 956874519 + .long 111571945 + .long 1072771071 + .long 2079477878 + .long 3863435494 + .long 3514693892 + .long 1913749038 + .long 223143890 + .long 2145542143 + .long 4158955756 + .long 3431903692 + .long 2734420489 + .long 3827498077 + .long 446287780 + .long 4291084286 + .long 4022944216 + .long 2568840088 + .long 1173873683 + .long 3360028859 + .long 892575561 + .long 4287201277 + .long 3750921137 + .long 842712880 + .long 2347747367 + .long 2425090423 + .long 1785151123 + .long 4279435259 + .long 3206874979 + .long 1685425760 + .long 400527438 + .long 555213551 + .long 3570302247 + .long 4263903223 + .long 2118782663 + .long 3370851521 + .long 801054876 + .long 1110427102 + .long 2845637198 + .long 4232839151 + .long 4237565327 + .long 2446735747 + .long 1602109753 + .long 2220854205 + .long 1396307100 + .long 4170711006 + .long 4180163359 + .long 598504198 + .long 3204219507 + .long 146741115 + .long 2792614201 + .long 4046454716 + .long 4065359423 + .long 1197008397 + .long 2113471718 + .long 293482231 + .long 1290261106 + .long 3797942136 + .long 3835751551 + .long 2394016794 + .long 4226943436 + .long 586964463 + .long 2580522212 + .long 3300916976 + .long 3376535807 + .long 493066293 + .long 4158919577 + .long 1173928927 + .long 866077128 + .long 2306866656 + .long 2458104319 + .long 986132586 + .long 4022871858 + .long 2347857855 + .long 1732154256 + .long 318766016 + .long 621241343 + .long 1972265172 + .long 3750776420 + .long 400748414 + .long 3464308513 + .long 637532033 + .long 1242482686 + .long 3944530345 + .long 3206585544 + .long 801496828 + .long 2633649730 + .long 1275064066 + .long 2484965372 + .long 3594093395 + .long 2118203793 + .long 1602993657 + .long 972332164 + .long 2550128133 + .long 674963448 + .long 2893219494 + .long 4236407587 + .long 3205987314 + .long 1944664328 + .long 805288971 + .long 1349926897 + .long 1491471692 + .long 4177847879 + .long 2117007332 + .long 3889328657 + .long 1610577942 + .long 2699853794 + .long 2982943385 + .long 4060728462 + .long 4234014665 + .long 3483690018 + .long 3221155884 + .long 1104740292 + .long 1670919475 + .long 3826489629 + .long 4173062034 + .long 2672412741 + .long 2147344473 + .long 2209480585 + .long 3341838951 + .long 3358011962 + .long 4051156773 + .long 1049858187 + .long 4294688947 + .long 123993874 + .long 2388710606 + .long 2421056629 + .long 3807346250 + .long 2099716375 + .long 4294410598 + .long 247987749 + .long 482453916 + .long 547145963 + .long 3319725204 + .long 4199432751 + .long 4293853900 + .long 495975499 + .long 964907833 + .long 1094291926 + .long 2344483112 + .long 4103898207 + .long 4292740504 + .long 991950999 + .long 1929815667 + .long 2188583852 + .long 393998928 + .long 3912829119 + .long 4290513712 + .long 1983901999 + .long 3859631335 + .long 82200408 + .long 787997856 + .long 3530690942 + .long 4286060128 + .long 3967803999 + .long 3424295375 + .long 164400817 + .long 1575995713 + .long 2766414588 + .long 4277152960 + .long 3640640703 + .long 2553623455 + .long 328801635 + .long 3151991427 + .long 1237861880 + .long 4259338624 + .long 2986314111 + .long 812279614 + .long 657603271 + .long 2009015559 + .long 2475723761 + .long 4223709953 + .long 1677660927 + .long 1624559229 + .long 1315206542 + .long 4018031118 + .long 656480226 + .long 4152452611 + .long 3355321855 + .long 3249118458 + .long 2630413084 + .long 3741094941 + .long 1312960453 + .long 4009937927 + .long 2415676415 + .long 2203269620 + .long 965858873 + .long 3187222587 + .long 2625920907 + .long 3724908559 + .long 536385535 + .long 111571945 + .long 1931717747 + .long 2079477878 + .long 956874519 + .long 3154849823 + .long 1072771071 + .long 223143890 + .long 3863435494 + .long 4158955756 + .long 1913749038 + .long 2014732351 + .long 2145542143 + .long 446287780 + .long 3431903692 + .long 4022944216 + .long 3827498077 + .long 4029464703 + .long 4291084286 + .long 892575561 + .long 2568840088 + .long 3750921137 + .long 3360028859 + .long 3763962110 + .long 4287201277 + .long 1785151123 + .long 842712880 + .long 3206874979 + .long 2425090423 + .long 3232956925 + .long 4279435259 + .long 3570302247 + .long 1685425760 + .long 2118782663 + .long 555213551 + .long 2170946555 + .long 4263903223 + .long 2845637198 + .long 3370851521 + .long 4237565327 + .long 1110427102 + .long 46925815 + .long 4232839151 + .long 1396307100 + .long 2446735747 + .long 4180163359 + .long 2220854205 + .long 93851631 + .long 4170711006 + .long 2792614201 + .long 598504198 + .long 4065359423 + .long 146741115 + .long 187703262 + .long 4046454716 + .long 1290261106 + .long 1197008397 + .long 3835751551 + .long 293482231 + .long 375406524 + .long 3797942136 + .long 2580522212 + .long 2394016794 + .long 3376535807 + .long 586964463 + .long 750813049 + .long 3300916976 + .long 866077128 + .long 493066293 + .long 2458104319 + .long 1173928927 + .long 1501626098 + .long 2306866656 + .long 1732154256 + .long 986132586 + .long 621241343 + .long 2347857855 + .long 3003252197 + .long 318766016 + .long 3464308513 + .long 1972265172 + .long 1242482686 + .long 400748414 + .long 1711537099 + .long 637532033 + .long 2633649730 + .long 3944530345 + .long 2484965372 + .long 801496828 + .long 3423074199 + .long 1275064066 + .long 972332164 + .long 3594093395 + .long 674963448 + .long 1602993657 + .long 2551181103 + .long 2550128133 + .long 1944664328 + .long 2893219494 + .long 1349926897 + .long 3205987314 + .long 807394910 + .long 805288971 + .long 3889328657 + .long 1491471692 + .long 2699853794 + .long 2117007332 + .long 1614789820 + .long 1610577942 + .long 3483690018 + .long 2982943385 + .long 1104740292 + .long 4234014665 + .long 3229579640 + .long 3221155884 + .long 2672412741 + .long 1670919475 + .long 2209480585 + .long 4173062034 + .long 2164191985 + .long 2147344473 + .long 1049858187 + .long 3341838951 + .long 123993874 + .long 4051156773 + .long 33416674 + .long 4294688947 + .long 2099716375 + .long 2388710606 + .long 247987749 + .long 3807346250 + .long 66833348 + .long 4294410598 + .long 4199432751 + .long 482453916 + .long 495975499 + .long 3319725204 + .long 133666696 + .long 4293853900 + .long 4103898207 + .long 964907833 + .long 991950999 + .long 2344483112 + .long 267333393 + .long 4292740504 + .long 3912829119 + .long 1929815667 + .long 1983901999 + .long 393998928 + .long 534666787 + .long 4290513712 + .long 3530690942 + .long 3859631335 + .long 3967803999 + .long 787997856 + .long 1069333574 + .long 4286060128 + .long 2766414588 + .long 3424295375 + .long 3640640703 + .long 1575995713 + .long 2138667148 + .long 4277152960 + .long 1237861880 + .long 2553623455 + .long 2986314111 + .long 3151991427 + .long 4277334296 + .long 4259338624 + .long 2475723761 + .long 812279614 + .long 1677660927 + .long 2009015559 + .long 4259701297 + .long 4223709953 + .long 656480226 + .long 1624559229 + .long 3355321855 + .long 4018031118 + .long 4224435298 + .long 4152452611 + .long 1312960453 + .long 3249118458 + .long 2415676415 + .long 3741094941 + .long 4153903301 + .long 4009937927 + .long 2625920907 + .long 2203269620 + .long 536385535 + .long 3187222587 + .long 4012839307 + .long 3724908559 + .long 956874519 + .long 111571945 + .long 1072771071 + .long 2079477878 + .long 3730711318 + .long 3154849823 + .long 1913749038 + .long 223143890 + .long 2145542143 + .long 4158955756 + .long 3166455341 + .long 2014732351 + .long 3827498077 + .long 446287780 + .long 4291084286 + .long 4022944216 + .long 2037943386 + .long 4029464703 + .long 3360028859 + .long 892575561 + .long 4287201277 + .long 3750921137 + .long 4075886773 + .long 3763962110 + .long 2425090423 + .long 1785151123 + .long 4279435259 + .long 3206874979 + .long 3856806251 + .long 3232956925 + .long 555213551 + .long 3570302247 + .long 4263903223 + .long 2118782663 + .long 3418645206 + .long 2170946555 + .long 1110427102 + .long 2845637198 + .long 4232839151 + .long 4237565327 + .long 2542323117 + .long 46925815 + .long 2220854205 + .long 1396307100 + .long 4170711006 + .long 4180163359 + .long 789678938 + .long 93851631 + .long 146741115 + .long 2792614201 + .long 4046454716 + .long 4065359423 + .long 1579357876 + .long 187703262 + .long 293482231 + .long 1290261106 + .long 3797942136 + .long 3835751551 + .long 3158715752 + .long 375406524 + .long 586964463 + .long 2580522212 + .long 3300916976 + .long 3376535807 + .long 2022464208 + .long 750813049 + .long 1173928927 + .long 866077128 + .long 2306866656 + .long 2458104319 + .long 4044928416 + .long 1501626098 + .long 2347857855 + .long 1732154256 + .long 318766016 + .long 621241343 + .long 3794889537 + .long 3003252197 + .long 400748414 + .long 3464308513 + .long 637532033 + .long 1242482686 + .long 3294811778 + .long 1711537099 + .long 801496828 + .long 2633649730 + .long 1275064066 + .long 2484965372 + .long 2294656261 + .long 3423074199 + .long 1602993657 + .long 972332164 + .long 2550128133 + .long 674963448 + .long 294345226 + .long 2551181103 + .long 3205987314 + .long 1944664328 + .long 805288971 + .long 1349926897 + .long 588690452 + .long 807394910 + .long 2117007332 + .long 3889328657 + .long 1610577942 + .long 2699853794 + .long 1177380905 + .long 1614789820 + .long 4234014665 + .long 3483690018 + .long 3221155884 + .long 1104740292 + .long 2354761811 + .long 3229579640 + .long 4173062034 + .long 2672412741 + .long 2147344473 + .long 2209480585 + .long 414556326 + .long 2164191985 + .long 4051156773 + .long 1049858187 + .long 4294688947 + .long 123993874 + .long 829112653 + .long 33416674 + .long 3807346250 + .long 2099716375 + .long 4294410598 + .long 247987749 + .long 1658225307 + .long 66833348 + .long 3319725204 + .long 4199432751 + .long 4293853900 + .long 495975499 + .long 3316450614 + .long 133666696 + .long 2344483112 + .long 4103898207 + .long 4292740504 + .long 991950999 + .long 2337933933 + .long 267333393 + .long 393998928 + .long 3912829119 + .long 4290513712 + .long 1983901999 + .long 380900570 + .long 534666787 + .long 787997856 + .long 3530690942 + .long 4286060128 + .long 3967803999 + .long 761801140 + .long 1069333574 + .long 1575995713 + .long 2766414588 + .long 4277152960 + .long 3640640703 + .long 1523602280 + .long 2138667148 + .long 3151991427 + .long 1237861880 + .long 4259338624 + .long 2986314111 + .long 3047204561 + .long 4277334296 + .long 2009015559 + .long 2475723761 + .long 4223709953 + .long 1677660927 + .long 1799441827 + .long 4259701297 + .long 4018031118 + .long 656480226 + .long 4152452611 + .long 3355321855 + .long 3598883655 + .long 4224435298 + .long 3741094941 + .long 1312960453 + .long 4009937927 + .long 2415676415 + .long 2902800015 + .long 4153903301 + .long 3187222587 + .long 2625920907 + .long 3724908559 + .long 536385535 + .long 1510632735 + .long 4012839307 + .long 2079477878 + .long 956874519 + .long 3154849823 + .long 1072771071 + .long 3021265470 + .long 3730711318 + .long 4158955756 + .long 1913749038 + .long 2014732351 + .long 2145542143 + .long 1747563645 + .long 3166455341 + .long 4022944216 + .long 3827498077 + .long 4029464703 + .long 4291084286 + .long 3495127291 + .long 2037943386 + .long 3750921137 + .long 3360028859 + .long 3763962110 + .long 4287201277 + .long 2695287286 + .long 4075886773 + .long 3206874979 + .long 2425090423 + .long 3232956925 + .long 4279435259 + .long 1095607277 + .long 3856806251 + .long 2118782663 + .long 555213551 + .long 2170946555 + .long 4263903223 + .long 2191214555 + .long 3418645206 + .long 4237565327 + .long 1110427102 + .long 46925815 + .long 4232839151 + .long 87461814 + .long 2542323117 + .long 4180163359 + .long 2220854205 + .long 93851631 + .long 4170711006 + .long 174923629 + .long 789678938 + .long 4065359423 + .long 146741115 + .long 187703262 + .long 4046454716 + .long 349847258 + .long 1579357876 + .long 3835751551 + .long 293482231 + .long 375406524 + .long 3797942136 + .long 699694516 + .long 3158715752 + .long 3376535807 + .long 586964463 + .long 750813049 + .long 3300916976 + .long 1399389033 + .long 2022464208 + .long 2458104319 + .long 1173928927 + .long 1501626098 + .long 2306866656 + .long 2798778067 + .long 4044928416 + .long 621241343 + .long 2347857855 + .long 3003252197 + .long 318766016 + .long 1302588838 + .long 3794889537 + .long 1242482686 + .long 400748414 + .long 1711537099 + .long 637532033 + .long 2605177677 + .long 3294811778 + .long 2484965372 + .long 801496828 + .long 3423074199 + .long 1275064066 + .long 915388059 + .long 2294656261 + .long 674963448 + .long 1602993657 + .long 2551181103 + .long 2550128133 + .long 1830776118 + .long 294345226 + .long 1349926897 + .long 3205987314 + .long 807394910 + .long 805288971 + .long 3661552236 + .long 588690452 + .long 2699853794 + .long 2117007332 + .long 1614789820 + .long 1610577942 + .long 3028137177 + .long 1177380905 + .long 1104740292 + .long 4234014665 + .long 3229579640 + .long 3221155884 + .long 1761307059 + .long 2354761811 + .long 2209480585 + .long 4173062034 + .long 2164191985 + .long 2147344473 + .long 3522614119 + .long 414556326 + .long 123993874 + .long 4051156773 + .long 33416674 + .long 4294688947 + .long 2750260943 + .long 829112653 + .long 247987749 + .long 3807346250 + .long 66833348 + .long 4294410598 + .long 1205554591 + .long 1658225307 + .long 495975499 + .long 3319725204 + .long 133666696 + .long 4293853900 + .long 2411109183 + .long 3316450614 + .long 991950999 + .long 2344483112 + .long 267333393 + .long 4292740504 + .long 527251070 + .long 2337933933 + .long 1983901999 + .long 393998928 + .long 534666787 + .long 4290513712 + .long 1054502141 + .long 380900570 + .long 3967803999 + .long 787997856 + .long 1069333574 + .long 4286060128 + .long 2109004283 + .long 761801140 + .long 3640640703 + .long 1575995713 + .long 2138667148 + .long 4277152960 + .long 4218008566 + .long 1523602280 + .long 2986314111 + .long 3151991427 + .long 4277334296 + .long 4259338624 + .long 4141049836 + .long 3047204561 + .long 1677660927 + .long 2009015559 + .long 4259701297 + .long 4223709953 + .long 3987132377 + .long 1799441827 + .long 3355321855 + .long 4018031118 + .long 4224435298 + .long 4152452611 + .long 3679297459 + .long 3598883655 + .long 2415676415 + .long 3741094941 + .long 4153903301 + .long 4009937927 + .long 3063627623 + .long 2902800015 + .long 536385535 + .long 3187222587 + .long 4012839307 + .long 3724908559 + .long 1832287951 + .long 1510632735 + .long 1072771071 + .long 2079477878 + .long 3730711318 + .long 3154849823 + .long 3664575902 + .long 3021265470 + .long 2145542143 + .long 4158955756 + .long 3166455341 + .long 2014732351 + .long 3034184508 + .long 1747563645 + .long 4291084286 + .long 4022944216 + .long 2037943386 + .long 4029464703 + .long 1773401721 + .long 3495127291 + .long 4287201277 + .long 3750921137 + .long 4075886773 + .long 3763962110 + .long 3546803442 + .long 2695287286 + .long 4279435259 + .long 3206874979 + .long 3856806251 + .long 3232956925 + .long 2798639588 + .long 1095607277 + .long 4263903223 + .long 2118782663 + .long 3418645206 + .long 2170946555 + .long 1302311881 + .long 2191214555 + .long 4232839151 + .long 4237565327 + .long 2542323117 + .long 46925815 + .long 2604623763 + .long 87461814 + .long 4170711006 + .long 4180163359 + .long 789678938 + .long 93851631 + .long 914280231 + .long 174923629 + .long 4046454716 + .long 4065359423 + .long 1579357876 + .long 187703262 + .long 1828560463 + .long 349847258 + .long 3797942136 + .long 3835751551 + .long 3158715752 + .long 375406524 + .long 3657120927 + .long 699694516 + .long 3300916976 + .long 3376535807 + .long 2022464208 + .long 750813049 + .long 3019274558 + .long 1399389033 + .long 2306866656 + .long 2458104319 + .long 4044928416 + .long 1501626098 + .long 1743581820 + .long 2798778067 + .long 318766016 + .long 621241343 + .long 3794889537 + .long 3003252197 + .long 3487163641 + .long 1302588838 + .long 637532033 + .long 1242482686 + .long 3294811778 + .long 1711537099 + .long 2679359986 + .long 2605177677 + .long 1275064066 + .long 2484965372 + .long 2294656261 + .long 3423074199 + .long 1063752677 + .long 915388059 + .long 2550128133 + .long 674963448 + .long 294345226 + .long 2551181103 + .long 2127505355 + .long 1830776118 + .long 805288971 + .long 1349926897 + .long 588690452 + .long 807394910 + .long 4255010710 + .long 3661552236 + .long 1610577942 + .long 2699853794 + .long 1177380905 + .long 1614789820 + .long 4215054124 + .long 3028137177 + .long 3221155884 + .long 1104740292 + .long 2354761811 + .long 3229579640 + .long 4135140952 + .long 1761307059 + .long 2147344473 + .long 2209480585 + .long 414556326 + .long 2164191985 + .long 3975314608 + .long 3522614119 + .long 4294688947 + .long 123993874 + .long 829112653 + .long 33416674 + .long 3655661921 + .long 2750260943 + .long 4294410598 + .long 247987749 + .long 1658225307 + .long 66833348 + .long 3016356546 + .long 1205554591 + .long 4293853900 + .long 495975499 + .long 3316450614 + .long 133666696 + .long 1737745796 + .long 2411109183 + .long 4292740504 + .long 991950999 + .long 2337933933 + .long 267333393 + .long 3475491593 + .long 527251070 + .long 4290513712 + .long 1983901999 + .long 380900570 + .long 534666787 + .long 2656015891 + .long 1054502141 + .long 4286060128 + .long 3967803999 + .long 761801140 + .long 1069333574 + .long 1017064486 + .long 2109004283 + .long 4277152960 + .long 3640640703 + .long 1523602280 + .long 2138667148 + .long 2034128973 + .long 4218008566 + .long 4259338624 + .long 2986314111 + .long 3047204561 + .long 4277334296 + .long 4068257947 + .long 4141049836 + .long 4223709953 + .long 1677660927 + .long 1799441827 + .long 4259701297 + .long 3841548598 + .long 3987132377 + .long 4152452611 + .long 3355321855 + .long 3598883655 + .long 4224435298 + .long 3388129901 + .long 3679297459 + .long 4009937927 + .long 2415676415 + .long 2902800015 + .long 4153903301 + .long 2481292507 + .long 3063627623 + .long 3724908559 + .long 536385535 + .long 1510632735 + .long 4012839307 + .long 667617719 + .long 1832287951 + .long 3154849823 + .long 1072771071 + .long 3021265470 + .long 3730711318 + .long 1335235438 + .long 3664575902 + .long 2014732351 + .long 2145542143 + .long 1747563645 + .long 3166455341 + .long 2670470877 + .long 3034184508 + .long 4029464703 + .long 4291084286 + .long 3495127291 + .long 2037943386 + .long 1045974458 + .long 1773401721 + .long 3763962110 + .long 4287201277 + .long 2695287286 + .long 4075886773 + .long 2091948916 + .long 3546803442 + .long 3232956925 + .long 4279435259 + .long 1095607277 + .long 3856806251 + .long 4183897833 + .long 2798639588 + .long 2170946555 + .long 4263903223 + .long 2191214555 + .long 3418645206 + .long 4072828371 + .long 1302311881 + .long 46925815 + .long 4232839151 + .long 87461814 + .long 2542323117 + .long 3850689447 + .long 2604623763 + .long 93851631 + .long 4170711006 + .long 174923629 + .long 789678938 + .long 3406411599 + .long 914280231 + .long 187703262 + .long 4046454716 + .long 349847258 + .long 1579357876 + .long 2517855902 + .long 1828560463 + .long 375406524 + .long 3797942136 + .long 699694516 + .long 3158715752 + .long 740744509 + .long 3657120927 + .long 750813049 + .long 3300916976 + .long 1399389033 + .long 2022464208 + .long 1481489018 + .long 3019274558 + .long 1501626098 + .long 2306866656 + .long 2798778067 + .long 4044928416 + .long 2962978036 + .long 1743581820 + .long 3003252197 + .long 318766016 + .long 1302588838 + .long 3794889537 + .long 1630988776 + .long 3487163641 + .long 1711537099 + .long 637532033 + .long 2605177677 + .long 3294811778 + .long 3261977553 + .long 2679359986 + .long 3423074199 + .long 1275064066 + .long 915388059 + .long 2294656261 + .long 2228987811 + .long 1063752677 + .long 2551181103 + .long 2550128133 + .long 1830776118 + .long 294345226 + .long 163008326 + .long 2127505355 + .long 807394910 + .long 805288971 + .long 3661552236 + .long 588690452 + .long 326016652 + .long 4255010710 + .long 1614789820 + .long 1610577942 + .long 3028137177 + .long 1177380905 + .long 652033304 + .long 4215054124 + .long 3229579640 + .long 3221155884 + .long 1761307059 + .long 2354761811 + .long 1304066609 + .long 4135140952 + .long 2164191985 + .long 2147344473 + .long 3522614119 + .long 414556326 + .long 2608133219 + .long 3975314608 + .long 33416674 + .long 4294688947 + .long 2750260943 + .long 829112653 + .long 921299143 + .long 3655661921 + .long 66833348 + .long 4294410598 + .long 1205554591 + .long 1658225307 + .long 1842598287 + .long 3016356546 + .long 133666696 + .long 4293853900 + .long 2411109183 + .long 3316450614 + .long 3685196575 + .long 1737745796 + .long 267333393 + .long 4292740504 + .long 527251070 + .long 2337933933 + .long 3075425855 + .long 3475491593 + .long 534666787 + .long 4290513712 + .long 1054502141 + .long 380900570 + .long 1855884414 + .long 2656015891 + .long 1069333574 + .long 4286060128 + .long 2109004283 + .long 761801140 + .long 3711768829 + .long 1017064486 + .long 2138667148 + .long 4277152960 + .long 4218008566 + .long 1523602280 + .long 3128570363 + .long 2034128973 + .long 4277334296 + .long 4259338624 + .long 4141049836 + .long 3047204561 + .long 1962173430 + .long 4068257947 + .long 4259701297 + .long 4223709953 + .long 3987132377 + .long 1799441827 + .long 3924346860 + .long 3841548598 + .long 4224435298 + .long 4152452611 + .long 3679297459 + .long 3598883655 + .long 3553726425 + .long 3388129901 + .long 4153903301 + .long 4009937927 + .long 3063627623 + .long 2902800015 + .long 2812485555 + .long 2481292507 + .long 4012839307 + .long 3724908559 + .long 1832287951 + .long 1510632735 + .long 1330003814 + .long 667617719 + .long 3730711318 + .long 3154849823 + .long 3664575902 + .long 3021265470 + .long 2660007629 + .long 1335235438 + .long 3166455341 + .long 2014732351 + .long 3034184508 + .long 1747563645 + .long 1025047962 + .long 2670470877 + .long 2037943386 + .long 4029464703 + .long 1773401721 + .long 3495127291 + .long 2050095924 + .long 1045974458 + .long 4075886773 + .long 3763962110 + .long 3546803442 + .long 2695287286 + .long 4100191849 + .long 2091948916 + .long 3856806251 + .long 3232956925 + .long 2798639588 + .long 1095607277 + .long 3905416403 + .long 4183897833 + .long 3418645206 + .long 2170946555 + .long 1302311881 + .long 2191214555 + .long 3515865511 + .long 4072828371 + .long 2542323117 + .long 46925815 + .long 2604623763 + .long 87461814 + .long 2736763727 + .long 3850689447 + .long 789678938 + .long 93851631 + .long 914280231 + .long 174923629 + .long 1178560158 + .long 3406411599 + .long 1579357876 + .long 187703262 + .long 1828560463 + .long 349847258 + .long 2357120316 + .long 2517855902 + .long 3158715752 + .long 375406524 + .long 3657120927 + .long 699694516 + .long 419273337 + .long 740744509 + .long 2022464208 + .long 750813049 + .long 3019274558 + .long 1399389033 + .long 838546674 + .long 1481489018 + .long 4044928416 + .long 1501626098 + .long 1743581820 + .long 2798778067 + .long 1677093349 + .long 2962978036 + .long 3794889537 + .long 3003252197 + .long 3487163641 + .long 1302588838 + .long 3354186699 + .long 1630988776 + .long 3294811778 + .long 1711537099 + .long 2679359986 + .long 2605177677 + .long 2413406103 + .long 3261977553 + .long 2294656261 + .long 3423074199 + .long 1063752677 + .long 915388059 + .long 531844911 + .long 2228987811 + .long 294345226 + .long 2551181103 + .long 2127505355 + .long 1830776118 + .long 1063689823 + .long 163008326 + .long 588690452 + .long 807394910 + .long 4255010710 + .long 3661552236 + .long 2127379647 + .long 326016652 + .long 1177380905 + .long 1614789820 + .long 4215054124 + .long 3028137177 + .long 4254759295 + .long 652033304 + .long 2354761811 + .long 3229579640 + .long 4135140952 + .long 1761307059 + .long 4214551295 + .long 1304066609 + .long 414556326 + .long 2164191985 + .long 3975314608 + .long 3522614119 + .long 4134135294 + .long 2608133219 + .long 829112653 + .long 33416674 + .long 3655661921 + .long 2750260943 + .long 3973303293 + .long 921299143 + .long 1658225307 + .long 66833348 + .long 3016356546 + .long 1205554591 + .long 3651639290 + .long 1842598287 + .long 3316450614 + .long 133666696 + .long 1737745796 + .long 2411109183 + .long 3008311285 + .long 3685196575 + .long 2337933933 + .long 267333393 + .long 3475491593 + .long 527251070 + .long 1721655274 + .long 3075425855 + .long 380900570 + .long 534666787 + .long 2656015891 + .long 1054502141 + .long 3443310548 + .long 1855884414 + .long 761801140 + .long 1069333574 + .long 1017064486 + .long 2109004283 + .long 2591653800 + .long 3711768829 + .long 1523602280 + .long 2138667148 + .long 2034128973 + .long 4218008566 + .long 888340305 + .long 3128570363 + .long 3047204561 + .long 4277334296 + .long 4068257947 + .long 4141049836 + .long 1776680610 + .long 1962173430 + .long 1799441827 + .long 4259701297 + .long 3841548598 + .long 3987132377 + .long 3553361221 + .long 3924346860 + .long 3598883655 + .long 4224435298 + .long 3388129901 + .long 3679297459 + .long 2811755147 + .long 3553726425 + .long 2902800015 + .long 4153903301 + .long 2481292507 + .long 3063627623 + .long 1328542998 + .long 2812485555 + .long 1510632735 + .long 4012839307 + .long 667617719 + .long 1832287951 + .long 2657085997 + .long 1330003814 + .long 3021265470 + .long 3730711318 + .long 1335235438 + .long 3664575902 + .long 1019204698 + .long 2660007629 + .long 1747563645 + .long 3166455341 + .long 2670470877 + .long 3034184508 + .long 2038409397 + .long 1025047962 + .long 3495127291 + .long 2037943386 + .long 1045974458 + .long 1773401721 + .long 4076818795 + .long 2050095924 + .long 2695287286 + .long 4075886773 + .long 2091948916 + .long 3546803442 + .long 3858670295 + .long 4100191849 + .long 1095607277 + .long 3856806251 + .long 4183897833 + .long 2798639588 + .long 3422373294 + .long 3905416403 + .long 2191214555 + .long 3418645206 + .long 4072828371 + .long 1302311881 + .long 2549779293 + .long 3515865511 + .long 87461814 + .long 2542323117 + .long 3850689447 + .long 2604623763 + .long 804591290 + .long 2736763727 + .long 174923629 + .long 789678938 + .long 3406411599 + .long 914280231 + .long 1609182581 + .long 1178560158 + .long 349847258 + .long 1579357876 + .long 2517855902 + .long 1828560463 + .long 3218365162 + .long 2357120316 + .long 699694516 + .long 3158715752 + .long 740744509 + .long 3657120927 + .long 2141763028 + .long 419273337 + .long 1399389033 + .long 2022464208 + .long 1481489018 + .long 3019274558 + .long 4283526057 + .long 838546674 + .long 2798778067 + .long 4044928416 + .long 2962978036 + .long 1743581820 + .long 4272084818 + .long 1677093349 + .long 1302588838 + .long 3794889537 + .long 1630988776 + .long 3487163641 + .long 4249202340 + .long 3354186699 + .long 2605177677 + .long 3294811778 + .long 3261977553 + .long 2679359986 + .long 4203437385 + .long 2413406103 + .long 915388059 + .long 2294656261 + .long 2228987811 + .long 1063752677 + .long 4111907475 + .long 531844911 + .long 1830776118 + .long 294345226 + .long 163008326 + .long 2127505355 + .long 3928847655 + .long 1063689823 + .long 3661552236 + .long 588690452 + .long 326016652 + .long 4255010710 + .long 3562728015 + .long 2127379647 + .long 3028137177 + .long 1177380905 + .long 652033304 + .long 4215054124 + .long 2830488734 + .long 4254759295 + .long 1761307059 + .long 2354761811 + .long 1304066609 + .long 4135140952 + .long 1366010173 + .long 4214551295 + .long 3522614119 + .long 414556326 + .long 2608133219 + .long 3975314608 + .long 2732020347 + .long 4134135294 + .long 2750260943 + .long 829112653 + .long 921299143 + .long 3655661921 + .long 1169073399 + .long 3973303293 + .long 1205554591 + .long 1658225307 + .long 1842598287 + .long 3016356546 + .long 2338146798 + .long 3651639290 + .long 2411109183 + .long 3316450614 + .long 3685196575 + .long 1737745796 + .long 381326301 + .long 3008311285 + .long 527251070 + .long 2337933933 + .long 3075425855 + .long 3475491593 + .long 762652602 + .long 1721655274 + .long 1054502141 + .long 380900570 + .long 1855884414 + .long 2656015891 + .long 1525305205 + .long 3443310548 + .long 2109004283 + .long 761801140 + .long 3711768829 + .long 1017064486 + .long 3050610411 + .long 2591653800 + .long 4218008566 + .long 1523602280 + .long 3128570363 + .long 2034128973 + .long 1806253526 + .long 888340305 + .long 4141049836 + .long 3047204561 + .long 1962173430 + .long 4068257947 + .long 3612507052 + .long 1776680610 + .long 3987132377 + .long 1799441827 + .long 3924346860 + .long 3841548598 + .long 2930046808 + .long 3553361221 + .long 3679297459 + .long 3598883655 + .long 3553726425 + .long 3388129901 + .long 1565126321 + .long 2811755147 + .long 3063627623 + .long 2902800015 + .long 2812485555 + .long 2481292507 + .long 3130252643 + .long 1328542998 + .long 1832287951 + .long 1510632735 + .long 1330003814 + .long 667617719 + .long 1965537991 + .long 2657085997 + .long 3664575902 + .long 3021265470 + .long 2660007629 + .long 1335235438 + .long 3931075983 + .long 1019204698 + .long 3034184508 + .long 1747563645 + .long 1025047962 + .long 2670470877 + .long 3567184671 + .long 2038409397 + .long 1773401721 + .long 3495127291 + .long 2050095924 + .long 1045974458 + .long 2839402047 + .long 4076818795 + .long 3546803442 + .long 2695287286 + .long 4100191849 + .long 2091948916 + .long 1383836798 + .long 3858670295 + .long 2798639588 + .long 1095607277 + .long 3905416403 + .long 4183897833 + .long 2767673597 + .long 3422373294 + .long 1302311881 + .long 2191214555 + .long 3515865511 + .long 4072828371 + .long 1240379898 + .long 2549779293 + .long 2604623763 + .long 87461814 + .long 2736763727 + .long 3850689447 + .long 2480759797 + .long 804591290 + .long 914280231 + .long 174923629 + .long 1178560158 + .long 3406411599 + .long 666552299 + .long 1609182581 + .long 1828560463 + .long 349847258 + .long 2357120316 + .long 2517855902 + .long 1333104599 + .long 3218365162 + .long 3657120927 + .long 699694516 + .long 419273337 + .long 740744509 + .long 2666209199 + .long 2141763028 + .long 3019274558 + .long 1399389033 + .long 838546674 + .long 1481489018 + .long 1037451103 + .long 4283526057 + .long 1743581820 + .long 2798778067 + .long 1677093349 + .long 2962978036 + .long 2074902206 + .long 4272084818 + .long 3487163641 + .long 1302588838 + .long 3354186699 + .long 1630988776 + .long 4149804412 + .long 4249202340 + .long 2679359986 + .long 2605177677 + .long 2413406103 + .long 3261977553 + .long 4004641529 + .long 4203437385 + .long 1063752677 + .long 915388059 + .long 531844911 + .long 2228987811 + .long 3714315762 + .long 4111907475 + .long 2127505355 + .long 1830776118 + .long 1063689823 + .long 163008326 + .long 3133664229 + .long 3928847655 + .long 4255010710 + .long 3661552236 + .long 2127379647 + .long 326016652 + .long 1972361163 + .long 3562728015 + .long 4215054124 + .long 3028137177 + .long 4254759295 + .long 652033304 + .long 3944722327 + .long 2830488734 + .long 4135140952 + .long 1761307059 + .long 4214551295 + .long 1304066609 + .long 3594477359 + .long 1366010173 + .long 3975314608 + .long 3522614119 + .long 4134135294 + .long 2608133219 + .long 2893987423 + .long 2732020347 + .long 3655661921 + .long 2750260943 + .long 3973303293 + .long 921299143 + .long 1493007550 + .long 1169073399 + .long 3016356546 + .long 1205554591 + .long 3651639290 + .long 1842598287 + .long 2986015100 + .long 2338146798 + .long 1737745796 + .long 2411109183 + .long 3008311285 + .long 3685196575 + .long 1677062904 + .long 381326301 + .long 3475491593 + .long 527251070 + .long 1721655274 + .long 3075425855 + .long 3354125809 + .long 762652602 + .long 2656015891 + .long 1054502141 + .long 3443310548 + .long 1855884414 + .long 2413284322 + .long 1525305205 + .long 1017064486 + .long 2109004283 + .long 2591653800 + .long 3711768829 + .long 531601349 + .long 3050610411 + .long 2034128973 + .long 4218008566 + .long 888340305 + .long 3128570363 + .long 1063202699 + .long 1806253526 + .long 4068257947 + .long 4141049836 + .long 1776680610 + .long 1962173430 + .long 2126405399 + .long 3612507052 + .long 3841548598 + .long 3987132377 + .long 3553361221 + .long 3924346860 + .long 4252810799 + .long 2930046808 + .long 3388129901 + .long 3679297459 + .long 2811755147 + .long 3553726425 + .long 4210654302 + .long 1565126321 + .long 2481292507 + .long 3063627623 + .long 1328542998 + .long 2812485555 + .long 4126341309 + .long 3130252643 + .long 667617719 + .long 1832287951 + .long 2657085997 + .long 1330003814 + .long 3957715323 + .long 1965537991 + .long 1335235438 + .long 3664575902 + .long 1019204698 + .long 2660007629 + .long 3620463350 + .long 3931075983 + .long 2670470877 + .long 3034184508 + .long 2038409397 + .long 1025047962 + .long 2945959404 + .long 3567184671 + .long 1045974458 + .long 1773401721 + .long 4076818795 + .long 2050095924 + .long 1596951513 + .long 2839402047 + .long 2091948916 + .long 3546803442 + .long 3858670295 + .long 4100191849 + .long 3193903027 + .long 1383836798 + .long 4183897833 + .long 2798639588 + .long 3422373294 + .long 3905416403 + .long 2092838759 + .long 2767673597 + .long 4072828371 + .long 1302311881 + .long 2549779293 + .long 3515865511 + .long 4185677519 + .long 1240379898 + .long 3850689447 + .long 2604623763 + .long 804591290 + .long 2736763727 + .long 4076387742 + .long 2480759797 + .long 3406411599 + .long 914280231 + .long 1609182581 + .long 1178560158 + .long 3857808189 + .long 666552299 + .long 2517855902 + .long 1828560463 + .long 3218365162 + .long 2357120316 + .long 3420649082 + .long 1333104599 + .long 740744509 + .long 3657120927 + .long 2141763028 + .long 419273337 + .long 2546330868 + .long 2666209199 + .long 1481489018 + .long 3019274558 + .long 4283526057 + .long 838546674 + .long 797694440 + .long 1037451103 + .long 2962978036 + .long 1743581820 + .long 4272084818 + .long 1677093349 + .long 1595388880 + .long 2074902206 + .long 1630988776 + .long 3487163641 + .long 4249202340 + .long 3354186699 + .long 3190777760 + .long 4149804412 + .long 3261977553 + .long 2679359986 + .long 4203437385 + .long 2413406103 + .long 2086588225 + .long 4004641529 + .long 2228987811 + .long 1063752677 + .long 4111907475 + .long 531844911 + .long 4173176451 + .long 3714315762 + .long 163008326 + .long 2127505355 + .long 3928847655 + .long 1063689823 + .long 4051385607 + .long 3133664229 + .long 326016652 + .long 4255010710 + .long 3562728015 + .long 2127379647 + .long 3807803918 + .long 1972361163 + .long 652033304 + .long 4215054124 + .long 2830488734 + .long 4254759295 + .long 3320640540 + .long 3944722327 + .long 1304066609 + .long 4135140952 + .long 1366010173 + .long 4214551295 + .long 2346313785 + .long 3594477359 + .long 2608133219 + .long 3975314608 + .long 2732020347 + .long 4134135294 + .long 397660275 + .long 2893987423 + .long 921299143 + .long 3655661921 + .long 1169073399 + .long 3973303293 + .long 795320551 + .long 1493007550 + .long 1842598287 + .long 3016356546 + .long 2338146798 + .long 3651639290 + .long 1590641102 + .long 2986015100 + .long 3685196575 + .long 1737745796 + .long 381326301 + .long 3008311285 + .long 3181282204 + .long 1677062904 + .long 3075425855 + .long 3475491593 + .long 762652602 + .long 1721655274 + .long 2067597113 + .long 3354125809 + .long 1855884414 + .long 2656015891 + .long 1525305205 + .long 3443310548 + .long 4135194227 + .long 2413284322 + .long 3711768829 + .long 1017064486 + .long 3050610411 + .long 2591653800 + .long 3975421159 + .long 531601349 + .long 3128570363 + .long 2034128973 + .long 1806253526 + .long 888340305 + .long 3655875023 + .long 1063202699 + .long 1962173430 + .long 4068257947 + .long 3612507052 + .long 1776680610 + .long 3016782751 + .long 2126405399 + .long 3924346860 + .long 3841548598 + .long 2930046808 + .long 3553361221 + .long 1738598206 + .long 4252810799 + .long 3553726425 + .long 3388129901 + .long 1565126321 + .long 2811755147 + .long 3477196413 + .long 4210654302 + .long 2812485555 + .long 2481292507 + .long 3130252643 + .long 1328542998 + .long 2659425531 + .long 4126341309 + .long 1330003814 + .long 667617719 + .long 1965537991 + .long 2657085997 + .long 1023883767 + .long 3957715323 + .long 2660007629 + .long 1335235438 + .long 3931075983 + .long 1019204698 + .long 2047767535 + .long 3620463350 + .long 1025047962 + .long 2670470877 + .long 3567184671 + .long 2038409397 + .long 4095535070 + .long 2945959404 + .long 2050095924 + .long 1045974458 + .long 2839402047 + .long 4076818795 + .long 3896102844 + .long 1596951513 + .long 4100191849 + .long 2091948916 + .long 1383836798 + .long 3858670295 + .long 3497238392 + .long 3193903027 + .long 3905416403 + .long 4183897833 + .long 2767673597 + .long 3422373294 + .long 2699509489 + .long 2092838759 + .long 3515865511 + .long 4072828371 + .long 1240379898 + .long 2549779293 + .long 1104051682 + .long 4185677519 + .long 2736763727 + .long 3850689447 + .long 2480759797 + .long 804591290 + .long 2208103365 + .long 4076387742 + .long 1178560158 + .long 3406411599 + .long 666552299 + .long 1609182581 + .long 121239434 + .long 3857808189 + .long 2357120316 + .long 2517855902 + .long 1333104599 + .long 3218365162 + .long 242478868 + .long 3420649082 + .long 419273337 + .long 740744509 + .long 2666209199 + .long 2141763028 + .long 484957737 + .long 2546330868 + .long 838546674 + .long 1481489018 + .long 1037451103 + .long 4283526057 + .long 969915474 + .long 797694440 + .long 1677093349 + .long 2962978036 + .long 2074902206 + .long 4272084818 + .long 1939830949 + .long 1595388880 + .long 3354186699 + .long 1630988776 + .long 4149804412 + .long 4249202340 + .long 3879661898 + .long 3190777760 + .long 2413406103 + .long 3261977553 + .long 4004641529 + .long 4203437385 + .long 3464356500 + .long 2086588225 + .long 531844911 + .long 2228987811 + .long 3714315762 + .long 4111907475 + .long 2633745705 + .long 4173176451 + .long 1063689823 + .long 163008326 + .long 3133664229 + .long 3928847655 + .long 972524114 + .long 4051385607 + .long 2127379647 + .long 326016652 + .long 1972361163 + .long 3562728015 + .long 1945048229 + .long 3807803918 + .long 4254759295 + .long 652033304 + .long 3944722327 + .long 2830488734 + .long 3890096458 + .long 3320640540 + .long 4214551295 + .long 1304066609 + .long 3594477359 + .long 1366010173 + .long 3485225620 + .long 2346313785 + .long 4134135294 + .long 2608133219 + .long 2893987423 + .long 2732020347 + .long 2675483945 + .long 397660275 + .long 3973303293 + .long 921299143 + .long 1493007550 + .long 1169073399 + .long 1056000594 + .long 795320551 + .long 3651639290 + .long 1842598287 + .long 2986015100 + .long 2338146798 + .long 2112001188 + .long 1590641102 + .long 3008311285 + .long 3685196575 + .long 1677062904 + .long 381326301 + .long 4224002377 + .long 3181282204 + .long 1721655274 + .long 3075425855 + .long 3354125809 + .long 762652602 + .long 4153037458 + .long 2067597113 + .long 3443310548 + .long 1855884414 + .long 2413284322 + .long 1525305205 + .long 4011107621 + .long 4135194227 + .long 2591653800 + .long 3711768829 + .long 531601349 + .long 3050610411 + .long 3727247947 + .long 3975421159 + .long 888340305 + .long 3128570363 + .long 1063202699 + .long 1806253526 + .long 3159528599 + .long 3655875023 + .long 1776680610 + .long 1962173430 + .long 2126405399 + .long 3612507052 + .long 2024089902 + .long 3016782751 + .long 3553361221 + .long 3924346860 + .long 4252810799 + .long 2930046808 + .long 4048179805 + .long 1738598206 + .long 2811755147 + .long 3553726425 + .long 4210654302 + .long 1565126321 + .long 3801392314 + .long 3477196413 + .long 1328542998 + .long 2812485555 + .long 4126341309 + .long 3130252643 + .long 3307817333 + .long 2659425531 + .long 2657085997 + .long 1330003814 + .long 3957715323 + .long 1965537991 + .long 2320667370 + .long 1023883767 + .long 1019204698 + .long 2660007629 + .long 3620463350 + .long 3931075983 + .long 346367444 + .long 2047767535 + .long 2038409397 + .long 1025047962 + .long 2945959404 + .long 3567184671 + .long 692734889 + .long 4095535070 + .long 4076818795 + .long 2050095924 + .long 1596951513 + .long 2839402047 + .long 1385469779 + .long 3896102844 + .long 3858670295 + .long 4100191849 + .long 3193903027 + .long 1383836798 + .long 2770939558 + .long 3497238392 + .long 3422373294 + .long 3905416403 + .long 2092838759 + .long 2767673597 + .long 1246911821 + .long 2699509489 + .long 2549779293 + .long 3515865511 + .long 4185677519 + .long 1240379898 + .long 2493823642 + .long 1104051682 + .long 804591290 + .long 2736763727 + .long 4076387742 + .long 2480759797 + .long 692679989 + .long 2208103365 + .long 1609182581 + .long 1178560158 + .long 3857808189 + .long 666552299 + .long 1385359979 + .long 121239434 + .long 3218365162 + .long 2357120316 + .long 3420649082 + .long 1333104599 + .long 2770719959 + .long 242478868 + .long 2141763028 + .long 419273337 + .long 2546330868 + .long 2666209199 + .long 1246472623 + .long 484957737 + .long 4283526057 + .long 838546674 + .long 797694440 + .long 1037451103 + .long 2492945247 + .long 969915474 + .long 4272084818 + .long 1677093349 + .long 1595388880 + .long 2074902206 + .long 690923199 + .long 1939830949 + .long 4249202340 + .long 3354186699 + .long 3190777760 + .long 4149804412 + .long 1381846399 + .long 3879661898 + .long 4203437385 + .long 2413406103 + .long 2086588225 + .long 4004641529 + .long 2763692798 + .long 3464356500 + .long 4111907475 + .long 531844911 + .long 4173176451 + .long 3714315762 + .long 1232418301 + .long 2633745705 + .long 3928847655 + .long 1063689823 + .long 4051385607 + .long 3133664229 + .long 2464836603 + .long 972524114 + .long 3562728015 + .long 2127379647 + .long 3807803918 + .long 1972361163 + .long 634705910 + .long 1945048229 + .long 2830488734 + .long 4254759295 + .long 3320640540 + .long 3944722327 + .long 1269411821 + .long 3890096458 + .long 1366010173 + .long 4214551295 + .long 2346313785 + .long 3594477359 + .long 2538823642 + .long 3485225620 + .long 2732020347 + .long 4134135294 + .long 397660275 + .long 2893987423 + .long 782679989 + .long 2675483945 + .long 1169073399 + .long 3973303293 + .long 795320551 + .long 1493007550 + .long 1565359979 + .long 1056000594 + .long 2338146798 + .long 3651639290 + .long 1590641102 + .long 2986015100 + .long 3130719959 + .long 2112001188 + .long 381326301 + .long 3008311285 + .long 3181282204 + .long 1677062904 + .long 1966472623 + .long 4224002377 + .long 762652602 + .long 1721655274 + .long 2067597113 + .long 3354125809 + .long 3932945247 + .long 4153037458 + .long 1525305205 + .long 3443310548 + .long 4135194227 + .long 2413284322 + .long 3570923199 + .long 4011107621 + .long 3050610411 + .long 2591653800 + .long 3975421159 + .long 531601349 + .long 2846879102 + .long 3727247947 + .long 1806253526 + .long 888340305 + .long 3655875023 + .long 1063202699 + .long 1398790909 + .long 3159528599 + .long 3612507052 + .long 1776680610 + .long 3016782751 + .long 2126405399 + .long 2797581819 + .long 2024089902 + .long 2930046808 + .long 3553361221 + .long 1738598206 + .long 4252810799 + .long 1300196342 + .long 4048179805 + .long 1565126321 + .long 2811755147 + .long 3477196413 + .long 4210654302 + .long 2600392684 + .long 3801392314 + .long 3130252643 + .long 1328542998 + .long 2659425531 + .long 4126341309 + .long 905818072 + .long 3307817333 + .long 1965537991 + .long 2657085997 + .long 1023883767 + .long 3957715323 + .long 1811636145 + .long 2320667370 + .long 3931075983 + .long 1019204698 + .long 2047767535 + .long 3620463350 + .long 3623272290 + .long 346367444 + .long 3567184671 + .long 2038409397 + .long 4095535070 + .long 2945959404 + .long 2951577284 + .long 692734889 + .long 2839402047 + .long 4076818795 + .long 3896102844 + .long 1596951513 + .long 1608187272 + .long 1385469779 + .long 1383836798 + .long 3858670295 + .long 3497238392 + .long 3193903027 + .long 3216374545 + .long 2770939558 + .long 2767673597 + .long 3422373294 + .long 2699509489 + .long 2092838759 + .long 2137781795 + .long 1246911821 + .long 1240379898 + .long 2549779293 + .long 1104051682 + .long 4185677519 + .long 4275563591 + .long 2493823642 + .long 2480759797 + .long 804591290 + .long 2208103365 + .long 4076387742 + .long 4256159887 + .long 692679989 + .long 666552299 + .long 1609182581 + .long 121239434 + .long 3857808189 + .long 4217352479 + .long 1385359979 + .long 1333104599 + .long 3218365162 + .long 242478868 + .long 3420649082 + .long 4139737663 + .long 2770719959 + .long 2666209199 + .long 2141763028 + .long 484957737 + .long 2546330868 + .long 3984508030 + .long 1246472623 + .long 1037451103 + .long 4283526057 + .long 969915474 + .long 797694440 + .long 3674048764 + .long 2492945247 + .long 2074902206 + .long 4272084818 + .long 1939830949 + .long 1595388880 + .long 3053130232 + .long 690923199 + .long 4149804412 + .long 4249202340 + .long 3879661898 + .long 3190777760 + .long 1811293169 + .long 1381846399 + .long 4004641529 + .long 4203437385 + .long 3464356500 + .long 2086588225 + .long 3622586339 + .long 2763692798 + .long 3714315762 + .long 4111907475 + .long 2633745705 + .long 4173176451 + .long 2950205382 + .long 1232418301 + .long 3133664229 + .long 3928847655 + .long 972524114 + .long 4051385607 + .long 1605443469 + .long 2464836603 + .long 1972361163 + .long 3562728015 + .long 1945048229 + .long 3807803918 + .long 3210886938 + .long 634705910 + .long 3944722327 + .long 2830488734 + .long 3890096458 + .long 3320640540 + .long 2126806581 + .long 1269411821 + .long 3594477359 + .long 1366010173 + .long 3485225620 + .long 2346313785 + .long 4253613162 + .long 2538823642 + .long 2893987423 + .long 2732020347 + .long 2675483945 + .long 397660275 + .long 4212259029 + .long 782679989 + .long 1493007550 + .long 1169073399 + .long 1056000594 + .long 795320551 + .long 4129550763 + .long 1565359979 + .long 2986015100 + .long 2338146798 + .long 2112001188 + .long 1590641102 + .long 3964134231 + .long 3130719959 + .long 1677062904 + .long 381326301 + .long 4224002377 + .long 3181282204 + .long 3633301166 + .long 1966472623 + .long 3354125809 + .long 762652602 + .long 4153037458 + .long 2067597113 + .long 2971635037 + .long 3932945247 + .long 2413284322 + .long 1525305205 + .long 4011107621 + .long 4135194227 + .long 1648302778 + .long 3570923199 + .long 531601349 + .long 3050610411 + .long 3727247947 + .long 3975421159 + .long 3296605556 + .long 2846879102 + .long 1063202699 + .long 1806253526 + .long 3159528599 + .long 3655875023 + .long 2298243816 + .long 1398790909 + .long 2126405399 + .long 3612507052 + .long 2024089902 + .long 3016782751 + .long 301520336 + .long 2797581819 + .long 4252810799 + .long 2930046808 + .long 4048179805 + .long 1738598206 + .long 603040673 + .long 1300196342 + .long 4210654302 + .long 1565126321 + .long 3801392314 + .long 3477196413 + .long 1206081346 + .long 2600392684 + .long 4126341309 + .long 3130252643 + .long 3307817333 + .long 2659425531 + .long 2412162692 + .long 905818072 + .long 3957715323 + .long 1965537991 + .long 2320667370 + .long 1023883767 + .long 529358088 + .long 1811636145 + .long 3620463350 + .long 3931075983 + .long 346367444 + .long 2047767535 + .long 1058716176 + .long 3623272290 + .long 2945959404 + .long 3567184671 + .long 692734889 + .long 4095535070 + .long 2117432353 + .long 2951577284 + .long 1596951513 + .long 2839402047 + .long 1385469779 + .long 3896102844 + .long 4234864706 + .long 1608187272 + .long 3193903027 + .long 1383836798 + .long 2770939558 + .long 3497238392 + .long 4174762117 + .long 3216374545 + .long 2092838759 + .long 2767673597 + .long 1246911821 + .long 2699509489 + .long 4054556938 + .long 2137781795 + .long 4185677519 + .long 1240379898 + .long 2493823642 + .long 1104051682 + .long 3814146581 + .long 4275563591 + .long 4076387742 + .long 2480759797 + .long 692679989 + .long 2208103365 + .long 3333325867 + .long 4256159887 + .long 3857808189 + .long 666552299 + .long 1385359979 + .long 121239434 + .long 2371684438 + .long 4217352479 + .long 3420649082 + .long 1333104599 + .long 2770719959 + .long 242478868 + .long 448401580 + .long 4139737663 + .long 2546330868 + .long 2666209199 + .long 1246472623 + .long 484957737 + .long 896803160 + .long 3984508030 + .type __svml_dsin_reduction_data_internal,@object + .size __svml_dsin_reduction_data_internal,49152 + .space 512, 0x00 + .align 8 +.L_2il0floatpacket.26: + .long 0xffffffff,0xffffffff + .type .L_2il0floatpacket.26,@object + .size .L_2il0floatpacket.26,8 + .align 8 +.L_2il0floatpacket.27: + .long 0x00000000,0x7ff00000 + .type .L_2il0floatpacket.27,@object + .size .L_2il0floatpacket.27,8 + .align 8 +.L_2il0floatpacket.28: + .long 0xffffffff,0x000fffff + .type .L_2il0floatpacket.28,@object + .size .L_2il0floatpacket.28,8 + .align 8 +.L_2il0floatpacket.29: + .long 0x00000000,0x00100000 + .type .L_2il0floatpacket.29,@object + .size .L_2il0floatpacket.29,8 + .align 8 +.L_2il0floatpacket.30: + .long 0xffffffff,0x00000000 + .type .L_2il0floatpacket.30,@object + .size .L_2il0floatpacket.30,8 + .align 8 +.L_2il0floatpacket.31: + .long 0x00000000,0x80000000 + .type .L_2il0floatpacket.31,@object + .size .L_2il0floatpacket.31,8 + .align 8 +.L_2il0floatpacket.32: + .long 0x00000000,0x3ff00000 + .type .L_2il0floatpacket.32,@object + .size .L_2il0floatpacket.32,8 + .align 8 +.L_2il0floatpacket.33: + .long 0x00000000,0x42a80000 + .type .L_2il0floatpacket.33,@object + .size .L_2il0floatpacket.33,8 + .align 8 +.L_2il0floatpacket.34: + .long 0x000001ff,0x00000000 + .type .L_2il0floatpacket.34,@object + .size .L_2il0floatpacket.34,8 + .align 8 +.L_2il0floatpacket.35: + .long 0x00000000,0x39700000 + .type .L_2il0floatpacket.35,@object + .size .L_2il0floatpacket.35,8 + .align 8 +.L_2il0floatpacket.36: + .long 0x00ffffff,0x00000000 + .type .L_2il0floatpacket.36,@object + .size .L_2il0floatpacket.36,8 + .align 8 +.L_2il0floatpacket.37: + .long 0x00000000,0x3cb00000 + .type .L_2il0floatpacket.37,@object + .size .L_2il0floatpacket.37,8 + .align 8 +.L_2il0floatpacket.38: + .long 0x00000fff,0x00000000 + .type .L_2il0floatpacket.38,@object + .size .L_2il0floatpacket.38,8 + .align 8 +.L_2il0floatpacket.39: + .long 0x54442d18,0x401921fb + .type .L_2il0floatpacket.39,@object + .size .L_2il0floatpacket.39,8 + .align 8 +.L_2il0floatpacket.40: + .long 0x33145c07,0x3cb1a626 + .type .L_2il0floatpacket.40,@object + .size .L_2il0floatpacket.40,8 + .align 8 +.L_2il0floatpacket.41: + .long 0xffffffff,0x7fffffff + .type .L_2il0floatpacket.41,@object + .size .L_2il0floatpacket.41,8 + .align 8 +.L_2il0floatpacket.42: + .long 0x00000000,0x3eb00000 + .type .L_2il0floatpacket.42,@object + .size .L_2il0floatpacket.42,8 + .align 8 +__dsin_la_CoutTab: + .long 0 + .long 0 + .long 0 + .long 2146435072 + .type __dsin_la_CoutTab,@object + .size __dsin_la_CoutTab,16 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_sin_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_sin_s_la.s new file mode 100644 index 00000000..33ffbfaa --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_sin_s_la.s @@ -0,0 +1,2751 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * + * 1) Range reduction to [-Pi/2; +Pi/2] interval + * a) Grab sign from source argument and save it. + * b) Remove sign using AND operation + * c) Getting octant Y by 1/Pi multiplication + * d) Add "Right Shifter" value + * e) Treat obtained value as integer for destination sign setting. + * Shift first bit of this value to the last (sign) position + * f) Change destination sign if source sign is negative + * using XOR operation. + * g) Subtract "Right Shifter" value + * h) Subtract Y*PI from X argument, where PI divided to 4 parts: + * X = X - Y*PI1 - Y*PI2 - Y*PI3 - Y*PI4; + * 2) Polynomial (minimax for sin within [-Pi/2; +Pi/2] interval) + * a) Calculate X^2 = X * X + * b) Calculate polynomial: + * R = X + X * X^2 * (A3 + x^2 * (A5 + ...... + * 3) Destination sign setting + * a) Set shifted destination sign using XOR operation: + * R = XOR( R, S ); + * + */ + + + .text +.L_2__routine_start___svml_sinf16_z0_0: + + .align 16,0x90 + .globl __svml_sinf16 + +__svml_sinf16: + + + .cfi_startproc +..L2: + + 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 + xorl %edx, %edx + vmovups 4096+__svml_ssin_data_internal(%rip), %zmm7 + vmovups 5248+__svml_ssin_data_internal(%rip), %zmm2 + vmovups 5312+__svml_ssin_data_internal(%rip), %zmm3 + vmovups 4800+__svml_ssin_data_internal(%rip), %zmm6 + vmovups 4864+__svml_ssin_data_internal(%rip), %zmm4 + vmovups 4928+__svml_ssin_data_internal(%rip), %zmm5 + vmovups 5184+__svml_ssin_data_internal(%rip), %zmm10 + vmovups 5120+__svml_ssin_data_internal(%rip), %zmm14 + vmovups 5056+__svml_ssin_data_internal(%rip), %zmm12 + vmovups 4992+__svml_ssin_data_internal(%rip), %zmm13 + vmovaps %zmm0, %zmm11 + +/* b) Remove sign using AND operation */ + vandps %zmm7, %zmm11, %zmm1 + +/* + * f) Change destination sign if source sign is negative + * using XOR operation. + */ + vandnps %zmm11, %zmm7, %zmm0 + +/* + * c) Getting octant Y by 1/Pi multiplication + * d) Add "Right Shifter" value + */ + vfmadd213ps {rn-sae}, %zmm3, %zmm1, %zmm2 + +/* g) Subtract "Right Shifter" value */ + vsubps {rn-sae}, %zmm3, %zmm2, %zmm8 + +/* + * e) Treat obtained value as integer for destination sign setting. + * Shift first bit of this value to the last (sign) position + */ + vpslld $31, %zmm2, %zmm9 + +/* Check for large and special values */ + vmovups 4160+__svml_ssin_data_internal(%rip), %zmm2 + +/* + * h) Subtract Y*PI from X argument, where PI divided to 4 parts: + * X = X - Y*PI1 - Y*PI2 - Y*PI3; + */ + vfnmadd213ps {rn-sae}, %zmm1, %zmm8, %zmm6 + vcmpps $18, {sae}, %zmm2, %zmm1, %k1 + vfnmadd231ps {rn-sae}, %zmm8, %zmm4, %zmm6 + vfnmadd213ps {rn-sae}, %zmm6, %zmm5, %zmm8 + +/* + * 2) Polynomial (minimax for sin within [-Pi/2; +Pi/2] interval) + * a) Calculate X^2 = X * X + * b) Calculate polynomial: + * R = X + X * X^2 * (A3 + x^2 * (A5 + ...... + */ + vmulps {rn-sae}, %zmm8, %zmm8, %zmm15 + vxorps %zmm9, %zmm8, %zmm8 + vfmadd231ps {rn-sae}, %zmm15, %zmm10, %zmm14 + vpternlogd $255, %zmm10, %zmm10, %zmm10 + vfmadd213ps {rn-sae}, %zmm12, %zmm15, %zmm14 + vfmadd213ps {rn-sae}, %zmm13, %zmm15, %zmm14 + vmulps {rn-sae}, %zmm15, %zmm14, %zmm9 + vfmadd213ps {rn-sae}, %zmm8, %zmm8, %zmm9 + +/* + * 3) Destination sign setting + * a) Set shifted destination sign using XOR operation: + * R = XOR( R, S ); + */ + vxorps %zmm0, %zmm9, %zmm0 + vpandnd %zmm1, %zmm1, %zmm10{%k1} + vptestmd %zmm10, %zmm10, %k0 + kortestw %k0, %k0 + jne .LBL_1_12 + +.LBL_1_2: + + testl %edx, %edx + jne .LBL_1_4 + +.LBL_1_3: + + +/* no invcbrt in libm, so taking it out here */ + 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_4: + + vmovups %zmm11, 64(%rsp) + vmovups %zmm0, 128(%rsp) + je .LBL_1_3 + + + 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_8: + + btl %r12d, %r13d + jc .LBL_1_11 + +.LBL_1_9: + + incl %r12d + cmpl $16, %r12d + jl .LBL_1_8 + + + 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_3 + .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_11: + + lea 64(%rsp,%r12,4), %rdi + lea 128(%rsp,%r12,4), %rsi + + call __svml_ssin_cout_rare_internal + jmp .LBL_1_9 + .cfi_restore 4 + .cfi_restore 5 + .cfi_restore 12 + .cfi_restore 13 + .cfi_restore 122 + .cfi_restore 123 + .cfi_restore 124 + .cfi_restore 125 + +.LBL_1_12: + + vmovups 4224+__svml_ssin_data_internal(%rip), %zmm8 + +/* + * Get the (2^a / 2pi) mod 1 values from the table. + * Because VLANG doesn't have I-type gather, we need a trivial cast + */ + lea __svml_ssin_reduction_data_internal(%rip), %rax + vmovups %zmm0, (%rsp) + vandps %zmm1, %zmm8, %zmm6 + vpternlogd $255, %zmm1, %zmm1, %zmm1 + vcmpps $4, {sae}, %zmm8, %zmm6, %k1 + +/* ..................... Table look-up ........................ */ + lea __svml_ssin_data_internal(%rip), %rcx + vpandd .L_2il0floatpacket.21(%rip), %zmm11, %zmm12 + vpandnd %zmm6, %zmm6, %zmm1{%k1} + vpsrld $23, %zmm12, %zmm13 + vptestmd %zmm1, %zmm1, %k0 + +/* + * Break the P_xxx and m into 16-bit chunks ready for + * the long multiplication via 16x16->32 multiplications + */ + vmovups .L_2il0floatpacket.24(%rip), %zmm6 + vpslld $1, %zmm13, %zmm4 + kxnorw %k0, %k0, %k3 + kxnorw %k0, %k0, %k1 + kxnorw %k0, %k0, %k2 + kmovw %k0, %edx + vpaddd %zmm13, %zmm4, %zmm9 + vpslld $2, %zmm9, %zmm5 + vpxord %zmm3, %zmm3, %zmm3 + vpxord %zmm14, %zmm14, %zmm14 + vpxord %zmm8, %zmm8, %zmm8 + vgatherdps 4(%rax,%zmm5), %zmm3{%k3} + vgatherdps 8(%rax,%zmm5), %zmm14{%k1} + vgatherdps (%rax,%zmm5), %zmm8{%k2} + vpsrld $16, %zmm3, %zmm15 + vpsrld $16, %zmm14, %zmm13 + vpsrld $16, %zmm8, %zmm7 + kxnorw %k0, %k0, %k1 + +/* + * Also get the significand as an integer + * NB: adding in the integer bit is wrong for denorms! + * To make this work for denorms we should do something slightly different + */ + vpandd .L_2il0floatpacket.22(%rip), %zmm11, %zmm2 + vpaddd .L_2il0floatpacket.23(%rip), %zmm2, %zmm1 + vpsrld $16, %zmm1, %zmm9 + vpandd %zmm6, %zmm8, %zmm0 + vpandd %zmm6, %zmm3, %zmm12 + vpandd %zmm6, %zmm14, %zmm5 + vpandd %zmm6, %zmm1, %zmm14 + +/* Now do the big multiplication and carry propagation */ + vpmulld %zmm0, %zmm9, %zmm4 + vpmulld %zmm15, %zmm9, %zmm3 + vpmulld %zmm12, %zmm9, %zmm2 + vpmulld %zmm13, %zmm9, %zmm1 + vpmulld %zmm5, %zmm9, %zmm8 + vpmulld %zmm15, %zmm14, %zmm9 + vpmulld %zmm13, %zmm14, %zmm15 + vpmulld %zmm7, %zmm14, %zmm7 + vpmulld %zmm0, %zmm14, %zmm5 + vpmulld %zmm12, %zmm14, %zmm0 + vpsrld $16, %zmm15, %zmm14 + vpsrld $16, %zmm9, %zmm15 + vpsrld $16, %zmm0, %zmm13 + vpsrld $16, %zmm5, %zmm12 + vpaddd %zmm15, %zmm3, %zmm3 + vpaddd %zmm14, %zmm1, %zmm1 + vpaddd %zmm13, %zmm2, %zmm14 + vpaddd %zmm12, %zmm4, %zmm2 + vpandd %zmm6, %zmm5, %zmm4 + vpaddd %zmm3, %zmm4, %zmm3 + vpsrld $16, %zmm8, %zmm4 + vpandd %zmm6, %zmm0, %zmm0 + vpaddd %zmm1, %zmm0, %zmm13 + vpandd %zmm6, %zmm7, %zmm7 + vpaddd %zmm2, %zmm7, %zmm0 + vpaddd %zmm13, %zmm4, %zmm7 + vpandd %zmm6, %zmm9, %zmm12 + vpsrld $16, %zmm7, %zmm9 + vpaddd %zmm14, %zmm12, %zmm5 + vpaddd %zmm5, %zmm9, %zmm1 + vpsrld $16, %zmm1, %zmm2 + vpslld $16, %zmm1, %zmm13 + vpaddd %zmm3, %zmm2, %zmm15 + vpsrld $16, %zmm15, %zmm8 + vpaddd %zmm0, %zmm8, %zmm14 + +/* Assemble reduced argument from the pieces */ + vpandd %zmm6, %zmm7, %zmm12 + vpandd %zmm6, %zmm15, %zmm4 + vpslld $16, %zmm14, %zmm6 + vpaddd %zmm12, %zmm13, %zmm13 + vpaddd %zmm4, %zmm6, %zmm9 + +/* + * Now round at the 2^-8 bit position for reduction mod pi/2^7 + * instead of the original 2pi (but still with the same 2pi scaling). + * Use a shifter of 2^15 + 2^14. + * The N we get is our final version; it has an offset of + * 2^8 because of the implicit integer bit, and anyway for negative + * starting value it's a 2s complement thing. But we need to mask + * off the exponent part anyway so it's fine. + */ + vmovups .L_2il0floatpacket.27(%rip), %zmm6 + vpsrld $9, %zmm9, %zmm2 + vpandd .L_2il0floatpacket.30(%rip), %zmm13, %zmm15 + vpslld $5, %zmm15, %zmm1 + vpsrld $18, %zmm13, %zmm13 + +/* + * We want to incorporate the original sign now too. + * Do it here for convenience in getting the right N value, + * though we could wait right to the end if we were prepared + * to modify the sign of N later too. + * So get the appropriate sign mask now (or sooner). + */ + vpandd .L_2il0floatpacket.25(%rip), %zmm11, %zmm5 + +/* + * Create floating-point high part, implicitly adding integer bit 1 + * Incorporate overall sign at this stage too. + */ + vpxord .L_2il0floatpacket.26(%rip), %zmm5, %zmm8 + vpord %zmm8, %zmm2, %zmm3 + vaddps {rn-sae}, %zmm3, %zmm6, %zmm7 + vsubps {rn-sae}, %zmm6, %zmm7, %zmm0 + vsubps {rn-sae}, %zmm0, %zmm3, %zmm14 + vandps .L_2il0floatpacket.35(%rip), %zmm11, %zmm3 + vpternlogd $255, %zmm0, %zmm0, %zmm0 + +/* + * Create floating-point low and medium parts, respectively + * lo_17, ... lo_0, 0, ..., 0 + * hi_8, ... hi_0, lo_31, ..., lo_18 + * then subtract off the implicitly added integer bits, + * 2^-46 and 2^-23, respectively. + * Put the original sign into all of them at this stage. + */ + vpxord .L_2il0floatpacket.29(%rip), %zmm5, %zmm8 + vpord %zmm8, %zmm1, %zmm2 + vpandd .L_2il0floatpacket.32(%rip), %zmm9, %zmm9 + vsubps {rn-sae}, %zmm8, %zmm2, %zmm15 + vpxord .L_2il0floatpacket.31(%rip), %zmm5, %zmm2 + vpslld $14, %zmm9, %zmm5 + vpord %zmm13, %zmm5, %zmm5 + vpord %zmm2, %zmm5, %zmm9 + vsubps {rn-sae}, %zmm2, %zmm9, %zmm8 + +/* + * Now multiply those numbers all by 2 pi, reasonably accurately. + * (RHi + RLo) * (pi_lead + pi_trail) ~= + * RHi * pi_lead + (RHi * pi_trail + RLo * pi_lead) + */ + vmovups .L_2il0floatpacket.33(%rip), %zmm9 + vmovups .L_2il0floatpacket.34(%rip), %zmm2 + +/* Now add them up into 2 reasonably aligned pieces */ + vaddps {rn-sae}, %zmm8, %zmm14, %zmm6 + vsubps {rn-sae}, %zmm6, %zmm14, %zmm14 + vmovaps %zmm9, %zmm5 + vaddps {rn-sae}, %zmm14, %zmm8, %zmm13 + +/* + * If the magnitude of the input is <= 2^-20, then + * just pass through the input, since no reduction will be needed and + * the main path will only work accurately if the reduced argument is + * about >= 2^-40 (which it is for all large pi multiples) + */ + vmovups .L_2il0floatpacket.36(%rip), %zmm8 + vaddps {rn-sae}, %zmm15, %zmm13, %zmm14 + vpternlogd $255, %zmm15, %zmm15, %zmm15 + vcmpps $26, {sae}, %zmm8, %zmm3, %k2 + vcmpps $22, {sae}, %zmm8, %zmm3, %k3 + +/* Grab our final N value as an integer, appropriately masked mod 2^8 */ + vpandd .L_2il0floatpacket.28(%rip), %zmm7, %zmm4 + vmulps {rn-sae}, %zmm9, %zmm6, %zmm7 + vfmsub213ps {rn-sae}, %zmm7, %zmm6, %zmm5 + vfmadd213ps {rn-sae}, %zmm5, %zmm2, %zmm6 + vfmadd213ps {rn-sae}, %zmm6, %zmm9, %zmm14 + vpslld $4, %zmm4, %zmm9 + vpandnd %zmm3, %zmm3, %zmm15{%k2} + vpandnd %zmm3, %zmm3, %zmm0{%k3} + kxnorw %k0, %k0, %k2 + kxnorw %k0, %k0, %k3 + vandps %zmm7, %zmm15, %zmm12 + vandps %zmm11, %zmm0, %zmm1 + vandps %zmm14, %zmm15, %zmm2 + vorps %zmm12, %zmm1, %zmm13 + +/* ............... Polynomial approximation ................... */ + vmovups 4352+__svml_ssin_data_internal(%rip), %zmm12 + +/* + * The output is _VRES_R (high) + _VRES_E (low), and the integer part is _VRES_IND + * Set sRp2 = _VRES_R^2 and then resume the original code. + */ + vmulps {rn-sae}, %zmm13, %zmm13, %zmm3 + +/* ................. Reconstruction: res_hi ................... */ + vmovaps %zmm13, %zmm8 + vmovaps %zmm13, %zmm4 + vpxord %zmm5, %zmm5, %zmm5 + vpxord %zmm7, %zmm7, %zmm7 + vgatherdps 4(%rcx,%zmm9), %zmm5{%k2} + vgatherdps 12(%rcx,%zmm9), %zmm7{%k3} + vfmadd213ps {rn-sae}, %zmm5, %zmm7, %zmm8 + vsubps {rn-sae}, %zmm8, %zmm5, %zmm1 + vfmadd231ps {rn-sae}, %zmm13, %zmm7, %zmm1 + vpxord %zmm0, %zmm0, %zmm0 + vgatherdps (%rcx,%zmm9), %zmm0{%k1} + +/* ................. Reconstruction: res_lo=corr+polS+polC+res_lo0 ................... */ + kxnorw %k0, %k0, %k1 + vfmadd132ps {rn-sae}, %zmm0, %zmm8, %zmm4 + vsubps {rn-sae}, %zmm4, %zmm8, %zmm6 + vfmadd231ps {rn-sae}, %zmm0, %zmm13, %zmm6 + vaddps {rn-sae}, %zmm1, %zmm6, %zmm8 + vaddps {rn-sae}, %zmm7, %zmm0, %zmm1 + vmovups 4288+__svml_ssin_data_internal(%rip), %zmm6 + vmovups 4480+__svml_ssin_data_internal(%rip), %zmm0 + vmovups 4416+__svml_ssin_data_internal(%rip), %zmm7 + vfmadd231ps {rn-sae}, %zmm3, %zmm12, %zmm6 + vfmadd231ps {rn-sae}, %zmm3, %zmm0, %zmm7 + vmulps {rn-sae}, %zmm3, %zmm6, %zmm14 + vmulps {rn-sae}, %zmm3, %zmm7, %zmm0 + vmulps {rn-sae}, %zmm13, %zmm14, %zmm6 + vfnmadd213ps {rn-sae}, %zmm1, %zmm5, %zmm13 + vfmadd213ps {rn-sae}, %zmm8, %zmm13, %zmm6 + vpxord %zmm3, %zmm3, %zmm3 + vgatherdps 8(%rcx,%zmm9), %zmm3{%k1} + vfmadd213ps {rn-sae}, %zmm3, %zmm13, %zmm2 + vfmadd213ps {rn-sae}, %zmm2, %zmm5, %zmm0 + vaddps {rn-sae}, %zmm6, %zmm0, %zmm2 + +/* .................. Final reconstruction ................... */ + vaddps {rn-sae}, %zmm2, %zmm4, %zmm4 + +/* + * ---------------------------------------------------------- + * End of large arguments path + * ---------------------------------------------------------- + * Merge results from main and large paths: + */ + vpandnd (%rsp), %zmm10, %zmm0 + vpandd %zmm10, %zmm4, %zmm10 + vpord %zmm10, %zmm0, %zmm0 + jmp .LBL_1_2 + .align 16,0x90 + + .cfi_endproc + + .type __svml_sinf16,@function + .size __svml_sinf16,.-__svml_sinf16 +..LN__svml_sinf16.0: + +.L_2__routine_start___svml_ssin_cout_rare_internal_1: + + .align 16,0x90 + +__svml_ssin_cout_rare_internal: + + + .cfi_startproc +..L63: + + movl (%rdi), %edx + movzwl 2(%rdi), %eax + movl %edx, -8(%rsp) + andl $32640, %eax + shrl $24, %edx + andl $127, %edx + movss (%rdi), %xmm1 + cmpl $32640, %eax + jne .LBL_2_6 + + + movb %dl, -5(%rsp) + cmpl $2139095040, -8(%rsp) + jne .LBL_2_4 + + + movss __ssin_la__vmlsSinHATab(%rip), %xmm0 + movl $1, %eax + mulss %xmm0, %xmm1 + movss %xmm1, (%rsi) + ret + +.LBL_2_4: + + mulss (%rdi), %xmm1 + xorl %eax, %eax + movss %xmm1, (%rsi) + + + ret + +.LBL_2_6: + + xorl %eax, %eax + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_ssin_cout_rare_internal,@function + .size __svml_ssin_cout_rare_internal,.-__svml_ssin_cout_rare_internal +..LN__svml_ssin_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +.L_2il0floatpacket.21: + .long 0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000 + .type .L_2il0floatpacket.21,@object + .size .L_2il0floatpacket.21,64 + .align 64 +.L_2il0floatpacket.22: + .long 0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff + .type .L_2il0floatpacket.22,@object + .size .L_2il0floatpacket.22,64 + .align 64 +.L_2il0floatpacket.23: + .long 0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000 + .type .L_2il0floatpacket.23,@object + .size .L_2il0floatpacket.23,64 + .align 64 +.L_2il0floatpacket.24: + .long 0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff + .type .L_2il0floatpacket.24,@object + .size .L_2il0floatpacket.24,64 + .align 64 +.L_2il0floatpacket.25: + .long 0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000 + .type .L_2il0floatpacket.25,@object + .size .L_2il0floatpacket.25,64 + .align 64 +.L_2il0floatpacket.26: + .long 0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000 + .type .L_2il0floatpacket.26,@object + .size .L_2il0floatpacket.26,64 + .align 64 +.L_2il0floatpacket.27: + .long 0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000 + .type .L_2il0floatpacket.27,@object + .size .L_2il0floatpacket.27,64 + .align 64 +.L_2il0floatpacket.28: + .long 0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff + .type .L_2il0floatpacket.28,@object + .size .L_2il0floatpacket.28,64 + .align 64 +.L_2il0floatpacket.29: + .long 0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000 + .type .L_2il0floatpacket.29,@object + .size .L_2il0floatpacket.29,64 + .align 64 +.L_2il0floatpacket.30: + .long 0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff + .type .L_2il0floatpacket.30,@object + .size .L_2il0floatpacket.30,64 + .align 64 +.L_2il0floatpacket.31: + .long 0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000 + .type .L_2il0floatpacket.31,@object + .size .L_2il0floatpacket.31,64 + .align 64 +.L_2il0floatpacket.32: + .long 0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff + .type .L_2il0floatpacket.32,@object + .size .L_2il0floatpacket.32,64 + .align 64 +.L_2il0floatpacket.33: + .long 0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb + .type .L_2il0floatpacket.33,@object + .size .L_2il0floatpacket.33,64 + .align 64 +.L_2il0floatpacket.34: + .long 0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e + .type .L_2il0floatpacket.34,@object + .size .L_2il0floatpacket.34,64 + .align 64 +.L_2il0floatpacket.35: + .long 0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff + .type .L_2il0floatpacket.35,@object + .size .L_2il0floatpacket.35,64 + .align 64 +.L_2il0floatpacket.36: + .long 0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000 + .type .L_2il0floatpacket.36,@object + .size .L_2il0floatpacket.36,64 + .align 64 +__svml_ssin_data_internal: + .long 0 + .long 0 + .long 0 + .long 1065353216 + .long 3114133471 + .long 1019808432 + .long 2953169304 + .long 1065353216 + .long 3130909128 + .long 1028193072 + .long 2968461951 + .long 1065353216 + .long 3140588184 + .long 1033283845 + .long 2975014497 + .long 1065353216 + .long 3147680113 + .long 1036565814 + .long 2960495349 + .long 1065353216 + .long 3153489468 + .long 1039839859 + .long 2970970319 + .long 1065353216 + .long 3157349634 + .long 1041645699 + .long 837346836 + .long 1065353216 + .long 3161536011 + .long 1043271842 + .long 823224313 + .long 1065353216 + .long 3164432432 + .long 1044891074 + .long 2967836285 + .long 1065353216 + .long 3167161428 + .long 1046502419 + .long 833086710 + .long 1065353216 + .long 3170205956 + .long 1048104908 + .long 2971391005 + .long 1065353216 + .long 3172229004 + .long 1049136787 + .long 824999326 + .long 1065353216 + .long 3174063957 + .long 1049927729 + .long 846027248 + .long 1065353216 + .long 3176053642 + .long 1050712805 + .long 2990442912 + .long 1065353216 + .long 3178196862 + .long 1051491540 + .long 2988789250 + .long 1065353216 + .long 3179887378 + .long 1052263466 + .long 2993707942 + .long 1065353216 + .long 3181110540 + .long 1053028117 + .long 836097324 + .long 1065353216 + .long 3182408396 + .long 1053785034 + .long 829045603 + .long 1065353216 + .long 3183780163 + .long 1054533760 + .long 840832460 + .long 1065353216 + .long 3185225016 + .long 1055273845 + .long 2983839604 + .long 1065353216 + .long 3186742084 + .long 1056004842 + .long 2986287417 + .long 1065353216 + .long 3188000746 + .long 1056726311 + .long 2978016425 + .long 1065353216 + .long 3188830103 + .long 1057201213 + .long 2992349186 + .long 1065353216 + .long 3189694133 + .long 1057551771 + .long 2998815566 + .long 1065353216 + .long 3190592315 + .long 1057896922 + .long 2991207143 + .long 1065353216 + .long 3191524108 + .long 1058236458 + .long 852349230 + .long 1065353216 + .long 3192488951 + .long 1058570176 + .long 2982650867 + .long 1065353216 + .long 3193486263 + .long 1058897873 + .long 848430348 + .long 1065353216 + .long 3194515443 + .long 1059219353 + .long 841032635 + .long 1065353216 + .long 3195575871 + .long 1059534422 + .long 2986574659 + .long 1065353216 + .long 3196363278 + .long 1059842890 + .long 2998350134 + .long 1065353216 + .long 3196923773 + .long 1060144571 + .long 2997759282 + .long 1065353216 + .long 3197498906 + .long 1060439283 + .long 844097402 + .long 1065353216 + .long 1044518635 + .long 1060726850 + .long 2994798599 + .long 1056964608 + .long 1043311911 + .long 1061007097 + .long 832220140 + .long 1056964608 + .long 1042078039 + .long 1061279856 + .long 851442039 + .long 1056964608 + .long 1040817765 + .long 1061544963 + .long 850481524 + .long 1056964608 + .long 1038876298 + .long 1061802258 + .long 848897600 + .long 1056964608 + .long 1036254719 + .long 1062051586 + .long 847147240 + .long 1056964608 + .long 1033584979 + .long 1062292797 + .long 806113028 + .long 1056964608 + .long 1029938589 + .long 1062525745 + .long 848357914 + .long 1056964608 + .long 1024416170 + .long 1062750291 + .long 2994560960 + .long 1056964608 + .long 1013387058 + .long 1062966298 + .long 841166280 + .long 1056964608 + .long 3152590408 + .long 1063173637 + .long 851900755 + .long 1056964608 + .long 3169472868 + .long 1063372184 + .long 3001545765 + .long 1056964608 + .long 3176031322 + .long 1063561817 + .long 823789818 + .long 1056964608 + .long 3180617215 + .long 1063742424 + .long 2998678409 + .long 1056964608 + .long 3183612120 + .long 1063913895 + .long 3001754476 + .long 1056964608 + .long 3186639787 + .long 1064076126 + .long 854796500 + .long 1056964608 + .long 3188684717 + .long 1064229022 + .long 2995991516 + .long 1056964608 + .long 1035072335 + .long 1064372488 + .long 840880349 + .long 1048576000 + .long 1031957395 + .long 1064506439 + .long 851742225 + .long 1048576000 + .long 1025835404 + .long 1064630795 + .long 2996018466 + .long 1048576000 + .long 1015605553 + .long 1064745479 + .long 846006572 + .long 1048576000 + .long 3152414341 + .long 1064850424 + .long 2987244005 + .long 1048576000 + .long 3170705253 + .long 1064945565 + .long 851856985 + .long 1048576000 + .long 3177244920 + .long 1065030846 + .long 855602635 + .long 1048576000 + .long 1027359369 + .long 1065106216 + .long 2989610635 + .long 1040187392 + .long 1018299420 + .long 1065171628 + .long 2969000681 + .long 1040187392 + .long 3140071849 + .long 1065227044 + .long 3002197507 + .long 1040187392 + .long 3168602920 + .long 1065272429 + .long 838093129 + .long 1040187392 + .long 1010124837 + .long 1065307757 + .long 852498564 + .long 1031798784 + .long 3160150850 + .long 1065333007 + .long 836655967 + .long 1031798784 + .long 3151746369 + .long 1065348163 + .long 814009613 + .long 1023410176 + .long 0 + .long 1065353216 + .long 0 + .long 0 + .long 1004262721 + .long 1065348163 + .long 814009613 + .long 3170893824 + .long 1012667202 + .long 1065333007 + .long 836655967 + .long 3179282432 + .long 3157608485 + .long 1065307757 + .long 852498564 + .long 3179282432 + .long 1021119272 + .long 1065272429 + .long 838093129 + .long 3187671040 + .long 992588201 + .long 1065227044 + .long 3002197507 + .long 3187671040 + .long 3165783068 + .long 1065171628 + .long 2969000681 + .long 3187671040 + .long 3174843017 + .long 1065106216 + .long 2989610635 + .long 3187671040 + .long 1029761272 + .long 1065030846 + .long 855602635 + .long 3196059648 + .long 1023221605 + .long 1064945565 + .long 851856985 + .long 3196059648 + .long 1004930693 + .long 1064850424 + .long 2987244005 + .long 3196059648 + .long 3163089201 + .long 1064745479 + .long 846006572 + .long 3196059648 + .long 3173319052 + .long 1064630795 + .long 2996018466 + .long 3196059648 + .long 3179441043 + .long 1064506439 + .long 851742225 + .long 3196059648 + .long 3182555983 + .long 1064372488 + .long 840880349 + .long 3196059648 + .long 1041201069 + .long 1064229022 + .long 2995991516 + .long 3204448256 + .long 1039156139 + .long 1064076126 + .long 854796500 + .long 3204448256 + .long 1036128472 + .long 1063913895 + .long 3001754476 + .long 3204448256 + .long 1033133567 + .long 1063742424 + .long 2998678409 + .long 3204448256 + .long 1028547674 + .long 1063561817 + .long 823789818 + .long 3204448256 + .long 1021989220 + .long 1063372184 + .long 3001545765 + .long 3204448256 + .long 1005106760 + .long 1063173637 + .long 851900755 + .long 3204448256 + .long 3160870706 + .long 1062966298 + .long 841166280 + .long 3204448256 + .long 3171899818 + .long 1062750291 + .long 2994560960 + .long 3204448256 + .long 3177422237 + .long 1062525745 + .long 848357914 + .long 3204448256 + .long 3181068627 + .long 1062292797 + .long 806113028 + .long 3204448256 + .long 3183738367 + .long 1062051586 + .long 847147240 + .long 3204448256 + .long 3186359946 + .long 1061802258 + .long 848897600 + .long 3204448256 + .long 3188301413 + .long 1061544963 + .long 850481524 + .long 3204448256 + .long 3189561687 + .long 1061279856 + .long 851442039 + .long 3204448256 + .long 3190795559 + .long 1061007097 + .long 832220140 + .long 3204448256 + .long 3192002283 + .long 1060726850 + .long 2994798599 + .long 3204448256 + .long 1050015258 + .long 1060439283 + .long 844097402 + .long 3212836864 + .long 1049440125 + .long 1060144571 + .long 2997759282 + .long 3212836864 + .long 1048879630 + .long 1059842890 + .long 2998350134 + .long 3212836864 + .long 1048092223 + .long 1059534422 + .long 2986574659 + .long 3212836864 + .long 1047031795 + .long 1059219353 + .long 841032635 + .long 3212836864 + .long 1046002615 + .long 1058897873 + .long 848430348 + .long 3212836864 + .long 1045005303 + .long 1058570176 + .long 2982650867 + .long 3212836864 + .long 1044040460 + .long 1058236458 + .long 852349230 + .long 3212836864 + .long 1043108667 + .long 1057896922 + .long 2991207143 + .long 3212836864 + .long 1042210485 + .long 1057551771 + .long 2998815566 + .long 3212836864 + .long 1041346455 + .long 1057201213 + .long 2992349186 + .long 3212836864 + .long 1040517098 + .long 1056726311 + .long 2978016425 + .long 3212836864 + .long 1039258436 + .long 1056004842 + .long 2986287417 + .long 3212836864 + .long 1037741368 + .long 1055273845 + .long 2983839604 + .long 3212836864 + .long 1036296515 + .long 1054533760 + .long 840832460 + .long 3212836864 + .long 1034924748 + .long 1053785034 + .long 829045603 + .long 3212836864 + .long 1033626892 + .long 1053028117 + .long 836097324 + .long 3212836864 + .long 1032403730 + .long 1052263466 + .long 2993707942 + .long 3212836864 + .long 1030713214 + .long 1051491540 + .long 2988789250 + .long 3212836864 + .long 1028569994 + .long 1050712805 + .long 2990442912 + .long 3212836864 + .long 1026580309 + .long 1049927729 + .long 846027248 + .long 3212836864 + .long 1024745356 + .long 1049136787 + .long 824999326 + .long 3212836864 + .long 1022722308 + .long 1048104908 + .long 2971391005 + .long 3212836864 + .long 1019677780 + .long 1046502419 + .long 833086710 + .long 3212836864 + .long 1016948784 + .long 1044891074 + .long 2967836285 + .long 3212836864 + .long 1014052363 + .long 1043271842 + .long 823224313 + .long 3212836864 + .long 1009865986 + .long 1041645699 + .long 837346836 + .long 3212836864 + .long 1006005820 + .long 1039839859 + .long 2970970319 + .long 3212836864 + .long 1000196465 + .long 1036565814 + .long 2960495349 + .long 3212836864 + .long 993104536 + .long 1033283845 + .long 2975014497 + .long 3212836864 + .long 983425480 + .long 1028193072 + .long 2968461951 + .long 3212836864 + .long 966649823 + .long 1019808432 + .long 2953169304 + .long 3212836864 + .long 0 + .long 0 + .long 0 + .long 3212836864 + .long 966649823 + .long 3167292080 + .long 805685656 + .long 3212836864 + .long 983425480 + .long 3175676720 + .long 820978303 + .long 3212836864 + .long 993104536 + .long 3180767493 + .long 827530849 + .long 3212836864 + .long 1000196465 + .long 3184049462 + .long 813011701 + .long 3212836864 + .long 1006005820 + .long 3187323507 + .long 823486671 + .long 3212836864 + .long 1009865986 + .long 3189129347 + .long 2984830484 + .long 3212836864 + .long 1014052363 + .long 3190755490 + .long 2970707961 + .long 3212836864 + .long 1016948784 + .long 3192374722 + .long 820352637 + .long 3212836864 + .long 1019677780 + .long 3193986067 + .long 2980570358 + .long 3212836864 + .long 1022722308 + .long 3195588556 + .long 823907357 + .long 3212836864 + .long 1024745356 + .long 3196620435 + .long 2972482974 + .long 3212836864 + .long 1026580309 + .long 3197411377 + .long 2993510896 + .long 3212836864 + .long 1028569994 + .long 3198196453 + .long 842959264 + .long 3212836864 + .long 1030713214 + .long 3198975188 + .long 841305602 + .long 3212836864 + .long 1032403730 + .long 3199747114 + .long 846224294 + .long 3212836864 + .long 1033626892 + .long 3200511765 + .long 2983580972 + .long 3212836864 + .long 1034924748 + .long 3201268682 + .long 2976529251 + .long 3212836864 + .long 1036296515 + .long 3202017408 + .long 2988316108 + .long 3212836864 + .long 1037741368 + .long 3202757493 + .long 836355956 + .long 3212836864 + .long 1039258436 + .long 3203488490 + .long 838803769 + .long 3212836864 + .long 1040517098 + .long 3204209959 + .long 830532777 + .long 3212836864 + .long 1041346455 + .long 3204684861 + .long 844865538 + .long 3212836864 + .long 1042210485 + .long 3205035419 + .long 851331918 + .long 3212836864 + .long 1043108667 + .long 3205380570 + .long 843723495 + .long 3212836864 + .long 1044040460 + .long 3205720106 + .long 2999832878 + .long 3212836864 + .long 1045005303 + .long 3206053824 + .long 835167219 + .long 3212836864 + .long 1046002615 + .long 3206381521 + .long 2995913996 + .long 3212836864 + .long 1047031795 + .long 3206703001 + .long 2988516283 + .long 3212836864 + .long 1048092223 + .long 3207018070 + .long 839091011 + .long 3212836864 + .long 1048879630 + .long 3207326538 + .long 850866486 + .long 3212836864 + .long 1049440125 + .long 3207628219 + .long 850275634 + .long 3212836864 + .long 1050015258 + .long 3207922931 + .long 2991581050 + .long 3212836864 + .long 3192002283 + .long 3208210498 + .long 847314951 + .long 3204448256 + .long 3190795559 + .long 3208490745 + .long 2979703788 + .long 3204448256 + .long 3189561687 + .long 3208763504 + .long 2998925687 + .long 3204448256 + .long 3188301413 + .long 3209028611 + .long 2997965172 + .long 3204448256 + .long 3186359946 + .long 3209285906 + .long 2996381248 + .long 3204448256 + .long 3183738367 + .long 3209535234 + .long 2994630888 + .long 3204448256 + .long 3181068627 + .long 3209776445 + .long 2953596676 + .long 3204448256 + .long 3177422237 + .long 3210009393 + .long 2995841562 + .long 3204448256 + .long 3171899818 + .long 3210233939 + .long 847077312 + .long 3204448256 + .long 3160870706 + .long 3210449946 + .long 2988649928 + .long 3204448256 + .long 1005106760 + .long 3210657285 + .long 2999384403 + .long 3204448256 + .long 1021989220 + .long 3210855832 + .long 854062117 + .long 3204448256 + .long 1028547674 + .long 3211045465 + .long 2971273466 + .long 3204448256 + .long 1033133567 + .long 3211226072 + .long 851194761 + .long 3204448256 + .long 1036128472 + .long 3211397543 + .long 854270828 + .long 3204448256 + .long 1039156139 + .long 3211559774 + .long 3002280148 + .long 3204448256 + .long 1041201069 + .long 3211712670 + .long 848507868 + .long 3204448256 + .long 3182555983 + .long 3211856136 + .long 2988363997 + .long 3196059648 + .long 3179441043 + .long 3211990087 + .long 2999225873 + .long 3196059648 + .long 3173319052 + .long 3212114443 + .long 848534818 + .long 3196059648 + .long 3163089201 + .long 3212229127 + .long 2993490220 + .long 3196059648 + .long 1004930693 + .long 3212334072 + .long 839760357 + .long 3196059648 + .long 1023221605 + .long 3212429213 + .long 2999340633 + .long 3196059648 + .long 1029761272 + .long 3212514494 + .long 3003086283 + .long 3196059648 + .long 3174843017 + .long 3212589864 + .long 842126987 + .long 3187671040 + .long 3165783068 + .long 3212655276 + .long 821517033 + .long 3187671040 + .long 992588201 + .long 3212710692 + .long 854713859 + .long 3187671040 + .long 1021119272 + .long 3212756077 + .long 2985576777 + .long 3187671040 + .long 3157608485 + .long 3212791405 + .long 2999982212 + .long 3179282432 + .long 1012667202 + .long 3212816655 + .long 2984139615 + .long 3179282432 + .long 1004262721 + .long 3212831811 + .long 2961493261 + .long 3170893824 + .long 0 + .long 3212836864 + .long 0 + .long 0 + .long 3151746369 + .long 3212831811 + .long 2961493261 + .long 1023410176 + .long 3160150850 + .long 3212816655 + .long 2984139615 + .long 1031798784 + .long 1010124837 + .long 3212791405 + .long 2999982212 + .long 1031798784 + .long 3168602920 + .long 3212756077 + .long 2985576777 + .long 1040187392 + .long 3140071849 + .long 3212710692 + .long 854713859 + .long 1040187392 + .long 1018299420 + .long 3212655276 + .long 821517033 + .long 1040187392 + .long 1027359369 + .long 3212589864 + .long 842126987 + .long 1040187392 + .long 3177244920 + .long 3212514494 + .long 3003086283 + .long 1048576000 + .long 3170705253 + .long 3212429213 + .long 2999340633 + .long 1048576000 + .long 3152414341 + .long 3212334072 + .long 839760357 + .long 1048576000 + .long 1015605553 + .long 3212229127 + .long 2993490220 + .long 1048576000 + .long 1025835404 + .long 3212114443 + .long 848534818 + .long 1048576000 + .long 1031957395 + .long 3211990087 + .long 2999225873 + .long 1048576000 + .long 1035072335 + .long 3211856136 + .long 2988363997 + .long 1048576000 + .long 3188684717 + .long 3211712670 + .long 848507868 + .long 1056964608 + .long 3186639787 + .long 3211559774 + .long 3002280148 + .long 1056964608 + .long 3183612120 + .long 3211397543 + .long 854270828 + .long 1056964608 + .long 3180617215 + .long 3211226072 + .long 851194761 + .long 1056964608 + .long 3176031322 + .long 3211045465 + .long 2971273466 + .long 1056964608 + .long 3169472868 + .long 3210855832 + .long 854062117 + .long 1056964608 + .long 3152590408 + .long 3210657285 + .long 2999384403 + .long 1056964608 + .long 1013387058 + .long 3210449946 + .long 2988649928 + .long 1056964608 + .long 1024416170 + .long 3210233939 + .long 847077312 + .long 1056964608 + .long 1029938589 + .long 3210009393 + .long 2995841562 + .long 1056964608 + .long 1033584979 + .long 3209776445 + .long 2953596676 + .long 1056964608 + .long 1036254719 + .long 3209535234 + .long 2994630888 + .long 1056964608 + .long 1038876298 + .long 3209285906 + .long 2996381248 + .long 1056964608 + .long 1040817765 + .long 3209028611 + .long 2997965172 + .long 1056964608 + .long 1042078039 + .long 3208763504 + .long 2998925687 + .long 1056964608 + .long 1043311911 + .long 3208490745 + .long 2979703788 + .long 1056964608 + .long 1044518635 + .long 3208210498 + .long 847314951 + .long 1056964608 + .long 3197498906 + .long 3207922931 + .long 2991581050 + .long 1065353216 + .long 3196923773 + .long 3207628219 + .long 850275634 + .long 1065353216 + .long 3196363278 + .long 3207326538 + .long 850866486 + .long 1065353216 + .long 3195575871 + .long 3207018070 + .long 839091011 + .long 1065353216 + .long 3194515443 + .long 3206703001 + .long 2988516283 + .long 1065353216 + .long 3193486263 + .long 3206381521 + .long 2995913996 + .long 1065353216 + .long 3192488951 + .long 3206053824 + .long 835167219 + .long 1065353216 + .long 3191524108 + .long 3205720106 + .long 2999832878 + .long 1065353216 + .long 3190592315 + .long 3205380570 + .long 843723495 + .long 1065353216 + .long 3189694133 + .long 3205035419 + .long 851331918 + .long 1065353216 + .long 3188830103 + .long 3204684861 + .long 844865538 + .long 1065353216 + .long 3188000746 + .long 3204209959 + .long 830532777 + .long 1065353216 + .long 3186742084 + .long 3203488490 + .long 838803769 + .long 1065353216 + .long 3185225016 + .long 3202757493 + .long 836355956 + .long 1065353216 + .long 3183780163 + .long 3202017408 + .long 2988316108 + .long 1065353216 + .long 3182408396 + .long 3201268682 + .long 2976529251 + .long 1065353216 + .long 3181110540 + .long 3200511765 + .long 2983580972 + .long 1065353216 + .long 3179887378 + .long 3199747114 + .long 846224294 + .long 1065353216 + .long 3178196862 + .long 3198975188 + .long 841305602 + .long 1065353216 + .long 3176053642 + .long 3198196453 + .long 842959264 + .long 1065353216 + .long 3174063957 + .long 3197411377 + .long 2993510896 + .long 1065353216 + .long 3172229004 + .long 3196620435 + .long 2972482974 + .long 1065353216 + .long 3170205956 + .long 3195588556 + .long 823907357 + .long 1065353216 + .long 3167161428 + .long 3193986067 + .long 2980570358 + .long 1065353216 + .long 3164432432 + .long 3192374722 + .long 820352637 + .long 1065353216 + .long 3161536011 + .long 3190755490 + .long 2970707961 + .long 1065353216 + .long 3157349634 + .long 3189129347 + .long 2984830484 + .long 1065353216 + .long 3153489468 + .long 3187323507 + .long 823486671 + .long 1065353216 + .long 3147680113 + .long 3184049462 + .long 813011701 + .long 1065353216 + .long 3140588184 + .long 3180767493 + .long 827530849 + .long 1065353216 + .long 3130909128 + .long 3175676720 + .long 820978303 + .long 1065353216 + .long 3114133471 + .long 3167292080 + .long 805685656 + .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 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 1176256512 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 3190467243 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .long 1007192156 + .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 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1026206332 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 1078525952 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 981311488 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 874651648 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 750018842 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 1078530011 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 3015425326 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 2809605357 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 3190467238 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 1007191910 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 3109009407 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 909041400 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1050868099 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .type __svml_ssin_data_internal,@object + .size __svml_ssin_data_internal,5376 + .align 64 +__svml_ssin_reduction_data_internal: + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1 + .long 0 + .long 0 + .long 2 + .long 0 + .long 0 + .long 5 + .long 0 + .long 0 + .long 10 + .long 0 + .long 0 + .long 20 + .long 0 + .long 0 + .long 40 + .long 0 + .long 0 + .long 81 + .long 0 + .long 0 + .long 162 + .long 0 + .long 0 + .long 325 + .long 0 + .long 0 + .long 651 + .long 0 + .long 0 + .long 1303 + .long 0 + .long 0 + .long 2607 + .long 0 + .long 0 + .long 5215 + .long 0 + .long 0 + .long 10430 + .long 0 + .long 0 + .long 20860 + .long 0 + .long 0 + .long 41721 + .long 0 + .long 0 + .long 83443 + .long 0 + .long 0 + .long 166886 + .long 0 + .long 0 + .long 333772 + .long 0 + .long 0 + .long 667544 + .long 0 + .long 0 + .long 1335088 + .long 0 + .long 0 + .long 2670176 + .long 0 + .long 0 + .long 5340353 + .long 0 + .long 0 + .long 10680707 + .long 0 + .long 0 + .long 21361414 + .long 0 + .long 0 + .long 42722829 + .long 0 + .long 0 + .long 85445659 + .long 0 + .long 0 + .long 170891318 + .long 0 + .long 0 + .long 341782637 + .long 0 + .long 0 + .long 683565275 + .long 0 + .long 0 + .long 1367130551 + .long 0 + .long 0 + .long 2734261102 + .long 0 + .long 1 + .long 1173554908 + .long 0 + .long 2 + .long 2347109817 + .long 0 + .long 5 + .long 399252338 + .long 0 + .long 10 + .long 798504676 + .long 0 + .long 20 + .long 1597009353 + .long 0 + .long 40 + .long 3194018707 + .long 0 + .long 81 + .long 2093070119 + .long 0 + .long 162 + .long 4186140238 + .long 0 + .long 325 + .long 4077313180 + .long 0 + .long 651 + .long 3859659065 + .long 0 + .long 1303 + .long 3424350834 + .long 0 + .long 2607 + .long 2553734372 + .long 0 + .long 5215 + .long 812501448 + .long 0 + .long 10430 + .long 1625002897 + .long 0 + .long 20860 + .long 3250005794 + .long 0 + .long 41721 + .long 2205044292 + .long 0 + .long 83443 + .long 115121288 + .long 0 + .long 166886 + .long 230242576 + .long 0 + .long 333772 + .long 460485152 + .long 0 + .long 667544 + .long 920970305 + .long 0 + .long 1335088 + .long 1841940610 + .long 0 + .long 2670176 + .long 3683881221 + .long 0 + .long 5340353 + .long 3072795146 + .long 0 + .long 10680707 + .long 1850622997 + .long 0 + .long 21361414 + .long 3701245994 + .long 0 + .long 42722829 + .long 3107524692 + .long 0 + .long 85445659 + .long 1920082089 + .long 0 + .long 170891318 + .long 3840164178 + .long 0 + .long 341782637 + .long 3385361061 + .long 0 + .long 683565275 + .long 2475754826 + .long 0 + .long 1367130551 + .long 656542356 + .long 0 + .long 2734261102 + .long 1313084713 + .long 1 + .long 1173554908 + .long 2626169427 + .long 2 + .long 2347109817 + .long 957371559 + .long 5 + .long 399252338 + .long 1914743119 + .long 10 + .long 798504676 + .long 3829486239 + .long 20 + .long 1597009353 + .long 3364005183 + .long 40 + .long 3194018707 + .long 2433043071 + .long 81 + .long 2093070119 + .long 571118846 + .long 162 + .long 4186140238 + .long 1142237692 + .long 325 + .long 4077313180 + .long 2284475384 + .long 651 + .long 3859659065 + .long 273983472 + .long 1303 + .long 3424350834 + .long 547966945 + .long 2607 + .long 2553734372 + .long 1095933890 + .long 5215 + .long 812501448 + .long 2191867780 + .long 10430 + .long 1625002897 + .long 88768265 + .long 20860 + .long 3250005794 + .long 177536531 + .long 41721 + .long 2205044292 + .long 355073063 + .long 83443 + .long 115121288 + .long 710146126 + .long 166886 + .long 230242576 + .long 1420292253 + .long 333772 + .long 460485152 + .long 2840584506 + .long 667544 + .long 920970305 + .long 1386201717 + .long 1335088 + .long 1841940610 + .long 2772403434 + .long 2670176 + .long 3683881221 + .long 1249839573 + .long 5340353 + .long 3072795146 + .long 2499679147 + .long 10680707 + .long 1850622997 + .long 704390999 + .long 21361414 + .long 3701245994 + .long 1408781999 + .long 42722829 + .long 3107524692 + .long 2817563999 + .long 85445659 + .long 1920082089 + .long 1340160702 + .long 170891318 + .long 3840164178 + .long 2680321405 + .long 341782637 + .long 3385361061 + .long 1065675514 + .long 683565275 + .long 2475754826 + .long 2131351028 + .long 1367130551 + .long 656542356 + .long 4262702056 + .long 2734261102 + .long 1313084713 + .long 4230436817 + .long 1173554908 + .long 2626169427 + .long 4165906339 + .long 2347109817 + .long 957371559 + .long 4036845383 + .long 399252338 + .long 1914743119 + .long 3778723471 + .long 798504676 + .long 3829486239 + .long 3262479647 + .long 1597009353 + .long 3364005183 + .long 2229991998 + .long 3194018707 + .long 2433043071 + .long 165016701 + .long 2093070119 + .long 571118846 + .long 330033402 + .long 4186140238 + .long 1142237692 + .long 660066805 + .long 4077313180 + .long 2284475384 + .long 1320133610 + .long 3859659065 + .long 273983472 + .long 2640267220 + .long 3424350834 + .long 547966945 + .long 985567145 + .long 2553734372 + .long 1095933890 + .long 1971134291 + .long 812501448 + .long 2191867780 + .long 3942268582 + .long 1625002897 + .long 88768265 + .long 3589569869 + .long 3250005794 + .long 177536531 + .long 2884172442 + .long 2205044292 + .long 355073063 + .long 1473377588 + .long 115121288 + .long 710146126 + .long 2946755177 + .long 230242576 + .long 1420292253 + .long 1598543059 + .long 460485152 + .long 2840584506 + .long 3197086118 + .long 920970305 + .long 1386201717 + .long 2099204941 + .long 1841940610 + .long 2772403434 + .long 4198409883 + .long 3683881221 + .long 1249839573 + .long 4101852471 + .long 3072795146 + .long 2499679147 + .long 3908737646 + .long 1850622997 + .long 704390999 + .long 3522507997 + .long 3701245994 + .long 1408781999 + .long 2750048699 + .long 3107524692 + .long 2817563999 + .long 1205130103 + .long 1920082089 + .long 1340160702 + .long 2410260206 + .long 3840164178 + .long 2680321405 + .long 525553116 + .long 3385361061 + .long 1065675514 + .long 1051106232 + .long 2475754826 + .long 2131351028 + .long 2102212464 + .long 656542356 + .long 4262702056 + .long 4204424928 + .long 1313084713 + .long 4230436817 + .long 4113882560 + .long 2626169427 + .long 4165906339 + .long 3932797825 + .long 957371559 + .long 4036845383 + .long 3570628355 + .long 1914743119 + .long 3778723471 + .long 2846289414 + .long 3829486239 + .long 3262479647 + .long 1397611533 + .long 3364005183 + .long 2229991998 + .long 2795223067 + .long 2433043071 + .long 165016701 + .long 1295478838 + .long 571118846 + .long 330033402 + .long 2590957677 + .long 1142237692 + .long 660066805 + .long 886948059 + .long 2284475384 + .long 1320133610 + .long 1773896118 + .long 273983472 + .long 2640267220 + .long 3547792237 + .long 547966945 + .long 985567145 + .long 2800617179 + .long 1095933890 + .long 1971134291 + .long 1306267062 + .long 2191867780 + .long 3942268582 + .long 2612534124 + .long 88768265 + .long 3589569869 + .long 930100952 + .long 177536531 + .long 2884172442 + .long 1860201905 + .long 355073063 + .long 1473377588 + .long 3720403810 + .long 710146126 + .long 2946755177 + .long 3145840325 + .long 1420292253 + .long 1598543059 + .long 1996713354 + .long 2840584506 + .long 3197086118 + .long 3993426708 + .long 1386201717 + .long 2099204941 + .long 3691886121 + .long 2772403434 + .long 4198409883 + .long 3088804946 + .long 1249839573 + .long 4101852471 + .long 1882642597 + .long 2499679147 + .long 3908737646 + .long 3765285194 + .long 704390999 + .long 3522507997 + .long 3235603093 + .long 1408781999 + .long 2750048699 + .long 2176238891 + .long 2817563999 + .long 1205130103 + .long 57510486 + .long 1340160702 + .long 2410260206 + .long 115020972 + .long 2680321405 + .long 525553116 + .long 230041945 + .long 1065675514 + .long 1051106232 + .long 460083891 + .long 2131351028 + .long 2102212464 + .long 920167782 + .long 4262702056 + .long 4204424928 + .long 1840335564 + .long 4230436817 + .long 4113882560 + .long 3680671129 + .long 4165906339 + .long 3932797825 + .long 3066374962 + .long 4036845383 + .long 3570628355 + .long 1837782628 + .long 3778723471 + .long 2846289414 + .long 3675565257 + .long 3262479647 + .long 1397611533 + .long 3056163219 + .long 2229991998 + .long 2795223067 + .long 1817359143 + .long 165016701 + .long 1295478838 + .long 3634718287 + .long 330033402 + .long 2590957677 + .long 2974469278 + .long 660066805 + .long 886948059 + .long 1653971260 + .long 1320133610 + .long 1773896118 + .long 3307942520 + .long 2640267220 + .long 3547792237 + .long 2320917745 + .long 985567145 + .long 2800617179 + .long 346868194 + .long 1971134291 + .long 1306267062 + .long 693736388 + .long 3942268582 + .long 2612534124 + .long 1387472776 + .long 3589569869 + .long 930100952 + .long 2774945552 + .long 2884172442 + .long 1860201905 + .long 1254923809 + .long 1473377588 + .long 3720403810 + .long 2509847619 + .long 2946755177 + .long 3145840325 + .long 724727943 + .long 1598543059 + .long 1996713354 + .long 1449455886 + .long 3197086118 + .long 3993426708 + .long 2898911772 + .long 2099204941 + .long 3691886121 + .long 1502856249 + .long 4198409883 + .long 3088804946 + .long 3005712498 + .long 4101852471 + .long 1882642597 + .long 1716457700 + .long 3908737646 + .long 3765285194 + .long 3432915400 + .long 3522507997 + .long 3235603093 + .long 2570863504 + .long 2750048699 + .long 2176238891 + .long 846759712 + .long 1205130103 + .long 57510486 + .long 1693519425 + .long 2410260206 + .long 115020972 + .long 3387038850 + .long 525553116 + .long 230041945 + .long 2479110404 + .long 1051106232 + .long 460083891 + .long 663253512 + .long 2102212464 + .long 920167782 + .long 1326507024 + .long 4204424928 + .long 1840335564 + .long 2653014048 + .long 4113882560 + .long 3680671129 + .long 1011060801 + .long 3932797825 + .long 3066374962 + .long 2022121603 + .long 3570628355 + .long 1837782628 + .long 4044243207 + .long 2846289414 + .long 3675565257 + .long 3793519119 + .long 1397611533 + .long 3056163219 + .long 3292070943 + .long 2795223067 + .long 1817359143 + .long 2289174591 + .long 1295478838 + .long 3634718287 + .long 283381887 + .long 2590957677 + .long 2974469278 + .long 566763775 + .type __svml_ssin_reduction_data_internal,@object + .size __svml_ssin_reduction_data_internal,3072 + .align 4 +__ssin_la__vmlsSinHATab: + .long 0 + .long 2139095040 + .type __ssin_la__vmlsSinHATab,@object + .size __ssin_la__vmlsSinHATab,8 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_sinh_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_sinh_d_la.s new file mode 100644 index 00000000..5b4bcbb6 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_sinh_d_la.s @@ -0,0 +1,2052 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + + + .text +.L_2__routine_start___svml_sinh8_z0_0: + + .align 16,0x90 + .globl __svml_sinh8 + +__svml_sinh8: + + + .cfi_startproc +..L2: + + 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 + lea 1608+__svml_dsinh_data_internal(%rip), %rax + vmovaps %zmm0, %zmm8 + +/* ............... Abs argument ............................ */ + vandpd 1408+__svml_dsinh_data_internal(%rip), %zmm8, %zmm7 + vmovups 3648+__svml_dsinh_data_internal(%rip), %zmm13 + +/* + * ............... Load argument ............................ + * dM = x*2^K/log(2) + RShifter + */ + vmovups 1216+__svml_dsinh_data_internal(%rip), %zmm12 + vmovups 1280+__svml_dsinh_data_internal(%rip), %zmm14 + vmovups 4032+__svml_dsinh_data_internal(%rip), %zmm6 + +/* VLOAD_CONST( D, dPC[0], TAB._dPC1 ); */ + vmovups 3968+__svml_dsinh_data_internal(%rip), %zmm4 + vxorpd %zmm8, %zmm7, %zmm5 + kxnorw %k0, %k0, %k1 + kxnorw %k0, %k0, %k2 + vfmadd213pd {rn-sae}, %zmm13, %zmm5, %zmm12 + +/* + * ...............Check for overflow\underflow ............. + * + */ + vpsrlq $32, %zmm5, %zmm9 + +/* + * ................... R ................................... + * dN = dM - RShifter + */ + vsubpd {rn-sae}, %zmm13, %zmm12, %zmm2 + vpmovqd %zmm9, %ymm10 + vmovups 1344+__svml_dsinh_data_internal(%rip), %zmm9 + +/* dR = dX - dN*Log2_hi/2^K */ + vfnmadd231pd {rn-sae}, %zmm14, %zmm2, %zmm5 + +/* + * ....sinh(r) = r*((a1=1)+r^2*(a3+r^2*a5)) = r + r*(r^2*(a3+r^2*a5)) .... + * dSinh_r = (a3+r^2*a5) + */ + vmovups 3904+__svml_dsinh_data_internal(%rip), %zmm14 + +/* dR = (dX - dN*Log2_hi/2^K) - dN*Log2_lo/2^K */ + vfnmadd231pd {rn-sae}, %zmm9, %zmm2, %zmm5 + vpcmpgtd 3712+__svml_dsinh_data_internal(%rip), %ymm10, %ymm11 + vmovmskps %ymm11, %edx + +/* dR2 = dR^2 */ + vmulpd {rn-sae}, %zmm5, %zmm5, %zmm2 + vfmadd231pd {rn-sae}, %zmm2, %zmm6, %zmm14 + +/* + * .............. Index and lookup ......................... + * j + */ + vpandq 4224+__svml_dsinh_data_internal(%rip), %zmm12, %zmm15 + vpsllq $4, %zmm15, %zmm1 + vpmovqd %zmm1, %ymm0 + vpxord %zmm11, %zmm11, %zmm11 + vpxord %zmm10, %zmm10, %zmm10 + vgatherdpd (%rax,%ymm0), %zmm11{%k1} + vgatherdpd -8(%rax,%ymm0), %zmm10{%k2} + +/* split j and N */ + vpxorq %zmm15, %zmm12, %zmm3 + +/* + * ............... G1,G2,G3: dTdif,dTn * 2^N,2^(-N) ........... + * lM now is an EXP(2^N) + */ + vpsllq $45, %zmm3, %zmm3 + vpaddq %zmm3, %zmm10, %zmm1 + +/* */ + vpaddq %zmm3, %zmm11, %zmm12 + +/* */ + vpsubq %zmm3, %zmm11, %zmm13 + +/* dSinh_r = r^2*(a3+r^2*a5) */ + vmulpd {rn-sae}, %zmm2, %zmm14, %zmm3 + +/* dG2 = dTn*2^N - dTn*2^-N */ + vsubpd {rn-sae}, %zmm13, %zmm12, %zmm15 + +/* dG3 = dTn*2^N + dTn*2^-N */ + vaddpd {rn-sae}, %zmm13, %zmm12, %zmm0 + +/* dSinh_r = r + r*(r^2*(a3+r^2*a5)) */ + vfmadd213pd {rn-sae}, %zmm5, %zmm5, %zmm3 + +/* + * poly(r) = (dG2+dG1)+dG3*sinh(dR)+dG1*sinh(dR)+(dG1+dG2)*dR2*(a2 +a4*dR2) + * dOut = (a2 +a4*dR2) + */ + vmovups 3840+__svml_dsinh_data_internal(%rip), %zmm5 + +/* dG1 += dG3 */ + vaddpd {rn-sae}, %zmm0, %zmm1, %zmm6 + vfmadd231pd {rn-sae}, %zmm2, %zmm4, %zmm5 + +/* dOut = dR2*(a2 +a4*dR2) */ + vmulpd {rn-sae}, %zmm2, %zmm5, %zmm4 + +/* dG2 += dG1 */ + vaddpd {rn-sae}, %zmm15, %zmm1, %zmm2 + +/* dOut = dG2*dR2*(a2 +a4*dR2) */ + vmulpd {rn-sae}, %zmm2, %zmm4, %zmm4 + +/* dOut = dG1*sinh(dR)+dG2*dR2*(a2 +a4*dR2) */ + vfmadd213pd {rn-sae}, %zmm4, %zmm6, %zmm3 + +/* dOut = dG2 + dG1*sinh(dR)+dG2*dR2*(a2 +a4*dR2) */ + vaddpd {rn-sae}, %zmm2, %zmm3, %zmm0 + +/* ................... Ret H ...................... */ + vorpd %zmm0, %zmm7, %zmm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + 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 $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_dsinh_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_sinh8,@function + .size __svml_sinh8,.-__svml_sinh8 +..LN__svml_sinh8.0: + +.L_2__routine_start___svml_dsinh_cout_rare_internal_1: + + .align 16,0x90 + +__svml_dsinh_cout_rare_internal: + + + .cfi_startproc +..L53: + + movq %rsi, %r9 + movzwl 6(%rdi), %ecx + xorl %eax, %eax + andl $32752, %ecx + shrl $4, %ecx + movsd (%rdi), %xmm2 + movb 7(%rdi), %dl + movsd %xmm2, -8(%rsp) + cmpl $2047, %ecx + je .LBL_2_17 + + + testl %ecx, %ecx + jle .LBL_2_16 + + + andb $127, %dl + movsd %xmm2, -32(%rsp) + movb %dl, -25(%rsp) + cmpl $969, %ecx + jle .LBL_2_14 + + + movsd -32(%rsp), %xmm0 + movsd 1136+__dsinh_la_CoutTab(%rip), %xmm1 + comisd %xmm0, %xmm1 + jbe .LBL_2_13 + + + movsd 1184+__dsinh_la_CoutTab(%rip), %xmm1 + comisd %xmm0, %xmm1 + jbe .LBL_2_9 + + + comisd 1176+__dsinh_la_CoutTab(%rip), %xmm0 + jb .LBL_2_8 + + + movsd 1112+__dsinh_la_CoutTab(%rip), %xmm1 + lea __dsinh_la_CoutTab(%rip), %rcx + mulsd %xmm0, %xmm1 + movsd 1144+__dsinh_la_CoutTab(%rip), %xmm4 + movq 8+__dsinh_la_CoutTab(%rip), %r10 + movq %r10, %rsi + shrq $48, %rsi + addsd 1120+__dsinh_la_CoutTab(%rip), %xmm1 + movsd %xmm1, -40(%rsp) + andl $-32753, %esi + movsd -40(%rsp), %xmm10 + movl -40(%rsp), %r8d + movl %r8d, %r11d + shrl $6, %r11d + andl $63, %r8d + movq %r10, -16(%rsp) + subsd 1120+__dsinh_la_CoutTab(%rip), %xmm10 + mulsd %xmm10, %xmm4 + lea 1023(%r11), %edi + xorps .L_2il0floatpacket.97(%rip), %xmm10 + addl $1022, %r11d + mulsd 1152+__dsinh_la_CoutTab(%rip), %xmm10 + subsd %xmm4, %xmm0 + movaps %xmm10, %xmm2 + movaps %xmm0, %xmm8 + andl $2047, %r11d + lea (%r8,%r8), %edx + negl %edi + lea 1(%r8,%r8), %r8d + movsd (%rcx,%rdx,8), %xmm9 + negl %edx + shll $4, %r11d + addl $-4, %edi + orl %r11d, %esi + andl $2047, %edi + movw %si, -10(%rsp) + andl $-32753, %esi + shll $4, %edi + addsd %xmm0, %xmm2 + movsd %xmm2, -24(%rsp) + orl %edi, %esi + movsd -24(%rsp), %xmm6 + movsd 1128+__dsinh_la_CoutTab(%rip), %xmm2 + subsd %xmm6, %xmm8 + movsd %xmm8, -56(%rsp) + movsd -24(%rsp), %xmm12 + movsd -56(%rsp), %xmm11 + movsd (%rcx,%r8,8), %xmm7 + addsd %xmm11, %xmm12 + movsd %xmm12, -48(%rsp) + movsd -56(%rsp), %xmm5 + addsd %xmm5, %xmm10 + movsd -16(%rsp), %xmm5 + mulsd %xmm5, %xmm9 + mulsd %xmm5, %xmm7 + movsd %xmm10, -56(%rsp) + movaps %xmm9, %xmm10 + movsd -48(%rsp), %xmm13 + movw %si, -10(%rsp) + lea 128(%rdx), %esi + movsd -16(%rsp), %xmm14 + addl $129, %edx + subsd %xmm13, %xmm0 + movsd %xmm0, -48(%rsp) + movsd -56(%rsp), %xmm1 + movsd -48(%rsp), %xmm15 + addsd %xmm15, %xmm1 + movsd %xmm1, -48(%rsp) + movsd -24(%rsp), %xmm4 + mulsd %xmm4, %xmm2 + movaps %xmm4, %xmm3 + mulsd %xmm4, %xmm3 + movsd -48(%rsp), %xmm1 + movaps %xmm4, %xmm0 + movsd %xmm2, -24(%rsp) + movsd -24(%rsp), %xmm6 + movsd 1064+__dsinh_la_CoutTab(%rip), %xmm2 + subsd %xmm4, %xmm6 + mulsd %xmm3, %xmm2 + movsd %xmm6, -56(%rsp) + movsd -24(%rsp), %xmm11 + movsd -56(%rsp), %xmm8 + subsd %xmm8, %xmm11 + addsd 1048+__dsinh_la_CoutTab(%rip), %xmm2 + movsd %xmm11, -24(%rsp) + movsd 1072+__dsinh_la_CoutTab(%rip), %xmm11 + mulsd %xmm3, %xmm11 + mulsd %xmm3, %xmm2 + addsd 1056+__dsinh_la_CoutTab(%rip), %xmm11 + mulsd %xmm4, %xmm2 + mulsd %xmm3, %xmm11 + movsd -24(%rsp), %xmm12 + addsd 1040+__dsinh_la_CoutTab(%rip), %xmm11 + subsd %xmm12, %xmm0 + mulsd %xmm3, %xmm11 + movsd (%rcx,%rsi,8), %xmm3 + movaps %xmm9, %xmm12 + mulsd %xmm14, %xmm3 + movsd %xmm0, -56(%rsp) + subsd %xmm3, %xmm10 + movsd -24(%rsp), %xmm8 + movsd -56(%rsp), %xmm6 + movsd %xmm10, -24(%rsp) + movsd -24(%rsp), %xmm13 + movsd (%rcx,%rdx,8), %xmm0 + subsd %xmm13, %xmm12 + mulsd %xmm14, %xmm0 + subsd %xmm3, %xmm12 + movsd %xmm12, -56(%rsp) + movsd -24(%rsp), %xmm14 + movsd -56(%rsp), %xmm12 + movaps %xmm14, %xmm5 + movb -1(%rsp), %cl + addsd %xmm7, %xmm12 + addsd %xmm0, %xmm7 + subsd %xmm0, %xmm12 + andb $-128, %cl + addsd %xmm12, %xmm5 + movsd %xmm5, -24(%rsp) + movaps %xmm9, %xmm5 + movsd -24(%rsp), %xmm15 + addsd %xmm3, %xmm5 + subsd %xmm15, %xmm14 + addsd %xmm14, %xmm12 + movsd %xmm12, -56(%rsp) + movsd -24(%rsp), %xmm10 + movsd -56(%rsp), %xmm12 + movsd %xmm5, -24(%rsp) + movsd -24(%rsp), %xmm13 + subsd %xmm13, %xmm9 + addsd %xmm9, %xmm3 + movsd %xmm3, -56(%rsp) + movsd -24(%rsp), %xmm3 + movsd -56(%rsp), %xmm5 + addsd %xmm7, %xmm5 + movaps %xmm3, %xmm7 + addsd %xmm5, %xmm7 + movsd %xmm7, -24(%rsp) + movsd -24(%rsp), %xmm9 + movsd 1128+__dsinh_la_CoutTab(%rip), %xmm7 + subsd %xmm9, %xmm3 + addsd %xmm3, %xmm5 + movsd %xmm5, -56(%rsp) + movsd -24(%rsp), %xmm0 + mulsd %xmm0, %xmm7 + movsd -56(%rsp), %xmm3 + movsd %xmm7, -24(%rsp) + movaps %xmm0, %xmm7 + movsd -24(%rsp), %xmm14 + mulsd %xmm3, %xmm4 + subsd %xmm0, %xmm14 + movsd %xmm14, -56(%rsp) + movsd -24(%rsp), %xmm13 + movsd -56(%rsp), %xmm9 + subsd %xmm9, %xmm13 + movsd %xmm13, -24(%rsp) + movaps %xmm0, %xmm13 + movsd -24(%rsp), %xmm15 + mulsd %xmm2, %xmm13 + subsd %xmm15, %xmm7 + mulsd %xmm1, %xmm0 + mulsd %xmm3, %xmm1 + mulsd %xmm3, %xmm2 + movaps %xmm10, %xmm15 + movaps %xmm13, %xmm5 + mulsd %xmm11, %xmm15 + mulsd %xmm12, %xmm11 + addsd %xmm15, %xmm5 + addsd %xmm12, %xmm11 + movsd %xmm7, -56(%rsp) + addsd %xmm0, %xmm11 + movsd -24(%rsp), %xmm9 + addsd %xmm1, %xmm11 + movsd -56(%rsp), %xmm7 + addsd %xmm2, %xmm11 + movsd %xmm5, -24(%rsp) + addsd %xmm4, %xmm11 + movsd -24(%rsp), %xmm14 + subsd %xmm14, %xmm13 + addsd %xmm13, %xmm15 + movsd %xmm15, -56(%rsp) + movaps %xmm8, %xmm15 + mulsd %xmm9, %xmm15 + mulsd %xmm6, %xmm9 + mulsd %xmm7, %xmm6 + mulsd %xmm7, %xmm8 + movsd -24(%rsp), %xmm14 + movaps %xmm15, %xmm13 + movsd -56(%rsp), %xmm5 + addsd %xmm14, %xmm13 + addsd %xmm9, %xmm5 + movsd %xmm13, -24(%rsp) + addsd %xmm6, %xmm5 + movsd -24(%rsp), %xmm13 + addsd %xmm8, %xmm5 + subsd %xmm13, %xmm15 + addsd %xmm5, %xmm11 + addsd %xmm15, %xmm14 + movsd %xmm14, -56(%rsp) + movaps %xmm10, %xmm15 + movsd -24(%rsp), %xmm13 + movsd -56(%rsp), %xmm14 + addsd %xmm13, %xmm15 + addsd %xmm14, %xmm11 + movsd %xmm15, -24(%rsp) + movsd -24(%rsp), %xmm15 + subsd %xmm15, %xmm10 + addsd %xmm10, %xmm13 + movsd %xmm13, -56(%rsp) + movsd -24(%rsp), %xmm13 + movsd -56(%rsp), %xmm10 + addsd %xmm10, %xmm11 + addsd %xmm11, %xmm13 + movsd %xmm13, -32(%rsp) + movb -25(%rsp), %dil + andb $127, %dil + orb %cl, %dil + movb %dil, -25(%rsp) + movq -32(%rsp), %r10 + movq %r10, (%r9) + ret + +.LBL_2_8: + + movaps %xmm0, %xmm2 + mulsd %xmm0, %xmm2 + movsd 1104+__dsinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm2, %xmm1 + movb -1(%rsp), %dl + andb $-128, %dl + addsd 1096+__dsinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm2, %xmm1 + addsd 1088+__dsinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm2, %xmm1 + addsd 1080+__dsinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm1, %xmm2 + mulsd %xmm0, %xmm2 + addsd %xmm2, %xmm0 + movsd %xmm0, -32(%rsp) + movb -25(%rsp), %cl + andb $127, %cl + orb %dl, %cl + movb %cl, -25(%rsp) + movq -32(%rsp), %rsi + movq %rsi, (%r9) + ret + +.LBL_2_9: + + movsd 1112+__dsinh_la_CoutTab(%rip), %xmm1 + lea __dsinh_la_CoutTab(%rip), %r8 + mulsd %xmm0, %xmm1 + movsd 1144+__dsinh_la_CoutTab(%rip), %xmm2 + movsd 1152+__dsinh_la_CoutTab(%rip), %xmm3 + movq 8+__dsinh_la_CoutTab(%rip), %rdx + movq %rdx, -16(%rsp) + addsd 1120+__dsinh_la_CoutTab(%rip), %xmm1 + movsd %xmm1, -40(%rsp) + movsd -40(%rsp), %xmm4 + movsd 1072+__dsinh_la_CoutTab(%rip), %xmm1 + movl -40(%rsp), %edx + movl %edx, %esi + andl $63, %esi + subsd 1120+__dsinh_la_CoutTab(%rip), %xmm4 + mulsd %xmm4, %xmm2 + lea (%rsi,%rsi), %ecx + mulsd %xmm3, %xmm4 + subsd %xmm2, %xmm0 + movsd (%r8,%rcx,8), %xmm5 + lea 1(%rsi,%rsi), %edi + shrl $6, %edx + subsd %xmm4, %xmm0 + mulsd %xmm0, %xmm1 + addl $1022, %edx + andl $2047, %edx + addsd 1064+__dsinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + addsd 1056+__dsinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + addsd 1048+__dsinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + addsd 1040+__dsinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + mulsd %xmm0, %xmm1 + addsd %xmm0, %xmm1 + mulsd %xmm5, %xmm1 + addsd (%r8,%rdi,8), %xmm1 + addsd %xmm5, %xmm1 + cmpl $2046, %edx + ja .LBL_2_11 + + + movq 8+__dsinh_la_CoutTab(%rip), %rcx + shrq $48, %rcx + shll $4, %edx + andl $-32753, %ecx + orl %edx, %ecx + movw %cx, -10(%rsp) + movsd -16(%rsp), %xmm0 + mulsd %xmm0, %xmm1 + movsd %xmm1, -32(%rsp) + jmp .LBL_2_12 + +.LBL_2_11: + + decl %edx + andl $2047, %edx + movzwl -10(%rsp), %ecx + shll $4, %edx + andl $-32753, %ecx + orl %edx, %ecx + movw %cx, -10(%rsp) + movsd -16(%rsp), %xmm0 + mulsd %xmm0, %xmm1 + mulsd 1024+__dsinh_la_CoutTab(%rip), %xmm1 + movsd %xmm1, -32(%rsp) + +.LBL_2_12: + + movb -25(%rsp), %cl + movb -1(%rsp), %dl + andb $127, %cl + andb $-128, %dl + orb %dl, %cl + movb %cl, -25(%rsp) + movq -32(%rsp), %rsi + movq %rsi, (%r9) + ret + +.LBL_2_13: + + movsd 1168+__dsinh_la_CoutTab(%rip), %xmm0 + movl $3, %eax + mulsd %xmm2, %xmm0 + movsd %xmm0, (%r9) + ret + +.LBL_2_14: + + movsd __dsinh_la_CoutTab(%rip), %xmm0 + addsd 1160+__dsinh_la_CoutTab(%rip), %xmm0 + mulsd %xmm2, %xmm0 + movsd %xmm0, (%r9) + + + ret + +.LBL_2_16: + + movsd 1160+__dsinh_la_CoutTab(%rip), %xmm0 + mulsd %xmm0, %xmm2 + movsd %xmm2, -24(%rsp) + movsd -24(%rsp), %xmm1 + movq 8+__dsinh_la_CoutTab(%rip), %rdx + movq %rdx, -16(%rsp) + addsd -8(%rsp), %xmm1 + movsd %xmm1, (%r9) + ret + +.LBL_2_17: + + addsd %xmm2, %xmm2 + movsd %xmm2, (%r9) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_dsinh_cout_rare_internal,@function + .size __svml_dsinh_cout_rare_internal,.-__svml_dsinh_cout_rare_internal +..LN__svml_dsinh_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_dsinh_data_internal: + .long 0 + .long 1071644672 + .long 1828292879 + .long 1071691096 + .long 1014845819 + .long 1071739576 + .long 1853186616 + .long 1071790202 + .long 171030293 + .long 1071843070 + .long 1276261410 + .long 1071898278 + .long 3577096743 + .long 1071955930 + .long 3712504873 + .long 1072016135 + .long 1719614413 + .long 1072079006 + .long 1944781191 + .long 1072144660 + .long 1110089947 + .long 1072213221 + .long 2191782032 + .long 1072284817 + .long 2572866477 + .long 1072359583 + .long 3716502172 + .long 1072437659 + .long 3707479175 + .long 1072519192 + .long 2728693978 + .long 1072604335 + .long 0 + .long 0 + .long 1255956747 + .long 1015588398 + .long 3117910646 + .long 3161559105 + .long 3066496371 + .long 1015656574 + .long 3526460132 + .long 1014428778 + .long 300981948 + .long 1014684169 + .long 2951496418 + .long 1013793687 + .long 88491949 + .long 1015427660 + .long 330458198 + .long 3163282740 + .long 3993278767 + .long 3161724279 + .long 1451641639 + .long 1015474673 + .long 2960257726 + .long 1013742662 + .long 878562433 + .long 1015521741 + .long 2303740125 + .long 1014042725 + .long 3613079303 + .long 1014164738 + .long 396109971 + .long 3163462691 + .long 0 + .long 1071644672 + .long 2728693978 + .long 1071555759 + .long 3707479175 + .long 1071470616 + .long 3716502172 + .long 1071389083 + .long 2572866477 + .long 1071311007 + .long 2191782032 + .long 1071236241 + .long 1110089947 + .long 1071164645 + .long 1944781191 + .long 1071096084 + .long 1719614413 + .long 1071030430 + .long 3712504873 + .long 1070967559 + .long 3577096743 + .long 1070907354 + .long 1276261410 + .long 1070849702 + .long 171030293 + .long 1070794494 + .long 1853186616 + .long 1070741626 + .long 1014845819 + .long 1070691000 + .long 1828292879 + .long 1070642520 + .long 0 + .long 0 + .long 396109971 + .long 3162414115 + .long 3613079303 + .long 1013116162 + .long 2303740125 + .long 1012994149 + .long 878562433 + .long 1014473165 + .long 2960257726 + .long 1012694086 + .long 1451641639 + .long 1014426097 + .long 3993278767 + .long 3160675703 + .long 330458198 + .long 3162234164 + .long 88491949 + .long 1014379084 + .long 2951496418 + .long 1012745111 + .long 300981948 + .long 1013635593 + .long 3526460132 + .long 1013380202 + .long 3066496371 + .long 1014607998 + .long 3117910646 + .long 3160510529 + .long 1255956747 + .long 1014539822 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 0 + .long 1123549184 + .long 1 + .long 1123549184 + .long 1 + .long 1123549184 + .long 1 + .long 1123549184 + .long 1 + .long 1123549184 + .long 1 + .long 1123549184 + .long 1 + .long 1123549184 + .long 1 + .long 1123549184 + .long 1 + .long 1123549184 + .long 1082453555 + .long 1082453555 + .long 1082453555 + .long 1082453555 + .long 1082453555 + .long 1082453555 + .long 1082453555 + .long 1082453555 + .long 1082453555 + .long 1082453555 + .long 1082453555 + .long 1082453555 + .long 1082453555 + .long 1082453555 + .long 1082453555 + .long 1082453555 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .long 15 + .long 0 + .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 1431657638 + .long 1069897045 + .long 1431657638 + .long 1069897045 + .long 1431657638 + .long 1069897045 + .long 1431657638 + .long 1069897045 + .long 1431657638 + .long 1069897045 + .long 1431657638 + .long 1069897045 + .long 1431657638 + .long 1069897045 + .long 1431657638 + .long 1069897045 + .long 1431653196 + .long 1067799893 + .long 1431653196 + .long 1067799893 + .long 1431653196 + .long 1067799893 + .long 1431653196 + .long 1067799893 + .long 1431653196 + .long 1067799893 + .long 1431653196 + .long 1067799893 + .long 1431653196 + .long 1067799893 + .long 1431653196 + .long 1067799893 + .long 249327322 + .long 1065423121 + .long 249327322 + .long 1065423121 + .long 249327322 + .long 1065423121 + .long 249327322 + .long 1065423121 + .long 249327322 + .long 1065423121 + .long 249327322 + .long 1065423121 + .long 249327322 + .long 1065423121 + .long 249327322 + .long 1065423121 + .long 419584011 + .long 1062650220 + .long 419584011 + .long 1062650220 + .long 419584011 + .long 1062650220 + .long 419584011 + .long 1062650220 + .long 419584011 + .long 1062650220 + .long 419584011 + .long 1062650220 + .long 419584011 + .long 1062650220 + .long 419584011 + .long 1062650220 + .long 100753094 + .long 1059717741 + .long 100753094 + .long 1059717741 + .long 100753094 + .long 1059717741 + .long 100753094 + .long 1059717741 + .long 100753094 + .long 1059717741 + .long 100753094 + .long 1059717741 + .long 100753094 + .long 1059717741 + .long 100753094 + .long 1059717741 + .long 461398617 + .long 1056571820 + .long 461398617 + .long 1056571820 + .long 461398617 + .long 1056571820 + .long 461398617 + .long 1056571820 + .long 461398617 + .long 1056571820 + .long 461398617 + .long 1056571820 + .long 461398617 + .long 1056571820 + .long 461398617 + .long 1056571820 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .long 1697350398 + .long 1073157447 + .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 3164486458 + .long 1031600026 + .long 3164486458 + .long 1031600026 + .long 3164486458 + .long 1031600026 + .long 3164486458 + .long 1031600026 + .long 3164486458 + .long 1031600026 + .long 3164486458 + .long 1031600026 + .long 3164486458 + .long 1031600026 + .long 3164486458 + .long 1031600026 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .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 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1071644672 + .long 431824500 + .long 1064709706 + .long 730821105 + .long 1071633346 + .long 1779301686 + .long 1065758303 + .long 2174652632 + .long 1071622081 + .long 872681311 + .long 1066443490 + .long 2912730644 + .long 1071610877 + .long 2882296449 + .long 1066806964 + .long 1533953344 + .long 1071599734 + .long 3305321028 + .long 1067170481 + .long 929806999 + .long 1071588651 + .long 340716357 + .long 1067492210 + .long 3999357479 + .long 1071577627 + .long 1073477808 + .long 1067674027 + .long 764307441 + .long 1071566664 + .long 3128166954 + .long 1067855881 + .long 2728693978 + .long 1071555759 + .long 3639221082 + .long 1068037778 + .long 4224142467 + .long 1071544913 + .long 4041415279 + .long 1068219723 + .long 3884662774 + .long 1071534126 + .long 1480599658 + .long 1068401722 + .long 351641897 + .long 1071523398 + .long 2997120266 + .long 1068541361 + .long 863738719 + .long 1071512727 + .long 928693471 + .long 1068632422 + .long 4076975200 + .long 1071502113 + .long 1708958952 + .long 1068723517 + .long 64696965 + .long 1071491558 + .long 3926287402 + .long 1068814649 + .long 382305176 + .long 1071481059 + .long 1878784442 + .long 1068905822 + .long 3707479175 + .long 1071470616 + .long 2754496392 + .long 1068997037 + .long 135105010 + .long 1071460231 + .long 861943228 + .long 1069088298 + .long 1242007932 + .long 1071449901 + .long 3400259254 + .long 1069179606 + .long 1432208378 + .long 1071439627 + .long 394759087 + .long 1069270966 + .long 3706687593 + .long 1071429408 + .long 3351980561 + .long 1069362378 + .long 2483480501 + .long 1071419245 + .long 2310349189 + .long 1069453847 + .long 777507147 + .long 1071409137 + .long 200254151 + .long 1069545375 + .long 1610600570 + .long 1071399083 + .long 4274709417 + .long 1069592241 + .long 3716502172 + .long 1071389083 + .long 2266782956 + .long 1069638068 + .long 1540824585 + .long 1071379138 + .long 1995599824 + .long 1069683928 + .long 2420883922 + .long 1071369246 + .long 647201135 + .long 1069729823 + .long 815859274 + .long 1071359408 + .long 4001939191 + .long 1069775753 + .long 4076559943 + .long 1071349622 + .long 664843213 + .long 1069821722 + .long 2380618042 + .long 1071339890 + .long 720494647 + .long 1069867729 + .long 3092190715 + .long 1071330210 + .long 1373458573 + .long 1069913776 + .long 697153126 + .long 1071320583 + .long 4128322810 + .long 1069959864 + .long 2572866477 + .long 1071311007 + .long 1904966097 + .long 1070005996 + .long 3218338682 + .long 1071301483 + .long 513564799 + .long 1070052172 + .long 1434058175 + .long 1071292011 + .long 1474894098 + .long 1070098393 + .long 321958744 + .long 1071282590 + .long 2020498546 + .long 1070144661 + .long 2990417245 + .long 1071273219 + .long 3682797359 + .long 1070190977 + .long 3964284211 + .long 1071263899 + .long 3705320722 + .long 1070237343 + .long 2069751141 + .long 1071254630 + .long 3632815436 + .long 1070283760 + .long 434316067 + .long 1071245411 + .long 721481577 + .long 1070330230 + .long 2191782032 + .long 1071236241 + .long 824045819 + .long 1070376753 + .long 1892288442 + .long 1071227121 + .long 1210063881 + .long 1070423331 + .long 2682146384 + .long 1071218050 + .long 3450994238 + .long 1070469965 + .long 3418903055 + .long 1071209028 + .long 535468266 + .long 1070516658 + .long 2966275557 + .long 1071200055 + .long 2639266259 + .long 1070563409 + .long 194117574 + .long 1071191131 + .long 3530359402 + .long 1070603158 + .long 2568320822 + .long 1071182254 + .long 3405407025 + .long 1070626595 + .long 380978316 + .long 1071173426 + .long 1749136243 + .long 1070650064 + .long 1110089947 + .long 1071164645 + .long 1517376385 + .long 1070673565 + .long 3649726105 + .long 1071155911 + .long 1375061601 + .long 1070697099 + .long 2604962541 + .long 1071147225 + .long 4286252247 + .long 1070720666 + .long 1176749997 + .long 1071138586 + .long 334352625 + .long 1070744269 + .long 2571947539 + .long 1071129993 + .long 1081936396 + .long 1070767906 + .long 1413356050 + .long 1071121447 + .long 916128083 + .long 1070791579 + .long 919555682 + .long 1071112947 + .long 2818494152 + .long 1070815288 + .long 19972402 + .long 1071104493 + .long 1185261260 + .long 1070839035 + .long 1944781191 + .long 1071096084 + .long 3302240303 + .long 1070862819 + .long 1339972927 + .long 1071087721 + .long 3575110344 + .long 1070886642 + .long 1447192521 + .long 1071079403 + .long 709375646 + .long 1070910505 + .long 1218806132 + .long 1071071130 + .long 2005420950 + .long 1070934407 + .long 3907805044 + .long 1071062901 + .long 1883763132 + .long 1070958350 + .long 4182873220 + .long 1071054717 + .long 3359975962 + .long 1070982334 + .long 1013258799 + .long 1071046578 + .long 864909351 + .long 1071006361 + .long 1963711167 + .long 1071038482 + .long 1719614413 + .long 1071030430 + .long 1719614413 + .long 1071030430 + .long 365628427 + .long 1071054543 + .long 3561793907 + .long 1071022421 + .long 4134867513 + .long 1071078699 + .long 2186617381 + .long 1071014456 + .long 3184944616 + .long 1071102901 + .long 885834528 + .long 1071006534 + .long 564029795 + .long 1071127149 + .long 2956612997 + .long 1070998654 + .long 3621005023 + .long 1071151442 + .long 3111574537 + .long 1070990817 + .long 2530717257 + .long 1071175783 + .long 363667784 + .long 1070983023 + .long 358839240 + .long 1071200172 + .long 2321106615 + .long 1070975270 + .long 177057508 + .long 1071224609 + .long 3712504873 + .long 1070967559 + .long 768195176 + .long 1071249095 + .long 3566716925 + .long 1070959890 + .long 921269482 + .long 1071273631 + .long 917841882 + .long 1070952263 + .long 3726549525 + .long 1071298217 + .long 3395129871 + .long 1070944676 + .long 3690744995 + .long 1071322855 + .long 1453150082 + .long 1070937131 + .long 3916966168 + .long 1071347545 + .long 2731501122 + .long 1070929626 + .long 3219913010 + .long 1071372288 + .long 1990012071 + .long 1070922162 + .long 420933669 + .long 1071397085 + .long 2583551245 + .long 1070914738 + .long 2938050448 + .long 1071421935 + .long 3577096743 + .long 1070907354 + .long 1016247609 + .long 1071446841 + .long 4040676318 + .long 1070900010 + .long 2087301532 + .long 1071471802 + .long 3049340112 + .long 1070892706 + .long 705101620 + .long 1071496820 + .long 3978100823 + .long 1070885441 + .long 20578973 + .long 1071521895 + .long 1617004845 + .long 1070878216 + .long 3191864199 + .long 1071547027 + .long 3645941911 + .long 1070871029 + .long 499478133 + .long 1071572219 + .long 569847338 + .long 1070863882 + .long 3706163032 + .long 1071597469 + .long 78413852 + .long 1070856773 + .long 3107302654 + .long 1071622780 + .long 1276261410 + .long 1070849702 + .long 945376945 + .long 1071646412 + .long 3272845541 + .long 1070842669 + .long 3773502825 + .long 1071659128 + .long 887463927 + .long 1070835675 + .long 3049734401 + .long 1071671876 + .long 1829099622 + .long 1070828718 + .long 379637879 + .long 1071684656 + .long 926591435 + .long 1070821799 + .long 1667720032 + .long 1071697467 + .long 1603444721 + .long 1070814917 + .long 4232573504 + .long 1071710310 + .long 2992903935 + .long 1070808072 + .long 1101891425 + .long 1071723187 + .long 4232894513 + .long 1070801264 + .long 2487351331 + .long 1071736096 + .long 171030293 + .long 1070794494 + .long 1424924347 + .long 1071749039 + .long 2839424854 + .long 1070787759 + .long 3839693941 + .long 1071762015 + .long 2799960843 + .long 1070781061 + .long 2776099954 + .long 1071775026 + .long 3504003472 + .long 1070774399 + .long 4167790294 + .long 1071788071 + .long 4112506593 + .long 1070767773 + .long 1067865225 + .long 1071801152 + .long 3790955393 + .long 1070761183 + .long 3713696612 + .long 1071814267 + .long 1709341917 + .long 1070754629 + .long 872270569 + .long 1071827419 + .long 1337108031 + .long 1070748110 + .long 2789908864 + .long 1071840606 + .long 1853186616 + .long 1070741626 + .long 2537611823 + .long 1071853830 + .long 2440944790 + .long 1070735177 + .long 1780910816 + .long 1071867091 + .long 2288159958 + .long 1070728763 + .long 2189982503 + .long 1071880389 + .long 586995997 + .long 1070722384 + .long 1144730516 + .long 1071893725 + .long 828946858 + .long 1070716039 + .long 324769168 + .long 1071907099 + .long 2214878420 + .long 1070709728 + .long 1414505409 + .long 1071920511 + .long 3949972341 + .long 1070703451 + .long 1808220925 + .long 1071933962 + .long 948735466 + .long 1070697209 + .long 3200056266 + .long 1071947452 + .long 1014845819 + .long 1070691000 + .long 2994125935 + .long 1071960982 + .long 3366293073 + .long 1070684824 + .long 2894502806 + .long 1071974552 + .long 2930322912 + .long 1070678682 + .long 315333498 + .long 1071988163 + .long 3228316108 + .long 1070672573 + .long 1265790390 + .long 1072001814 + .long 3490863953 + .long 1070666497 + .long 3170252699 + .long 1072015506 + .long 2952712987 + .long 1070660454 + .long 3458291493 + .long 1072029240 + .long 852742562 + .long 1070654444 + .long 3859687560 + .long 1072043016 + .long 728909815 + .long 1070648466 + .long 1814547538 + .long 1072056835 + .long 1828292879 + .long 1070642520 + .long 3358256687 + .long 1072070696 + .long 3402036099 + .long 1070636606 + .long 1646693443 + .long 1072084601 + .long 410360776 + .long 1070630725 + .long 2726084392 + .long 1072098549 + .long 702412510 + .long 1070624875 + .long 4058219142 + .long 1072112541 + .long 3541402996 + .long 1070619056 + .long 3110436433 + .long 1072126578 + .long 3899555717 + .long 1070613269 + .long 1650643112 + .long 1072140660 + .long 1048019041 + .long 1070607514 + .long 1452398678 + .long 1072154787 + .long 2851812149 + .long 1070601789 + .long 0 + .long 1120403456 + .long 0 + .long 1120403456 + .long 0 + .long 1120403456 + .long 0 + .long 1120403456 + .long 0 + .long 1120403456 + .long 0 + .long 1120403456 + .long 0 + .long 1120403456 + .long 0 + .long 1120403456 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .long 1082531225 + .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 4294966717 + .long 1071644671 + .long 4294966717 + .long 1071644671 + .long 4294966717 + .long 1071644671 + .long 4294966717 + .long 1071644671 + .long 4294966717 + .long 1071644671 + .long 4294966717 + .long 1071644671 + .long 4294966717 + .long 1071644671 + .long 4294966717 + .long 1071644671 + .long 1431655597 + .long 1069897045 + .long 1431655597 + .long 1069897045 + .long 1431655597 + .long 1069897045 + .long 1431655597 + .long 1069897045 + .long 1431655597 + .long 1069897045 + .long 1431655597 + .long 1069897045 + .long 1431655597 + .long 1069897045 + .long 1431655597 + .long 1069897045 + .long 3474379417 + .long 1067799893 + .long 3474379417 + .long 1067799893 + .long 3474379417 + .long 1067799893 + .long 3474379417 + .long 1067799893 + .long 3474379417 + .long 1067799893 + .long 3474379417 + .long 1067799893 + .long 3474379417 + .long 1067799893 + .long 3474379417 + .long 1067799893 + .long 1460859941 + .long 1065423121 + .long 1460859941 + .long 1065423121 + .long 1460859941 + .long 1065423121 + .long 1460859941 + .long 1065423121 + .long 1460859941 + .long 1065423121 + .long 1460859941 + .long 1065423121 + .long 1460859941 + .long 1065423121 + .long 1460859941 + .long 1065423121 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 65472 + .long 0 + .long 65472 + .long 0 + .long 65472 + .long 0 + .long 65472 + .long 0 + .long 65472 + .long 0 + .long 65472 + .long 0 + .long 65472 + .long 0 + .long 65472 + .long 0 + .long 127 + .long 0 + .long 127 + .long 0 + .long 127 + .long 0 + .long 127 + .long 0 + .long 127 + .long 0 + .long 127 + .long 0 + .long 127 + .long 0 + .long 127 + .long 0 + .type __svml_dsinh_data_internal,@object + .size __svml_dsinh_data_internal,4288 + .space 320, 0x00 + .align 32 +__dsinh_la_CoutTab: + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 1048019041 + .long 1072704666 + .long 1398474845 + .long 3161559171 + .long 3541402996 + .long 1072716208 + .long 2759177317 + .long 1015903202 + .long 410360776 + .long 1072727877 + .long 1269990655 + .long 1013024446 + .long 1828292879 + .long 1072739672 + .long 1255956747 + .long 1016636974 + .long 852742562 + .long 1072751596 + .long 667253587 + .long 1010842135 + .long 3490863953 + .long 1072763649 + .long 960797498 + .long 3163997456 + .long 2930322912 + .long 1072775834 + .long 2599499422 + .long 3163762623 + .long 1014845819 + .long 1072788152 + .long 3117910646 + .long 3162607681 + .long 3949972341 + .long 1072800603 + .long 2068408548 + .long 1015962444 + .long 828946858 + .long 1072813191 + .long 10642492 + .long 1016988014 + .long 2288159958 + .long 1072825915 + .long 2169144469 + .long 1015924597 + .long 1853186616 + .long 1072838778 + .long 3066496371 + .long 1016705150 + .long 1709341917 + .long 1072851781 + .long 2571168217 + .long 1015201075 + .long 4112506593 + .long 1072864925 + .long 2947355221 + .long 1015419624 + .long 2799960843 + .long 1072878213 + .long 1423655381 + .long 1016070727 + .long 171030293 + .long 1072891646 + .long 3526460132 + .long 1015477354 + .long 2992903935 + .long 1072905224 + .long 2218154406 + .long 1016276769 + .long 926591435 + .long 1072918951 + .long 3208833762 + .long 3163962090 + .long 887463927 + .long 1072932827 + .long 3596744163 + .long 3161842742 + .long 1276261410 + .long 1072946854 + .long 300981948 + .long 1015732745 + .long 569847338 + .long 1072961034 + .long 472945272 + .long 3160339305 + .long 1617004845 + .long 1072975368 + .long 82804944 + .long 1011391354 + .long 3049340112 + .long 1072989858 + .long 3062915824 + .long 1014219171 + .long 3577096743 + .long 1073004506 + .long 2951496418 + .long 1014842263 + .long 1990012071 + .long 1073019314 + .long 3529070563 + .long 3163861769 + .long 1453150082 + .long 1073034283 + .long 498154669 + .long 3162536638 + .long 917841882 + .long 1073049415 + .long 18715565 + .long 1016707884 + .long 3712504873 + .long 1073064711 + .long 88491949 + .long 1016476236 + .long 363667784 + .long 1073080175 + .long 813753950 + .long 1016833785 + .long 2956612997 + .long 1073095806 + .long 2118169751 + .long 3163784129 + .long 2186617381 + .long 1073111608 + .long 2270764084 + .long 3164321289 + .long 1719614413 + .long 1073127582 + .long 330458198 + .long 3164331316 + .long 1013258799 + .long 1073143730 + .long 1748797611 + .long 3161177658 + .long 3907805044 + .long 1073160053 + .long 2257091225 + .long 3162598983 + .long 1447192521 + .long 1073176555 + .long 1462857171 + .long 3163563097 + .long 1944781191 + .long 1073193236 + .long 3993278767 + .long 3162772855 + .long 919555682 + .long 1073210099 + .long 3121969534 + .long 1013996802 + .long 2571947539 + .long 1073227145 + .long 3558159064 + .long 3164425245 + .long 2604962541 + .long 1073244377 + .long 2614425274 + .long 3164587768 + .long 1110089947 + .long 1073261797 + .long 1451641639 + .long 1016523249 + .long 2568320822 + .long 1073279406 + .long 2732824428 + .long 1015401491 + .long 2966275557 + .long 1073297207 + .long 2176155324 + .long 3160891335 + .long 2682146384 + .long 1073315202 + .long 2082178513 + .long 3164411995 + .long 2191782032 + .long 1073333393 + .long 2960257726 + .long 1014791238 + .long 2069751141 + .long 1073351782 + .long 1562170675 + .long 3163773257 + .long 2990417245 + .long 1073370371 + .long 3683467745 + .long 3164417902 + .long 1434058175 + .long 1073389163 + .long 251133233 + .long 1016134345 + .long 2572866477 + .long 1073408159 + .long 878562433 + .long 1016570317 + .long 3092190715 + .long 1073427362 + .long 814012168 + .long 3160571998 + .long 4076559943 + .long 1073446774 + .long 2119478331 + .long 3161806927 + .long 2420883922 + .long 1073466398 + .long 2049810052 + .long 1015168464 + .long 3716502172 + .long 1073486235 + .long 2303740125 + .long 1015091301 + .long 777507147 + .long 1073506289 + .long 4282924205 + .long 1016236109 + .long 3706687593 + .long 1073526560 + .long 3521726939 + .long 1014301643 + .long 1242007932 + .long 1073547053 + .long 1132034716 + .long 3164388407 + .long 3707479175 + .long 1073567768 + .long 3613079303 + .long 1015213314 + .long 64696965 + .long 1073588710 + .long 1768797490 + .long 1016865536 + .long 863738719 + .long 1073609879 + .long 1326992220 + .long 3163661773 + .long 3884662774 + .long 1073631278 + .long 2158611599 + .long 1015258761 + .long 2728693978 + .long 1073652911 + .long 396109971 + .long 3164511267 + .long 3999357479 + .long 1073674779 + .long 2258941616 + .long 1016973300 + .long 1533953344 + .long 1073696886 + .long 769171851 + .long 1016714209 + .long 2174652632 + .long 1073719233 + .long 4087714590 + .long 1015498835 + .long 0 + .long 1073741824 + .long 0 + .long 0 + .long 0 + .long 1071644672 + .long 1431652600 + .long 1069897045 + .long 1431670732 + .long 1067799893 + .long 984555731 + .long 1065423122 + .long 472530941 + .long 1062650218 + .long 1431655765 + .long 1069897045 + .long 286331153 + .long 1065423121 + .long 436314138 + .long 1059717536 + .long 2773927732 + .long 1053236707 + .long 1697350398 + .long 1079448903 + .long 0 + .long 1127743488 + .long 33554432 + .long 1101004800 + .long 2411329662 + .long 1082536910 + .long 4277796864 + .long 1065758274 + .long 3164486458 + .long 1025308570 + .long 1 + .long 1048576 + .long 4294967295 + .long 2146435071 + .long 3671843104 + .long 1067178892 + .long 3875694624 + .long 1077247184 + .type __dsinh_la_CoutTab,@object + .size __dsinh_la_CoutTab,1192 + .space 8, 0x00 + .align 16 +.L_2il0floatpacket.97: + .long 0x00000000,0x80000000,0x00000000,0x00000000 + .type .L_2il0floatpacket.97,@object + .size .L_2il0floatpacket.97,16 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_sinh_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_sinh_s_la.s new file mode 100644 index 00000000..f2101e52 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_sinh_s_la.s @@ -0,0 +1,1446 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + + + .text +.L_2__routine_start___svml_sinhf16_z0_0: + + .align 16,0x90 + .globl __svml_sinhf16 + +__svml_sinhf16: + + + .cfi_startproc +..L2: + + 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 + vmovaps %zmm0, %zmm5 + +/* + * ----------------------------------- Implementation --------------------- + * ............... Abs argument ............................ + */ + vandps 1152+__svml_ssinh_data_internal(%rip), %zmm5, %zmm4 + +/* + * ...............Check for overflow\underflow ............. + */ + vpternlogd $255, %zmm6, %zmm6, %zmm6 + vmovups 1280+__svml_ssinh_data_internal(%rip), %zmm7 + +/* + * ............... Load argument ............................ + * dM = x/log(2) + RShifter + */ + vmovups 960+__svml_ssinh_data_internal(%rip), %zmm11 + vmovups 1024+__svml_ssinh_data_internal(%rip), %zmm8 + vmovups 1088+__svml_ssinh_data_internal(%rip), %zmm10 + vmovups 1856+__svml_ssinh_data_internal(%rip), %zmm12 + vmovups 1728+__svml_ssinh_data_internal(%rip), %zmm0 + vmovups 1792+__svml_ssinh_data_internal(%rip), %zmm3 + +/* x^2 */ + vmovups 1536+__svml_ssinh_data_internal(%rip), %zmm2 + vxorps %zmm5, %zmm4, %zmm1 + vfmadd213ps {rn-sae}, %zmm7, %zmm1, %zmm11 + vpcmpd $2, 1408+__svml_ssinh_data_internal(%rip), %zmm1, %k1 + +/* + * ............... G1,G2 2^N,2^(-N) ........... + * iM now is an EXP(2^N) + */ + vpslld $23, %zmm11, %zmm13 + +/* + * ................... R ................................... + * sN = sM - RShifter + */ + vsubps {rn-sae}, %zmm7, %zmm11, %zmm9 + vpaddd %zmm13, %zmm12, %zmm14 + vpsubd %zmm13, %zmm12, %zmm15 + +/* sG1 = 2^(N-1)+2^(-N-1) */ + vaddps {rn-sae}, %zmm15, %zmm14, %zmm7 + vpandnd %zmm1, %zmm1, %zmm6{%k1} + +/* sR = sX - sN*Log2_hi */ + vfnmadd231ps {rn-sae}, %zmm8, %zmm9, %zmm1 + vptestmd %zmm6, %zmm6, %k0 + +/* sG2 = 2^(N-1)-2^(-N-1) */ + vsubps {rn-sae}, %zmm15, %zmm14, %zmm8 + +/* sR = (sX - sN*Log2_hi) - sN*Log2_lo */ + vfnmadd231ps {rn-sae}, %zmm10, %zmm9, %zmm1 + +/* + * ....sinh(r) = r*((a1=1)+r^2*(a3+r^2*(a5+{v1 r^2*a7})))) = r + r*(r^2*(a3+r^2*(a5+r^2*a7))) .... + * sSinh_r = (a3+r^2*a5) + */ + vmovups 1600+__svml_ssinh_data_internal(%rip), %zmm14 + kmovw %k0, %edx + +/* sR2 = sR^2 */ + vmulps {rn-sae}, %zmm1, %zmm1, %zmm6 + vfmadd231ps {rn-sae}, %zmm6, %zmm0, %zmm14 + +/* sSinh_r = r^2*(a3+r^2*a5) */ + vmulps {rn-sae}, %zmm6, %zmm14, %zmm0 + +/* sSinh_r = r + r*(r^2*(a3+r^2*a5)) */ + vfmadd213ps {rn-sae}, %zmm1, %zmm1, %zmm0 + +/* + * sinh(X) = sG2 + sG1*sinh(dR) + sG2*sR2*(a2+sR2*(a4+a6*sR2) + * sOut = (a4 +a6*sR2) + */ + vmovups 1664+__svml_ssinh_data_internal(%rip), %zmm1 + vfmadd231ps {rn-sae}, %zmm6, %zmm3, %zmm1 + +/* sOut = a2+sR2*(a4+a6*sR2) */ + vfmadd213ps {rn-sae}, %zmm2, %zmm6, %zmm1 + +/* sOut = sR2*(a2+sR2*(a4+a6*sR2) */ + vmulps {rn-sae}, %zmm6, %zmm1, %zmm2 + +/* sOut = sG2*sR2*(a2+sR2*(a4+a6*sR2) */ + vmulps {rn-sae}, %zmm8, %zmm2, %zmm3 + +/* sOut = sG1*sinh(dR)+sG2*sR2*(a2+sR2*(a4+a6*sR2) */ + vfmadd213ps {rn-sae}, %zmm3, %zmm0, %zmm7 + +/* sOut = sG2 + sG1*sinh(dR) + sG2*sR2*(a2+sR2*(a4+a6*sR2) */ + vaddps {rn-sae}, %zmm8, %zmm7, %zmm9 + +/* ................... Ret H ...................... */ + vorps %zmm9, %zmm4, %zmm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + 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 %zmm5, 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_ssinh_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_sinhf16,@function + .size __svml_sinhf16,.-__svml_sinhf16 +..LN__svml_sinhf16.0: + +.L_2__routine_start___svml_ssinh_cout_rare_internal_1: + + .align 16,0x90 + +__svml_ssinh_cout_rare_internal: + + + .cfi_startproc +..L53: + + movq %rsi, %r9 + movzwl 2(%rdi), %edx + xorl %eax, %eax + andl $32640, %edx + movss (%rdi), %xmm2 + cmpl $32640, %edx + je .LBL_2_17 + + + cvtss2sd %xmm2, %xmm2 + movsd %xmm2, -8(%rsp) + movzwl -2(%rsp), %edx + andl $32752, %edx + movsd %xmm2, -32(%rsp) + shrl $4, %edx + andb $127, -25(%rsp) + testl %edx, %edx + jle .LBL_2_16 + + + cmpl $969, %edx + jle .LBL_2_14 + + + movsd -32(%rsp), %xmm0 + movsd 1136+__ssinh_la_CoutTab(%rip), %xmm1 + comisd %xmm0, %xmm1 + jbe .LBL_2_13 + + + movsd 1184+__ssinh_la_CoutTab(%rip), %xmm1 + comisd %xmm0, %xmm1 + jbe .LBL_2_9 + + + comisd 1176+__ssinh_la_CoutTab(%rip), %xmm0 + jb .LBL_2_8 + + + movsd 1112+__ssinh_la_CoutTab(%rip), %xmm3 + lea __ssinh_la_CoutTab(%rip), %rcx + mulsd %xmm0, %xmm3 + movsd 1144+__ssinh_la_CoutTab(%rip), %xmm10 + movq 8+__ssinh_la_CoutTab(%rip), %r10 + movq %r10, %rsi + shrq $48, %rsi + addsd 1120+__ssinh_la_CoutTab(%rip), %xmm3 + movsd %xmm3, -40(%rsp) + andl $-32753, %esi + movsd -40(%rsp), %xmm13 + movl -40(%rsp), %r8d + movl %r8d, %r11d + shrl $6, %r11d + andl $63, %r8d + movq %r10, -16(%rsp) + subsd 1120+__ssinh_la_CoutTab(%rip), %xmm13 + mulsd %xmm13, %xmm10 + lea 1023(%r11), %edi + xorps .L_2il0floatpacket.98(%rip), %xmm13 + addl $1022, %r11d + mulsd 1152+__ssinh_la_CoutTab(%rip), %xmm13 + subsd %xmm10, %xmm0 + movaps %xmm0, %xmm5 + movaps %xmm0, %xmm11 + andl $2047, %r11d + lea (%r8,%r8), %edx + negl %edi + lea 1(%r8,%r8), %r8d + movsd (%rcx,%rdx,8), %xmm8 + negl %edx + shll $4, %r11d + addl $-4, %edi + orl %r11d, %esi + andl $2047, %edi + movw %si, -10(%rsp) + andl $-32753, %esi + shll $4, %edi + addsd %xmm13, %xmm5 + movsd %xmm5, -24(%rsp) + orl %edi, %esi + movsd -24(%rsp), %xmm7 + movsd 1128+__ssinh_la_CoutTab(%rip), %xmm5 + subsd %xmm7, %xmm11 + movsd %xmm11, -56(%rsp) + movsd -24(%rsp), %xmm4 + movsd -56(%rsp), %xmm12 + movsd (%rcx,%r8,8), %xmm6 + addsd %xmm12, %xmm4 + movsd %xmm4, -48(%rsp) + movsd -56(%rsp), %xmm9 + movsd -16(%rsp), %xmm4 + addsd %xmm9, %xmm13 + mulsd %xmm4, %xmm8 + mulsd %xmm4, %xmm6 + movsd %xmm13, -56(%rsp) + movaps %xmm8, %xmm9 + movsd -48(%rsp), %xmm15 + movw %si, -10(%rsp) + lea 128(%rdx), %esi + movsd -16(%rsp), %xmm14 + addl $129, %edx + subsd %xmm15, %xmm0 + movaps %xmm8, %xmm15 + movsd %xmm0, -48(%rsp) + movsd -56(%rsp), %xmm3 + movsd -48(%rsp), %xmm0 + addsd %xmm0, %xmm3 + movsd %xmm3, -48(%rsp) + movsd -24(%rsp), %xmm10 + mulsd %xmm10, %xmm5 + movaps %xmm10, %xmm2 + mulsd %xmm10, %xmm2 + movsd -48(%rsp), %xmm3 + movaps %xmm10, %xmm1 + movsd %xmm5, -24(%rsp) + movsd -24(%rsp), %xmm7 + subsd %xmm10, %xmm7 + movsd %xmm7, -56(%rsp) + movsd -24(%rsp), %xmm12 + movsd -56(%rsp), %xmm11 + subsd %xmm11, %xmm12 + movsd 1064+__ssinh_la_CoutTab(%rip), %xmm11 + mulsd %xmm2, %xmm11 + movsd %xmm12, -24(%rsp) + movsd 1072+__ssinh_la_CoutTab(%rip), %xmm12 + mulsd %xmm2, %xmm12 + addsd 1048+__ssinh_la_CoutTab(%rip), %xmm11 + mulsd %xmm2, %xmm11 + addsd 1056+__ssinh_la_CoutTab(%rip), %xmm12 + mulsd %xmm2, %xmm12 + mulsd %xmm10, %xmm11 + addsd 1040+__ssinh_la_CoutTab(%rip), %xmm12 + addsd %xmm11, %xmm10 + mulsd %xmm2, %xmm12 + movsd (%rcx,%rsi,8), %xmm2 + mulsd %xmm14, %xmm2 + movsd -24(%rsp), %xmm0 + subsd %xmm2, %xmm9 + subsd %xmm0, %xmm1 + movsd %xmm1, -56(%rsp) + movsd -24(%rsp), %xmm7 + movsd -56(%rsp), %xmm5 + movsd %xmm9, -24(%rsp) + movsd -24(%rsp), %xmm13 + movsd (%rcx,%rdx,8), %xmm1 + subsd %xmm13, %xmm15 + mulsd %xmm14, %xmm1 + subsd %xmm2, %xmm15 + movsd %xmm15, -56(%rsp) + movaps %xmm8, %xmm13 + movsd -24(%rsp), %xmm14 + addsd %xmm2, %xmm13 + movsd -56(%rsp), %xmm9 + movaps %xmm14, %xmm0 + movb -1(%rsp), %cl + addsd %xmm6, %xmm9 + addsd %xmm1, %xmm6 + subsd %xmm1, %xmm9 + andb $-128, %cl + addsd %xmm9, %xmm0 + movsd %xmm0, -24(%rsp) + movsd -24(%rsp), %xmm4 + subsd %xmm4, %xmm14 + addsd %xmm14, %xmm9 + movsd %xmm9, -56(%rsp) + movsd -24(%rsp), %xmm9 + movsd -56(%rsp), %xmm0 + movsd %xmm13, -24(%rsp) + movsd -24(%rsp), %xmm15 + subsd %xmm15, %xmm8 + addsd %xmm8, %xmm2 + movsd %xmm2, -56(%rsp) + movsd -24(%rsp), %xmm2 + movsd -56(%rsp), %xmm4 + addsd %xmm6, %xmm4 + movaps %xmm2, %xmm6 + addsd %xmm4, %xmm6 + movsd %xmm6, -24(%rsp) + movsd -24(%rsp), %xmm8 + movsd 1128+__ssinh_la_CoutTab(%rip), %xmm6 + subsd %xmm8, %xmm2 + addsd %xmm2, %xmm4 + movsd %xmm4, -56(%rsp) + movsd -24(%rsp), %xmm1 + mulsd %xmm1, %xmm6 + movsd -56(%rsp), %xmm2 + movsd %xmm6, -24(%rsp) + movaps %xmm1, %xmm6 + movsd -24(%rsp), %xmm14 + mulsd %xmm2, %xmm10 + subsd %xmm1, %xmm14 + movsd %xmm14, -56(%rsp) + movsd -24(%rsp), %xmm13 + movsd -56(%rsp), %xmm8 + subsd %xmm8, %xmm13 + movsd %xmm13, -24(%rsp) + movaps %xmm11, %xmm13 + movsd -24(%rsp), %xmm15 + mulsd %xmm1, %xmm13 + subsd %xmm15, %xmm6 + mulsd %xmm3, %xmm1 + mulsd %xmm2, %xmm3 + movaps %xmm12, %xmm15 + movaps %xmm13, %xmm4 + mulsd %xmm9, %xmm15 + mulsd %xmm0, %xmm12 + addsd %xmm15, %xmm4 + addsd %xmm0, %xmm12 + movsd %xmm6, -56(%rsp) + addsd %xmm1, %xmm12 + movsd -24(%rsp), %xmm8 + addsd %xmm3, %xmm12 + movsd -56(%rsp), %xmm6 + movsd %xmm4, -24(%rsp) + movsd -24(%rsp), %xmm14 + subsd %xmm14, %xmm13 + addsd %xmm13, %xmm15 + movsd %xmm15, -56(%rsp) + movaps %xmm7, %xmm15 + mulsd %xmm8, %xmm15 + mulsd %xmm5, %xmm8 + mulsd %xmm6, %xmm5 + mulsd %xmm6, %xmm7 + movsd -24(%rsp), %xmm14 + movaps %xmm14, %xmm13 + movsd -56(%rsp), %xmm4 + addsd %xmm15, %xmm13 + addsd %xmm8, %xmm4 + movsd %xmm13, -24(%rsp) + addsd %xmm5, %xmm4 + movsd -24(%rsp), %xmm13 + addsd %xmm7, %xmm4 + subsd %xmm13, %xmm15 + addsd %xmm4, %xmm12 + addsd %xmm15, %xmm14 + movsd %xmm14, -56(%rsp) + movaps %xmm9, %xmm15 + movsd -24(%rsp), %xmm13 + movsd -56(%rsp), %xmm14 + addsd %xmm13, %xmm15 + addsd %xmm14, %xmm12 + movsd %xmm15, -24(%rsp) + movsd -24(%rsp), %xmm15 + subsd %xmm15, %xmm9 + addsd %xmm9, %xmm13 + movsd %xmm13, -56(%rsp) + movsd -24(%rsp), %xmm13 + movsd -56(%rsp), %xmm9 + addsd %xmm9, %xmm12 + addsd %xmm12, %xmm13 + addsd %xmm13, %xmm10 + movsd %xmm10, -32(%rsp) + movb -25(%rsp), %dil + andb $127, %dil + orb %cl, %dil + movb %dil, -25(%rsp) + movsd -32(%rsp), %xmm10 + cvtsd2ss %xmm10, %xmm10 + movss %xmm10, (%r9) + ret + +.LBL_2_8: + + movaps %xmm0, %xmm2 + mulsd %xmm0, %xmm2 + movsd 1104+__ssinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm2, %xmm1 + movb -1(%rsp), %dl + andb $-128, %dl + addsd 1096+__ssinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm2, %xmm1 + addsd 1088+__ssinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm2, %xmm1 + addsd 1080+__ssinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm1, %xmm2 + mulsd %xmm0, %xmm2 + addsd %xmm2, %xmm0 + movsd %xmm0, -32(%rsp) + movb -25(%rsp), %cl + andb $127, %cl + orb %dl, %cl + movb %cl, -25(%rsp) + movsd -32(%rsp), %xmm0 + cvtsd2ss %xmm0, %xmm0 + movss %xmm0, (%r9) + ret + +.LBL_2_9: + + movsd 1112+__ssinh_la_CoutTab(%rip), %xmm1 + lea __ssinh_la_CoutTab(%rip), %r8 + mulsd %xmm0, %xmm1 + movsd 1144+__ssinh_la_CoutTab(%rip), %xmm2 + movsd 1152+__ssinh_la_CoutTab(%rip), %xmm3 + movq 8+__ssinh_la_CoutTab(%rip), %rdx + movq %rdx, -16(%rsp) + addsd 1120+__ssinh_la_CoutTab(%rip), %xmm1 + movsd %xmm1, -40(%rsp) + movsd -40(%rsp), %xmm4 + movsd 1072+__ssinh_la_CoutTab(%rip), %xmm1 + movl -40(%rsp), %edx + movl %edx, %esi + andl $63, %esi + subsd 1120+__ssinh_la_CoutTab(%rip), %xmm4 + mulsd %xmm4, %xmm2 + lea (%rsi,%rsi), %ecx + mulsd %xmm3, %xmm4 + subsd %xmm2, %xmm0 + movsd (%r8,%rcx,8), %xmm5 + lea 1(%rsi,%rsi), %edi + shrl $6, %edx + subsd %xmm4, %xmm0 + mulsd %xmm0, %xmm1 + addl $1022, %edx + andl $2047, %edx + addsd 1064+__ssinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + addsd 1056+__ssinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + addsd 1048+__ssinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + addsd 1040+__ssinh_la_CoutTab(%rip), %xmm1 + mulsd %xmm0, %xmm1 + mulsd %xmm0, %xmm1 + addsd %xmm0, %xmm1 + mulsd %xmm5, %xmm1 + addsd (%r8,%rdi,8), %xmm1 + addsd %xmm5, %xmm1 + cmpl $2046, %edx + ja .LBL_2_11 + + + movq 8+__ssinh_la_CoutTab(%rip), %rcx + shrq $48, %rcx + shll $4, %edx + andl $-32753, %ecx + orl %edx, %ecx + movw %cx, -10(%rsp) + movsd -16(%rsp), %xmm0 + mulsd %xmm1, %xmm0 + movsd %xmm0, -32(%rsp) + jmp .LBL_2_12 + +.LBL_2_11: + + decl %edx + andl $2047, %edx + movzwl -10(%rsp), %ecx + shll $4, %edx + andl $-32753, %ecx + orl %edx, %ecx + movw %cx, -10(%rsp) + movsd -16(%rsp), %xmm0 + mulsd %xmm1, %xmm0 + mulsd 1024+__ssinh_la_CoutTab(%rip), %xmm0 + movsd %xmm0, -32(%rsp) + +.LBL_2_12: + + movb -25(%rsp), %cl + movb -1(%rsp), %dl + andb $127, %cl + andb $-128, %dl + orb %dl, %cl + movb %cl, -25(%rsp) + movsd -32(%rsp), %xmm0 + cvtsd2ss %xmm0, %xmm0 + movss %xmm0, (%r9) + ret + +.LBL_2_13: + + movsd 1168+__ssinh_la_CoutTab(%rip), %xmm0 + movl $3, %eax + mulsd %xmm2, %xmm0 + cvtsd2ss %xmm0, %xmm0 + movss %xmm0, (%r9) + ret + +.LBL_2_14: + + movsd __ssinh_la_CoutTab(%rip), %xmm0 + addsd 1160+__ssinh_la_CoutTab(%rip), %xmm0 + mulsd %xmm2, %xmm0 + cvtsd2ss %xmm0, %xmm0 + movss %xmm0, (%r9) + + + ret + +.LBL_2_16: + + movsd 1160+__ssinh_la_CoutTab(%rip), %xmm0 + mulsd %xmm0, %xmm2 + movsd %xmm2, -24(%rsp) + pxor %xmm2, %xmm2 + cvtss2sd (%rdi), %xmm2 + movsd -24(%rsp), %xmm1 + movq 8+__ssinh_la_CoutTab(%rip), %rdx + addsd %xmm1, %xmm2 + cvtsd2ss %xmm2, %xmm2 + movq %rdx, -16(%rsp) + movss %xmm2, (%r9) + ret + +.LBL_2_17: + + addss %xmm2, %xmm2 + movss %xmm2, (%r9) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_ssinh_cout_rare_internal,@function + .size __svml_ssinh_cout_rare_internal,.-__svml_ssinh_cout_rare_internal +..LN__svml_ssinh_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_ssinh_data_internal: + .long 1056964608 + .long 1057148295 + .long 1057336003 + .long 1057527823 + .long 1057723842 + .long 1057924154 + .long 1058128851 + .long 1058338032 + .long 1058551792 + .long 1058770234 + .long 1058993458 + .long 1059221571 + .long 1059454679 + .long 1059692891 + .long 1059936319 + .long 1060185078 + .long 1060439283 + .long 1060699055 + .long 1060964516 + .long 1061235789 + .long 1061513002 + .long 1061796286 + .long 1062085772 + .long 1062381598 + .long 1062683901 + .long 1062992824 + .long 1063308511 + .long 1063631111 + .long 1063960775 + .long 1064297658 + .long 1064641917 + .long 1064993715 + .long 0 + .long 2999887785 + .long 852465809 + .long 3003046475 + .long 2984291233 + .long 3001644133 + .long 854021668 + .long 2997748242 + .long 849550193 + .long 2995541347 + .long 851518274 + .long 809701978 + .long 2997656926 + .long 2996185864 + .long 2980965110 + .long 3002882728 + .long 844097402 + .long 848217591 + .long 2999013352 + .long 2992006718 + .long 831170615 + .long 3002278818 + .long 833158180 + .long 3000769962 + .long 2991891850 + .long 2999994908 + .long 2979965785 + .long 2982419430 + .long 2982221534 + .long 2999469642 + .long 833168438 + .long 2987538264 + .long 1056964608 + .long 1056605107 + .long 1056253309 + .long 1055909050 + .long 1055572167 + .long 1055242503 + .long 1054919903 + .long 1054604216 + .long 1054295293 + .long 1053992990 + .long 1053697164 + .long 1053407678 + .long 1053124394 + .long 1052847181 + .long 1052575908 + .long 1052310447 + .long 1052050675 + .long 1051796470 + .long 1051547711 + .long 1051304283 + .long 1051066071 + .long 1050832963 + .long 1050604850 + .long 1050381626 + .long 1050163184 + .long 1049949424 + .long 1049740243 + .long 1049535546 + .long 1049335234 + .long 1049139215 + .long 1048947395 + .long 1048759687 + .long 0 + .long 2979149656 + .long 824779830 + .long 2991081034 + .long 2973832926 + .long 2974030822 + .long 2971577177 + .long 2991606300 + .long 2983503242 + .long 2992381354 + .long 824769572 + .long 2993890210 + .long 822782007 + .long 2983618110 + .long 2990624744 + .long 839828983 + .long 835708794 + .long 2994494120 + .long 2972576502 + .long 2987797256 + .long 2989268318 + .long 801313370 + .long 843129666 + .long 2987152739 + .long 841161585 + .long 2989359634 + .long 845633060 + .long 2993255525 + .long 2975902625 + .long 2994657867 + .long 844077201 + .long 2991499177 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542464 + .long 1220542465 + .long 1220542465 + .long 1220542465 + .long 1220542465 + .long 1220542465 + .long 1220542465 + .long 1220542465 + .long 1220542465 + .long 1220542465 + .long 1220542465 + .long 1220542465 + .long 1220542465 + .long 1220542465 + .long 1220542465 + .long 1220542465 + .long 1220542465 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .long 1118743631 + .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 1056964676 + .long 1056964676 + .long 1056964676 + .long 1056964676 + .long 1056964676 + .long 1056964676 + .long 1056964676 + .long 1056964676 + .long 1056964676 + .long 1056964676 + .long 1056964676 + .long 1056964676 + .long 1056964676 + .long 1056964676 + .long 1056964676 + .long 1056964676 + .long 1042983605 + .long 1042983605 + .long 1042983605 + .long 1042983605 + .long 1042983605 + .long 1042983605 + .long 1042983605 + .long 1042983605 + .long 1042983605 + .long 1042983605 + .long 1042983605 + .long 1042983605 + .long 1042983605 + .long 1042983605 + .long 1042983605 + .long 1042983605 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .long 1069066811 + .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 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .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 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 31 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .long 1118743630 + .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 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 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1042983511 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1026206322 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 1007228001 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .long 985049251 + .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 + .type __svml_ssinh_data_internal,@object + .size __svml_ssinh_data_internal,1920 + .align 32 +__ssinh_la_CoutTab: + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 1048019041 + .long 1072704666 + .long 1398474845 + .long 3161559171 + .long 3541402996 + .long 1072716208 + .long 2759177317 + .long 1015903202 + .long 410360776 + .long 1072727877 + .long 1269990655 + .long 1013024446 + .long 1828292879 + .long 1072739672 + .long 1255956747 + .long 1016636974 + .long 852742562 + .long 1072751596 + .long 667253587 + .long 1010842135 + .long 3490863953 + .long 1072763649 + .long 960797498 + .long 3163997456 + .long 2930322912 + .long 1072775834 + .long 2599499422 + .long 3163762623 + .long 1014845819 + .long 1072788152 + .long 3117910646 + .long 3162607681 + .long 3949972341 + .long 1072800603 + .long 2068408548 + .long 1015962444 + .long 828946858 + .long 1072813191 + .long 10642492 + .long 1016988014 + .long 2288159958 + .long 1072825915 + .long 2169144469 + .long 1015924597 + .long 1853186616 + .long 1072838778 + .long 3066496371 + .long 1016705150 + .long 1709341917 + .long 1072851781 + .long 2571168217 + .long 1015201075 + .long 4112506593 + .long 1072864925 + .long 2947355221 + .long 1015419624 + .long 2799960843 + .long 1072878213 + .long 1423655381 + .long 1016070727 + .long 171030293 + .long 1072891646 + .long 3526460132 + .long 1015477354 + .long 2992903935 + .long 1072905224 + .long 2218154406 + .long 1016276769 + .long 926591435 + .long 1072918951 + .long 3208833762 + .long 3163962090 + .long 887463927 + .long 1072932827 + .long 3596744163 + .long 3161842742 + .long 1276261410 + .long 1072946854 + .long 300981948 + .long 1015732745 + .long 569847338 + .long 1072961034 + .long 472945272 + .long 3160339305 + .long 1617004845 + .long 1072975368 + .long 82804944 + .long 1011391354 + .long 3049340112 + .long 1072989858 + .long 3062915824 + .long 1014219171 + .long 3577096743 + .long 1073004506 + .long 2951496418 + .long 1014842263 + .long 1990012071 + .long 1073019314 + .long 3529070563 + .long 3163861769 + .long 1453150082 + .long 1073034283 + .long 498154669 + .long 3162536638 + .long 917841882 + .long 1073049415 + .long 18715565 + .long 1016707884 + .long 3712504873 + .long 1073064711 + .long 88491949 + .long 1016476236 + .long 363667784 + .long 1073080175 + .long 813753950 + .long 1016833785 + .long 2956612997 + .long 1073095806 + .long 2118169751 + .long 3163784129 + .long 2186617381 + .long 1073111608 + .long 2270764084 + .long 3164321289 + .long 1719614413 + .long 1073127582 + .long 330458198 + .long 3164331316 + .long 1013258799 + .long 1073143730 + .long 1748797611 + .long 3161177658 + .long 3907805044 + .long 1073160053 + .long 2257091225 + .long 3162598983 + .long 1447192521 + .long 1073176555 + .long 1462857171 + .long 3163563097 + .long 1944781191 + .long 1073193236 + .long 3993278767 + .long 3162772855 + .long 919555682 + .long 1073210099 + .long 3121969534 + .long 1013996802 + .long 2571947539 + .long 1073227145 + .long 3558159064 + .long 3164425245 + .long 2604962541 + .long 1073244377 + .long 2614425274 + .long 3164587768 + .long 1110089947 + .long 1073261797 + .long 1451641639 + .long 1016523249 + .long 2568320822 + .long 1073279406 + .long 2732824428 + .long 1015401491 + .long 2966275557 + .long 1073297207 + .long 2176155324 + .long 3160891335 + .long 2682146384 + .long 1073315202 + .long 2082178513 + .long 3164411995 + .long 2191782032 + .long 1073333393 + .long 2960257726 + .long 1014791238 + .long 2069751141 + .long 1073351782 + .long 1562170675 + .long 3163773257 + .long 2990417245 + .long 1073370371 + .long 3683467745 + .long 3164417902 + .long 1434058175 + .long 1073389163 + .long 251133233 + .long 1016134345 + .long 2572866477 + .long 1073408159 + .long 878562433 + .long 1016570317 + .long 3092190715 + .long 1073427362 + .long 814012168 + .long 3160571998 + .long 4076559943 + .long 1073446774 + .long 2119478331 + .long 3161806927 + .long 2420883922 + .long 1073466398 + .long 2049810052 + .long 1015168464 + .long 3716502172 + .long 1073486235 + .long 2303740125 + .long 1015091301 + .long 777507147 + .long 1073506289 + .long 4282924205 + .long 1016236109 + .long 3706687593 + .long 1073526560 + .long 3521726939 + .long 1014301643 + .long 1242007932 + .long 1073547053 + .long 1132034716 + .long 3164388407 + .long 3707479175 + .long 1073567768 + .long 3613079303 + .long 1015213314 + .long 64696965 + .long 1073588710 + .long 1768797490 + .long 1016865536 + .long 863738719 + .long 1073609879 + .long 1326992220 + .long 3163661773 + .long 3884662774 + .long 1073631278 + .long 2158611599 + .long 1015258761 + .long 2728693978 + .long 1073652911 + .long 396109971 + .long 3164511267 + .long 3999357479 + .long 1073674779 + .long 2258941616 + .long 1016973300 + .long 1533953344 + .long 1073696886 + .long 769171851 + .long 1016714209 + .long 2174652632 + .long 1073719233 + .long 4087714590 + .long 1015498835 + .long 0 + .long 1073741824 + .long 0 + .long 0 + .long 0 + .long 1071644672 + .long 1431652600 + .long 1069897045 + .long 1431670732 + .long 1067799893 + .long 984555731 + .long 1065423122 + .long 472530941 + .long 1062650218 + .long 1431655765 + .long 1069897045 + .long 286331153 + .long 1065423121 + .long 436314138 + .long 1059717536 + .long 2773927732 + .long 1053236707 + .long 1697350398 + .long 1079448903 + .long 0 + .long 1127743488 + .long 33554432 + .long 1101004800 + .long 2684354560 + .long 1079401119 + .long 4277796864 + .long 1065758274 + .long 3164486458 + .long 1025308570 + .long 1 + .long 1048576 + .long 4294967295 + .long 2146435071 + .long 3671843104 + .long 1067178892 + .long 3875694624 + .long 1077247184 + .type __ssinh_la_CoutTab,@object + .size __ssinh_la_CoutTab,1192 + .space 8, 0x00 + .align 16 +.L_2il0floatpacket.98: + .long 0x00000000,0x80000000,0x00000000,0x00000000 + .type .L_2il0floatpacket.98,@object + .size .L_2il0floatpacket.98,16 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_tan_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_tan_d_la.s new file mode 100644 index 00000000..3f5df19d --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_tan_d_la.s @@ -0,0 +1,20219 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * + * ( optimized for throughput, with small table lookup, works when HW FMA is available ) + * + * Implementation reduces argument x to |R|64 multiplications + */ + vpbroadcastq .L_2il0floatpacket.22(%rip), %zmm6 + kxnorw %k0, %k0, %k3 + kxnorw %k0, %k0, %k2 + kmovw %k0, %edx + vpxord %zmm2, %zmm2, %zmm2 + vgatherdpd (%rax,%ymm3), %zmm2{%k3} + kxnorw %k0, %k0, %k3 + vpsrlq $32, %zmm2, %zmm5 + vpxord %zmm1, %zmm1, %zmm1 + vpxord %zmm8, %zmm8, %zmm8 + vgatherdpd 8(%rax,%ymm3), %zmm1{%k2} + vgatherdpd 16(%rax,%ymm3), %zmm8{%k3} + vpsrlq $32, %zmm1, %zmm0 + vpsrlq $32, %zmm8, %zmm13 + +/* + * Also get the significand as an integer + * NB: adding in the integer bit is wrong for denorms! + * To make this work for denorms we should do something slightly different + */ + vpandq .L_2il0floatpacket.20(%rip){1to8}, %zmm11, %zmm15 + vpaddq .L_2il0floatpacket.21(%rip){1to8}, %zmm15, %zmm14 + vpsrlq $32, %zmm14, %zmm7 + vpmullq %zmm0, %zmm7, %zmm3 + vpandq %zmm6, %zmm2, %zmm10 + vpandq %zmm6, %zmm1, %zmm12 + vpandq %zmm6, %zmm8, %zmm15 + vpandq %zmm6, %zmm14, %zmm14 + +/* Now do the big multiplication and carry propagation */ + vpmullq %zmm10, %zmm7, %zmm4 + vpmullq %zmm12, %zmm7, %zmm2 + vpmullq %zmm13, %zmm7, %zmm1 + vpmullq %zmm15, %zmm7, %zmm8 + vpmullq %zmm5, %zmm14, %zmm7 + vpmullq %zmm10, %zmm14, %zmm5 + vpmullq %zmm0, %zmm14, %zmm10 + vpmullq %zmm12, %zmm14, %zmm0 + vpmullq %zmm13, %zmm14, %zmm12 + vpsrlq $32, %zmm10, %zmm15 + vpsrlq $32, %zmm0, %zmm13 + vpsrlq $32, %zmm12, %zmm14 + vpsrlq $32, %zmm5, %zmm12 + vpsrlq $32, %zmm8, %zmm8 + vpaddq %zmm14, %zmm1, %zmm1 + vpaddq %zmm13, %zmm2, %zmm2 + vpaddq %zmm15, %zmm3, %zmm15 + vpaddq %zmm12, %zmm4, %zmm3 + vpandq %zmm6, %zmm0, %zmm13 + vpaddq %zmm1, %zmm13, %zmm4 + vpaddq %zmm4, %zmm8, %zmm14 + vpsrlq $32, %zmm14, %zmm0 + vpandq %zmm6, %zmm10, %zmm10 + vpaddq %zmm2, %zmm10, %zmm1 + vpaddq %zmm1, %zmm0, %zmm8 + +/* + * Now round at the 2^-9 bit position for reduction mod pi/2^8 + * instead of the original 2pi (but still with the same 2pi scaling). + * Use a shifter of 2^43 + 2^42. + * The N we get is our final version; it has an offset of + * 2^9 because of the implicit integer bit, and anyway for negative + * starting value it's a 2s complement thing. But we need to mask + * off the exponent part anyway so it's fine. + */ + vpbroadcastq .L_2il0floatpacket.25(%rip), %zmm1 + vpandq %zmm6, %zmm7, %zmm7 + vpaddq %zmm3, %zmm7, %zmm13 + vpsrlq $32, %zmm8, %zmm3 + vpandq %zmm6, %zmm5, %zmm5 + vpaddq %zmm15, %zmm5, %zmm2 + vpaddq %zmm2, %zmm3, %zmm15 + vpsrlq $32, %zmm15, %zmm12 + vpaddq %zmm13, %zmm12, %zmm5 + +/* Assemble reduced argument from the pieces */ + vpandq %zmm6, %zmm14, %zmm10 + vpandq %zmm6, %zmm15, %zmm7 + vpsllq $32, %zmm5, %zmm6 + vpsllq $32, %zmm8, %zmm5 + vpaddq %zmm7, %zmm6, %zmm4 + vpaddq %zmm10, %zmm5, %zmm10 + vpsrlq $12, %zmm4, %zmm6 + +/* + * We want to incorporate the original sign now too. + * Do it here for convenience in getting the right N value, + * though we could wait right to the end if we were prepared + * to modify the sign of N later too. + * So get the appropriate sign mask now (or sooner). + */ + vpandq .L_2il0floatpacket.23(%rip){1to8}, %zmm11, %zmm0 + vpandq .L_2il0floatpacket.28(%rip){1to8}, %zmm10, %zmm13 + vpsllq $28, %zmm13, %zmm14 + +/* + * Create floating-point high part, implicitly adding integer bit 1 + * Incorporate overall sign at this stage too. + */ + vpxorq .L_2il0floatpacket.24(%rip){1to8}, %zmm0, %zmm8 + vporq %zmm8, %zmm6, %zmm2 + vaddpd {rn-sae}, %zmm2, %zmm1, %zmm12 + vsubpd {rn-sae}, %zmm1, %zmm12, %zmm3 + vsubpd {rn-sae}, %zmm3, %zmm2, %zmm7 + +/* + * Create floating-point low and medium parts, respectively + * lo_23, ... lo_0, 0, ..., 0 + * hi_11, ... hi_0, lo_63, ..., lo_24 + * then subtract off the implicitly added integer bits, + * 2^-104 and 2^-52, respectively. + * Put the original sign into all of them at this stage. + */ + vpxorq .L_2il0floatpacket.27(%rip){1to8}, %zmm0, %zmm6 + vporq %zmm6, %zmm14, %zmm15 + vpandq .L_2il0floatpacket.30(%rip){1to8}, %zmm4, %zmm4 + vsubpd {rn-sae}, %zmm6, %zmm15, %zmm8 + +/* + * If the magnitude of the input is <= 2^-20, then + * just pass through the input, since no reduction will be needed and + * the main path will only work accurately if the reduced argument is + * about >= 2^-70 (which it is for all large pi multiples) + */ + vpbroadcastq .L_2il0floatpacket.34(%rip), %zmm14 + vandpd .L_2il0floatpacket.33(%rip){1to8}, %zmm11, %zmm15 + vpsrlq $24, %zmm10, %zmm6 + vcmppd $26, {sae}, %zmm14, %zmm15, %k2 + vcmppd $22, {sae}, %zmm14, %zmm15, %k3 + vpxorq .L_2il0floatpacket.29(%rip){1to8}, %zmm0, %zmm1 + vpsllq $40, %zmm4, %zmm0 + vporq %zmm6, %zmm0, %zmm0 + vporq %zmm1, %zmm0, %zmm4 + vsubpd {rn-sae}, %zmm1, %zmm4, %zmm2 + +/* Now add them up into 2 reasonably aligned pieces */ + vaddpd {rn-sae}, %zmm2, %zmm7, %zmm13 + vsubpd {rn-sae}, %zmm13, %zmm7, %zmm7 + vaddpd {rn-sae}, %zmm7, %zmm2, %zmm3 + vaddpd {rn-sae}, %zmm8, %zmm3, %zmm0 + vpbroadcastq .L_2il0floatpacket.32(%rip), %zmm8 + +/* Grab our final N value as an integer, appropriately masked mod 2^9 */ + vpandq .L_2il0floatpacket.26(%rip){1to8}, %zmm12, %zmm5 + +/* + * Now multiply those numbers all by 2 pi, reasonably accurately. + * (RHi + RLo) * (pi_lead + pi_trail) ~= + * RHi * pi_lead + (RHi * pi_trail + RLo * pi_lead) + */ + vpbroadcastq .L_2il0floatpacket.31(%rip), %zmm12 + +/* The output is _VRES_Z (high) + _VRES_E (low), and the integer part is _VRES_IND */ + vpmovqd %zmm5, %ymm4 + vmulpd {rn-sae}, %zmm12, %zmm13, %zmm6 + vmovaps %zmm12, %zmm10 + vfmsub213pd {rn-sae}, %zmm6, %zmm13, %zmm10 + vfmadd213pd {rn-sae}, %zmm10, %zmm8, %zmm13 + vpbroadcastq .L_2il0floatpacket.37(%rip), %zmm10 + vfmadd213pd {rn-sae}, %zmm13, %zmm12, %zmm0 + vpbroadcastq .L_2il0floatpacket.36(%rip), %zmm12 + vmovaps %zmm9, %zmm8 + vpandnq %zmm15, %zmm15, %zmm8{%k2} + vpandnq %zmm15, %zmm15, %zmm9{%k3} + vandpd %zmm11, %zmm9, %zmm9 + vandpd %zmm6, %zmm8, %zmm14 + vorpd %zmm14, %zmm9, %zmm6 + vandpd %zmm0, %zmm8, %zmm9 + vmovdqu .L_2il0floatpacket.35(%rip), %ymm0 + vpsrlq $32, %zmm6, %zmm5 + vpmovqd %zmm5, %ymm5 + vpsrld $31, %ymm5, %ymm1 + vpsubd %ymm1, %ymm0, %ymm2 + +/* + * ---------------------------------------------------------- + * End of large arguments path + * ---------------------------------------------------------- + * Merge results from main and large paths: + */ + vmovups (%rsp), %zmm1 + vpaddd %ymm2, %ymm4, %ymm3 + vpsrld $4, %ymm3, %ymm14 + vpslld $4, %ymm14, %ymm7 + vpmovzxdq %ymm14, %zmm1{%k1} + vpsubd %ymm7, %ymm4, %ymm8 + vcvtdq2pd %ymm8, %zmm15 + vmovups 64(%rsp), %zmm8 + vfmadd231pd {rn-sae}, %zmm15, %zmm10, %zmm9 + vaddpd {rn-sae}, %zmm6, %zmm9, %zmm13 + vfmadd213pd {rn-sae}, %zmm13, %zmm12, %zmm15 + vblendmpd %zmm15, %zmm8, %zmm8{%k1} + jmp .LBL_1_2 + .align 16,0x90 + + .cfi_endproc + + .type __svml_tan8,@function + .size __svml_tan8,.-__svml_tan8 +..LN__svml_tan8.0: + +.L_2__routine_start___svml_dtan_cout_rare_internal_1: + + .align 16,0x90 + +__svml_dtan_cout_rare_internal: + + + .cfi_startproc +..L65: + + xorl %eax, %eax + movzwl 6(%rdi), %ecx + movsd (%rdi), %xmm1 + andl $32752, %ecx + movb 7(%rdi), %dl + andb $127, %dl + movsd %xmm1, -8(%rsp) + movb %dl, -1(%rsp) + cmpl $32752, %ecx + je .LBL_2_3 + + + ret + +.LBL_2_3: + + cmpl $0, -8(%rsp) + jne .LBL_2_6 + + + cmpl $2146435072, -4(%rsp) + jne .LBL_2_6 + + + movsd __dtan_la_Tab(%rip), %xmm0 + movl $1, %eax + mulsd %xmm0, %xmm1 + movsd %xmm1, (%rsi) + ret + +.LBL_2_6: + + mulsd %xmm1, %xmm1 + movsd %xmm1, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_dtan_cout_rare_internal,@function + .size __svml_dtan_cout_rare_internal,.-__svml_dtan_cout_rare_internal +..LN__svml_dtan_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_dtan_data_internal: + .long 1841940611 + .long 1075076912 + .long 1841940611 + .long 1075076912 + .long 1841940611 + .long 1075076912 + .long 1841940611 + .long 1075076912 + .long 1841940611 + .long 1075076912 + .long 1841940611 + .long 1075076912 + .long 1841940611 + .long 1075076912 + .long 1841940611 + .long 1075076912 + .long 1413754136 + .long 1070146043 + .long 1413754136 + .long 1070146043 + .long 1413754136 + .long 1070146043 + .long 1413754136 + .long 1070146043 + .long 1413754136 + .long 1070146043 + .long 1413754136 + .long 1070146043 + .long 1413754136 + .long 1070146043 + .long 1413754136 + .long 1070146043 + .long 856972294 + .long 1013032486 + .long 856972294 + .long 1013032486 + .long 856972294 + .long 1013032486 + .long 856972294 + .long 1013032486 + .long 856972294 + .long 1013032486 + .long 856972294 + .long 1013032486 + .long 856972294 + .long 1013032486 + .long 856972294 + .long 1013032486 + .long 688016905 + .long 958143697 + .long 688016905 + .long 958143697 + .long 688016905 + .long 958143697 + .long 688016905 + .long 958143697 + .long 688016905 + .long 958143697 + .long 688016905 + .long 958143697 + .long 688016905 + .long 958143697 + .long 688016905 + .long 958143697 + .long 855638016 + .long 1013032486 + .long 855638016 + .long 1013032486 + .long 855638016 + .long 1013032486 + .long 855638016 + .long 1013032486 + .long 855638016 + .long 1013032486 + .long 855638016 + .long 1013032486 + .long 855638016 + .long 1013032486 + .long 855638016 + .long 1013032486 + .long 3773204808 + .long 979655686 + .long 3773204808 + .long 979655686 + .long 3773204808 + .long 979655686 + .long 3773204808 + .long 979655686 + .long 3773204808 + .long 979655686 + .long 3773204808 + .long 979655686 + .long 3773204808 + .long 979655686 + .long 3773204808 + .long 979655686 + .long 0 + .long 2147483648 + .long 3763679576 + .long 1070167541 + .long 2583490354 + .long 1071284857 + .long 716700048 + .long 1071997368 + .long 0 + .long 1072693248 + .long 3797578849 + .long 1073213976 + .long 859807206 + .long 1073958991 + .long 3795994481 + .long 1075059710 + .long 4294967295 + .long 4293918719 + .long 3795994481 + .long 3222543358 + .long 859807206 + .long 3221442639 + .long 3797578849 + .long 3220697624 + .long 0 + .long 3220176896 + .long 716700048 + .long 3219481016 + .long 2583490354 + .long 3218768505 + .long 3763679576 + .long 3217651189 + .long 0 + .long 2147483648 + .long 1732516166 + .long 1009710547 + .long 2973134505 + .long 1014008623 + .long 561165941 + .long 1015523525 + .long 0 + .long 0 + .long 1767150223 + .long 1016338938 + .long 4129738197 + .long 1017254245 + .long 4275273486 + .long 1015088902 + .long 0 + .long 4238344192 + .long 4275273486 + .long 3162572550 + .long 4129738197 + .long 3164737893 + .long 1767150223 + .long 3163822586 + .long 0 + .long 0 + .long 561165941 + .long 3163007173 + .long 2973134505 + .long 3161492271 + .long 1732516166 + .long 3157194195 + .long 1431655900 + .long 1070945621 + .long 1431655900 + .long 1070945621 + .long 1431655900 + .long 1070945621 + .long 1431655900 + .long 1070945621 + .long 1431655900 + .long 1070945621 + .long 1431655900 + .long 1070945621 + .long 1431655900 + .long 1070945621 + .long 1431655900 + .long 1070945621 + .long 285935618 + .long 1069617425 + .long 285935618 + .long 1069617425 + .long 285935618 + .long 1069617425 + .long 285935618 + .long 1069617425 + .long 285935618 + .long 1069617425 + .long 285935618 + .long 1069617425 + .long 285935618 + .long 1069617425 + .long 285935618 + .long 1069617425 + .long 1218258378 + .long 1068212666 + .long 1218258378 + .long 1068212666 + .long 1218258378 + .long 1068212666 + .long 1218258378 + .long 1068212666 + .long 1218258378 + .long 1068212666 + .long 1218258378 + .long 1068212666 + .long 1218258378 + .long 1068212666 + .long 1218258378 + .long 1068212666 + .long 1716452265 + .long 1066820779 + .long 1716452265 + .long 1066820779 + .long 1716452265 + .long 1066820779 + .long 1716452265 + .long 1066820779 + .long 1716452265 + .long 1066820779 + .long 1716452265 + .long 1066820779 + .long 1716452265 + .long 1066820779 + .long 1716452265 + .long 1066820779 + .long 3351902813 + .long 1065508044 + .long 3351902813 + .long 1065508044 + .long 3351902813 + .long 1065508044 + .long 3351902813 + .long 1065508044 + .long 3351902813 + .long 1065508044 + .long 3351902813 + .long 1065508044 + .long 3351902813 + .long 1065508044 + .long 3351902813 + .long 1065508044 + .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 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 2146435072 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 0 + .long 1127743488 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 1413480448 + .long 1065951739 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 442499072 + .long 1029747809 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 771977331 + .long 993204618 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 511 + .long 0 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1841940611 + .long 1079271216 + .long 1413754136 + .long 1073291771 + .long 856972295 + .long 1016178214 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1431655769 + .long 1070945621 + .long 0 + .long 0 + .long 285114973 + .long 1069617425 + .long 0 + .long 0 + .long 3223786787 + .long 1068212718 + .long 1570481342 + .long 1073278903 + .long 2595802427 + .long 1014369127 + .long 0 + .long 0 + .long 75380366 + .long 1065951822 + .long 2999349512 + .long 3155830414 + .long 0 + .long 1072693248 + .long 2911696896 + .long 1059306942 + .long 451505506 + .long 1065952070 + .long 3089290734 + .long 1070946463 + .long 3705470160 + .long 1065403174 + .long 2568117119 + .long 1069618857 + .long 643394266 + .long 1064501452 + .long 501385640 + .long 1068202863 + .long 1727208548 + .long 1073266035 + .long 2531251621 + .long 3162145225 + .long 0 + .long 0 + .long 612012528 + .long 1067000646 + .long 549540416 + .long 3153143513 + .long 0 + .long 1072693248 + .long 2064191488 + .long 1061404484 + .long 4042886527 + .long 1067001638 + .long 149923164 + .long 1070948993 + .long 104448276 + .long 1066453158 + .long 2663431480 + .long 1069623160 + .long 4100741303 + .long 1065552806 + .long 3253087105 + .long 1068220130 + .long 1883935754 + .long 1073253167 + .long 2988318241 + .long 3163734974 + .long 0 + .long 0 + .long 3919601072 + .long 1067637674 + .long 2391050108 + .long 3158536696 + .long 0 + .long 1072693248 + .long 1803946752 + .long 1062615560 + .long 2247013512 + .long 1067639351 + .long 3277043521 + .long 1070953215 + .long 578207594 + .long 1067006653 + .long 1619551617 + .long 1069630354 + .long 2647612950 + .long 1066183733 + .long 2691224773 + .long 1068193529 + .long 2040662960 + .long 1073240299 + .long 4270081753 + .long 3164530442 + .long 0 + .long 0 + .long 2319126882 + .long 1068050215 + .long 2052183488 + .long 1006305725 + .long 0 + .long 1072693248 + .long 2962101888 + .long 1063503197 + .long 3966050657 + .long 1068054193 + .long 3178024141 + .long 1070959142 + .long 1146831000 + .long 1067507381 + .long 1630003540 + .long 1069640468 + .long 2204487828 + .long 1066612393 + .long 783402153 + .long 1068243248 + .long 2197390165 + .long 1073227431 + .long 3038089327 + .long 1016395176 + .long 0 + .long 0 + .long 3930011523 + .long 1068463253 + .long 3574549514 + .long 3158343440 + .long 0 + .long 1072693248 + .long 930814464 + .long 1064233867 + .long 3218126771 + .long 1068471034 + .long 873740287 + .long 1070966789 + .long 1580060562 + .long 1067789097 + .long 1505280051 + .long 1069653548 + .long 2221338604 + .long 1066937592 + .long 2641117162 + .long 1068312400 + .long 2354117371 + .long 1073214563 + .long 3512651629 + .long 1015129272 + .long 0 + .long 0 + .long 3439278129 + .long 1068687929 + .long 1073016494 + .long 1012431341 + .long 0 + .long 1072693248 + .long 2934847296 + .long 1064716672 + .long 2625704508 + .long 1068694663 + .long 3692939630 + .long 1070976174 + .long 3072165553 + .long 1068074393 + .long 223733198 + .long 1069669653 + .long 1158528257 + .long 1067269817 + .long 3197805108 + .long 1068357327 + .long 2510844577 + .long 1073201695 + .long 498468876 + .long 3161098111 + .long 0 + .long 0 + .long 1972895212 + .long 1068895135 + .long 3208334872 + .long 1010638399 + .long 0 + .long 1072693248 + .long 4107853760 + .long 1065246718 + .long 2229347510 + .long 1068905849 + .long 4172638464 + .long 1070987323 + .long 212469442 + .long 1068364021 + .long 1989165656 + .long 1069688852 + .long 4131454312 + .long 1067530480 + .long 3453538591 + .long 1068469531 + .long 2667571783 + .long 1073188827 + .long 1614402419 + .long 3163482232 + .long 0 + .long 0 + .long 2354785698 + .long 1069102779 + .long 959196066 + .long 1012432163 + .long 0 + .long 1072693248 + .long 2828230112 + .long 1065606626 + .long 3693284264 + .long 1069118808 + .long 1996210616 + .long 1071000265 + .long 3053541878 + .long 1068578846 + .long 1133334569 + .long 1069711236 + .long 977677893 + .long 1067705915 + .long 347264115 + .long 1068436198 + .long 2824298989 + .long 1073175959 + .long 2088964722 + .long 3164313480 + .long 0 + .long 0 + .long 931121154 + .long 1069310926 + .long 1121692745 + .long 3159637885 + .long 0 + .long 1072693248 + .long 709357472 + .long 1065955296 + .long 29972165 + .long 1069333808 + .long 254360647 + .long 1071015033 + .long 3732687627 + .long 1068729157 + .long 3224370683 + .long 1069736900 + .long 202592779 + .long 1067887231 + .long 1420423314 + .long 1068491719 + .long 2981026194 + .long 1073163091 + .long 924239062 + .long 1016612139 + .long 0 + .long 0 + .long 982366697 + .long 1069519640 + .long 1160213218 + .long 3158385836 + .long 0 + .long 1072693248 + .long 404678272 + .long 1066346403 + .long 1419607756 + .long 1069549319 + .long 1800406832 + .long 1071031665 + .long 3144361055 + .long 1068882825 + .long 1744148040 + .long 1069765960 + .long 3211597674 + .long 1068075289 + .long 404952187 + .long 1068609434 + .long 3137753400 + .long 1073150223 + .long 3579918397 + .long 1015563197 + .long 0 + .long 0 + .long 2242453104 + .long 1069638253 + .long 1143545012 + .long 3159361608 + .long 0 + .long 1072693248 + .long 1016752608 + .long 1066591110 + .long 1270001991 + .long 1069659269 + .long 1410785275 + .long 1071050206 + .long 1103929722 + .long 1069040275 + .long 3268015215 + .long 1069798554 + .long 957665168 + .long 1068270980 + .long 1067662813 + .long 1068610012 + .long 3294480606 + .long 1073137355 + .long 1489607747 + .long 3151418907 + .long 0 + .long 0 + .long 1940260416 + .long 1069743276 + .long 4144715194 + .long 1012060053 + .long 0 + .long 1072693248 + .long 1135818128 + .long 1066829850 + .long 867512158 + .long 1069770656 + .long 3821819258 + .long 1071070704 + .long 2890864845 + .long 1069201948 + .long 918459419 + .long 1069834828 + .long 797472495 + .long 1068475275 + .long 4093958433 + .long 1068635569 + .long 3451207812 + .long 1073124487 + .long 1547135652 + .long 3163048307 + .long 0 + .long 0 + .long 1959743063 + .long 1069848682 + .long 607727474 + .long 1013558026 + .long 0 + .long 1072693248 + .long 225834432 + .long 1067090614 + .long 732340398 + .long 1069883626 + .long 3221152670 + .long 1071093215 + .long 2810588359 + .long 1069368307 + .long 612200458 + .long 1069874948 + .long 645427023 + .long 1068594071 + .long 1966294363 + .long 1068694214 + .long 3607935018 + .long 1073111619 + .long 4202814986 + .long 3164096517 + .long 0 + .long 0 + .long 2429422902 + .long 1069954505 + .long 3297515896 + .long 3160006592 + .long 0 + .long 1072693248 + .long 528565440 + .long 1067373727 + .long 2395999282 + .long 1069998329 + .long 1512953454 + .long 1071117799 + .long 2702142222 + .long 1069539835 + .long 3515899576 + .long 1069919100 + .long 2767905785 + .long 1068706391 + .long 3127207959 + .long 1068808800 + .long 3764662223 + .long 1073098751 + .long 3105356094 + .long 1016829101 + .long 0 + .long 0 + .long 1425758568 + .long 1070060780 + .long 1224256500 + .long 1011856982 + .long 0 + .long 1072693248 + .long 2086713664 + .long 1067564956 + .long 1688303979 + .long 1070114921 + .long 938619730 + .long 1071144522 + .long 526120622 + .long 1069632280 + .long 3819295667 + .long 1069967496 + .long 2059466202 + .long 1068824653 + .long 4035080204 + .long 1068903334 + .long 3921389429 + .long 1073085883 + .long 3647185164 + .long 1015997122 + .long 0 + .long 0 + .long 3763679576 + .long 1070167541 + .long 448465424 + .long 1009708707 + .long 0 + .long 1072693248 + .long 64931152 + .long 1067729411 + .long 3593250320 + .long 1070233561 + .long 1127364104 + .long 1071173457 + .long 21320967 + .long 1069723988 + .long 4036384112 + .long 1070020367 + .long 3394693835 + .long 1068949482 + .long 4171096556 + .long 1068939101 + .long 4078116635 + .long 1073073015 + .long 39665264 + .long 1013608617 + .long 0 + .long 0 + .long 4023957346 + .long 1070274825 + .long 2652053984 + .long 1012417284 + .long 0 + .long 1072693248 + .long 1548193280 + .long 1067905620 + .long 2849460080 + .long 1070354416 + .long 586099284 + .long 1071204684 + .long 2426038050 + .long 1069819083 + .long 1209882932 + .long 1070077962 + .long 204929667 + .long 1069081561 + .long 2951798640 + .long 1069077118 + .long 4234843841 + .long 1073060147 + .long 1479868884 + .long 3162614382 + .long 0 + .long 0 + .long 3947580658 + .long 1070382668 + .long 4153467944 + .long 1013228820 + .long 0 + .long 1072693248 + .long 1306970432 + .long 1068093810 + .long 3320658510 + .long 1070477657 + .long 2638377394 + .long 1071238289 + .long 1218095092 + .long 1069917865 + .long 506153462 + .long 1070140566 + .long 2096772755 + .long 1069221614 + .long 2058474785 + .long 1069148484 + .long 96603751 + .long 1073047280 + .long 2021697954 + .long 3163879555 + .long 0 + .long 0 + .long 4068253482 + .long 1070491107 + .long 3098804354 + .long 1013932712 + .long 0 + .long 1072693248 + .long 3555466384 + .long 1068294223 + .long 3714292293 + .long 1070599779 + .long 58004546 + .long 1071274368 + .long 2889916307 + .long 1070020649 + .long 2725223781 + .long 1070208483 + .long 1960889140 + .long 1069370437 + .long 2173066945 + .long 1069259864 + .long 253330956 + .long 1073034412 + .long 991505830 + .long 1017046064 + .long 0 + .long 0 + .long 1971725998 + .long 1070598138 + .long 2628060598 + .long 1013294571 + .long 0 + .long 1072693248 + .long 3850616508 + .long 1068503032 + .long 715485429 + .long 1070664058 + .long 2831870887 + .long 1071313021 + .long 276112813 + .long 1070127773 + .long 4071473622 + .long 1070282053 + .long 3678820497 + .long 1069528889 + .long 928174949 + .long 1069392578 + .long 410058162 + .long 1073021544 + .long 4004709614 + .long 1016250595 + .long 0 + .long 0 + .long 1197423420 + .long 1070653011 + .long 176404688 + .long 1013428940 + .long 0 + .long 1072693248 + .long 3614211808 + .long 1068615863 + .long 2638984897 + .long 1070729808 + .long 1695604536 + .long 1071354361 + .long 2372043566 + .long 1070239593 + .long 136909610 + .long 1070361652 + .long 3640039434 + .long 1069622710 + .long 4088329288 + .long 1069449448 + .long 566785368 + .long 1073008676 + .long 2301849815 + .long 1014658654 + .long 0 + .long 0 + .long 1026922473 + .long 1070708240 + .long 4275552176 + .long 1013759157 + .long 0 + .long 1072693248 + .long 865263972 + .long 1068735226 + .long 1189261043 + .long 1070797132 + .long 602895285 + .long 1071398507 + .long 457371263 + .long 1070356493 + .long 1846858239 + .long 1070447677 + .long 3060498109 + .long 1069713009 + .long 4267979072 + .long 1069596604 + .long 723512574 + .long 1072995808 + .long 2825204233 + .long 3161855698 + .long 0 + .long 0 + .long 2664093517 + .long 1070763845 + .long 3574550848 + .long 1009790086 + .long 0 + .long 1072693248 + .long 2465054196 + .long 1068861279 + .long 3495559184 + .long 1070866134 + .long 2180799467 + .long 1071445588 + .long 3760731789 + .long 1070478879 + .long 3108073741 + .long 1070540584 + .long 1955989611 + .long 1069809654 + .long 166740423 + .long 1069654305 + .long 880239780 + .long 1072982940 + .long 4135548218 + .long 3163662592 + .long 0 + .long 0 + .long 895247324 + .long 1070819848 + .long 3063999364 + .long 3161289029 + .long 0 + .long 1072693248 + .long 729983844 + .long 1068994194 + .long 3631919317 + .long 1070936926 + .long 2031343772 + .long 1071495745 + .long 1505593195 + .long 1070601643 + .long 519428998 + .long 1070618477 + .long 3710689648 + .long 1069913254 + .long 3156018952 + .long 1069741343 + .long 1036966986 + .long 1072970072 + .long 1122344434 + .long 3164458061 + .long 0 + .long 0 + .long 1412148370 + .long 1070876269 + .long 2689479793 + .long 3161477235 + .long 0 + .long 1072693248 + .long 1375255072 + .long 1069134151 + .long 1493266594 + .long 1071009624 + .long 487968719 + .long 1071549129 + .long 4010395236 + .long 1070668994 + .long 2875570533 + .long 1070672565 + .long 2596803931 + .long 1070024476 + .long 2843491938 + .long 1069843051 + .long 1193694191 + .long 1072957204 + .long 1890859349 + .long 1016467558 + .long 0 + .long 0 + .long 3782220567 + .long 1070933130 + .long 2488122455 + .long 1014753484 + .long 0 + .long 1072693248 + .long 91372748 + .long 1069281344 + .long 318776714 + .long 1071084349 + .long 1791786485 + .long 1071605902 + .long 245863368 + .long 1070739794 + .long 3306699314 + .long 1070730899 + .long 492155886 + .long 1070144051 + .long 504705110 + .long 1069961586 + .long 1350421397 + .long 1072944336 + .long 1218191675 + .long 1015274036 + .long 0 + .long 0 + .long 1606100959 + .long 1070990455 + .long 3385800912 + .long 1013630535 + .long 0 + .long 1072693248 + .long 2255302008 + .long 1069435977 + .long 54085333 + .long 1071161229 + .long 2504974906 + .long 1071655456 + .long 4169947836 + .long 1070814310 + .long 2891827400 + .long 1070793803 + .long 1030744926 + .long 1070272780 + .long 2378131433 + .long 1070036506 + .long 1507148603 + .long 1072931468 + .long 1086374101 + .long 3160519057 + .long 0 + .long 0 + .long 4158096969 + .long 1071048265 + .long 3224523546 + .long 1013419306 + .long 0 + .long 1072693248 + .long 4240313622 + .long 1069572894 + .long 3745046477 + .long 1071240398 + .long 1955120038 + .long 1071687503 + .long 2661530988 + .long 1070892836 + .long 2615081511 + .long 1070861626 + .long 3172686013 + .long 1070411548 + .long 3468537064 + .long 1070173373 + .long 1663875809 + .long 1072918600 + .long 3908862373 + .long 3163337468 + .long 0 + .long 0 + .long 2200768388 + .long 1071106586 + .long 302579070 + .long 3162432935 + .long 0 + .long 1072693248 + .long 2338248308 + .long 1069657986 + .long 2617403810 + .long 1071322000 + .long 60078074 + .long 1071721530 + .long 2753634668 + .long 1070975684 + .long 626020947 + .long 1070934758 + .long 25846105 + .long 1070561329 + .long 1123371528 + .long 1070307499 + .long 1820603015 + .long 1072905732 + .long 3236194699 + .long 3164241098 + .long 0 + .long 0 + .long 2528366626 + .long 1071165441 + .long 3808697588 + .long 3160880158 + .long 0 + .long 1072693248 + .long 1938261590 + .long 1069747146 + .long 4282399603 + .long 1071406183 + .long 1922568281 + .long 1071757646 + .long 2428166646 + .long 1071063193 + .long 717464826 + .long 1071013623 + .long 2205664064 + .long 1070659645 + .long 1525962144 + .long 1070438229 + .long 1977330220 + .long 1072892864 + .long 4071976381 + .long 1016684520 + .long 0 + .long 0 + .long 2390846448 + .long 1071224856 + .long 3510510824 + .long 1014225707 + .long 0 + .long 1072693248 + .long 1208409702 + .long 1069840505 + .long 1006199412 + .long 1071493107 + .long 2504246873 + .long 1071795971 + .long 1040653613 + .long 1071155729 + .long 1713268218 + .long 1071098686 + .long 462276291 + .long 1070747214 + .long 4239134769 + .long 1070603989 + .long 2134057426 + .long 1072879996 + .long 1285458442 + .long 1015707961 + .long 0 + .long 0 + .long 2583490354 + .long 1071284857 + .long 27154665 + .long 1014008337 + .long 0 + .long 1072693248 + .long 2550940470 + .long 1069938201 + .long 2616040293 + .long 1071582937 + .long 2529278955 + .long 1071836633 + .long 2244405849 + .long 1071253687 + .long 2064814125 + .long 1071190460 + .long 1527853242 + .long 1070842074 + .long 354304617 + .long 1070708112 + .long 2290784632 + .long 1072867128 + .long 2660353234 + .long 1011979525 + .long 0 + .long 0 + .long 3368427099 + .long 1071345471 + .long 2187847358 + .long 3161070788 + .long 0 + .long 1072693248 + .long 1708021028 + .long 1070040382 + .long 459972195 + .long 1071660262 + .long 3210514347 + .long 1071879770 + .long 955408873 + .long 1071357497 + .long 1911386086 + .long 1071289511 + .long 3563284025 + .long 1070944951 + .long 547392146 + .long 1070790031 + .long 2447511838 + .long 1072854260 + .long 3841595606 + .long 3162903543 + .long 0 + .long 0 + .long 408840118 + .long 1071406727 + .long 4048150272 + .long 1011870625 + .long 0 + .long 1072693248 + .long 2794370512 + .long 1070147203 + .long 1550993351 + .long 1071708355 + .long 1305093678 + .long 1071925532 + .long 1748211158 + .long 1071467623 + .long 3244212116 + .long 1071396455 + .long 2145665988 + .long 1071056651 + .long 1098394636 + .long 1070891096 + .long 2604239044 + .long 1072841392 + .long 1055077667 + .long 3164024136 + .long 0 + .long 0 + .long 2191706112 + .long 1071468652 + .long 333457838 + .long 1013847700 + .long 0 + .long 1072693248 + .long 3435408456 + .long 1070258830 + .long 487319719 + .long 1071758184 + .long 1713711059 + .long 1071974079 + .long 130753286 + .long 1071584571 + .long 909725129 + .long 1071511974 + .long 2762442355 + .long 1071178067 + .long 932699057 + .long 1071027067 + .long 2760966249 + .long 1072828524 + .long 1958126117 + .long 1016901483 + .long 0 + .long 0 + .long 220675706 + .long 1071531278 + .long 3158460941 + .long 1014240139 + .long 0 + .long 1072693248 + .long 1565030890 + .long 1070375439 + .long 335263687 + .long 1071809854 + .long 419816567 + .long 1072025586 + .long 2098048102 + .long 1071676780 + .long 257229334 + .long 1071636821 + .long 3464457175 + .long 1071310192 + .long 2745951745 + .long 1071158056 + .long 2917693455 + .long 1072815656 + .long 676362605 + .long 1016106015 + .long 0 + .long 0 + .long 3649427950 + .long 1071594634 + .long 4113913432 + .long 1011178545 + .long 0 + .long 1072693248 + .long 2424145432 + .long 1070497215 + .long 2715404890 + .long 1071863477 + .long 2238283673 + .long 1072080240 + .long 1186867211 + .long 1071742923 + .long 660318792 + .long 1071708248 + .long 2091427899 + .long 1071454132 + .long 2591062578 + .long 1071291190 + .long 3074420661 + .long 1072802788 + .long 1873363667 + .long 1014080331 + .long 0 + .long 0 + .long 2606398711 + .long 1071651713 + .long 2533078623 + .long 1015070425 + .long 0 + .long 1072693248 + .long 2151361100 + .long 1070610226 + .long 1532348096 + .long 1071919174 + .long 408604530 + .long 1072138246 + .long 1039538740 + .long 1071813375 + .long 1234598850 + .long 1071781284 + .long 692507560 + .long 1071611119 + .long 4090315823 + .long 1071451983 + .long 3231147867 + .long 1072789920 + .long 3253690381 + .long 3162434021 + .long 0 + .long 0 + .long 1505561933 + .long 1071684172 + .long 2813788960 + .long 3158646164 + .long 0 + .long 1072693248 + .long 2997217365 + .long 1070676584 + .long 2681788575 + .long 1071977071 + .long 3989126937 + .long 1072199822 + .long 1049115510 + .long 1071888491 + .long 511642057 + .long 1071860360 + .long 4034728042 + .long 1071713598 + .long 1788921063 + .long 1071639550 + .long 3387875073 + .long 1072777052 + .long 3168927931 + .long 3163807173 + .long 0 + .long 0 + .long 419968236 + .long 1071717047 + .long 131821922 + .long 3163445114 + .long 0 + .long 1072693248 + .long 2960267235 + .long 1070745841 + .long 1037049094 + .long 1072037305 + .long 1447436626 + .long 1072265209 + .long 3197232138 + .long 1071968658 + .long 4004685083 + .long 1071946034 + .long 1412816411 + .long 1071807280 + .long 3184767140 + .long 1071740610 + .long 3544602278 + .long 1072764184 + .long 4139243149 + .long 1017118445 + .long 0 + .long 0 + .long 4270735453 + .long 1071750355 + .long 3565353881 + .long 3162826177 + .long 0 + .long 1072693248 + .long 2915760230 + .long 1070818115 + .long 638580392 + .long 1072100020 + .long 2252948193 + .long 1072334663 + .long 1194731830 + .long 1072054301 + .long 1353002943 + .long 1072038927 + .long 422364777 + .long 1071909798 + .long 3669605864 + .long 1071842023 + .long 3701329484 + .long 1072751316 + .long 2857479637 + .long 1016322977 + .long 0 + .long 0 + .long 4010047525 + .long 1071784117 + .long 3339961616 + .long 1012589046 + .long 0 + .long 1072693248 + .long 966450668 + .long 1070893532 + .long 803989702 + .long 1072165371 + .long 1934453966 + .long 1072408465 + .long 1455077850 + .long 1072145882 + .long 2709264343 + .long 1072139721 + .long 1918064545 + .long 1072022114 + .long 1476733491 + .long 1071960574 + .long 3858056690 + .long 1072738448 + .long 2007897202 + .long 1014948181 + .long 0 + .long 0 + .long 2591355529 + .long 1071818352 + .long 2351346752 + .long 1014424505 + .long 0 + .long 1072693248 + .long 3206845590 + .long 1070972224 + .long 4023349050 + .long 1072233523 + .long 3838822434 + .long 1072486918 + .long 3122427157 + .long 1072243909 + .long 2261703628 + .long 1072249178 + .long 1764870085 + .long 1072145307 + .long 3201774398 + .long 1072093301 + .long 4014783896 + .long 1072725580 + .long 3119156846 + .long 3161566171 + .long 0 + .long 0 + .long 2298773501 + .long 1071853080 + .long 4027796943 + .long 3162574088 + .long 0 + .long 1072693248 + .long 312748411 + .long 1071054335 + .long 2723913091 + .long 1072304655 + .long 3207063211 + .long 1072570353 + .long 1845780128 + .long 1072348940 + .long 752659336 + .long 1072368142 + .long 1097207438 + .long 1072280589 + .long 407427378 + .long 1072246732 + .long 4171511102 + .long 1072712712 + .long 987810900 + .long 3163590211 + .long 0 + .long 0 + .long 681498355 + .long 1071888323 + .long 3542613740 + .long 3163311347 + .long 0 + .long 1072693248 + .long 168222332 + .long 1071140014 + .long 776736583 + .long 1072378956 + .long 2405401100 + .long 1072659128 + .long 430546584 + .long 1072461586 + .long 2974083787 + .long 1072497552 + .long 849442051 + .long 1072429322 + .long 2727422945 + .long 1072409680 + .long 33271012 + .long 1072699845 + .long 2269574412 + .long 3164385679 + .long 0 + .long 0 + .long 3684492763 + .long 1071924102 + .long 2905877726 + .long 3163193209 + .long 0 + .long 1072693248 + .long 585640690 + .long 1071229422 + .long 1068301595 + .long 1072456629 + .long 2953900489 + .long 1072723440 + .long 950237889 + .long 1072582519 + .long 109735426 + .long 1072638455 + .long 792610960 + .long 1072593041 + .long 2904161704 + .long 1072594405 + .long 379996435 + .long 1072680706 + .long 2807708551 + .long 3162614199 + .long 0 + .long 0 + .long 142288477 + .long 1071960443 + .long 1256321232 + .long 3162016428 + .long 0 + .long 1072693248 + .long 925074332 + .long 1071322730 + .long 2134728327 + .long 1072537893 + .long 1886408555 + .long 1072773770 + .long 101893267 + .long 1072702864 + .long 2020085224 + .long 1072742631 + .long 2955803851 + .long 1072733362 + .long 343310803 + .long 1072748161 + .long 693450846 + .long 1072654970 + .long 3218699017 + .long 1015418799 + .long 0 + .long 0 + .long 716700048 + .long 1071997368 + .long 1043856658 + .long 1015522810 + .long 0 + .long 1072693248 + .long 1097907398 + .long 1071420120 + .long 3912524876 + .long 1072622983 + .long 4107784306 + .long 1072827408 + .long 937056065 + .long 1072772766 + .long 4128945134 + .long 1072826390 + .long 1032262383 + .long 1072832917 + .long 1825923576 + .long 1072864423 + .long 1006905258 + .long 1072629234 + .long 3348558652 + .long 3159471942 + .long 0 + .long 0 + .long 3841229102 + .long 1072034903 + .long 1782837269 + .long 1016032992 + .long 0 + .long 1072693248 + .long 866896685 + .long 1071521786 + .long 2743435231 + .long 1072702700 + .long 3017984361 + .long 1072884608 + .long 1491919678 + .long 1072848040 + .long 1507535811 + .long 1072917857 + .long 1966124961 + .long 1072942914 + .long 381628626 + .long 1072992589 + .long 1320359670 + .long 1072603498 + .long 1908355032 + .long 3163192705 + .long 0 + .long 0 + .long 343219638 + .long 1072073077 + .long 2238302242 + .long 1014248160 + .long 0 + .long 1072693248 + .long 3768132253 + .long 1071627934 + .long 3895546569 + .long 1072749460 + .long 1613056473 + .long 1072945645 + .long 3409294908 + .long 1072929183 + .long 3138966349 + .long 1073017844 + .long 3799067273 + .long 1073064607 + .long 359470462 + .long 1073133087 + .long 1633814081 + .long 1072577762 + .long 3941137777 + .long 1014659019 + .long 0 + .long 0 + .long 3860971117 + .long 1072111915 + .long 2891637204 + .long 1015730508 + .long 0 + .long 1073741824 + .long 80822128 + .long 3219034205 + .long 2077635078 + .long 1072798543 + .long 1552870456 + .long 1073010820 + .long 3607700650 + .long 1073016746 + .long 249538440 + .long 1073127265 + .long 2233833066 + .long 1073199420 + .long 2436428201 + .long 1073293556 + .long 1947268493 + .long 1072552026 + .long 1185916272 + .long 3161855333 + .long 0 + .long 0 + .long 3978924239 + .long 1072151449 + .long 680748782 + .long 3163204529 + .long 0 + .long 1073741824 + .long 3528982175 + .long 3218918413 + .long 3018376188 + .long 1072850106 + .long 2093086652 + .long 1073080463 + .long 451029217 + .long 1073111339 + .long 1097121536 + .long 1073247142 + .long 2277789226 + .long 1073348969 + .long 149166906 + .long 1073478822 + .long 2260722904 + .long 1072526290 + .long 3285965784 + .long 1015852724 + .long 0 + .long 0 + .long 997287281 + .long 1072191710 + .long 3612277486 + .long 1015833408 + .long 0 + .long 1073741824 + .long 3037674984 + .long 3218797431 + .long 2624215131 + .long 1072904321 + .long 464779768 + .long 1073154936 + .long 3700763630 + .long 1073213636 + .long 1200926910 + .long 1073378628 + .long 2934576429 + .long 1073515096 + .long 3287041855 + .long 1073681673 + .long 2574177316 + .long 1072500554 + .long 2889755040 + .long 1013031024 + .long 0 + .long 0 + .long 2079874795 + .long 1072232729 + .long 1885505696 + .long 3161954077 + .long 0 + .long 1073741824 + .long 1656469901 + .long 3218670989 + .long 823761676 + .long 1072961373 + .long 2491445454 + .long 1073234634 + .long 1584341555 + .long 1073324391 + .long 1976688438 + .long 1073523018 + .long 3918313340 + .long 1073699902 + .long 3178717687 + .long 1073829019 + .long 2887631728 + .long 1072474818 + .long 1841088264 + .long 3162758780 + .long 0 + .long 0 + .long 258163604 + .long 1072274542 + .long 3299923807 + .long 1015128357 + .long 0 + .long 1073741824 + .long 2865277319 + .long 3218538798 + .long 3110066496 + .long 1073021461 + .long 723074889 + .long 1073319994 + .long 1618819009 + .long 1073444438 + .long 1176243936 + .long 1073681775 + .long 1223848987 + .long 1073823806 + .long 2369274010 + .long 1073957581 + .long 3201086139 + .long 1072449082 + .long 4185319304 + .long 1015274218 + .long 0 + .long 0 + .long 719595600 + .long 1072317184 + .long 114895218 + .long 3162143748 + .long 0 + .long 1073741824 + .long 3811788216 + .long 3218400550 + .long 1264738948 + .long 1073084804 + .long 1958933439 + .long 1073411493 + .long 4246310163 + .long 1073574708 + .long 1367842247 + .long 1073799186 + .long 4112596162 + .long 1073938662 + .long 2100954442 + .long 1074105254 + .long 3514540551 + .long 1072423346 + .long 2102765473 + .long 3160518326 + .long 0 + .long 0 + .long 4189730214 + .long 1072360693 + .long 873070368 + .long 1011168520 + .long 0 + .long 1073741824 + .long 760634709 + .long 3218255915 + .long 2067827628 + .long 1073151636 + .long 1386756408 + .long 1073509659 + .long 404552634 + .long 1073716242 + .long 1143062645 + .long 1073895515 + .long 555342321 + .long 1074067009 + .long 3470170865 + .long 1074271418 + .long 3827994963 + .long 1072397610 + .long 941734744 + .long 3163337286 + .long 0 + .long 0 + .long 3247184626 + .long 1072405111 + .long 1245412628 + .long 1014426137 + .long 0 + .long 1073741824 + .long 2381906911 + .long 3218104536 + .long 1010924947 + .long 1073222214 + .long 2481381005 + .long 1073615072 + .long 1356661294 + .long 1073806011 + .long 1527070582 + .long 1074001844 + .long 3061693388 + .long 1074210655 + .long 1993183195 + .long 1074463435 + .long 4141449374 + .long 1072371874 + .long 1579411055 + .long 1014369858 + .long 0 + .long 0 + .long 166164867 + .long 1072450480 + .long 2304058808 + .long 3159574198 + .long 0 + .long 1073741824 + .long 2798667120 + .long 3217812323 + .long 4203596829 + .long 1073296815 + .long 1473339147 + .long 1073728374 + .long 4243021652 + .long 1073889850 + .long 1638747017 + .long 1074119375 + .long 1512673096 + .long 1074371687 + .long 2338684787 + .long 1074678259 + .long 159936490 + .long 1072346139 + .long 3547642993 + .long 3162144494 + .long 0 + .long 0 + .long 3342355758 + .long 1072496843 + .long 1667048854 + .long 1014547708 + .long 0 + .long 1073741824 + .long 2271288998 + .long 3217480250 + .long 4111284847 + .long 1073375744 + .long 2796272966 + .long 1073796048 + .long 1730314448 + .long 1073981280 + .long 1813001552 + .long 1074249474 + .long 603251414 + .long 1074552509 + .long 3079042420 + .long 1074856525 + .long 473390901 + .long 1072320403 + .long 4252586071 + .long 1015708143 + .long 0 + .long 0 + .long 2308259791 + .long 1072544250 + .long 4116261952 + .long 1009282152 + .long 0 + .long 1073741824 + .long 411343470 + .long 3217132228 + .long 3760686807 + .long 1073459331 + .long 4171367426 + .long 1073861688 + .long 1878500541 + .long 1074081117 + .long 108767834 + .long 1074393698 + .long 2824899539 + .long 1074755901 + .long 3321235986 + .long 1074997439 + .long 786845313 + .long 1072294667 + .long 627570489 + .long 1011980987 + .long 0 + .long 0 + .long 2949191430 + .long 1072592750 + .long 3989207545 + .long 1015613028 + .long 0 + .long 1073741824 + .long 2909112164 + .long 3216503445 + .long 3682557528 + .long 1073547937 + .long 4184421718 + .long 1073932454 + .long 380803270 + .long 1074190282 + .long 3399744364 + .long 1074553823 + .long 3842864947 + .long 1074887742 + .long 748075417 + .long 1075157395 + .long 1100299725 + .long 1072268931 + .long 874467977 + .long 3162903361 + .long 0 + .long 0 + .long 2668510354 + .long 1072642397 + .long 1701265160 + .long 3159690220 + .long 0 + .long 1073741824 + .long 1404962112 + .long 3215492924 + .long 3327263454 + .long 1073641957 + .long 1987673213 + .long 1074008829 + .long 231222583 + .long 1074309811 + .long 1756671652 + .long 1074731884 + .long 3921518313 + .long 1075017100 + .long 2691193077 + .long 1075341426 + .long 1413754136 + .long 1072243195 + .long 856972295 + .long 1015129638 + .long 0 + .long 1072693248 + .long 3072795147 + .long 3218177217 + .long 2531204756 + .long 1014677625 + .long 0 + .long 1071644672 + .long 573338107 + .long 3216966390 + .long 1757081539 + .long 3216009405 + .long 1043378852 + .long 1067696161 + .long 2698850995 + .long 3213513876 + .long 495882814 + .long 1064911053 + .long 3842541443 + .long 3210988571 + .long 2725665262 + .long 1061135526 + .long 1727208548 + .long 1072217459 + .long 2531251621 + .long 3161096649 + .long 0 + .long 1072693248 + .long 963359913 + .long 3218157757 + .long 2464811394 + .long 1013284229 + .long 0 + .long 1071644672 + .long 1498613974 + .long 3216992493 + .long 4138103782 + .long 3215985771 + .long 2840947366 + .long 1067675293 + .long 209537977 + .long 3213463826 + .long 3590357530 + .long 1064864171 + .long 73959547 + .long 3210940132 + .long 1511606549 + .long 1062390487 + .long 2040662960 + .long 1072191723 + .long 4270081753 + .long 3163481866 + .long 0 + .long 1072693248 + .long 4002124759 + .long 3218138375 + .long 3453342566 + .long 3160907529 + .long 0 + .long 1071644672 + .long 774562305 + .long 3217018021 + .long 377617675 + .long 3215942442 + .long 2495478050 + .long 1067655031 + .long 1508050213 + .long 3213415186 + .long 1921336534 + .long 1064819067 + .long 975923672 + .long 3210893594 + .long 2289965811 + .long 1060505011 + .long 2354117371 + .long 1072165987 + .long 3512651629 + .long 1014080696 + .long 0 + .long 1072693248 + .long 373017919 + .long 3218119072 + .long 3647199073 + .long 3162144529 + .long 0 + .long 1070596096 + .long 933359764 + .long 1069535705 + .long 1391441088 + .long 3215896667 + .long 53106651 + .long 1067635358 + .long 4157835043 + .long 3213367904 + .long 4055868050 + .long 1064775611 + .long 1529330423 + .long 3210848884 + .long 325278885 + .long 1062325273 + .long 2667571783 + .long 1072140251 + .long 1614402419 + .long 3162433656 + .long 0 + .long 1072693248 + .long 4148643959 + .long 3218099843 + .long 2887822595 + .long 3161698583 + .long 0 + .long 1070596096 + .long 4101770849 + .long 1069511300 + .long 1167052501 + .long 3215851606 + .long 2569727718 + .long 1067616256 + .long 1681502493 + .long 3213321931 + .long 3685967947 + .long 1064733780 + .long 2973319847 + .long 3210805911 + .long 472683240 + .long 1062549181 + .long 2981026194 + .long 1072114515 + .long 924239062 + .long 1015563563 + .long 0 + .long 1072693248 + .long 3747221382 + .long 3218080689 + .long 1912303920 + .long 3161550059 + .long 0 + .long 1070596096 + .long 1727686788 + .long 1069487445 + .long 681802874 + .long 3215807238 + .long 2531789465 + .long 1067597711 + .long 331202638 + .long 3213277217 + .long 2627596737 + .long 1064693515 + .long 566979211 + .long 3210764596 + .long 2424396143 + .long 1061741710 + .long 3294480606 + .long 1072088779 + .long 1489607747 + .long 3150370331 + .long 0 + .long 1072693248 + .long 1167858038 + .long 3218043472 + .long 2180016084 + .long 3158357424 + .long 0 + .long 1070596096 + .long 772792549 + .long 1069464130 + .long 3356872770 + .long 3215763542 + .long 3524844777 + .long 1067579707 + .long 1521756467 + .long 3213233715 + .long 3931969740 + .long 1064654734 + .long 2908114613 + .long 3210710011 + .long 3523476919 + .long 1061374592 + .long 3607935018 + .long 1072063043 + .long 4202814986 + .long 3163047941 + .long 0 + .long 1072693248 + .long 955408364 + .long 3218005450 + .long 2659929740 + .long 1013295819 + .long 0 + .long 1070596096 + .long 659174847 + .long 1069441347 + .long 2081794994 + .long 3215720500 + .long 2956616392 + .long 1067562230 + .long 1461867065 + .long 3213191381 + .long 879427918 + .long 1064617384 + .long 209598599 + .long 3210633576 + .long 60948554 + .long 1061529630 + .long 3921389429 + .long 1072037307 + .long 3647185164 + .long 1014948546 + .long 0 + .long 1072693248 + .long 1526324265 + .long 3217967566 + .long 4056331296 + .long 1010311990 + .long 0 + .long 1070596096 + .long 1830915900 + .long 1069419088 + .long 602185706 + .long 3215678092 + .long 555210277 + .long 1067545266 + .long 3690136761 + .long 3213150171 + .long 4115917121 + .long 1064581405 + .long 589230607 + .long 3210560017 + .long 3446641745 + .long 1062382364 + .long 4234843841 + .long 1072011571 + .long 1479868884 + .long 3161565806 + .long 0 + .long 1072693248 + .long 2049842017 + .long 3217929817 + .long 2491067243 + .long 1013757722 + .long 0 + .long 1070596096 + .long 1431833764 + .long 1069397346 + .long 551048935 + .long 3215636299 + .long 2575917112 + .long 1067528800 + .long 1559777140 + .long 3213110045 + .long 743322344 + .long 1064546764 + .long 1974991822 + .long 3210489213 + .long 3456487690 + .long 1062460308 + .long 253330956 + .long 1071985836 + .long 991505830 + .long 1015997488 + .long 0 + .long 1072693248 + .long 1894214069 + .long 3217892200 + .long 2182661104 + .long 3159506151 + .long 0 + .long 1070596096 + .long 1869133310 + .long 1069376113 + .long 1368144043 + .long 3215595103 + .long 242783364 + .long 1067512821 + .long 3692616565 + .long 3213070961 + .long 2890683542 + .long 1064513419 + .long 2407947192 + .long 3210421028 + .long 3811448635 + .long 1060561671 + .long 566785368 + .long 1071960100 + .long 2301849815 + .long 1013610078 + .long 0 + .long 1072693248 + .long 620845047 + .long 3217854712 + .long 314567190 + .long 3160767875 + .long 0 + .long 1070596096 + .long 2198158867 + .long 1069355382 + .long 222370857 + .long 3215554487 + .long 4028822361 + .long 1067497314 + .long 3610397327 + .long 3213032882 + .long 171354848 + .long 1064481283 + .long 693369877 + .long 3210355362 + .long 164303632 + .long 1061632559 + .long 880239780 + .long 1071934364 + .long 4135548218 + .long 3162614016 + .long 0 + .long 1072693248 + .long 2273547475 + .long 3217817349 + .long 4162051772 + .long 3158862098 + .long 0 + .long 1070596096 + .long 2392983423 + .long 1069335146 + .long 526970473 + .long 3215514433 + .long 628322840 + .long 1067482270 + .long 924033682 + .long 3212995771 + .long 854746898 + .long 1064450346 + .long 4004963123 + .long 3210292086 + .long 1474471147 + .long 1060747995 + .long 1193694191 + .long 1071908628 + .long 1890859349 + .long 1015418982 + .long 0 + .long 1072693248 + .long 2488075121 + .long 3217780109 + .long 1856288899 + .long 1013767581 + .long 0 + .long 1070596096 + .long 3322930631 + .long 1069315398 + .long 3277607933 + .long 3215474924 + .long 130253043 + .long 1067467675 + .long 1057196725 + .long 3212959591 + .long 3278604843 + .long 1064420531 + .long 4197429676 + .long 3210231108 + .long 1627850508 + .long 1062399550 + .long 1507148603 + .long 1071882892 + .long 1086374101 + .long 3159470481 + .long 0 + .long 1072693248 + .long 1371601499 + .long 3217742989 + .long 3050542164 + .long 3159667536 + .long 0 + .long 1070596096 + .long 2434996648 + .long 1069296132 + .long 2688049294 + .long 3215435945 + .long 1586964757 + .long 1067453518 + .long 2102156419 + .long 3212924308 + .long 2974407249 + .long 1064391847 + .long 249545848 + .long 3210172310 + .long 118754132 + .long 1061128535 + .long 1820603015 + .long 1071857156 + .long 3236194699 + .long 3163192522 + .long 0 + .long 1072693248 + .long 3497432648 + .long 3217705985 + .long 3403982176 + .long 3159219350 + .long 0 + .long 1070596096 + .long 2322009458 + .long 1069277341 + .long 3303184211 + .long 3215397479 + .long 3079386980 + .long 1067429210 + .long 3158396776 + .long 3212889889 + .long 500122468 + .long 1064364204 + .long 3226667041 + .long 3210115604 + .long 1839377740 + .long 1062167069 + .long 2134057426 + .long 1071831420 + .long 1285458442 + .long 1014659385 + .long 0 + .long 1072693248 + .long 719981842 + .long 3217669096 + .long 3396799415 + .long 1013109014 + .long 0 + .long 1070596096 + .long 2111724540 + .long 1069259019 + .long 2754706540 + .long 3215359511 + .long 790037588 + .long 1067402587 + .long 4097286835 + .long 3212856302 + .long 2918356813 + .long 1064337614 + .long 980543884 + .long 3210060878 + .long 1759882364 + .long 3204685716 + .long 2447511838 + .long 1071805684 + .long 3841595606 + .long 3161854967 + .long 0 + .long 1072693248 + .long 2234510834 + .long 3217632317 + .long 1077830624 + .long 3156276711 + .long 0 + .long 1070596096 + .long 1741599179 + .long 1069241160 + .long 288887764 + .long 3215322026 + .long 438316229 + .long 1067376778 + .long 2074161178 + .long 3212810170 + .long 2132352512 + .long 1064311981 + .long 321000190 + .long 3210008077 + .long 2574541397 + .long 1061549566 + .long 2760966249 + .long 1071779948 + .long 1958126117 + .long 1015852907 + .long 0 + .long 1072693248 + .long 212483252 + .long 3217595647 + .long 3496985358 + .long 1013615952 + .long 0 + .long 1070596096 + .long 1939348811 + .long 1069223758 + .long 1001569645 + .long 3215285008 + .long 764537997 + .long 1067351764 + .long 2326690580 + .long 3212746141 + .long 60750538 + .long 1064270005 + .long 2745665118 + .long 3209957083 + .long 1586280401 + .long 1060807371 + .long 3074420661 + .long 1071754212 + .long 1873363667 + .long 1013031755 + .long 0 + .long 1072693248 + .long 4156511795 + .long 3217559081 + .long 1791782369 + .long 3160930544 + .long 0 + .long 1070596096 + .long 4204226438 + .long 1069206807 + .long 2895376501 + .long 3215248443 + .long 3600185398 + .long 1067327526 + .long 2087275384 + .long 3212683597 + .long 347703885 + .long 1064222543 + .long 301495371 + .long 3209907826 + .long 876688468 + .long 3206713553 + .long 3387875073 + .long 1071728476 + .long 3168927931 + .long 3162758597 + .long 0 + .long 1072693248 + .long 2240974125 + .long 3217522619 + .long 3786179077 + .long 1012998644 + .long 0 + .long 1070596096 + .long 2199065489 + .long 1069190303 + .long 1118792048 + .long 3215212318 + .long 875809397 + .long 1067304048 + .long 2927616918 + .long 3212622482 + .long 3494337727 + .long 1064176822 + .long 4219965681 + .long 3209860241 + .long 4249954841 + .long 1060574506 + .long 3701329484 + .long 1071702740 + .long 2857479637 + .long 1015274401 + .long 0 + .long 1072693248 + .long 4257115870 + .long 3217486256 + .long 39728399 + .long 3160493923 + .long 0 + .long 1070596096 + .long 3207767847 + .long 1069174239 + .long 797077063 + .long 3215176618 + .long 287980713 + .long 1067281311 + .long 1596666478 + .long 3212562743 + .long 2775364 + .long 1064132847 + .long 3823518214 + .long 3209814240 + .long 3101392498 + .long 1060290467 + .long 4014783896 + .long 1071677004 + .long 3119156846 + .long 3160517595 + .long 0 + .long 1072693248 + .long 2953879462 + .long 3217449991 + .long 651182982 + .long 3159737324 + .long 0 + .long 1070596096 + .long 2348802841 + .long 1069158611 + .long 4095204310 + .long 3215141329 + .long 3730066556 + .long 1067259298 + .long 2541564470 + .long 3212504327 + .long 1012137407 + .long 1064090541 + .long 3007493349 + .long 3209769752 + .long 304719606 + .long 1058732349 + .long 33271012 + .long 1071651269 + .long 2269574412 + .long 3163337103 + .long 0 + .long 1072693248 + .long 4098310206 + .long 3217413820 + .long 678867490 + .long 1013738598 + .long 0 + .long 1070596096 + .long 4033975882 + .long 1069143413 + .long 1577500332 + .long 3215106440 + .long 2904242360 + .long 1067237995 + .long 383406633 + .long 3212447185 + .long 511745182 + .long 1064049810 + .long 3472404602 + .long 3209726723 + .long 3493824410 + .long 1061932631 + .long 693450846 + .long 1071606394 + .long 3218699017 + .long 1014370223 + .long 0 + .long 1072693248 + .long 701484222 + .long 3217377742 + .long 1189134796 + .long 1013549080 + .long 0 + .long 1070596096 + .long 478132658 + .long 1069128642 + .long 2223654597 + .long 3215071936 + .long 706118045 + .long 1067217386 + .long 1066336370 + .long 3212391267 + .long 3310393795 + .long 1064010705 + .long 1920669086 + .long 3209678984 + .long 1209448644 + .long 3206743753 + .long 1320359670 + .long 1071554922 + .long 1908355032 + .long 3162144129 + .long 0 + .long 1072693248 + .long 3079104278 + .long 3217341752 + .long 2593237472 + .long 3159688198 + .long 0 + .long 1070596096 + .long 1749059456 + .long 1069114291 + .long 3316773722 + .long 3215037805 + .long 2555119580 + .long 1067197455 + .long 59306268 + .long 3212336527 + .long 1944001738 + .long 1063973040 + .long 3607966944 + .long 3209598336 + .long 1548002341 + .long 1061515569 + .long 1947268493 + .long 1071503450 + .long 1185916272 + .long 3160806757 + .long 0 + .long 1072693248 + .long 192708373 + .long 3217305850 + .long 1013564964 + .long 3160609117 + .long 0 + .long 1070596096 + .long 1393443609 + .long 1069100357 + .long 3282624502 + .long 3215004035 + .long 3423023493 + .long 1067178189 + .long 3539283610 + .long 3212282918 + .long 1358653293 + .long 1063936902 + .long 1383848795 + .long 3209520160 + .long 1170879540 + .long 3207439782 + .long 2574177316 + .long 1071451978 + .long 2889755040 + .long 1011982448 + .long 0 + .long 1072693248 + .long 2595342993 + .long 3217270031 + .long 1222182906 + .long 3159411259 + .long 0 + .long 1070596096 + .long 2192927435 + .long 1069086835 + .long 1645422722 + .long 3214970614 + .long 648269084 + .long 1067159575 + .long 2319737250 + .long 3212230398 + .long 1121494038 + .long 1063902126 + .long 897314833 + .long 3209444434 + .long 2659165416 + .long 1060259181 + .long 3201086139 + .long 1071400506 + .long 4185319304 + .long 1014225642 + .long 0 + .long 1072693248 + .long 3772940467 + .long 3217234294 + .long 3998164722 + .long 1013347606 + .long 0 + .long 1070596096 + .long 3265990537 + .long 1069073721 + .long 3279971426 + .long 3214937529 + .long 2447085124 + .long 1067141598 + .long 1649985592 + .long 3212178923 + .long 3334399491 + .long 1063868754 + .long 454991634 + .long 3209370985 + .long 1938913543 + .long 3204215126 + .long 3827994963 + .long 1071349034 + .long 941734744 + .long 3162288710 + .long 0 + .long 1072693248 + .long 1615317960 + .long 3217198637 + .long 1400808192 + .long 1007479474 + .long 0 + .long 1070596096 + .long 55251407 + .long 1069061012 + .long 2380564598 + .long 3214875524 + .long 2078095393 + .long 1067124247 + .long 3759475360 + .long 3212128451 + .long 800747756 + .long 1063836662 + .long 3361780736 + .long 3209299766 + .long 3643416391 + .long 1062249457 + .long 159936490 + .long 1071297563 + .long 3547642993 + .long 3161095918 + .long 0 + .long 1072693248 + .long 2707383656 + .long 3217163056 + .long 554608178 + .long 3160521551 + .long 0 + .long 1070596096 + .long 1495139838 + .long 1069048702 + .long 183291521 + .long 3214810633 + .long 3540584774 + .long 1067107509 + .long 3317896890 + .long 3212078943 + .long 3844035447 + .long 1063805952 + .long 3695033041 + .long 3209230570 + .long 3731872264 + .long 3207727795 + .long 786845313 + .long 1071246091 + .long 627570489 + .long 1010932411 + .long 0 + .long 1072693248 + .long 850612498 + .long 3217127550 + .long 3957837480 + .long 1012739461 + .long 0 + .long 1070596096 + .long 4230382869 + .long 1069036788 + .long 2678394493 + .long 3214746346 + .long 42048419 + .long 1067091374 + .long 61549345 + .long 3212030360 + .long 3326100968 + .long 1063776440 + .long 377176410 + .long 3209163411 + .long 1539171840 + .long 3206122484 + .long 1413754136 + .long 1071194619 + .long 856972295 + .long 1014081062 + .long 0 + .long 1072693248 + .long 2829232582 + .long 3217092115 + .long 1037840994 + .long 1012412582 + .long 0 + .long 1070596096 + .long 1194701220 + .long 1069025268 + .long 1485063562 + .long 3214682643 + .long 3996610205 + .long 1067075828 + .long 2865183303 + .long 3211982662 + .long 2185691626 + .long 1063748117 + .long 435906073 + .long 3209098183 + .long 1583986254 + .long 1061922957 + .long 2040662960 + .long 1071143147 + .long 4270081753 + .long 3162433290 + .long 0 + .long 1072693248 + .long 2636871548 + .long 3217056750 + .long 3635907996 + .long 3159234439 + .long 0 + .long 1070596096 + .long 3074865967 + .long 1069014136 + .long 2827594877 + .long 3214619501 + .long 4018616278 + .long 1067060863 + .long 3744630852 + .long 3211935814 + .long 967547233 + .long 1063721046 + .long 1523268333 + .long 3209034706 + .long 370739821 + .long 1057912410 + .long 2667571783 + .long 1071091675 + .long 1614402419 + .long 3161385080 + .long 0 + .long 1072693248 + .long 1600848691 + .long 3217011737 + .long 3799011534 + .long 3158825865 + .long 0 + .long 1070596096 + .long 3940625627 + .long 1069003390 + .long 1694054617 + .long 3214556900 + .long 3525212904 + .long 1067046468 + .long 3400170401 + .long 3211889780 + .long 2025409789 + .long 1063695095 + .long 1861695371 + .long 3208972985 + .long 2099431114 + .long 1058280175 + .long 3294480606 + .long 1071040203 + .long 1489607747 + .long 3149321755 + .long 0 + .long 1072693248 + .long 163325898 + .long 3216941271 + .long 272531312 + .long 3158872717 + .long 0 + .long 1070596096 + .long 2709640876 + .long 1068993027 + .long 3241569416 + .long 3214494818 + .long 3499770285 + .long 1067032633 + .long 2428916378 + .long 3211844525 + .long 796870242 + .long 1063670282 + .long 2401385551 + .long 3208912885 + .long 417337253 + .long 3207953615 + .long 3921389429 + .long 1070988731 + .long 3647185164 + .long 1013899970 + .long 0 + .long 1072693248 + .long 2357811071 + .long 3216870929 + .long 1815527340 + .long 3157476592 + .long 0 + .long 1070596096 + .long 3138003653 + .long 1068983043 + .long 1253835798 + .long 3214433236 + .long 2444914170 + .long 1067019349 + .long 1113961907 + .long 3211800015 + .long 1725681990 + .long 1063646503 + .long 2521427548 + .long 3208854407 + .long 2469316955 + .long 1061668474 + .long 253330956 + .long 1070937260 + .long 991505830 + .long 1014948912 + .long 0 + .long 1072693248 + .long 1152452440 + .long 3216800708 + .long 2988871182 + .long 1011946816 + .long 0 + .long 1070596096 + .long 926263936 + .long 1068973436 + .long 3845070713 + .long 3214372132 + .long 626397172 + .long 1067006607 + .long 2777085683 + .long 3211724145 + .long 2172777456 + .long 1063623822 + .long 3188732906 + .long 3208797386 + .long 250185439 + .long 1062033866 + .long 880239780 + .long 1070885788 + .long 4135548218 + .long 3161565440 + .long 0 + .long 1072693248 + .long 2555242223 + .long 3216730602 + .long 1132402578 + .long 1012350135 + .long 0 + .long 1070596096 + .long 890626350 + .long 1068964202 + .long 3331100648 + .long 3214311488 + .long 30508518 + .long 1066994398 + .long 397665884 + .long 3211637908 + .long 1048931291 + .long 1063602233 + .long 4152525626 + .long 3208741715 + .long 51864355 + .long 3208005790 + .long 1507148603 + .long 1070834316 + .long 1086374101 + .long 3158421905 + .long 0 + .long 1072693248 + .long 4132779814 + .long 3216660607 + .long 3895880616 + .long 1012226511 + .long 0 + .long 1070596096 + .long 4069764223 + .long 1068955338 + .long 1936654463 + .long 3214251284 + .long 27137259 + .long 1066982714 + .long 112447739 + .long 3211552967 + .long 3681308921 + .long 1063581561 + .long 3611917249 + .long 3208687484 + .long 2182292750 + .long 1061868473 + .long 2134057426 + .long 1070782844 + .long 1285458442 + .long 1013610809 + .long 0 + .long 1072693248 + .long 3593905368 + .long 3216590719 + .long 2989246530 + .long 1011901384 + .long 0 + .long 1070596096 + .long 3421947019 + .long 1068946843 + .long 3144465174 + .long 3214191500 + .long 1618007405 + .long 1066971547 + .long 584787122 + .long 3211469261 + .long 1465845707 + .long 1063561956 + .long 939979903 + .long 3208626315 + .long 1695262346 + .long 3204506663 + .long 2760966249 + .long 1070731372 + .long 1958126117 + .long 1014804331 + .long 0 + .long 1072693248 + .long 3078460826 + .long 3216520933 + .long 4285081068 + .long 3159473614 + .long 0 + .long 1070596096 + .long 997373752 + .long 1068938714 + .long 3045840714 + .long 3214132118 + .long 3110377520 + .long 1066960890 + .long 2323415564 + .long 3211386730 + .long 18309569 + .long 1063543250 + .long 551124926 + .long 3208522770 + .long 249182975 + .long 1061811122 + .long 3387875073 + .long 1070679900 + .long 3168927931 + .long 3161710021 + .long 0 + .long 1072693248 + .long 561239310 + .long 3216451245 + .long 210497392 + .long 3156201161 + .long 0 + .long 1070596096 + .long 3636030687 + .long 1068930947 + .long 3167463735 + .long 3214073119 + .long 73152643 + .long 1066950737 + .long 3108019154 + .long 3211305316 + .long 2100498319 + .long 1063525559 + .long 282708930 + .long 3208421353 + .long 2551775895 + .long 3207605450 + .long 4014783896 + .long 1070628428 + .long 3119156846 + .long 3159469019 + .long 0 + .long 1072693248 + .long 2730856872 + .long 3216381649 + .long 4254293712 + .long 1009711154 + .long 0 + .long 1070596096 + .long 1486032260 + .long 1068923542 + .long 1824674436 + .long 3214014485 + .long 2488677748 + .long 1066941079 + .long 1925770461 + .long 3211224962 + .long 2531500940 + .long 1063508710 + .long 3007508061 + .long 3208322267 + .long 994458799 + .long 1061806090 + .long 693450846 + .long 1070557818 + .long 3218699017 + .long 1013321647 + .long 0 + .long 1072693248 + .long 3508967486 + .long 3216312142 + .long 3021155724 + .long 1011969550 + .long 0 + .long 1070596096 + .long 2356881417 + .long 1068916495 + .long 2655870529 + .long 3213956197 + .long 352865498 + .long 1066931912 + .long 3008575053 + .long 3211145611 + .long 2622088932 + .long 1063492845 + .long 3834913422 + .long 3208225014 + .long 1497815285 + .long 3207511002 + .long 1947268493 + .long 1070454874 + .long 1185916272 + .long 3159758181 + .long 0 + .long 1072693248 + .long 1224261120 + .long 3216242720 + .long 3122470664 + .long 3159031070 + .long 0 + .long 1070596096 + .long 1648557593 + .long 1068909805 + .long 1683250226 + .long 3213898238 + .long 2306165388 + .long 1066923228 + .long 2600821843 + .long 3211067209 + .long 3406795398 + .long 1063477798 + .long 3582359304 + .long 3208129845 + .long 3199024961 + .long 1061038571 + .long 3201086139 + .long 1070351930 + .long 4185319304 + .long 1013177066 + .long 0 + .long 1072693248 + .long 2901633254 + .long 3216173377 + .long 2788221280 + .long 1009319756 + .long 0 + .long 1070596096 + .long 3820542338 + .long 1068903469 + .long 288942435 + .long 3213795740 + .long 1237884341 + .long 1066915023 + .long 1606294444 + .long 3210989702 + .long 223992189 + .long 1063463656 + .long 1499707213 + .long 3208036378 + .long 3416758850 + .long 1060053511 + .long 159936490 + .long 1070248987 + .long 3547642993 + .long 3160047342 + .long 0 + .long 1072693248 + .long 2781619933 + .long 3216104110 + .long 3145354644 + .long 1011963772 + .long 0 + .long 1070596096 + .long 911495412 + .long 1068897487 + .long 290976546 + .long 3213681030 + .long 33241894 + .long 1066907291 + .long 977031819 + .long 3210913037 + .long 119357659 + .long 1063450345 + .long 1846248446 + .long 3207944648 + .long 4276662282 + .long 1061269448 + .long 1413754136 + .long 1070146043 + .long 856972295 + .long 1013032486 + .long 0 + .long 1072693248 + .long 3789571175 + .long 3216034914 + .long 2061677164 + .long 3158802525 + .long 0 + .long 1070596096 + .long 2598855658 + .long 1068891855 + .long 628750565 + .long 3213566872 + .long 2954249465 + .long 1066900026 + .long 1468236324 + .long 3210837162 + .long 3701994667 + .long 1063437912 + .long 310421843 + .long 3207854373 + .long 393637210 + .long 3207421006 + .long 2667571783 + .long 1070043099 + .long 1614402419 + .long 3160336504 + .long 0 + .long 1072693248 + .long 700360492 + .long 3215948980 + .long 4067889956 + .long 3158309941 + .long 0 + .long 1070596096 + .long 1834243786 + .long 1068886573 + .long 92010622 + .long 3213453232 + .long 2733460853 + .long 1066893225 + .long 3349627764 + .long 3210762026 + .long 2326014508 + .long 1063426279 + .long 2491557920 + .long 3207765637 + .long 2159546056 + .long 3208108974 + .long 3921389429 + .long 1069940155 + .long 3647185164 + .long 1012851394 + .long 0 + .long 1072693248 + .long 4008519973 + .long 3215810847 + .long 1156806192 + .long 3157002565 + .long 0 + .long 1070596096 + .long 608713188 + .long 1068881639 + .long 3200221055 + .long 3213340075 + .long 2024185290 + .long 1066886883 + .long 3737414605 + .long 3210635448 + .long 4102026093 + .long 1063415403 + .long 3274310324 + .long 3207678452 + .long 4280744879 + .long 1061910091 + .long 880239780 + .long 1069837212 + .long 4135548218 + .long 3160516864 + .long 0 + .long 1072693248 + .long 2381996637 + .long 3215672832 + .long 639270832 + .long 1008532593 + .long 0 + .long 1070596096 + .long 1358563144 + .long 1068877051 + .long 2925458633 + .long 3213227369 + .long 492833071 + .long 1066880996 + .long 4104628456 + .long 3210487835 + .long 3054991409 + .long 1063405423 + .long 2594255061 + .long 3207590366 + .long 2100320188 + .long 3208479772 + .long 2134057426 + .long 1069734268 + .long 1285458442 + .long 1012562233 + .long 0 + .long 1072693248 + .long 2319612510 + .long 3215534925 + .long 1111071278 + .long 3158888695 + .long 0 + .long 1070596096 + .long 2666415304 + .long 1068872808 + .long 2071510147 + .long 3213115080 + .long 3395467108 + .long 1066875559 + .long 2423946868 + .long 3210341405 + .long 80612299 + .long 1063396131 + .long 2656867111 + .long 3207420929 + .long 3004001956 + .long 1061836610 + .long 3387875073 + .long 1069631324 + .long 3168927931 + .long 3160661445 + .long 0 + .long 1072693248 + .long 1865079417 + .long 3215397118 + .long 2937833612 + .long 1011350737 + .long 0 + .long 1070596096 + .long 3552516355 + .long 1068868909 + .long 294617109 + .long 3213003175 + .long 76221622 + .long 1066870571 + .long 3376425735 + .long 3210196061 + .long 2723275475 + .long 1063387705 + .long 3315521969 + .long 3207252871 + .long 3590370444 + .long 3207679867 + .long 693450846 + .long 1069509242 + .long 3218699017 + .long 1012273071 + .long 0 + .long 1072693248 + .long 3481201957 + .long 3215259402 + .long 1636311970 + .long 3157709699 + .long 0 + .long 1070596096 + .long 3471360849 + .long 1068865353 + .long 2600335524 + .long 3212891620 + .long 2613792462 + .long 1066866026 + .long 3847698423 + .long 3210051709 + .long 663967578 + .long 1063380003 + .long 493409710 + .long 3207087119 + .long 1127477260 + .long 3207199264 + .long 3201086139 + .long 1069303354 + .long 4185319304 + .long 1012128490 + .long 0 + .long 1072693248 + .long 1154356116 + .long 3215121770 + .long 1840040117 + .long 3159097207 + .long 0 + .long 1070596096 + .long 2308597781 + .long 1068862139 + .long 4143524575 + .long 3212723904 + .long 2850915343 + .long 1066861923 + .long 1191668407 + .long 3209908256 + .long 2952843839 + .long 1063373033 + .long 3172237721 + .long 3206923432 + .long 2684115468 + .long 1061237060 + .long 1413754136 + .long 1069097467 + .long 856972295 + .long 1011983910 + .long 0 + .long 1072693248 + .long 1858778712 + .long 3214984212 + .long 552307712 + .long 1007653492 + .long 0 + .long 1070596096 + .long 378217452 + .long 1068859266 + .long 2507068679 + .long 3212502004 + .long 2446302718 + .long 1066858259 + .long 1361087111 + .long 3209765608 + .long 761263112 + .long 1063366881 + .long 2488333367 + .long 3206760542 + .long 3134826447 + .long 3208438003 + .long 3921389429 + .long 1068891579 + .long 3647185164 + .long 1011802818 + .long 0 + .long 1072693248 + .long 3847531748 + .long 3214759425 + .long 2484055616 + .long 1005679197 + .long 0 + .long 1070596096 + .long 2714982805 + .long 1068856732 + .long 2649074978 + .long 3212280611 + .long 4275478210 + .long 1066855031 + .long 2325700054 + .long 3209556212 + .long 3568629394 + .long 1063361434 + .long 1419097007 + .long 3206599479 + .long 3667282369 + .long 3208404843 + .long 2134057426 + .long 1068685692 + .long 1285458442 + .long 1011513657 + .long 0 + .long 1072693248 + .long 4111272116 + .long 3214484558 + .long 3215369808 + .long 3153450047 + .long 0 + .long 1070596096 + .long 1892298670 + .long 1068854538 + .long 4017792039 + .long 3212059661 + .long 3825916209 + .long 1066852238 + .long 1674419437 + .long 3209273590 + .long 2761556401 + .long 1063356717 + .long 4123887123 + .long 3206334117 + .long 39803485 + .long 3207166447 + .long 693450846 + .long 1068460666 + .long 3218699017 + .long 1011224495 + .long 0 + .long 1072693248 + .long 1769817487 + .long 3214209791 + .long 226900428 + .long 3157084142 + .long 0 + .long 1070596096 + .long 3790025843 + .long 1068852682 + .long 2975452701 + .long 3211839091 + .long 2074002222 + .long 1066849878 + .long 2835406423 + .long 3208992033 + .long 2160688582 + .long 1063352737 + .long 438342636 + .long 3206016666 + .long 598064701 + .long 3205441692 + .long 1413754136 + .long 1068048891 + .long 856972295 + .long 1010935334 + .long 0 + .long 1072693248 + .long 2796861084 + .long 3213935106 + .long 4160910146 + .long 1008936729 + .long 0 + .long 1070596096 + .long 1822957307 + .long 1068851165 + .long 2426092900 + .long 3211449386 + .long 1181651297 + .long 1066847949 + .long 11113416 + .long 3208711363 + .long 2350522541 + .long 1063349490 + .long 1110749705 + .long 3205700769 + .long 1529834450 + .long 3204806002 + .long 2134057426 + .long 1067637116 + .long 1285458442 + .long 1010465081 + .long 0 + .long 1072693248 + .long 766684177 + .long 3213435536 + .long 4183922317 + .long 3156428395 + .long 0 + .long 1070596096 + .long 2709169804 + .long 1068849985 + .long 2562652885 + .long 3211009382 + .long 194304310 + .long 1066846450 + .long 285423324 + .long 3208220240 + .long 4164698302 + .long 1063346958 + .long 490316583 + .long 3205276877 + .long 1161999017 + .long 1059948714 + .long 1413754136 + .long 1067000315 + .long 856972295 + .long 1009886758 + .long 0 + .long 1072693248 + .long 1373484687 + .long 3212886398 + .long 3463806808 + .long 3156987378 + .long 0 + .long 1070596096 + .long 699034059 + .long 1068849143 + .long 4196075177 + .long 3210399801 + .long 3624794075 + .long 1066845379 + .long 1212360239 + .long 3207661374 + .long 4225594870 + .long 1063345136 + .long 4142831282 + .long 3204654696 + .long 3419780486 + .long 1061860029 + .long 1413754136 + .long 1065951739 + .long 856972295 + .long 1008838182 + .long 0 + .long 1072693248 + .long 1048210722 + .long 3211837789 + .long 322286546 + .long 3154320084 + .long 0 + .long 1070596096 + .long 3344097458 + .long 1068848637 + .long 4078525744 + .long 3209350973 + .long 4268457311 + .long 1066844737 + .long 1752199129 + .long 3206612445 + .long 2933973771 + .long 1063344076 + .long 1552329397 + .long 3203604713 + .long 4286470131 + .long 1060555865 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1070596096 + .long 1431655765 + .long 1068848469 + .long 0 + .long 0 + .long 381986942 + .long 1066844524 + .long 0 + .long 0 + .long 3364860459 + .long 1063343704 + .long 0 + .long 0 + .long 3669941704 + .long 1061551801 + .long 1413754136 + .long 3213435387 + .long 856972295 + .long 3156321830 + .long 0 + .long 1072693248 + .long 1048210722 + .long 1064354141 + .long 310222654 + .long 1006836436 + .long 0 + .long 1070596096 + .long 3344097458 + .long 1068848637 + .long 4078525744 + .long 1061867325 + .long 4268457311 + .long 1066844737 + .long 1752199185 + .long 1059128797 + .long 2933974085 + .long 1063344076 + .long 1541627965 + .long 1056121065 + .long 4213857106 + .long 1060555865 + .long 1413754136 + .long 3214483963 + .long 856972295 + .long 3157370406 + .long 0 + .long 1072693248 + .long 1373484687 + .long 1065402750 + .long 3463778643 + .long 1009503730 + .long 0 + .long 1070596096 + .long 699034059 + .long 1068849143 + .long 4196075177 + .long 1062916153 + .long 3624794075 + .long 1066845379 + .long 1212360238 + .long 1060177726 + .long 4225594899 + .long 1063345136 + .long 4143059094 + .long 1057171048 + .long 3416473992 + .long 1061860029 + .long 2134057426 + .long 3215120764 + .long 1285458442 + .long 3157948729 + .long 0 + .long 1072693248 + .long 766684177 + .long 1065951888 + .long 4184103028 + .long 1008944747 + .long 0 + .long 1070596096 + .long 2709169804 + .long 1068849985 + .long 2562652885 + .long 1063525734 + .long 194304310 + .long 1066846450 + .long 285423316 + .long 1060736592 + .long 4164698149 + .long 1063346958 + .long 492080240 + .long 1057793229 + .long 1233082996 + .long 1059948714 + .long 1413754136 + .long 3215532539 + .long 856972295 + .long 3158418982 + .long 0 + .long 1072693248 + .long 2796861084 + .long 1066451458 + .long 4163800696 + .long 3156420377 + .long 0 + .long 1070596096 + .long 1822957307 + .long 1068851165 + .long 2426092900 + .long 1063965738 + .long 1181651297 + .long 1066847949 + .long 11113467 + .long 1061227715 + .long 2350524377 + .long 1063349490 + .long 1099629520 + .long 1058217121 + .long 647421766 + .long 3204806003 + .long 693450846 + .long 3215944314 + .long 3218699017 + .long 3158708143 + .long 0 + .long 1072693248 + .long 1769817487 + .long 1066726143 + .long 226750770 + .long 1009600494 + .long 0 + .long 1070596096 + .long 3790025843 + .long 1068852682 + .long 2975452701 + .long 1064355443 + .long 2074002222 + .long 1066849878 + .long 2835406424 + .long 1061508385 + .long 2160688720 + .long 1063352737 + .long 438143169 + .long 1058533018 + .long 848462310 + .long 3205441692 + .long 2134057426 + .long 3216169340 + .long 1285458442 + .long 3158997305 + .long 0 + .long 1072693248 + .long 4111272116 + .long 1067000910 + .long 3213429568 + .long 1005966399 + .long 0 + .long 1070596096 + .long 1892298670 + .long 1068854538 + .long 4017792039 + .long 1064576013 + .long 3825916209 + .long 1066852238 + .long 1674419438 + .long 1061789942 + .long 2761556545 + .long 1063356717 + .long 4123711083 + .long 1058850469 + .long 104595699 + .long 3207166447 + .long 3921389429 + .long 3216375227 + .long 3647185164 + .long 3159286466 + .long 0 + .long 1072693248 + .long 3847531748 + .long 1067275777 + .long 2487971824 + .long 3153162845 + .long 0 + .long 1070596096 + .long 2714982805 + .long 1068856732 + .long 2649074978 + .long 1064796963 + .long 4275478210 + .long 1066855031 + .long 2325700056 + .long 1062072564 + .long 3568629551 + .long 1063361434 + .long 1418922081 + .long 1059115831 + .long 3702148884 + .long 3208404843 + .long 1413754136 + .long 3216581115 + .long 856972295 + .long 3159467558 + .long 0 + .long 1072693248 + .long 1858778712 + .long 1067500564 + .long 554450480 + .long 3155137140 + .long 0 + .long 1070596096 + .long 378217452 + .long 1068859266 + .long 2507068679 + .long 1065018356 + .long 2446302718 + .long 1066858259 + .long 1361087112 + .long 1062281960 + .long 761263211 + .long 1063366881 + .long 2488165471 + .long 1059276894 + .long 3156241770 + .long 3208438003 + .long 3201086139 + .long 3216787002 + .long 4185319304 + .long 3159612138 + .long 0 + .long 1072693248 + .long 1154356116 + .long 1067638122 + .long 1840130764 + .long 1011613559 + .long 0 + .long 1070596096 + .long 2308597781 + .long 1068862139 + .long 4143524575 + .long 1065240256 + .long 2850915343 + .long 1066861923 + .long 1191668406 + .long 1062424608 + .long 2952843813 + .long 1063373033 + .long 3172428186 + .long 1059439784 + .long 2686776959 + .long 1061237060 + .long 693450846 + .long 3216992890 + .long 3218699017 + .long 3159756719 + .long 0 + .long 1072693248 + .long 3481201957 + .long 1067775754 + .long 1635996196 + .long 1010226051 + .long 0 + .long 1070596096 + .long 3471360849 + .long 1068865353 + .long 2600335524 + .long 1065407972 + .long 2613792462 + .long 1066866026 + .long 3847698425 + .long 1062568061 + .long 663967590 + .long 1063380003 + .long 493016801 + .long 1059603471 + .long 1131084659 + .long 3207199264 + .long 3387875073 + .long 3217114972 + .long 3168927931 + .long 1013177797 + .long 0 + .long 1072693248 + .long 1865079417 + .long 1067913470 + .long 2938003329 + .long 3158834385 + .long 0 + .long 1070596096 + .long 3552516355 + .long 1068868909 + .long 294617109 + .long 1065519527 + .long 76221622 + .long 1066870571 + .long 3376425737 + .long 1062712413 + .long 2723275461 + .long 1063387705 + .long 3315136619 + .long 1059769223 + .long 3585984604 + .long 3207679867 + .long 2134057426 + .long 3217217916 + .long 1285458442 + .long 3160045881 + .long 0 + .long 1072693248 + .long 2319612510 + .long 1068051277 + .long 1111303258 + .long 1011405047 + .long 0 + .long 1070596096 + .long 2666415304 + .long 1068872808 + .long 2071510147 + .long 1065631432 + .long 3395467108 + .long 1066875559 + .long 2423946865 + .long 1062857757 + .long 80612341 + .long 1063396131 + .long 2657457026 + .long 1059937281 + .long 2998464421 + .long 1061836610 + .long 880239780 + .long 3217320860 + .long 4135548218 + .long 1013033216 + .long 0 + .long 1072693248 + .long 2381996637 + .long 1068189184 + .long 639224640 + .long 3156016241 + .long 0 + .long 1070596096 + .long 1358563144 + .long 1068877051 + .long 2925458633 + .long 1065743721 + .long 492833071 + .long 1066880996 + .long 4104628456 + .long 1063004187 + .long 3054991518 + .long 1063405423 + .long 2594252722 + .long 1060106718 + .long 2125241622 + .long 3208479772 + .long 3921389429 + .long 3217423803 + .long 3647185164 + .long 3160335042 + .long 0 + .long 1072693248 + .long 4008519973 + .long 1068327199 + .long 1156786808 + .long 1009518917 + .long 0 + .long 1070596096 + .long 608713188 + .long 1068881639 + .long 3200221055 + .long 1065856427 + .long 2024185290 + .long 1066886883 + .long 3737414605 + .long 1063151800 + .long 4102026005 + .long 1063415403 + .long 3274311301 + .long 1060194804 + .long 4290805031 + .long 1061910091 + .long 2667571783 + .long 3217526747 + .long 1614402419 + .long 1012852856 + .long 0 + .long 1072693248 + .long 700360492 + .long 1068465332 + .long 4067897658 + .long 1010826293 + .long 0 + .long 1070596096 + .long 1834243786 + .long 1068886573 + .long 92010622 + .long 1065969584 + .long 2733460853 + .long 1066893225 + .long 3349627764 + .long 1063278378 + .long 2326014613 + .long 1063426279 + .long 2491557128 + .long 1060281989 + .long 2183550903 + .long 3208108974 + .long 1413754136 + .long 3217629691 + .long 856972295 + .long 3160516134 + .long 0 + .long 1072693248 + .long 3789571175 + .long 1068551266 + .long 2061680020 + .long 1011318877 + .long 0 + .long 1070596096 + .long 2598855658 + .long 1068891855 + .long 628750565 + .long 1066083224 + .long 2954249465 + .long 1066900026 + .long 1468236324 + .long 1063353514 + .long 3701994745 + .long 1063437912 + .long 310421258 + .long 1060370725 + .long 429301190 + .long 3207421006 + .long 159936490 + .long 3217732635 + .long 3547642993 + .long 1012563694 + .long 0 + .long 1072693248 + .long 2781619933 + .long 1068620462 + .long 3145355490 + .long 3159447420 + .long 0 + .long 1070596096 + .long 911495412 + .long 1068897487 + .long 290976546 + .long 1066197382 + .long 33241894 + .long 1066907291 + .long 977031819 + .long 1063429389 + .long 119357612 + .long 1063450345 + .long 1846248792 + .long 1060461000 + .long 4282034711 + .long 1061269448 + .long 3201086139 + .long 3217835578 + .long 4185319304 + .long 3160660714 + .long 0 + .long 1072693248 + .long 2901633254 + .long 1068689729 + .long 2788220944 + .long 3156803404 + .long 0 + .long 1070596096 + .long 3820542338 + .long 1068903469 + .long 288942435 + .long 1066312092 + .long 1237884341 + .long 1066915023 + .long 1606294444 + .long 1063506054 + .long 223992191 + .long 1063463656 + .long 1499707196 + .long 1060552730 + .long 3415844307 + .long 1060053511 + .long 1947268493 + .long 3217938522 + .long 1185916272 + .long 1012274533 + .long 0 + .long 1072693248 + .long 1224261120 + .long 1068759072 + .long 3122469562 + .long 1011547422 + .long 0 + .long 1070596096 + .long 1648557593 + .long 1068909805 + .long 1683250226 + .long 1066414590 + .long 2306165388 + .long 1066923228 + .long 2600821843 + .long 1063583561 + .long 3406795366 + .long 1063477798 + .long 3582359528 + .long 1060646197 + .long 3206340638 + .long 1061038571 + .long 693450846 + .long 3218041466 + .long 3218699017 + .long 3160805295 + .long 0 + .long 1072693248 + .long 3508967486 + .long 1068828494 + .long 3021154406 + .long 3159453198 + .long 0 + .long 1070596096 + .long 2356881417 + .long 1068916495 + .long 2655870529 + .long 1066472549 + .long 352865498 + .long 1066931912 + .long 3008575053 + .long 1063661963 + .long 2622089007 + .long 1063492845 + .long 3834912888 + .long 1060741366 + .long 1532107502 + .long 3207511002 + .long 4014783896 + .long 3218112076 + .long 3119156846 + .long 1011985371 + .long 0 + .long 1072693248 + .long 2730856872 + .long 1068898001 + .long 4254304408 + .long 3157194802 + .long 0 + .long 1070596096 + .long 1486032260 + .long 1068923542 + .long 1824674436 + .long 1066530837 + .long 2488677748 + .long 1066941079 + .long 1925770461 + .long 1063741314 + .long 2531500863 + .long 1063508710 + .long 3007508602 + .long 1060838619 + .long 1003260451 + .long 1061806090 + .long 3387875073 + .long 3218163548 + .long 3168927931 + .long 1014226373 + .long 0 + .long 1072693248 + .long 561239310 + .long 1068967597 + .long 210518352 + .long 1008717513 + .long 0 + .long 1070596096 + .long 3636030687 + .long 1068930947 + .long 3167463735 + .long 1066589471 + .long 73152643 + .long 1066950737 + .long 3108019154 + .long 1063821668 + .long 2100498394 + .long 1063525559 + .long 282708402 + .long 1060937705 + .long 2568921764 + .long 3207605450 + .long 2760966249 + .long 3218215020 + .long 1958126117 + .long 3162287979 + .long 0 + .long 1072693248 + .long 3078460826 + .long 1069037285 + .long 4285079825 + .long 1011989966 + .long 0 + .long 1070596096 + .long 997373752 + .long 1068938714 + .long 3045840714 + .long 1066648470 + .long 3110377520 + .long 1066960890 + .long 2323415564 + .long 1063903082 + .long 18309497 + .long 1063543250 + .long 551125427 + .long 1061039122 + .long 257413032 + .long 1061811122 + .long 2134057426 + .long 3218266492 + .long 1285458442 + .long 3161094457 + .long 0 + .long 1072693248 + .long 3593905368 + .long 1069107071 + .long 2989245764 + .long 3159385032 + .long 0 + .long 1070596096 + .long 3421947019 + .long 1068946843 + .long 3144465174 + .long 1066707852 + .long 1618007405 + .long 1066971547 + .long 584787122 + .long 1063985613 + .long 1465845750 + .long 1063561956 + .long 939979596 + .long 1061142667 + .long 1773905530 + .long 3204506663 + .long 1507148603 + .long 3218317964 + .long 1086374101 + .long 1010938257 + .long 0 + .long 1072693248 + .long 4132779814 + .long 1069176959 + .long 3895881848 + .long 3159710159 + .long 0 + .long 1070596096 + .long 4069764223 + .long 1068955338 + .long 1936654463 + .long 1066767636 + .long 27137259 + .long 1066982714 + .long 112447739 + .long 1064069319 + .long 3681308850 + .long 1063581561 + .long 3611917496 + .long 1061203836 + .long 2190408434 + .long 1061868473 + .long 880239780 + .long 3218369436 + .long 4135548218 + .long 1014081792 + .long 0 + .long 1072693248 + .long 2555242223 + .long 1069246954 + .long 1132401098 + .long 3159833783 + .long 0 + .long 1070596096 + .long 890626350 + .long 1068964202 + .long 3331100648 + .long 1066827840 + .long 30508518 + .long 1066994398 + .long 397665884 + .long 1064154260 + .long 1048931375 + .long 1063602233 + .long 4152525330 + .long 1061258067 + .long 71067649 + .long 3208005790 + .long 253330956 + .long 3218420908 + .long 991505830 + .long 3162432560 + .long 0 + .long 1072693248 + .long 1152452440 + .long 1069317060 + .long 2988872515 + .long 3159430464 + .long 0 + .long 1070596096 + .long 926263936 + .long 1068973436 + .long 3845070713 + .long 1066888484 + .long 626397172 + .long 1067006607 + .long 2777085683 + .long 1064240497 + .long 2172777379 + .long 1063623822 + .long 3188733172 + .long 1061313738 + .long 258986845 + .long 1062033866 + .long 3921389429 + .long 3218472379 + .long 3647185164 + .long 3161383618 + .long 0 + .long 1072693248 + .long 2357811071 + .long 1069387281 + .long 1815523692 + .long 1009992944 + .long 0 + .long 1070596096 + .long 3138003653 + .long 1068983043 + .long 1253835798 + .long 1066949588 + .long 2444914170 + .long 1067019349 + .long 1113961907 + .long 1064316367 + .long 1725681937 + .long 1063646503 + .long 2521427730 + .long 1061370759 + .long 2475375033 + .long 1061668474 + .long 3294480606 + .long 3218523851 + .long 1489607747 + .long 1001838107 + .long 0 + .long 1072693248 + .long 163325898 + .long 1069457623 + .long 272534188 + .long 1011389069 + .long 0 + .long 1070596096 + .long 2709640876 + .long 1068993027 + .long 3241569416 + .long 1067011170 + .long 3499770285 + .long 1067032633 + .long 2428916378 + .long 1064360877 + .long 796870323 + .long 1063670282 + .long 2401385265 + .long 1061429237 + .long 435854613 + .long 3207953615 + .long 2667571783 + .long 3218575323 + .long 1614402419 + .long 1013901432 + .long 0 + .long 1072693248 + .long 1600848691 + .long 1069528089 + .long 3799012648 + .long 1011342217 + .long 0 + .long 1070596096 + .long 3940625627 + .long 1069003390 + .long 1694054617 + .long 1067073252 + .long 3525212904 + .long 1067046468 + .long 3400170401 + .long 1064406132 + .long 2025409820 + .long 1063695095 + .long 1861695260 + .long 1061489337 + .long 2071083481 + .long 1058280175 + .long 2040662960 + .long 3218626795 + .long 4270081753 + .long 1014949642 + .long 0 + .long 1072693248 + .long 2636871548 + .long 1069573102 + .long 3635909220 + .long 1011750791 + .long 0 + .long 1070596096 + .long 3074865967 + .long 1069014136 + .long 2827594877 + .long 1067135853 + .long 4018616278 + .long 1067060863 + .long 3744630852 + .long 1064452166 + .long 967547267 + .long 1063721046 + .long 1523268212 + .long 1061551058 + .long 308558327 + .long 1057912410 + .long 1413754136 + .long 3218678267 + .long 856972295 + .long 3161564710 + .long 0 + .long 1072693248 + .long 2829232582 + .long 1069608467 + .long 1037842028 + .long 3159896230 + .long 0 + .long 1070596096 + .long 1194701220 + .long 1069025268 + .long 1485063562 + .long 1067198995 + .long 3996610205 + .long 1067075828 + .long 2865183303 + .long 1064499014 + .long 2185691567 + .long 1063748117 + .long 435906278 + .long 1061614535 + .long 1590730193 + .long 1061922957 + .long 786845313 + .long 3218729739 + .long 627570489 + .long 3158416059 + .long 0 + .long 1072693248 + .long 850612498 + .long 1069643902 + .long 3957836518 + .long 3160223109 + .long 0 + .long 1070596096 + .long 4230382869 + .long 1069036788 + .long 2678394493 + .long 1067262698 + .long 42048419 + .long 1067091374 + .long 61549345 + .long 1064546712 + .long 3326101021 + .long 1063776440 + .long 377176219 + .long 1061679763 + .long 1587637306 + .long 3206122484 + .long 159936490 + .long 3218781211 + .long 3547642993 + .long 1013612270 + .long 0 + .long 1072693248 + .long 2707383656 + .long 1069679408 + .long 554608849 + .long 1013037903 + .long 0 + .long 1070596096 + .long 1495139838 + .long 1069048702 + .long 183291521 + .long 1067326985 + .long 3540584774 + .long 1067107509 + .long 3317896890 + .long 1064595295 + .long 3844035522 + .long 1063805952 + .long 3695032775 + .long 1061746922 + .long 3749017783 + .long 3207727795 + .long 3827994963 + .long 3218832682 + .long 941734744 + .long 1014805062 + .long 0 + .long 1072693248 + .long 1615317960 + .long 1069714989 + .long 1400849280 + .long 3154963122 + .long 0 + .long 1070596096 + .long 55251407 + .long 1069061012 + .long 2380564598 + .long 1067391876 + .long 2078095393 + .long 1067124247 + .long 3759475360 + .long 1064644803 + .long 800747683 + .long 1063836662 + .long 3361780990 + .long 1061816118 + .long 3647588455 + .long 1062249457 + .long 3201086139 + .long 3218884154 + .long 4185319304 + .long 3161709290 + .long 0 + .long 1072693248 + .long 3772940467 + .long 1069750646 + .long 3998164292 + .long 3160831254 + .long 0 + .long 1070596096 + .long 3265990537 + .long 1069073721 + .long 3279971426 + .long 1067453881 + .long 2447085124 + .long 1067141598 + .long 1649985592 + .long 1064695275 + .long 3334399538 + .long 1063868754 + .long 454991464 + .long 1061887337 + .long 2110827584 + .long 3204215126 + .long 2574177316 + .long 3218935626 + .long 2889755040 + .long 3159466096 + .long 0 + .long 1072693248 + .long 2595342993 + .long 1069786383 + .long 1222183174 + .long 1011927611 + .long 0 + .long 1070596096 + .long 2192927435 + .long 1069086835 + .long 1645422722 + .long 1067486966 + .long 648269084 + .long 1067159575 + .long 2319737250 + .long 1064746750 + .long 1121494052 + .long 1063902126 + .long 897314780 + .long 1061960786 + .long 2655964904 + .long 1060259181 + .long 1947268493 + .long 3218987098 + .long 1185916272 + .long 1013323109 + .long 0 + .long 1072693248 + .long 192708373 + .long 1069822202 + .long 1013565611 + .long 1013125469 + .long 0 + .long 1070596096 + .long 1393443609 + .long 1069100357 + .long 3282624502 + .long 1067520387 + .long 3423023493 + .long 1067178189 + .long 3539283610 + .long 1064799270 + .long 1358653364 + .long 1063936902 + .long 1383848540 + .long 1062036512 + .long 1203341716 + .long 3207439782 + .long 1320359670 + .long 3219038570 + .long 1908355032 + .long 1014660481 + .long 0 + .long 1072693248 + .long 3079104278 + .long 1069858104 + .long 2593237048 + .long 1012204550 + .long 0 + .long 1070596096 + .long 1749059456 + .long 1069114291 + .long 3316773722 + .long 1067554157 + .long 2555119580 + .long 1067197455 + .long 59306268 + .long 1064852879 + .long 1944001714 + .long 1063973040 + .long 3607967027 + .long 1062114688 + .long 1550745665 + .long 1061515569 + .long 693450846 + .long 3219090042 + .long 3218699017 + .long 3161853871 + .long 0 + .long 1072693248 + .long 701484222 + .long 1069894094 + .long 1189134214 + .long 3161032728 + .long 0 + .long 1070596096 + .long 478132658 + .long 1069128642 + .long 2223654597 + .long 1067588288 + .long 706118045 + .long 1067217386 + .long 1066336370 + .long 1064907619 + .long 3310393859 + .long 1064010705 + .long 1920668857 + .long 1062195336 + .long 1238710124 + .long 3206743753 + .long 33271012 + .long 3219134917 + .long 2269574412 + .long 1015853455 + .long 0 + .long 1072693248 + .long 4098310206 + .long 1069930172 + .long 678867859 + .long 3161222246 + .long 0 + .long 1070596096 + .long 4033975882 + .long 1069143413 + .long 1577500332 + .long 1067622792 + .long 2904242360 + .long 1067237995 + .long 383406633 + .long 1064963537 + .long 511745140 + .long 1064049810 + .long 3472404675 + .long 1062243075 + .long 3498625096 + .long 1061932631 + .long 4014783896 + .long 3219160652 + .long 3119156846 + .long 1013033947 + .long 0 + .long 1072693248 + .long 2953879462 + .long 1069966343 + .long 651183718 + .long 1012253676 + .long 0 + .long 1070596096 + .long 2348802841 + .long 1069158611 + .long 4095204310 + .long 1067657681 + .long 3730066556 + .long 1067259298 + .long 2541564470 + .long 1065020679 + .long 1012137447 + .long 1064090541 + .long 3007493277 + .long 1062286104 + .long 268143184 + .long 1058732349 + .long 3701329484 + .long 3219186388 + .long 2857479637 + .long 3162758049 + .long 0 + .long 1072693248 + .long 4257115870 + .long 1070002608 + .long 39728604 + .long 1013010275 + .long 0 + .long 1070596096 + .long 3207767847 + .long 1069174239 + .long 797077063 + .long 1067692970 + .long 287980713 + .long 1067281311 + .long 1596666478 + .long 1065079095 + .long 2775385 + .long 1064132847 + .long 3823518174 + .long 1062330592 + .long 3096591665 + .long 1060290467 + .long 3387875073 + .long 3219212124 + .long 3168927931 + .long 1015274949 + .long 0 + .long 1072693248 + .long 2240974125 + .long 1070038971 + .long 3786178918 + .long 3160482292 + .long 0 + .long 1070596096 + .long 2199065489 + .long 1069190303 + .long 1118792048 + .long 1067728670 + .long 875809397 + .long 1067304048 + .long 2927616918 + .long 1065138834 + .long 3494337743 + .long 1064176822 + .long 4219965650 + .long 1062376593 + .long 4246297104 + .long 1060574506 + .long 3074420661 + .long 3219237860 + .long 1873363667 + .long 3160515403 + .long 0 + .long 1072693248 + .long 4156511795 + .long 1070075433 + .long 1791783009 + .long 1013446896 + .long 0 + .long 1070596096 + .long 4204226438 + .long 1069206807 + .long 2895376501 + .long 1067764795 + .long 3600185398 + .long 1067327526 + .long 2087275384 + .long 1065199949 + .long 347703954 + .long 1064222543 + .long 301495246 + .long 1062424178 + .long 908235914 + .long 3206713553 + .long 2760966249 + .long 3219263596 + .long 1958126117 + .long 3163336555 + .long 0 + .long 1072693248 + .long 212483252 + .long 1070111999 + .long 3496985219 + .long 3161099600 + .long 0 + .long 1070596096 + .long 1939348811 + .long 1069223758 + .long 1001569645 + .long 1067801360 + .long 764537997 + .long 1067351764 + .long 2326690580 + .long 1065262493 + .long 60750552 + .long 1064270005 + .long 2745665091 + .long 1062473435 + .long 1583079917 + .long 1060807371 + .long 2447511838 + .long 3219289332 + .long 3841595606 + .long 1014371319 + .long 0 + .long 1072693248 + .long 2234510834 + .long 1070148669 + .long 1077829152 + .long 1008793063 + .long 0 + .long 1070596096 + .long 1741599179 + .long 1069241160 + .long 288887764 + .long 1067838378 + .long 438316229 + .long 1067376778 + .long 2074161178 + .long 1065326522 + .long 2132352506 + .long 1064311981 + .long 321000208 + .long 1062524429 + .long 2575912902 + .long 1061549566 + .long 2134057426 + .long 3219315068 + .long 1285458442 + .long 3162143033 + .long 0 + .long 1072693248 + .long 719981842 + .long 1070185448 + .long 3396798827 + .long 3160592662 + .long 0 + .long 1070596096 + .long 2111724540 + .long 1069259019 + .long 2754706540 + .long 1067875863 + .long 790037588 + .long 1067402587 + .long 4097286835 + .long 1065372654 + .long 2918356845 + .long 1064337614 + .long 980543769 + .long 1062577230 + .long 1876925371 + .long 3204685716 + .long 1820603015 + .long 3219340804 + .long 3236194699 + .long 1015708874 + .long 0 + .long 1072693248 + .long 3497432648 + .long 1070222337 + .long 3403980908 + .long 1011735702 + .long 0 + .long 1070596096 + .long 2322009458 + .long 1069277341 + .long 3303184211 + .long 1067913831 + .long 3079386980 + .long 1067429210 + .long 3158396776 + .long 1065406241 + .long 500122450 + .long 1064364204 + .long 3226667103 + .long 1062631956 + .long 1843492548 + .long 1062167069 + .long 1507148603 + .long 3219366540 + .long 1086374101 + .long 1011986833 + .long 0 + .long 1072693248 + .long 1371601499 + .long 1070259341 + .long 3050542448 + .long 1012183888 + .long 0 + .long 1070596096 + .long 2434996648 + .long 1069296132 + .long 2688049294 + .long 1067952297 + .long 1586964757 + .long 1067453518 + .long 2102156419 + .long 1065440660 + .long 2974407256 + .long 1064391847 + .long 249545820 + .long 1062688662 + .long 115553579 + .long 1061128535 + .long 1193694191 + .long 3219392276 + .long 1890859349 + .long 3162902630 + .long 0 + .long 1072693248 + .long 2488075121 + .long 1070296461 + .long 1856289345 + .long 3161251229 + .long 0 + .long 1070596096 + .long 3322930631 + .long 1069315398 + .long 3277607933 + .long 1067991276 + .long 130253043 + .long 1067467675 + .long 1057196725 + .long 1065475943 + .long 3278604818 + .long 1064420531 + .long 4197429763 + .long 1062747460 + .long 1630708049 + .long 1062399550 + .long 880239780 + .long 3219418012 + .long 4135548218 + .long 1015130368 + .long 0 + .long 1072693248 + .long 2273547475 + .long 1070333701 + .long 4162052844 + .long 1011378450 + .long 0 + .long 1070596096 + .long 2392983423 + .long 1069335146 + .long 526970473 + .long 1068030785 + .long 628322840 + .long 1067482270 + .long 924033682 + .long 1065512123 + .long 854746912 + .long 1064450346 + .long 4004963071 + .long 1062808438 + .long 1468070334 + .long 1060747995 + .long 566785368 + .long 3219443748 + .long 2301849815 + .long 3161093726 + .long 0 + .long 1072693248 + .long 620845047 + .long 1070371064 + .long 314567191 + .long 1013284227 + .long 0 + .long 1070596096 + .long 2198158867 + .long 1069355382 + .long 222370857 + .long 1068070839 + .long 4028822361 + .long 1067497314 + .long 3610397327 + .long 1065549234 + .long 171354847 + .long 1064481283 + .long 693369877 + .long 1062871714 + .long 164532117 + .long 1061632559 + .long 253330956 + .long 3219469484 + .long 991505830 + .long 3163481136 + .long 0 + .long 1072693248 + .long 1894214069 + .long 1070408552 + .long 2182661802 + .long 1012022503 + .long 0 + .long 1070596096 + .long 1869133310 + .long 1069376113 + .long 1368144043 + .long 1068111455 + .long 242783364 + .long 1067512821 + .long 3692616565 + .long 1065587313 + .long 2890683560 + .long 1064513419 + .long 2407947124 + .long 1062937380 + .long 3803218812 + .long 1060561671 + .long 4234843841 + .long 3219495219 + .long 1479868884 + .long 1014082158 + .long 0 + .long 1072693248 + .long 2049842017 + .long 1070446169 + .long 2491067638 + .long 3161241370 + .long 0 + .long 1070596096 + .long 1431833764 + .long 1069397346 + .long 551048935 + .long 1068152651 + .long 2575917112 + .long 1067528800 + .long 1559777140 + .long 1065626397 + .long 743322322 + .long 1064546764 + .long 1974991899 + .long 1063005565 + .long 3459002328 + .long 1062460308 + .long 3921389429 + .long 3219520955 + .long 3647185164 + .long 3162432194 + .long 0 + .long 1072693248 + .long 1526324265 + .long 1070483918 + .long 4056333712 + .long 3157795638 + .long 0 + .long 1070596096 + .long 1830915900 + .long 1069419088 + .long 602185706 + .long 1068194444 + .long 555210277 + .long 1067545266 + .long 3690136761 + .long 1065666523 + .long 4115917104 + .long 1064581405 + .long 589230666 + .long 1063076369 + .long 3448584873 + .long 1062382364 + .long 3607935018 + .long 3219546691 + .long 4202814986 + .long 1015564293 + .long 0 + .long 1072693248 + .long 955408364 + .long 1070521802 + .long 2659929592 + .long 3160779467 + .long 0 + .long 1070596096 + .long 659174847 + .long 1069441347 + .long 2081794994 + .long 1068236852 + .long 2956616392 + .long 1067562230 + .long 1461867065 + .long 1065707733 + .long 879427925 + .long 1064617384 + .long 209598570 + .long 1063149928 + .long 59348277 + .long 1061529630 + .long 3294480606 + .long 3219572427 + .long 1489607747 + .long 1002886683 + .long 0 + .long 1072693248 + .long 1167858038 + .long 1070559824 + .long 2180017056 + .long 1010873776 + .long 0 + .long 1070596096 + .long 772792549 + .long 1069464130 + .long 3356872770 + .long 1068279894 + .long 3524844777 + .long 1067579707 + .long 1521756467 + .long 1065750067 + .long 3931969752 + .long 1064654734 + .long 2908114566 + .long 1063226363 + .long 3520733649 + .long 1061374592 + .long 2981026194 + .long 3219598163 + .long 924239062 + .long 3163047211 + .long 0 + .long 1072693248 + .long 3747221382 + .long 1070597041 + .long 1912303979 + .long 1014066411 + .long 0 + .long 1070596096 + .long 1727686788 + .long 1069487445 + .long 681802874 + .long 1068323590 + .long 2531789465 + .long 1067597711 + .long 331202638 + .long 1065793569 + .long 2627596742 + .long 1064693515 + .long 566979200 + .long 1063280948 + .long 2423252998 + .long 1061741710 + .long 2667571783 + .long 3219623899 + .long 1614402419 + .long 1014950008 + .long 0 + .long 1072693248 + .long 4148643959 + .long 1070616195 + .long 2887822437 + .long 1014214935 + .long 0 + .long 1070596096 + .long 4101770849 + .long 1069511300 + .long 1167052501 + .long 1068367958 + .long 2569727718 + .long 1067616256 + .long 1681502493 + .long 1065838283 + .long 3685967929 + .long 1064733780 + .long 2973319878 + .long 1063322263 + .long 474740638 + .long 1062549181 + .long 2354117371 + .long 3219649635 + .long 3512651629 + .long 3161564344 + .long 0 + .long 1072693248 + .long 373017919 + .long 1070635424 + .long 3647199022 + .long 1014660881 + .long 0 + .long 1070596096 + .long 933359764 + .long 1069535705 + .long 1391441088 + .long 1068413019 + .long 53106651 + .long 1067635358 + .long 4157835043 + .long 1065884256 + .long 4055868043 + .long 1064775611 + .long 1529330433 + .long 1063365236 + .long 326078913 + .long 1062325273 + .long 2040662960 + .long 3219675371 + .long 4270081753 + .long 1015998218 + .long 0 + .long 1072693248 + .long 4002124759 + .long 1070654727 + .long 3453343154 + .long 1013423881 + .long 0 + .long 1071644672 + .long 774562305 + .long 3217018021 + .long 377617675 + .long 1068458794 + .long 2495478050 + .long 1067655031 + .long 1508050213 + .long 1065931538 + .long 1921336565 + .long 1064819067 + .long 975923615 + .long 1063409946 + .long 2275792800 + .long 1060505011 + .long 1727208548 + .long 3219701107 + .long 2531251621 + .long 1013613001 + .long 0 + .long 1072693248 + .long 963359913 + .long 1070674109 + .long 2464811476 + .long 3160767877 + .long 0 + .long 1071644672 + .long 1498613974 + .long 3216992493 + .long 4138103782 + .long 1068502123 + .long 2840947366 + .long 1067675293 + .long 209537977 + .long 1065980178 + .long 3590357525 + .long 1064864171 + .long 73959555 + .long 1063456484 + .long 1512178095 + .long 1062390487 + .long 1413754136 + .long 3219726843 + .long 856972295 + .long 3162613286 + .long 0 + .long 0 + .long 0 + .long 3220176896 + .long 1994327296 + .long 1006932657 + .long 0 + .long 1073741824 + .long 0 + .long 0 + .long 266 + .long 3221225472 + .long 1431655956 + .long 1074091349 + .long 2828070733 + .long 3221924522 + .long 268536947 + .long 1074860305 + .long 4220652043 + .long 3222647048 + .long 3597047153 + .long 1075552901 + .long 1100299725 + .long 3219752579 + .long 874467977 + .long 1015419713 + .long 0 + .long 0 + .long 2668510354 + .long 3220126045 + .long 1701998120 + .long 1012206572 + .long 0 + .long 1073741824 + .long 1404962112 + .long 3215492924 + .long 3327263454 + .long 3221125605 + .long 1987673213 + .long 1074008829 + .long 231222583 + .long 3221793459 + .long 1756671652 + .long 1074731884 + .long 3921518330 + .long 3222500748 + .long 2691193109 + .long 1075341426 + .long 786845313 + .long 3219778315 + .long 627570489 + .long 3159464635 + .long 0 + .long 0 + .long 2949191430 + .long 3220076398 + .long 3989126963 + .long 3163096676 + .long 0 + .long 1073741824 + .long 2909112164 + .long 3216503445 + .long 3682557528 + .long 3221031585 + .long 4184421718 + .long 1073932454 + .long 380803270 + .long 3221673930 + .long 3399744364 + .long 1074553823 + .long 3842864962 + .long 3222371390 + .long 748075446 + .long 1075157395 + .long 473390901 + .long 3219804051 + .long 4252586071 + .long 3163191791 + .long 0 + .long 0 + .long 2308259791 + .long 3220027898 + .long 4111771200 + .long 3156765800 + .long 0 + .long 1073741824 + .long 411343470 + .long 3217132228 + .long 3760686807 + .long 3220942979 + .long 4171367426 + .long 1073861688 + .long 1878500541 + .long 3221564765 + .long 108767834 + .long 1074393698 + .long 2824899565 + .long 3222239549 + .long 3321236009 + .long 1074997439 + .long 159936490 + .long 3219829787 + .long 3547642993 + .long 1014660846 + .long 0 + .long 0 + .long 3342355758 + .long 3219980491 + .long 1666924640 + .long 3162031356 + .long 0 + .long 1073741824 + .long 2271288998 + .long 3217480250 + .long 4111284847 + .long 3220859392 + .long 2796272966 + .long 1073796048 + .long 1730314448 + .long 3221464928 + .long 1813001552 + .long 1074249474 + .long 603251437 + .long 3222036157 + .long 3079042443 + .long 1074856525 + .long 4141449374 + .long 3219855522 + .long 1579411055 + .long 3161853506 + .long 0 + .long 0 + .long 166164867 + .long 3219934128 + .long 2304492376 + .long 1012090550 + .long 0 + .long 1073741824 + .long 2798667120 + .long 3217812323 + .long 4203596829 + .long 3220780463 + .long 1473339147 + .long 1073728374 + .long 4243021652 + .long 3221373498 + .long 1638747017 + .long 1074119375 + .long 1512673116 + .long 3221855335 + .long 2338684822 + .long 1074678259 + .long 3827994963 + .long 3219881258 + .long 941734744 + .long 1015853638 + .long 0 + .long 0 + .long 3247184626 + .long 3219888759 + .long 1245319390 + .long 3161909785 + .long 0 + .long 1073741824 + .long 2381906911 + .long 3218104536 + .long 1010924947 + .long 3220705862 + .long 2481381005 + .long 1073615072 + .long 1356661294 + .long 3221289659 + .long 1527070583 + .long 1074001844 + .long 3061693405 + .long 3221694303 + .long 1993154673 + .long 1074463435 + .long 3514540551 + .long 3219906994 + .long 2102765473 + .long 1013034678 + .long 0 + .long 0 + .long 4189730214 + .long 3219844341 + .long 872357632 + .long 3158652168 + .long 0 + .long 1073741824 + .long 760634709 + .long 3218255915 + .long 2067827628 + .long 3220635284 + .long 1386756408 + .long 1073509659 + .long 404552634 + .long 3221199890 + .long 1143062644 + .long 1073895515 + .long 555342338 + .long 3221550657 + .long 3470199450 + .long 1074271418 + .long 3201086139 + .long 3219932730 + .long 4185319304 + .long 3162757866 + .long 0 + .long 0 + .long 719595600 + .long 3219800832 + .long 114970824 + .long 1014660100 + .long 0 + .long 1073741824 + .long 3811788216 + .long 3218400550 + .long 1264738948 + .long 3220568452 + .long 1958933439 + .long 1073411493 + .long 4246310163 + .long 3221058356 + .long 1367842247 + .long 1073799186 + .long 4112596176 + .long 3221422310 + .long 2100954469 + .long 1074105254 + .long 2887631728 + .long 3219958466 + .long 1841088264 + .long 1015275132 + .long 0 + .long 0 + .long 258163604 + .long 3219758190 + .long 3299889334 + .long 3162612005 + .long 0 + .long 1073741824 + .long 2865277319 + .long 3218538798 + .long 3110066496 + .long 3220505109 + .long 723074889 + .long 1073319994 + .long 1618819009 + .long 3220928086 + .long 1176243935 + .long 1073681775 + .long 1223849000 + .long 3221307454 + .long 2369288310 + .long 1073957581 + .long 2574177316 + .long 3219984202 + .long 2889755040 + .long 3160514672 + .long 0 + .long 0 + .long 2079874795 + .long 3219716377 + .long 1885564844 + .long 1014470429 + .long 0 + .long 1073741824 + .long 1656469901 + .long 3218670989 + .long 823761676 + .long 3220445021 + .long 2491445454 + .long 1073234634 + .long 1584341555 + .long 3220808039 + .long 1976688438 + .long 1073523018 + .long 3918313362 + .long 3221183550 + .long 3178717701 + .long 1073829019 + .long 2260722904 + .long 3220009938 + .long 3285965784 + .long 3163336372 + .long 0 + .long 0 + .long 997287281 + .long 3219675358 + .long 3612251184 + .long 3163317056 + .long 0 + .long 1073741824 + .long 3037674984 + .long 3218797431 + .long 2624215131 + .long 3220387969 + .long 464779768 + .long 1073154936 + .long 3700763630 + .long 3220697284 + .long 1200926910 + .long 1073378628 + .long 2934576448 + .long 3220998744 + .long 3287041894 + .long 1073681673 + .long 1947268493 + .long 3220035674 + .long 1185916272 + .long 1014371685 + .long 0 + .long 0 + .long 3978924239 + .long 3219635097 + .long 680771999 + .long 1015720881 + .long 0 + .long 1073741824 + .long 3528982175 + .long 3218918413 + .long 3018376188 + .long 3220333754 + .long 2093086652 + .long 1073080463 + .long 451029217 + .long 3220594987 + .long 1097121537 + .long 1073247142 + .long 2277789243 + .long 3220832617 + .long 149138386 + .long 1073478822 + .long 1633814081 + .long 3220061410 + .long 3941137777 + .long 3162142667 + .long 0 + .long 0 + .long 3860971117 + .long 3219595563 + .long 2891614774 + .long 3163214156 + .long 0 + .long 1073741824 + .long 80822128 + .long 3219034205 + .long 2077635078 + .long 3220282191 + .long 1552870456 + .long 1073010820 + .long 3607700650 + .long 3220500394 + .long 249538439 + .long 1073127265 + .long 2233833083 + .long 3220683068 + .long 2436456793 + .long 1073293556 + .long 1320359670 + .long 3220087146 + .long 1908355032 + .long 1015709057 + .long 0 + .long 0 + .long 343219638 + .long 3219556725 + .long 2238262736 + .long 3161731808 + .long 0 + .long 1072693248 + .long 3768132253 + .long 1071627934 + .long 3895546569 + .long 3220233108 + .long 1613056473 + .long 1072945645 + .long 3409294908 + .long 3220412831 + .long 3138966349 + .long 1073017844 + .long 3799067288 + .long 3220548255 + .long 359470498 + .long 1073133087 + .long 1006905258 + .long 3220112882 + .long 3348558652 + .long 1011988294 + .long 0 + .long 0 + .long 3841229102 + .long 3219518551 + .long 1782820117 + .long 3163516640 + .long 0 + .long 1072693248 + .long 866896685 + .long 1071521786 + .long 2743435231 + .long 3220186348 + .long 3017984361 + .long 1072884608 + .long 1491919678 + .long 3220331688 + .long 1507535811 + .long 1072917857 + .long 1966124974 + .long 3220426562 + .long 381628641 + .long 1072992589 + .long 693450846 + .long 3220138618 + .long 3218699017 + .long 3162902447 + .long 0 + .long 0 + .long 716700048 + .long 3219481016 + .long 1043841701 + .long 3163006458 + .long 0 + .long 1072693248 + .long 1097907398 + .long 1071420120 + .long 3912524876 + .long 3220106631 + .long 4107784306 + .long 1072827408 + .long 937056065 + .long 3220256414 + .long 4128945134 + .long 1072826390 + .long 1032262394 + .long 3220316565 + .long 1825923585 + .long 1072864423 + .long 379996435 + .long 3220164354 + .long 2807708551 + .long 1015130551 + .long 0 + .long 0 + .long 142288477 + .long 3219444091 + .long 1256348500 + .long 1014532780 + .long 0 + .long 1072693248 + .long 925074332 + .long 1071322730 + .long 2134728327 + .long 3220021541 + .long 1886408555 + .long 1072773770 + .long 101893267 + .long 3220186512 + .long 2020085224 + .long 1072742631 + .long 2955803861 + .long 3220217010 + .long 343310816 + .long 1072748161 + .long 33271012 + .long 3220183493 + .long 2269574412 + .long 1016902031 + .long 0 + .long 0 + .long 3684492763 + .long 3219407750 + .long 2905890526 + .long 1015709561 + .long 0 + .long 1072693248 + .long 585640690 + .long 1071229422 + .long 1068301595 + .long 3219940277 + .long 2953900489 + .long 1072723440 + .long 950237889 + .long 3220066167 + .long 109735425 + .long 1072638455 + .long 792610979 + .long 3220076689 + .long 2904190292 + .long 1072594405 + .long 4171511102 + .long 3220196360 + .long 987810900 + .long 1016106563 + .long 0 + .long 0 + .long 681498355 + .long 3219371971 + .long 3542625299 + .long 1015827699 + .long 0 + .long 1072693248 + .long 168222332 + .long 1071140014 + .long 776736583 + .long 3219862604 + .long 2405401100 + .long 1072659128 + .long 430546584 + .long 3219945234 + .long 2974083786 + .long 1072497552 + .long 849442068 + .long 3219912970 + .long 2727451532 + .long 1072409680 + .long 4014783896 + .long 3220209228 + .long 3119156846 + .long 1014082523 + .long 0 + .long 0 + .long 2298773501 + .long 3219336728 + .long 4027807132 + .long 1015090440 + .long 0 + .long 1072693248 + .long 312748411 + .long 1071054335 + .long 2723913091 + .long 3219788303 + .long 3207063211 + .long 1072570353 + .long 1845780128 + .long 3219832588 + .long 752659336 + .long 1072368142 + .long 1097207453 + .long 3219764237 + .long 407427403 + .long 1072246732 + .long 3858056690 + .long 3220222096 + .long 2007897202 + .long 3162431829 + .long 0 + .long 0 + .long 2591355529 + .long 3219302000 + .long 2351326818 + .long 3161908153 + .long 0 + .long 1072693248 + .long 3206845590 + .long 1070972224 + .long 4023349050 + .long 3219717171 + .long 3838822434 + .long 1072486918 + .long 3122427157 + .long 3219727557 + .long 2261703627 + .long 1072249178 + .long 1764870100 + .long 3219628955 + .long 3201802997 + .long 1072093301 + .long 3701329484 + .long 3220234964 + .long 2857479637 + .long 3163806625 + .long 0 + .long 0 + .long 4010047525 + .long 3219267765 + .long 3339891512 + .long 3160072694 + .long 0 + .long 1072693248 + .long 966450668 + .long 1070893532 + .long 803989702 + .long 3219649019 + .long 1934453966 + .long 1072408465 + .long 1455077850 + .long 3219629530 + .long 2709264343 + .long 1072139721 + .long 1918064558 + .long 3219505762 + .long 1476733535 + .long 1071960574 + .long 3544602278 + .long 3220247832 + .long 4139243149 + .long 3164602093 + .long 0 + .long 0 + .long 4270735453 + .long 3219234003 + .long 3565361953 + .long 1015342529 + .long 0 + .long 1072693248 + .long 2915760230 + .long 1070818115 + .long 638580392 + .long 3219583668 + .long 2252948193 + .long 1072334663 + .long 1194731830 + .long 3219537949 + .long 1353002942 + .long 1072038927 + .long 422364789 + .long 3219393446 + .long 3669634446 + .long 1071842023 + .long 3387875073 + .long 3220260700 + .long 3168927931 + .long 1016323525 + .long 0 + .long 0 + .long 419968236 + .long 3219200695 + .long 131828542 + .long 1015961466 + .long 0 + .long 1072693248 + .long 2960267235 + .long 1070745841 + .long 1037049094 + .long 3219520953 + .long 1447436626 + .long 1072265209 + .long 3197232138 + .long 3219452306 + .long 4004685084 + .long 1071946034 + .long 1412816421 + .long 3219290928 + .long 3184738590 + .long 1071740610 + .long 3231147867 + .long 3220273568 + .long 3253690381 + .long 1014950373 + .long 0 + .long 0 + .long 1505561933 + .long 3219167820 + .long 2813885200 + .long 1011162516 + .long 0 + .long 1072693248 + .long 2997217365 + .long 1070676584 + .long 2681788575 + .long 3219460719 + .long 3989126937 + .long 1072199822 + .long 1049115510 + .long 3219372139 + .long 511642058 + .long 1071860360 + .long 4034728051 + .long 3219197246 + .long 1788863965 + .long 1071639550 + .long 3074420661 + .long 3220286436 + .long 1873363667 + .long 3161563979 + .long 0 + .long 0 + .long 2606398711 + .long 3219135361 + .long 2533072598 + .long 3162554073 + .long 0 + .long 1072693248 + .long 2151361100 + .long 1070610226 + .long 1532348096 + .long 3219402822 + .long 408604530 + .long 1072138246 + .long 1039538740 + .long 3219297023 + .long 1234598850 + .long 1071781284 + .long 692507578 + .long 3219094767 + .long 4090315877 + .long 1071451983 + .long 2917693455 + .long 3220299304 + .long 676362605 + .long 3163589663 + .long 0 + .long 0 + .long 3649427950 + .long 3219078282 + .long 4113825640 + .long 3158662193 + .long 0 + .long 1072693248 + .long 2424145432 + .long 1070497215 + .long 2715404890 + .long 3219347125 + .long 2238283673 + .long 1072080240 + .long 1186867211 + .long 3219226571 + .long 660318792 + .long 1071708248 + .long 2091427915 + .long 3218937780 + .long 2591062635 + .long 1071291190 + .long 2760966249 + .long 3220312172 + .long 1958126117 + .long 3164385131 + .long 0 + .long 0 + .long 220675706 + .long 3219014926 + .long 3158451653 + .long 3161723787 + .long 0 + .long 1072693248 + .long 1565030890 + .long 1070375439 + .long 335263687 + .long 3219293502 + .long 419816567 + .long 1072025586 + .long 2098048102 + .long 3219160428 + .long 257229335 + .long 1071636821 + .long 3464457189 + .long 3218793840 + .long 2745923191 + .long 1071158056 + .long 2604239044 + .long 3220325040 + .long 1055077667 + .long 1016540488 + .long 0 + .long 0 + .long 2191706112 + .long 3218952300 + .long 333441366 + .long 3161331348 + .long 0 + .long 1072693248 + .long 3435408456 + .long 1070258830 + .long 487319719 + .long 3219241832 + .long 1713711059 + .long 1071974079 + .long 130753286 + .long 3219068219 + .long 909725130 + .long 1071511974 + .long 2762442367 + .long 3218661715 + .long 932670499 + .long 1071027067 + .long 2447511838 + .long 3220337908 + .long 3841595606 + .long 1015419895 + .long 0 + .long 0 + .long 408840118 + .long 3218890375 + .long 4048072104 + .long 3159354273 + .long 0 + .long 1072693248 + .long 2794370512 + .long 1070147203 + .long 1550993351 + .long 3219192003 + .long 1305093678 + .long 1071925532 + .long 1748211158 + .long 3218951271 + .long 3244212114 + .long 1071396455 + .long 2145666003 + .long 3218540299 + .long 1098451822 + .long 1070891096 + .long 2290784632 + .long 3220350776 + .long 2660353234 + .long 3159463173 + .long 0 + .long 0 + .long 3368427099 + .long 3218829119 + .long 2187864186 + .long 1013587140 + .long 0 + .long 1072693248 + .long 1708021028 + .long 1070040382 + .long 459972195 + .long 3219143910 + .long 3210514347 + .long 1071879770 + .long 955408873 + .long 3218841145 + .long 1911386085 + .long 1071289511 + .long 3563284038 + .long 3218428599 + .long 547420745 + .long 1070790031 + .long 2134057426 + .long 3220363644 + .long 1285458442 + .long 3163191609 + .long 0 + .long 0 + .long 2583490354 + .long 3218768505 + .long 27148750 + .long 3161491985 + .long 0 + .long 1072693248 + .long 2550940470 + .long 1069938201 + .long 2616040293 + .long 3219066585 + .long 2529278955 + .long 1071836633 + .long 2244405849 + .long 3218737335 + .long 2064814127 + .long 1071190460 + .long 1527853251 + .long 3218325722 + .long 354247476 + .long 1070708112 + .long 1977330220 + .long 3220376512 + .long 4071976381 + .long 3164168168 + .long 0 + .long 0 + .long 2390846448 + .long 3218708504 + .long 3510503948 + .long 3161709355 + .long 0 + .long 1072693248 + .long 1208409702 + .long 1069840505 + .long 1006199412 + .long 3218976755 + .long 2504246873 + .long 1071795971 + .long 1040653613 + .long 3218639377 + .long 1713268217 + .long 1071098686 + .long 462276301 + .long 3218230862 + .long 4239163357 + .long 1070603989 + .long 1820603015 + .long 3220389380 + .long 3236194699 + .long 1016757450 + .long 0 + .long 0 + .long 2528366626 + .long 3218649089 + .long 3808712102 + .long 1013396510 + .long 0 + .long 1072693248 + .long 1938261590 + .long 1069747146 + .long 4282399603 + .long 3218889831 + .long 1922568281 + .long 1071757646 + .long 2428166646 + .long 3218546841 + .long 717464824 + .long 1071013623 + .long 2205664075 + .long 3218143293 + .long 1526076492 + .long 1070438229 + .long 1663875809 + .long 3220402248 + .long 3908862373 + .long 1015853820 + .long 0 + .long 0 + .long 2200768388 + .long 3218590234 + .long 302584884 + .long 1014949287 + .long 0 + .long 1072693248 + .long 2338248308 + .long 1069657986 + .long 2617403810 + .long 3218805648 + .long 60078074 + .long 1071721530 + .long 2753634668 + .long 3218459332 + .long 626020946 + .long 1070934758 + .long 25846122 + .long 3218044977 + .long 1123428672 + .long 1070307499 + .long 1507148603 + .long 3220415116 + .long 1086374101 + .long 1013035409 + .long 0 + .long 0 + .long 4158096969 + .long 3218531913 + .long 3224512900 + .long 3160902954 + .long 0 + .long 1072693248 + .long 4240313622 + .long 1069572894 + .long 3745046477 + .long 3218724046 + .long 1955120038 + .long 1071687503 + .long 2661530988 + .long 3218376484 + .long 2615081511 + .long 1070861626 + .long 3172686029 + .long 3217895196 + .long 3468537113 + .long 1070173373 + .long 1350421397 + .long 3220427984 + .long 1218191675 + .long 3162757684 + .long 0 + .long 0 + .long 1606100959 + .long 3218474103 + .long 3385789004 + .long 3161114183 + .long 0 + .long 1072693248 + .long 2255302008 + .long 1069435977 + .long 54085333 + .long 3218644877 + .long 2504974906 + .long 1071655456 + .long 4169947836 + .long 3218297958 + .long 2891827398 + .long 1070793803 + .long 1030744944 + .long 3217756428 + .long 2378245768 + .long 1070036506 + .long 1193694191 + .long 3220440852 + .long 1890859349 + .long 3163951206 + .long 0 + .long 0 + .long 3782220567 + .long 3218416778 + .long 2488119274 + .long 3162237132 + .long 0 + .long 1072693248 + .long 91372748 + .long 1069281344 + .long 318776714 + .long 3218567997 + .long 1791786485 + .long 1071605902 + .long 245863368 + .long 3218223442 + .long 3306699316 + .long 1070730899 + .long 492155895 + .long 3217627699 + .long 504590813 + .long 1069961586 + .long 1036966986 + .long 3220453720 + .long 1122344434 + .long 1016974413 + .long 0 + .long 0 + .long 1412148370 + .long 3218359917 + .long 2689483850 + .long 1013993587 + .long 0 + .long 1072693248 + .long 1375255072 + .long 1069134151 + .long 1493266594 + .long 3218493272 + .long 487968719 + .long 1071549129 + .long 4010395236 + .long 3218152642 + .long 2875570533 + .long 1070672565 + .long 2596803943 + .long 3217508124 + .long 2843491945 + .long 1069843051 + .long 880239780 + .long 3220466588 + .long 4135548218 + .long 1016178944 + .long 0 + .long 0 + .long 895247324 + .long 3218303496 + .long 3064008070 + .long 1013805381 + .long 0 + .long 1072693248 + .long 729983844 + .long 1068994194 + .long 3631919317 + .long 3218420574 + .long 2031343772 + .long 1071495745 + .long 1505593195 + .long 3218085291 + .long 519428997 + .long 1070618477 + .long 3710689661 + .long 3217396902 + .long 3156076115 + .long 1069741343 + .long 723512574 + .long 3220479456 + .long 2825204233 + .long 1014372050 + .long 0 + .long 0 + .long 2664093517 + .long 3218247493 + .long 3574482624 + .long 3157273734 + .long 0 + .long 1072693248 + .long 2465054196 + .long 1068861279 + .long 3495559184 + .long 3218349782 + .long 2180799467 + .long 1071445588 + .long 3760731789 + .long 3217962527 + .long 3108073739 + .long 1070540584 + .long 1955989624 + .long 3217293302 + .long 166797605 + .long 1069654305 + .long 566785368 + .long 3220492324 + .long 2301849815 + .long 3162142302 + .long 0 + .long 0 + .long 1026922473 + .long 3218191888 + .long 4275547180 + .long 3161242805 + .long 0 + .long 1072693248 + .long 865263972 + .long 1068735226 + .long 1189261043 + .long 3218280780 + .long 602895285 + .long 1071398507 + .long 457371263 + .long 3217840141 + .long 1846858242 + .long 1070447677 + .long 3060498116 + .long 3217196657 + .long 4267893365 + .long 1069596604 + .long 410058162 + .long 3220505192 + .long 4004709614 + .long 3163734243 + .long 0 + .long 0 + .long 1197423420 + .long 3218136659 + .long 176395860 + .long 3160912588 + .long 0 + .long 1072693248 + .long 3614211808 + .long 1068615863 + .long 2638984897 + .long 3218213456 + .long 1695604536 + .long 1071354361 + .long 2372043566 + .long 3217723241 + .long 136909605 + .long 1070361652 + .long 3640039447 + .long 3217106358 + .long 4088615056 + .long 1069449448 + .long 253330956 + .long 3220518060 + .long 991505830 + .long 3164529712 + .long 0 + .long 0 + .long 1971725998 + .long 3218081786 + .long 2628057466 + .long 3160778219 + .long 0 + .long 1072693248 + .long 3850616508 + .long 1068503032 + .long 715485429 + .long 3218147706 + .long 2831870887 + .long 1071313021 + .long 276112813 + .long 3217611421 + .long 4071473627 + .long 1070282053 + .long 3678820506 + .long 3217012537 + .long 927889203 + .long 1069392578 + .long 96603751 + .long 3220530928 + .long 2021697954 + .long 1016395907 + .long 0 + .long 0 + .long 4068253482 + .long 3217974755 + .long 3098800802 + .long 3161416360 + .long 0 + .long 1072693248 + .long 3555466384 + .long 1068294223 + .long 3714292293 + .long 3218083427 + .long 58004546 + .long 1071274368 + .long 2889916307 + .long 3217504297 + .long 2725223785 + .long 1070208483 + .long 1960889150 + .long 3216854085 + .long 2172838405 + .long 1069259864 + .long 4234843841 + .long 3220543795 + .long 1479868884 + .long 1015130734 + .long 0 + .long 0 + .long 3947580658 + .long 3217866316 + .long 4153464200 + .long 3160712468 + .long 0 + .long 1072693248 + .long 1306970432 + .long 1068093810 + .long 3320658510 + .long 3217961305 + .long 2638377394 + .long 1071238289 + .long 1218095092 + .long 3217401513 + .long 506153465 + .long 1070140566 + .long 2096772766 + .long 3216705262 + .long 2058303373 + .long 1069148484 + .long 4078116635 + .long 3220556663 + .long 39665264 + .long 3161092265 + .long 0 + .long 0 + .long 4023957346 + .long 3217758473 + .long 2652051644 + .long 3159900932 + .long 0 + .long 1072693248 + .long 1548193280 + .long 1067905620 + .long 2849460080 + .long 3217838064 + .long 586099284 + .long 1071204684 + .long 2426038050 + .long 3217302731 + .long 1209882939 + .long 1070077962 + .long 204929670 + .long 3216565209 + .long 2951398611 + .long 1069077118 + .long 3921389429 + .long 3220569531 + .long 3647185164 + .long 3163480770 + .long 0 + .long 0 + .long 3763679576 + .long 3217651189 + .long 448385104 + .long 3157192355 + .long 0 + .long 1072693248 + .long 64931152 + .long 1067729411 + .long 3593250320 + .long 3217717209 + .long 1127364104 + .long 1071173457 + .long 21320967 + .long 3217207636 + .long 4036384111 + .long 1070020367 + .long 3394693850 + .long 3216433130 + .long 4171153724 + .long 1068939101 + .long 3764662223 + .long 3220582399 + .long 3105356094 + .long 3164312749 + .long 0 + .long 0 + .long 1425758568 + .long 3217544428 + .long 1224254624 + .long 3159340630 + .long 0 + .long 1072693248 + .long 2086713664 + .long 1067564956 + .long 1688303979 + .long 3217598569 + .long 938619730 + .long 1071144522 + .long 526120622 + .long 3217115928 + .long 3819295674 + .long 1069967496 + .long 2059466203 + .long 3216308301 + .long 4034680199 + .long 1068903334 + .long 3607935018 + .long 3220595267 + .long 4202814986 + .long 1016612869 + .long 0 + .long 0 + .long 2429422902 + .long 3217438153 + .long 3297520416 + .long 1012522944 + .long 0 + .long 1072693248 + .long 528565440 + .long 1067373727 + .long 2395999282 + .long 3217481977 + .long 1512953454 + .long 1071117799 + .long 2702142222 + .long 3217023483 + .long 3515899579 + .long 1069919100 + .long 2767905791 + .long 3216190039 + .long 3127036520 + .long 1068808800 + .long 3451207812 + .long 3220608135 + .long 1547135652 + .long 1015564659 + .long 0 + .long 0 + .long 1959743063 + .long 3217332330 + .long 607720656 + .long 3161041674 + .long 0 + .long 1072693248 + .long 225834432 + .long 1067090614 + .long 732340398 + .long 3217367274 + .long 3221152670 + .long 1071093215 + .long 2810588359 + .long 3216851955 + .long 612200454 + .long 1069874948 + .long 645427044 + .long 3216077719 + .long 1966523063 + .long 1068694214 + .long 3294480606 + .long 3220621003 + .long 1489607747 + .long 1003935259 + .long 0 + .long 0 + .long 1940260416 + .long 3217226924 + .long 4144841612 + .long 3159543701 + .long 0 + .long 1072693248 + .long 1135818128 + .long 1066829850 + .long 867512158 + .long 3217254304 + .long 3821819258 + .long 1071070704 + .long 2890864845 + .long 3216685596 + .long 918459421 + .long 1069834828 + .long 797471869 + .long 3215958923 + .long 4093823457 + .long 1068635569 + .long 3137753400 + .long 3220633871 + .long 3579918397 + .long 3163046845 + .long 0 + .long 0 + .long 2242453104 + .long 3217121901 + .long 1143544320 + .long 1011877960 + .long 0 + .long 1072693248 + .long 1016752608 + .long 1066591110 + .long 1270001991 + .long 3217142917 + .long 1410785275 + .long 1071050206 + .long 1103929722 + .long 3216523923 + .long 3268015214 + .long 1069798554 + .long 957665123 + .long 3215754628 + .long 1067716675 + .long 1068610012 + .long 2981026194 + .long 3220646739 + .long 924239062 + .long 3164095787 + .long 0 + .long 0 + .long 982366697 + .long 3217003288 + .long 1160619554 + .long 1010902188 + .long 0 + .long 1072693248 + .long 404678272 + .long 1066346403 + .long 1419607756 + .long 3217032967 + .long 1800406832 + .long 1071031665 + .long 3144361055 + .long 3216366473 + .long 1744148039 + .long 1069765960 + .long 3211598528 + .long 3215558937 + .long 405031618 + .long 1068609434 + .long 2824298989 + .long 3220659607 + .long 2088964722 + .long 1016829832 + .long 0 + .long 0 + .long 931121154 + .long 3216794574 + .long 1121583044 + .long 1012154237 + .long 0 + .long 1072693248 + .long 709357472 + .long 1065955296 + .long 29972165 + .long 3216817456 + .long 254360647 + .long 1071015033 + .long 3732687627 + .long 3216212805 + .long 3224370681 + .long 1069736900 + .long 202592280 + .long 3215370879 + .long 1420621447 + .long 1068491719 + .long 2667571783 + .long 3220672475 + .long 1614402419 + .long 1015998584 + .long 0 + .long 0 + .long 2354785698 + .long 3216586427 + .long 959264268 + .long 3159915811 + .long 0 + .long 1072693248 + .long 2828230112 + .long 1065606626 + .long 3693284264 + .long 3216602456 + .long 1996210616 + .long 1071000265 + .long 3053541878 + .long 3216062494 + .long 1133334567 + .long 1069711236 + .long 977677585 + .long 3215189563 + .long 347473669 + .long 1068436198 + .long 2510844577 + .long 3220685343 + .long 498468876 + .long 1013614463 + .long 0 + .long 0 + .long 1972895212 + .long 3216378783 + .long 3207896256 + .long 3158122047 + .long 0 + .long 1072693248 + .long 4107853760 + .long 1065246718 + .long 2229347510 + .long 3216389497 + .long 4172638464 + .long 1070987323 + .long 212469442 + .long 3215847669 + .long 1989165661 + .long 1069688852 + .long 4131454738 + .long 3215014128 + .long 3452987325 + .long 1068469531 + .long 2354117371 + .long 3220698211 + .long 3512651629 + .long 3162612920 + .long 0 + .long 0 + .long 3439278129 + .long 3216171577 + .long 1073008748 + .long 3159914989 + .long 0 + .long 1072693248 + .long 2934847296 + .long 1064716672 + .long 2625704508 + .long 3216178311 + .long 3692939630 + .long 1070976174 + .long 3072165553 + .long 3215558041 + .long 223733198 + .long 1069669653 + .long 1158528288 + .long 3214753465 + .long 3197803998 + .long 1068357327 + .long 2197390165 + .long 3220711079 + .long 3038089327 + .long 3163878824 + .long 0 + .long 0 + .long 3930011523 + .long 3215946901 + .long 3574565577 + .long 1010859792 + .long 0 + .long 1072693248 + .long 930814464 + .long 1064233867 + .long 3218126771 + .long 3215954682 + .long 873740287 + .long 1070966789 + .long 1580060562 + .long 3215272745 + .long 1505280051 + .long 1069653548 + .long 2221338643 + .long 3214421240 + .long 2641116540 + .long 1068312400 + .long 2040662960 + .long 3220723947 + .long 4270081753 + .long 1017046794 + .long 0 + .long 0 + .long 2319126882 + .long 3215533863 + .long 2132624928 + .long 3153789373 + .long 0 + .long 1072693248 + .long 2962101888 + .long 1063503197 + .long 3966050657 + .long 3215537841 + .long 3178024141 + .long 1070959142 + .long 1146830997 + .long 3214991029 + .long 1630003424 + .long 1069640468 + .long 2204651989 + .long 3214096041 + .long 796867276 + .long 1068243248 + .long 1883935754 + .long 3220736815 + .long 2988318241 + .long 1016251326 + .long 0 + .long 0 + .long 3919601072 + .long 3215121322 + .long 2384023593 + .long 1011053048 + .long 0 + .long 1072693248 + .long 1803946752 + .long 1062615560 + .long 2247013512 + .long 3215122999 + .long 3277043521 + .long 1070953215 + .long 578207576 + .long 3214490301 + .long 1619551293 + .long 1069630354 + .long 2648603598 + .long 3213667381 + .long 2728840488 + .long 1068193529 + .long 1727208548 + .long 3220749683 + .long 2531251621 + .long 1014661577 + .long 0 + .long 0 + .long 612012528 + .long 3214484294 + .long 549859680 + .long 1005659865 + .long 0 + .long 1072693248 + .long 2064191488 + .long 1061404484 + .long 4042886527 + .long 3214485286 + .long 149923164 + .long 1070948993 + .long 104448276 + .long 3213936806 + .long 2663431480 + .long 1069623160 + .long 4100741337 + .long 3213036454 + .long 3253086979 + .long 1068220130 + .long 1570481342 + .long 3220762551 + .long 2595802427 + .long 3161852775 + .long 0 + .long 0 + .long 75380366 + .long 3213435470 + .long 3015416698 + .long 1008346766 + .long 0 + .long 1072693248 + .long 2911696896 + .long 1059306942 + .long 451505506 + .long 3213435718 + .long 3089290734 + .long 1070946463 + .long 3705470162 + .long 3212886822 + .long 2568117130 + .long 1069618857 + .long 643302148 + .long 3211985100 + .long 500114129 + .long 1068202863 + .long 0 + .long 1090469888 + .long 0 + .long 1090469888 + .long 0 + .long 1090469888 + .long 0 + .long 1090469888 + .long 0 + .long 1090469888 + .long 0 + .long 1090469888 + .long 0 + .long 1090469888 + .long 0 + .long 1090469888 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 1841940611 + .long 1071931184 + .long 1841940611 + .long 1071931184 + .long 1841940611 + .long 1071931184 + .long 1841940611 + .long 1071931184 + .long 1841940611 + .long 1071931184 + .long 1841940611 + .long 1071931184 + .long 1841940611 + .long 1071931184 + .long 1841940611 + .long 1071931184 + .long 1413742592 + .long 1073291771 + .long 1413742592 + .long 1073291771 + .long 1413742592 + .long 1073291771 + .long 1413742592 + .long 1073291771 + .long 1413742592 + .long 1073291771 + .long 1413742592 + .long 1073291771 + .long 1413742592 + .long 1073291771 + .long 1413742592 + .long 1073291771 + .long 1280049152 + .long 1032227875 + .long 1280049152 + .long 1032227875 + .long 1280049152 + .long 1032227875 + .long 1280049152 + .long 1032227875 + .long 1280049152 + .long 1032227875 + .long 1280049152 + .long 1032227875 + .long 1280049152 + .long 1032227875 + .long 1280049152 + .long 1032227875 + .long 57701189 + .long 992578094 + .long 57701189 + .long 992578094 + .long 57701189 + .long 992578094 + .long 57701189 + .long 992578094 + .long 57701189 + .long 992578094 + .long 57701189 + .long 992578094 + .long 57701189 + .long 992578094 + .long 57701189 + .long 992578094 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 1413754136 + .long 1073291771 + .long 856972294 + .long 1016178214 + .long 856972294 + .long 1016178214 + .long 856972294 + .long 1016178214 + .long 856972294 + .long 1016178214 + .long 856972294 + .long 1016178214 + .long 856972294 + .long 1016178214 + .long 856972294 + .long 1016178214 + .long 856972294 + .long 1016178214 + .long 688016905 + .long 961289425 + .long 688016905 + .long 961289425 + .long 688016905 + .long 961289425 + .long 688016905 + .long 961289425 + .long 688016905 + .long 961289425 + .long 688016905 + .long 961289425 + .long 688016905 + .long 961289425 + .long 688016905 + .long 961289425 + .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 3191264137 + .long 3217058711 + .long 3191264137 + .long 3217058711 + .long 3191264137 + .long 3217058711 + .long 3191264137 + .long 3217058711 + .long 3191264137 + .long 3217058711 + .long 3191264137 + .long 3217058711 + .long 3191264137 + .long 3217058711 + .long 3191264137 + .long 3217058711 + .long 3706049281 + .long 1063713903 + .long 3706049281 + .long 1063713903 + .long 3706049281 + .long 1063713903 + .long 3706049281 + .long 1063713903 + .long 3706049281 + .long 1063713903 + .long 3706049281 + .long 1063713903 + .long 3706049281 + .long 1063713903 + .long 3706049281 + .long 1063713903 + .long 3458873344 + .long 3202311037 + .long 3458873344 + .long 3202311037 + .long 3458873344 + .long 3202311037 + .long 3458873344 + .long 3202311037 + .long 3458873344 + .long 3202311037 + .long 3458873344 + .long 3202311037 + .long 3458873344 + .long 3202311037 + .long 3458873344 + .long 3202311037 + .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 879804142 + .long 3218967329 + .long 879804142 + .long 3218967329 + .long 879804142 + .long 3218967329 + .long 879804142 + .long 3218967329 + .long 879804142 + .long 3218967329 + .long 879804142 + .long 3218967329 + .long 879804142 + .long 3218967329 + .long 879804142 + .long 3218967329 + .long 2328005206 + .long 1066919862 + .long 2328005206 + .long 1066919862 + .long 2328005206 + .long 1066919862 + .long 2328005206 + .long 1066919862 + .long 2328005206 + .long 1066919862 + .long 2328005206 + .long 1066919862 + .long 2328005206 + .long 1066919862 + .long 2328005206 + .long 1066919862 + .long 62689958 + .long 3207287387 + .long 62689958 + .long 3207287387 + .long 62689958 + .long 3207287387 + .long 62689958 + .long 3207287387 + .long 62689958 + .long 3207287387 + .long 62689958 + .long 3207287387 + .long 62689958 + .long 3207287387 + .long 62689958 + .long 3207287387 + .type __svml_dtan_data_internal,@object + .size __svml_dtan_data_internal,29248 + .align 64 +__svml_dtan_reduction_data_internal: + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 5 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 10 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 20 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 40 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 81 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 162 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 325 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 651 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1303 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2607 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 5215 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 10430 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 20860 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 41721 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 83443 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 166886 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 333772 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 667544 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1335088 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2670176 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 5340353 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 10680707 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 21361414 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 42722829 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 85445659 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 170891318 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 341782637 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 683565275 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1367130551 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2734261102 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1173554908 + .long 1 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2347109817 + .long 2 + .long 0 + .long 0 + .long 0 + .long 0 + .long 399252338 + .long 5 + .long 0 + .long 0 + .long 0 + .long 0 + .long 798504676 + .long 10 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1597009353 + .long 20 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3194018707 + .long 40 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2093070119 + .long 81 + .long 0 + .long 0 + .long 0 + .long 0 + .long 4186140238 + .long 162 + .long 0 + .long 0 + .long 0 + .long 0 + .long 4077313180 + .long 325 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3859659065 + .long 651 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3424350834 + .long 1303 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2553734372 + .long 2607 + .long 0 + .long 0 + .long 0 + .long 0 + .long 812501448 + .long 5215 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1625002897 + .long 10430 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3250005794 + .long 20860 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2205044292 + .long 41721 + .long 0 + .long 0 + .long 0 + .long 0 + .long 115121288 + .long 83443 + .long 0 + .long 0 + .long 0 + .long 0 + .long 230242576 + .long 166886 + .long 0 + .long 0 + .long 0 + .long 0 + .long 460485152 + .long 333772 + .long 0 + .long 0 + .long 0 + .long 0 + .long 920970305 + .long 667544 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1841940610 + .long 1335088 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3683881221 + .long 2670176 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3072795146 + .long 5340353 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1850622997 + .long 10680707 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3701245994 + .long 21361414 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3107524692 + .long 42722829 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1920082089 + .long 85445659 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3840164178 + .long 170891318 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3385361061 + .long 341782637 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2475754826 + .long 683565275 + .long 0 + .long 0 + .long 0 + .long 0 + .long 656542356 + .long 1367130551 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1313084713 + .long 2734261102 + .long 0 + .long 0 + .long 1 + .long 0 + .long 2626169427 + .long 1173554908 + .long 0 + .long 0 + .long 2 + .long 0 + .long 957371559 + .long 2347109817 + .long 0 + .long 0 + .long 5 + .long 0 + .long 1914743119 + .long 399252338 + .long 0 + .long 0 + .long 10 + .long 0 + .long 3829486239 + .long 798504676 + .long 0 + .long 0 + .long 20 + .long 0 + .long 3364005183 + .long 1597009353 + .long 0 + .long 0 + .long 40 + .long 0 + .long 2433043071 + .long 3194018707 + .long 0 + .long 0 + .long 81 + .long 0 + .long 571118846 + .long 2093070119 + .long 0 + .long 0 + .long 162 + .long 0 + .long 1142237692 + .long 4186140238 + .long 0 + .long 0 + .long 325 + .long 0 + .long 2284475384 + .long 4077313180 + .long 0 + .long 0 + .long 651 + .long 0 + .long 273983472 + .long 3859659065 + .long 0 + .long 0 + .long 1303 + .long 0 + .long 547966945 + .long 3424350834 + .long 0 + .long 0 + .long 2607 + .long 0 + .long 1095933890 + .long 2553734372 + .long 0 + .long 0 + .long 5215 + .long 0 + .long 2191867780 + .long 812501448 + .long 0 + .long 0 + .long 10430 + .long 0 + .long 88768265 + .long 1625002897 + .long 0 + .long 0 + .long 20860 + .long 0 + .long 177536531 + .long 3250005794 + .long 0 + .long 0 + .long 41721 + .long 0 + .long 355073063 + .long 2205044292 + .long 0 + .long 0 + .long 83443 + .long 0 + .long 710146126 + .long 115121288 + .long 0 + .long 0 + .long 166886 + .long 0 + .long 1420292253 + .long 230242576 + .long 0 + .long 0 + .long 333772 + .long 0 + .long 2840584506 + .long 460485152 + .long 0 + .long 0 + .long 667544 + .long 0 + .long 1386201717 + .long 920970305 + .long 0 + .long 0 + .long 1335088 + .long 0 + .long 2772403434 + .long 1841940610 + .long 0 + .long 0 + .long 2670176 + .long 0 + .long 1249839573 + .long 3683881221 + .long 0 + .long 0 + .long 5340353 + .long 0 + .long 2499679147 + .long 3072795146 + .long 0 + .long 0 + .long 10680707 + .long 0 + .long 704390999 + .long 1850622997 + .long 0 + .long 0 + .long 21361414 + .long 0 + .long 1408781999 + .long 3701245994 + .long 0 + .long 0 + .long 42722829 + .long 0 + .long 2817563999 + .long 3107524692 + .long 0 + .long 0 + .long 85445659 + .long 0 + .long 1340160702 + .long 1920082089 + .long 0 + .long 0 + .long 170891318 + .long 0 + .long 2680321405 + .long 3840164178 + .long 0 + .long 0 + .long 341782637 + .long 0 + .long 1065675514 + .long 3385361061 + .long 0 + .long 0 + .long 683565275 + .long 0 + .long 2131351028 + .long 2475754826 + .long 0 + .long 0 + .long 1367130551 + .long 0 + .long 4262702056 + .long 656542356 + .long 0 + .long 0 + .long 2734261102 + .long 0 + .long 4230436817 + .long 1313084713 + .long 0 + .long 0 + .long 1173554908 + .long 1 + .long 4165906339 + .long 2626169427 + .long 0 + .long 0 + .long 2347109817 + .long 2 + .long 4036845383 + .long 957371559 + .long 0 + .long 0 + .long 399252338 + .long 5 + .long 3778723471 + .long 1914743119 + .long 0 + .long 0 + .long 798504676 + .long 10 + .long 3262479647 + .long 3829486239 + .long 0 + .long 0 + .long 1597009353 + .long 20 + .long 2229991998 + .long 3364005183 + .long 0 + .long 0 + .long 3194018707 + .long 40 + .long 165016701 + .long 2433043071 + .long 0 + .long 0 + .long 2093070119 + .long 81 + .long 330033402 + .long 571118846 + .long 0 + .long 0 + .long 4186140238 + .long 162 + .long 660066805 + .long 1142237692 + .long 0 + .long 0 + .long 4077313180 + .long 325 + .long 1320133610 + .long 2284475384 + .long 0 + .long 0 + .long 3859659065 + .long 651 + .long 2640267220 + .long 273983472 + .long 0 + .long 0 + .long 3424350834 + .long 1303 + .long 985567145 + .long 547966945 + .long 0 + .long 0 + .long 2553734372 + .long 2607 + .long 1971134291 + .long 1095933890 + .long 0 + .long 0 + .long 812501448 + .long 5215 + .long 3942268582 + .long 2191867780 + .long 0 + .long 0 + .long 1625002897 + .long 10430 + .long 3589569869 + .long 88768265 + .long 0 + .long 0 + .long 3250005794 + .long 20860 + .long 2884172442 + .long 177536531 + .long 0 + .long 0 + .long 2205044292 + .long 41721 + .long 1473377588 + .long 355073063 + .long 0 + .long 0 + .long 115121288 + .long 83443 + .long 2946755177 + .long 710146126 + .long 0 + .long 0 + .long 230242576 + .long 166886 + .long 1598543059 + .long 1420292253 + .long 0 + .long 0 + .long 460485152 + .long 333772 + .long 3197086118 + .long 2840584506 + .long 0 + .long 0 + .long 920970305 + .long 667544 + .long 2099204941 + .long 1386201717 + .long 0 + .long 0 + .long 1841940610 + .long 1335088 + .long 4198409883 + .long 2772403434 + .long 0 + .long 0 + .long 3683881221 + .long 2670176 + .long 4101852471 + .long 1249839573 + .long 0 + .long 0 + .long 3072795146 + .long 5340353 + .long 3908737646 + .long 2499679147 + .long 0 + .long 0 + .long 1850622997 + .long 10680707 + .long 3522507997 + .long 704390999 + .long 0 + .long 0 + .long 3701245994 + .long 21361414 + .long 2750048699 + .long 1408781999 + .long 0 + .long 0 + .long 3107524692 + .long 42722829 + .long 1205130103 + .long 2817563999 + .long 0 + .long 0 + .long 1920082089 + .long 85445659 + .long 2410260206 + .long 1340160702 + .long 0 + .long 0 + .long 3840164178 + .long 170891318 + .long 525553116 + .long 2680321405 + .long 0 + .long 0 + .long 3385361061 + .long 341782637 + .long 1051106232 + .long 1065675514 + .long 0 + .long 0 + .long 2475754826 + .long 683565275 + .long 2102212464 + .long 2131351028 + .long 0 + .long 0 + .long 656542356 + .long 1367130551 + .long 4204424928 + .long 4262702056 + .long 0 + .long 0 + .long 1313084713 + .long 2734261102 + .long 4113882560 + .long 4230436817 + .long 1 + .long 0 + .long 2626169427 + .long 1173554908 + .long 3932797825 + .long 4165906339 + .long 2 + .long 0 + .long 957371559 + .long 2347109817 + .long 3570628355 + .long 4036845383 + .long 5 + .long 0 + .long 1914743119 + .long 399252338 + .long 2846289414 + .long 3778723471 + .long 10 + .long 0 + .long 3829486239 + .long 798504676 + .long 1397611533 + .long 3262479647 + .long 20 + .long 0 + .long 3364005183 + .long 1597009353 + .long 2795223067 + .long 2229991998 + .long 40 + .long 0 + .long 2433043071 + .long 3194018707 + .long 1295478838 + .long 165016701 + .long 81 + .long 0 + .long 571118846 + .long 2093070119 + .long 2590957677 + .long 330033402 + .long 162 + .long 0 + .long 1142237692 + .long 4186140238 + .long 886948059 + .long 660066805 + .long 325 + .long 0 + .long 2284475384 + .long 4077313180 + .long 1773896118 + .long 1320133610 + .long 651 + .long 0 + .long 273983472 + .long 3859659065 + .long 3547792237 + .long 2640267220 + .long 1303 + .long 0 + .long 547966945 + .long 3424350834 + .long 2800617179 + .long 985567145 + .long 2607 + .long 0 + .long 1095933890 + .long 2553734372 + .long 1306267062 + .long 1971134291 + .long 5215 + .long 0 + .long 2191867780 + .long 812501448 + .long 2612534124 + .long 3942268582 + .long 10430 + .long 0 + .long 88768265 + .long 1625002897 + .long 930100952 + .long 3589569869 + .long 20860 + .long 0 + .long 177536531 + .long 3250005794 + .long 1860201905 + .long 2884172442 + .long 41721 + .long 0 + .long 355073063 + .long 2205044292 + .long 3720403810 + .long 1473377588 + .long 83443 + .long 0 + .long 710146126 + .long 115121288 + .long 3145840325 + .long 2946755177 + .long 166886 + .long 0 + .long 1420292253 + .long 230242576 + .long 1996713354 + .long 1598543059 + .long 333772 + .long 0 + .long 2840584506 + .long 460485152 + .long 3993426708 + .long 3197086118 + .long 667544 + .long 0 + .long 1386201717 + .long 920970305 + .long 3691886121 + .long 2099204941 + .long 1335088 + .long 0 + .long 2772403434 + .long 1841940610 + .long 3088804946 + .long 4198409883 + .long 2670176 + .long 0 + .long 1249839573 + .long 3683881221 + .long 1882642597 + .long 4101852471 + .long 5340353 + .long 0 + .long 2499679147 + .long 3072795146 + .long 3765285194 + .long 3908737646 + .long 10680707 + .long 0 + .long 704390999 + .long 1850622997 + .long 3235603093 + .long 3522507997 + .long 21361414 + .long 0 + .long 1408781999 + .long 3701245994 + .long 2176238891 + .long 2750048699 + .long 42722829 + .long 0 + .long 2817563999 + .long 3107524692 + .long 57510486 + .long 1205130103 + .long 85445659 + .long 0 + .long 1340160702 + .long 1920082089 + .long 115020972 + .long 2410260206 + .long 170891318 + .long 0 + .long 2680321405 + .long 3840164178 + .long 230041945 + .long 525553116 + .long 341782637 + .long 0 + .long 1065675514 + .long 3385361061 + .long 460083891 + .long 1051106232 + .long 683565275 + .long 0 + .long 2131351028 + .long 2475754826 + .long 920167782 + .long 2102212464 + .long 1367130551 + .long 0 + .long 4262702056 + .long 656542356 + .long 1840335564 + .long 4204424928 + .long 2734261102 + .long 0 + .long 4230436817 + .long 1313084713 + .long 3680671129 + .long 4113882560 + .long 1173554908 + .long 1 + .long 4165906339 + .long 2626169427 + .long 3066374962 + .long 3932797825 + .long 2347109817 + .long 2 + .long 4036845383 + .long 957371559 + .long 1837782628 + .long 3570628355 + .long 399252338 + .long 5 + .long 3778723471 + .long 1914743119 + .long 3675565257 + .long 2846289414 + .long 798504676 + .long 10 + .long 3262479647 + .long 3829486239 + .long 3056163219 + .long 1397611533 + .long 1597009353 + .long 20 + .long 2229991998 + .long 3364005183 + .long 1817359143 + .long 2795223067 + .long 3194018707 + .long 40 + .long 165016701 + .long 2433043071 + .long 3634718287 + .long 1295478838 + .long 2093070119 + .long 81 + .long 330033402 + .long 571118846 + .long 2974469278 + .long 2590957677 + .long 4186140238 + .long 162 + .long 660066805 + .long 1142237692 + .long 1653971260 + .long 886948059 + .long 4077313180 + .long 325 + .long 1320133610 + .long 2284475384 + .long 3307942520 + .long 1773896118 + .long 3859659065 + .long 651 + .long 2640267220 + .long 273983472 + .long 2320917745 + .long 3547792237 + .long 3424350834 + .long 1303 + .long 985567145 + .long 547966945 + .long 346868194 + .long 2800617179 + .long 2553734372 + .long 2607 + .long 1971134291 + .long 1095933890 + .long 693736388 + .long 1306267062 + .long 812501448 + .long 5215 + .long 3942268582 + .long 2191867780 + .long 1387472776 + .long 2612534124 + .long 1625002897 + .long 10430 + .long 3589569869 + .long 88768265 + .long 2774945552 + .long 930100952 + .long 3250005794 + .long 20860 + .long 2884172442 + .long 177536531 + .long 1254923809 + .long 1860201905 + .long 2205044292 + .long 41721 + .long 1473377588 + .long 355073063 + .long 2509847619 + .long 3720403810 + .long 115121288 + .long 83443 + .long 2946755177 + .long 710146126 + .long 724727943 + .long 3145840325 + .long 230242576 + .long 166886 + .long 1598543059 + .long 1420292253 + .long 1449455886 + .long 1996713354 + .long 460485152 + .long 333772 + .long 3197086118 + .long 2840584506 + .long 2898911772 + .long 3993426708 + .long 920970305 + .long 667544 + .long 2099204941 + .long 1386201717 + .long 1502856249 + .long 3691886121 + .long 1841940610 + .long 1335088 + .long 4198409883 + .long 2772403434 + .long 3005712498 + .long 3088804946 + .long 3683881221 + .long 2670176 + .long 4101852471 + .long 1249839573 + .long 1716457700 + .long 1882642597 + .long 3072795146 + .long 5340353 + .long 3908737646 + .long 2499679147 + .long 3432915400 + .long 3765285194 + .long 1850622997 + .long 10680707 + .long 3522507997 + .long 704390999 + .long 2570863504 + .long 3235603093 + .long 3701245994 + .long 21361414 + .long 2750048699 + .long 1408781999 + .long 846759712 + .long 2176238891 + .long 3107524692 + .long 42722829 + .long 1205130103 + .long 2817563999 + .long 1693519425 + .long 57510486 + .long 1920082089 + .long 85445659 + .long 2410260206 + .long 1340160702 + .long 3387038850 + .long 115020972 + .long 3840164178 + .long 170891318 + .long 525553116 + .long 2680321405 + .long 2479110404 + .long 230041945 + .long 3385361061 + .long 341782637 + .long 1051106232 + .long 1065675514 + .long 663253512 + .long 460083891 + .long 2475754826 + .long 683565275 + .long 2102212464 + .long 2131351028 + .long 1326507024 + .long 920167782 + .long 656542356 + .long 1367130551 + .long 4204424928 + .long 4262702056 + .long 2653014048 + .long 1840335564 + .long 1313084713 + .long 2734261102 + .long 4113882560 + .long 4230436817 + .long 1011060801 + .long 3680671129 + .long 2626169427 + .long 1173554908 + .long 3932797825 + .long 4165906339 + .long 2022121603 + .long 3066374962 + .long 957371559 + .long 2347109817 + .long 3570628355 + .long 4036845383 + .long 4044243207 + .long 1837782628 + .long 1914743119 + .long 399252338 + .long 2846289414 + .long 3778723471 + .long 3793519119 + .long 3675565257 + .long 3829486239 + .long 798504676 + .long 1397611533 + .long 3262479647 + .long 3292070943 + .long 3056163219 + .long 3364005183 + .long 1597009353 + .long 2795223067 + .long 2229991998 + .long 2289174591 + .long 1817359143 + .long 2433043071 + .long 3194018707 + .long 1295478838 + .long 165016701 + .long 283381887 + .long 3634718287 + .long 571118846 + .long 2093070119 + .long 2590957677 + .long 330033402 + .long 566763775 + .long 2974469278 + .long 1142237692 + .long 4186140238 + .long 886948059 + .long 660066805 + .long 1133527550 + .long 1653971260 + .long 2284475384 + .long 4077313180 + .long 1773896118 + .long 1320133610 + .long 2267055100 + .long 3307942520 + .long 273983472 + .long 3859659065 + .long 3547792237 + .long 2640267220 + .long 239142905 + .long 2320917745 + .long 547966945 + .long 3424350834 + .long 2800617179 + .long 985567145 + .long 478285810 + .long 346868194 + .long 1095933890 + .long 2553734372 + .long 1306267062 + .long 1971134291 + .long 956571621 + .long 693736388 + .long 2191867780 + .long 812501448 + .long 2612534124 + .long 3942268582 + .long 1913143242 + .long 1387472776 + .long 88768265 + .long 1625002897 + .long 930100952 + .long 3589569869 + .long 3826286484 + .long 2774945552 + .long 177536531 + .long 3250005794 + .long 1860201905 + .long 2884172442 + .long 3357605672 + .long 1254923809 + .long 355073063 + .long 2205044292 + .long 3720403810 + .long 1473377588 + .long 2420244049 + .long 2509847619 + .long 710146126 + .long 115121288 + .long 3145840325 + .long 2946755177 + .long 545520802 + .long 724727943 + .long 1420292253 + .long 230242576 + .long 1996713354 + .long 1598543059 + .long 1091041605 + .long 1449455886 + .long 2840584506 + .long 460485152 + .long 3993426708 + .long 3197086118 + .long 2182083211 + .long 2898911772 + .long 1386201717 + .long 920970305 + .long 3691886121 + .long 2099204941 + .long 69199126 + .long 1502856249 + .long 2772403434 + .long 1841940610 + .long 3088804946 + .long 4198409883 + .long 138398252 + .long 3005712498 + .long 1249839573 + .long 3683881221 + .long 1882642597 + .long 4101852471 + .long 276796504 + .long 1716457700 + .long 2499679147 + .long 3072795146 + .long 3765285194 + .long 3908737646 + .long 553593009 + .long 3432915400 + .long 704390999 + .long 1850622997 + .long 3235603093 + .long 3522507997 + .long 1107186019 + .long 2570863504 + .long 1408781999 + .long 3701245994 + .long 2176238891 + .long 2750048699 + .long 2214372039 + .long 846759712 + .long 2817563999 + .long 3107524692 + .long 57510486 + .long 1205130103 + .long 133776782 + .long 1693519425 + .long 1340160702 + .long 1920082089 + .long 115020972 + .long 2410260206 + .long 267553565 + .long 3387038850 + .long 2680321405 + .long 3840164178 + .long 230041945 + .long 525553116 + .long 535107130 + .long 2479110404 + .long 1065675514 + .long 3385361061 + .long 460083891 + .long 1051106232 + .long 1070214261 + .long 663253512 + .long 2131351028 + .long 2475754826 + .long 920167782 + .long 2102212464 + .long 2140428522 + .long 1326507024 + .long 4262702056 + .long 656542356 + .long 1840335564 + .long 4204424928 + .long 4280857045 + .long 2653014048 + .long 4230436817 + .long 1313084713 + .long 3680671129 + .long 4113882560 + .long 4266746795 + .long 1011060801 + .long 4165906339 + .long 2626169427 + .long 3066374962 + .long 3932797825 + .long 4238526295 + .long 2022121603 + .long 4036845383 + .long 957371559 + .long 1837782628 + .long 3570628355 + .long 4182085295 + .long 4044243207 + .long 3778723471 + .long 1914743119 + .long 3675565257 + .long 2846289414 + .long 4069203294 + .long 3793519119 + .long 3262479647 + .long 3829486239 + .long 3056163219 + .long 1397611533 + .long 3843439293 + .long 3292070943 + .long 2229991998 + .long 3364005183 + .long 1817359143 + .long 2795223067 + .long 3391911291 + .long 2289174591 + .long 165016701 + .long 2433043071 + .long 3634718287 + .long 1295478838 + .long 2488855287 + .long 283381887 + .long 330033402 + .long 571118846 + .long 2974469278 + .long 2590957677 + .long 682743279 + .long 566763775 + .long 660066805 + .long 1142237692 + .long 1653971260 + .long 886948059 + .long 1365486558 + .long 1133527550 + .long 1320133610 + .long 2284475384 + .long 3307942520 + .long 1773896118 + .long 2730973117 + .long 2267055100 + .long 2640267220 + .long 273983472 + .long 2320917745 + .long 3547792237 + .long 1166978938 + .long 239142905 + .long 985567145 + .long 547966945 + .long 346868194 + .long 2800617179 + .long 2333957877 + .long 478285810 + .long 1971134291 + .long 1095933890 + .long 693736388 + .long 1306267062 + .long 372948459 + .long 956571621 + .long 3942268582 + .long 2191867780 + .long 1387472776 + .long 2612534124 + .long 745896919 + .long 1913143242 + .long 3589569869 + .long 88768265 + .long 2774945552 + .long 930100952 + .long 1491793838 + .long 3826286484 + .long 2884172442 + .long 177536531 + .long 1254923809 + .long 1860201905 + .long 2983587677 + .long 3357605672 + .long 1473377588 + .long 355073063 + .long 2509847619 + .long 3720403810 + .long 1672208059 + .long 2420244049 + .long 2946755177 + .long 710146126 + .long 724727943 + .long 3145840325 + .long 3344416119 + .long 545520802 + .long 1598543059 + .long 1420292253 + .long 1449455886 + .long 1996713354 + .long 2393864943 + .long 1091041605 + .long 3197086118 + .long 2840584506 + .long 2898911772 + .long 3993426708 + .long 492762590 + .long 2182083211 + .long 2099204941 + .long 1386201717 + .long 1502856249 + .long 3691886121 + .long 985525180 + .long 69199126 + .long 4198409883 + .long 2772403434 + .long 3005712498 + .long 3088804946 + .long 1971050360 + .long 138398252 + .long 4101852471 + .long 1249839573 + .long 1716457700 + .long 1882642597 + .long 3942100721 + .long 276796504 + .long 3908737646 + .long 2499679147 + .long 3432915400 + .long 3765285194 + .long 3589234146 + .long 553593009 + .long 3522507997 + .long 704390999 + .long 2570863504 + .long 3235603093 + .long 2883500997 + .long 1107186019 + .long 2750048699 + .long 1408781999 + .long 846759712 + .long 2176238891 + .long 1472034698 + .long 2214372039 + .long 1205130103 + .long 2817563999 + .long 1693519425 + .long 57510486 + .long 2944069397 + .long 133776782 + .long 2410260206 + .long 1340160702 + .long 3387038850 + .long 115020972 + .long 1593171499 + .long 267553565 + .long 525553116 + .long 2680321405 + .long 2479110404 + .long 230041945 + .long 3186342998 + .long 535107130 + .long 1051106232 + .long 1065675514 + .long 663253512 + .long 460083891 + .long 2077718700 + .long 1070214261 + .long 2102212464 + .long 2131351028 + .long 1326507024 + .long 920167782 + .long 4155437400 + .long 2140428522 + .long 4204424928 + .long 4262702056 + .long 2653014048 + .long 1840335564 + .long 4015907504 + .long 4280857045 + .long 4113882560 + .long 4230436817 + .long 1011060801 + .long 3680671129 + .long 3736847713 + .long 4266746795 + .long 3932797825 + .long 4165906339 + .long 2022121603 + .long 3066374962 + .long 3178728131 + .long 4238526295 + .long 3570628355 + .long 4036845383 + .long 4044243207 + .long 1837782628 + .long 2062488966 + .long 4182085295 + .long 2846289414 + .long 3778723471 + .long 3793519119 + .long 3675565257 + .long 4124977933 + .long 4069203294 + .long 1397611533 + .long 3262479647 + .long 3292070943 + .long 3056163219 + .long 3954988571 + .long 3843439293 + .long 2795223067 + .long 2229991998 + .long 2289174591 + .long 1817359143 + .long 3615009846 + .long 3391911291 + .long 1295478838 + .long 165016701 + .long 283381887 + .long 3634718287 + .long 2935052397 + .long 2488855287 + .long 2590957677 + .long 330033402 + .long 566763775 + .long 2974469278 + .long 1575137499 + .long 682743279 + .long 886948059 + .long 660066805 + .long 1133527550 + .long 1653971260 + .long 3150274999 + .long 1365486558 + .long 1773896118 + .long 1320133610 + .long 2267055100 + .long 3307942520 + .long 2005582702 + .long 2730973117 + .long 3547792237 + .long 2640267220 + .long 239142905 + .long 2320917745 + .long 4011165404 + .long 1166978938 + .long 2800617179 + .long 985567145 + .long 478285810 + .long 346868194 + .long 3727363513 + .long 2333957877 + .long 1306267062 + .long 1971134291 + .long 956571621 + .long 693736388 + .long 3159759730 + .long 372948459 + .long 2612534124 + .long 3942268582 + .long 1913143242 + .long 1387472776 + .long 2024552164 + .long 745896919 + .long 930100952 + .long 3589569869 + .long 3826286484 + .long 2774945552 + .long 4049104329 + .long 1491793838 + .long 1860201905 + .long 2884172442 + .long 3357605672 + .long 1254923809 + .long 3803241362 + .long 2983587677 + .long 3720403810 + .long 1473377588 + .long 2420244049 + .long 2509847619 + .long 3311515428 + .long 1672208059 + .long 3145840325 + .long 2946755177 + .long 545520802 + .long 724727943 + .long 2328063560 + .long 3344416119 + .long 1996713354 + .long 1598543059 + .long 1091041605 + .long 1449455886 + .long 361159825 + .long 2393864943 + .long 3993426708 + .long 3197086118 + .long 2182083211 + .long 2898911772 + .long 722319651 + .long 492762590 + .long 3691886121 + .long 2099204941 + .long 69199126 + .long 1502856249 + .long 1444639302 + .long 985525180 + .long 3088804946 + .long 4198409883 + .long 138398252 + .long 3005712498 + .long 2889278605 + .long 1971050360 + .long 1882642597 + .long 4101852471 + .long 276796504 + .long 1716457700 + .long 1483589915 + .long 3942100721 + .long 3765285194 + .long 3908737646 + .long 553593009 + .long 3432915400 + .long 2967179831 + .long 3589234146 + .long 3235603093 + .long 3522507997 + .long 1107186019 + .long 2570863504 + .long 1639392366 + .long 2883500997 + .long 2176238891 + .long 2750048699 + .long 2214372039 + .long 846759712 + .long 3278784732 + .long 1472034698 + .long 57510486 + .long 1205130103 + .long 133776782 + .long 1693519425 + .long 2262602168 + .long 2944069397 + .long 115020972 + .long 2410260206 + .long 267553565 + .long 3387038850 + .long 230237041 + .long 1593171499 + .long 230041945 + .long 525553116 + .long 535107130 + .long 2479110404 + .long 460474083 + .long 3186342998 + .long 460083891 + .long 1051106232 + .long 1070214261 + .long 663253512 + .long 920948167 + .long 2077718700 + .long 920167782 + .long 2102212464 + .long 2140428522 + .long 1326507024 + .long 1841896334 + .long 4155437400 + .long 1840335564 + .long 4204424928 + .long 4280857045 + .long 2653014048 + .long 3683792669 + .long 4015907504 + .long 3680671129 + .long 4113882560 + .long 4266746795 + .long 1011060801 + .long 3072618042 + .long 3736847713 + .long 3066374962 + .long 3932797825 + .long 4238526295 + .long 2022121603 + .long 1850268788 + .long 3178728131 + .long 1837782628 + .long 3570628355 + .long 4182085295 + .long 4044243207 + .long 3700537577 + .long 2062488966 + .long 3675565257 + .long 2846289414 + .long 4069203294 + .long 3793519119 + .long 3106107858 + .long 4124977933 + .long 3056163219 + .long 1397611533 + .long 3843439293 + .long 3292070943 + .long 1917248420 + .long 3954988571 + .long 1817359143 + .long 2795223067 + .long 3391911291 + .long 2289174591 + .long 3834496840 + .long 3615009846 + .long 3634718287 + .long 1295478838 + .long 2488855287 + .long 283381887 + .long 3374026384 + .long 2935052397 + .long 2974469278 + .long 2590957677 + .long 682743279 + .long 566763775 + .long 2453085473 + .long 1575137499 + .long 1653971260 + .long 886948059 + .long 1365486558 + .long 1133527550 + .long 611203650 + .long 3150274999 + .long 3307942520 + .long 1773896118 + .long 2730973117 + .long 2267055100 + .long 1222407300 + .long 2005582702 + .long 2320917745 + .long 3547792237 + .long 1166978938 + .long 239142905 + .long 2444814601 + .long 4011165404 + .long 346868194 + .long 2800617179 + .long 2333957877 + .long 478285810 + .long 594661906 + .long 3727363513 + .long 693736388 + .long 1306267062 + .long 372948459 + .long 956571621 + .long 1189323812 + .long 3159759730 + .long 1387472776 + .long 2612534124 + .long 745896919 + .long 1913143242 + .long 2378647625 + .long 2024552164 + .long 2774945552 + .long 930100952 + .long 1491793838 + .long 3826286484 + .long 462327955 + .long 4049104329 + .long 1254923809 + .long 1860201905 + .long 2983587677 + .long 3357605672 + .long 924655910 + .long 3803241362 + .long 2509847619 + .long 3720403810 + .long 1672208059 + .long 2420244049 + .long 1849311821 + .long 3311515428 + .long 724727943 + .long 3145840325 + .long 3344416119 + .long 545520802 + .long 3698623643 + .long 2328063560 + .long 1449455886 + .long 1996713354 + .long 2393864943 + .long 1091041605 + .long 3102279991 + .long 361159825 + .long 2898911772 + .long 3993426708 + .long 492762590 + .long 2182083211 + .long 1909592686 + .long 722319651 + .long 1502856249 + .long 3691886121 + .long 985525180 + .long 69199126 + .long 3819185373 + .long 1444639302 + .long 3005712498 + .long 3088804946 + .long 1971050360 + .long 138398252 + .long 3343403450 + .long 2889278605 + .long 1716457700 + .long 1882642597 + .long 3942100721 + .long 276796504 + .long 2391839604 + .long 1483589915 + .long 3432915400 + .long 3765285194 + .long 3589234146 + .long 553593009 + .long 488711913 + .long 2967179831 + .long 2570863504 + .long 3235603093 + .long 2883500997 + .long 1107186019 + .long 977423826 + .long 1639392366 + .long 846759712 + .long 2176238891 + .long 1472034698 + .long 2214372039 + .long 1954847653 + .long 3278784732 + .long 1693519425 + .long 57510486 + .long 2944069397 + .long 133776782 + .long 3909695307 + .long 2262602168 + .long 3387038850 + .long 115020972 + .long 1593171499 + .long 267553565 + .long 3524423319 + .long 230237041 + .long 2479110404 + .long 230041945 + .long 3186342998 + .long 535107130 + .long 2753879342 + .long 460474083 + .long 663253512 + .long 460083891 + .long 2077718700 + .long 1070214261 + .long 1212791388 + .long 920948167 + .long 1326507024 + .long 920167782 + .long 4155437400 + .long 2140428522 + .long 2425582776 + .long 1841896334 + .long 2653014048 + .long 1840335564 + .long 4015907504 + .long 4280857045 + .long 556198256 + .long 3683792669 + .long 1011060801 + .long 3680671129 + .long 3736847713 + .long 4266746795 + .long 1112396512 + .long 3072618042 + .long 2022121603 + .long 3066374962 + .long 3178728131 + .long 4238526295 + .long 2224793024 + .long 1850268788 + .long 4044243207 + .long 1837782628 + .long 2062488966 + .long 4182085295 + .long 154618752 + .long 3700537577 + .long 3793519119 + .long 3675565257 + .long 4124977933 + .long 4069203294 + .long 309237504 + .long 3106107858 + .long 3292070943 + .long 3056163219 + .long 3954988571 + .long 3843439293 + .long 618475008 + .long 1917248420 + .long 2289174591 + .long 1817359143 + .long 3615009846 + .long 3391911291 + .long 1236950016 + .long 3834496840 + .long 283381887 + .long 3634718287 + .long 2935052397 + .long 2488855287 + .long 2473900033 + .long 3374026384 + .long 566763775 + .long 2974469278 + .long 1575137499 + .long 682743279 + .long 652832771 + .long 2453085473 + .long 1133527550 + .long 1653971260 + .long 3150274999 + .long 1365486558 + .long 1305665542 + .long 611203650 + .long 2267055100 + .long 3307942520 + .long 2005582702 + .long 2730973117 + .long 2611331084 + .long 1222407300 + .long 239142905 + .long 2320917745 + .long 4011165404 + .long 1166978938 + .long 927694873 + .long 2444814601 + .long 478285810 + .long 346868194 + .long 3727363513 + .long 2333957877 + .long 1855389746 + .long 594661906 + .long 956571621 + .long 693736388 + .long 3159759730 + .long 372948459 + .long 3710779492 + .long 1189323812 + .long 1913143242 + .long 1387472776 + .long 2024552164 + .long 745896919 + .long 3126591689 + .long 2378647625 + .long 3826286484 + .long 2774945552 + .long 4049104329 + .long 1491793838 + .long 1958216082 + .long 462327955 + .long 3357605672 + .long 1254923809 + .long 3803241362 + .long 2983587677 + .long 3916432164 + .long 924655910 + .long 2420244049 + .long 2509847619 + .long 3311515428 + .long 1672208059 + .long 3537897033 + .long 1849311821 + .long 545520802 + .long 724727943 + .long 2328063560 + .long 3344416119 + .long 2780826770 + .long 3698623643 + .long 1091041605 + .long 1449455886 + .long 361159825 + .long 2393864943 + .long 1266686244 + .long 3102279991 + .long 2182083211 + .long 2898911772 + .long 722319651 + .long 492762590 + .long 2533372489 + .long 1909592686 + .long 69199126 + .long 1502856249 + .long 1444639302 + .long 985525180 + .long 771777682 + .long 3819185373 + .long 138398252 + .long 3005712498 + .long 2889278605 + .long 1971050360 + .long 1543555365 + .long 3343403450 + .long 276796504 + .long 1716457700 + .long 1483589915 + .long 3942100721 + .long 3087110731 + .long 2391839604 + .long 553593009 + .long 3432915400 + .long 2967179831 + .long 3589234146 + .long 1879254167 + .long 488711913 + .long 1107186019 + .long 2570863504 + .long 1639392366 + .long 2883500997 + .long 3758508334 + .long 977423826 + .long 2214372039 + .long 846759712 + .long 3278784732 + .long 1472034698 + .long 3222049373 + .long 1954847653 + .long 133776782 + .long 1693519425 + .long 2262602168 + .long 2944069397 + .long 2149131451 + .long 3909695307 + .long 267553565 + .long 3387038850 + .long 230237041 + .long 1593171499 + .long 3295607 + .long 3524423319 + .long 535107130 + .long 2479110404 + .long 460474083 + .long 3186342998 + .long 6591214 + .long 2753879342 + .long 1070214261 + .long 663253512 + .long 920948167 + .long 2077718700 + .long 13182429 + .long 1212791388 + .long 2140428522 + .long 1326507024 + .long 1841896334 + .long 4155437400 + .long 26364858 + .long 2425582776 + .long 4280857045 + .long 2653014048 + .long 3683792669 + .long 4015907504 + .long 52729717 + .long 556198256 + .long 4266746795 + .long 1011060801 + .long 3072618042 + .long 3736847713 + .long 105459434 + .long 1112396512 + .long 4238526295 + .long 2022121603 + .long 1850268788 + .long 3178728131 + .long 210918868 + .long 2224793024 + .long 4182085295 + .long 4044243207 + .long 3700537577 + .long 2062488966 + .long 421837736 + .long 154618752 + .long 4069203294 + .long 3793519119 + .long 3106107858 + .long 4124977933 + .long 843675472 + .long 309237504 + .long 3843439293 + .long 3292070943 + .long 1917248420 + .long 3954988571 + .long 1687350944 + .long 618475008 + .long 3391911291 + .long 2289174591 + .long 3834496840 + .long 3615009846 + .long 3374701889 + .long 1236950016 + .long 2488855287 + .long 283381887 + .long 3374026384 + .long 2935052397 + .long 2454436482 + .long 2473900033 + .long 682743279 + .long 566763775 + .long 2453085473 + .long 1575137499 + .long 613905668 + .long 652832771 + .long 1365486558 + .long 1133527550 + .long 611203650 + .long 3150274999 + .long 1227811337 + .long 1305665542 + .long 2730973117 + .long 2267055100 + .long 1222407300 + .long 2005582702 + .long 2455622675 + .long 2611331084 + .long 1166978938 + .long 239142905 + .long 2444814601 + .long 4011165404 + .long 616278055 + .long 927694873 + .long 2333957877 + .long 478285810 + .long 594661906 + .long 3727363513 + .long 1232556110 + .long 1855389746 + .long 372948459 + .long 956571621 + .long 1189323812 + .long 3159759730 + .long 2465112221 + .long 3710779492 + .long 745896919 + .long 1913143242 + .long 2378647625 + .long 2024552164 + .long 635257146 + .long 3126591689 + .long 1491793838 + .long 3826286484 + .long 462327955 + .long 4049104329 + .long 1270514292 + .long 1958216082 + .long 2983587677 + .long 3357605672 + .long 924655910 + .long 3803241362 + .long 2541028584 + .long 3916432164 + .long 1672208059 + .long 2420244049 + .long 1849311821 + .long 3311515428 + .long 787089873 + .long 3537897033 + .long 3344416119 + .long 545520802 + .long 3698623643 + .long 2328063560 + .long 1574179747 + .long 2780826770 + .long 2393864943 + .long 1091041605 + .long 3102279991 + .long 361159825 + .long 3148359494 + .long 1266686244 + .long 492762590 + .long 2182083211 + .long 1909592686 + .long 722319651 + .long 2001751692 + .long 2533372489 + .long 985525180 + .long 69199126 + .long 3819185373 + .long 1444639302 + .long 4003503385 + .long 771777682 + .long 1971050360 + .long 138398252 + .long 3343403450 + .long 2889278605 + .long 3712039474 + .long 1543555365 + .long 3942100721 + .long 276796504 + .long 2391839604 + .long 1483589915 + .long 3129111652 + .long 3087110731 + .long 3589234146 + .long 553593009 + .long 488711913 + .long 2967179831 + .long 1963256009 + .long 1879254167 + .long 2883500997 + .long 1107186019 + .long 977423826 + .long 1639392366 + .long 3926512018 + .long 3758508334 + .long 1472034698 + .long 2214372039 + .long 1954847653 + .long 3278784732 + .long 3558056740 + .long 3222049373 + .long 2944069397 + .long 133776782 + .long 3909695307 + .long 2262602168 + .long 2821146184 + .long 2149131451 + .long 1593171499 + .long 267553565 + .long 3524423319 + .long 230237041 + .long 1347325072 + .long 3295607 + .long 3186342998 + .long 535107130 + .long 2753879342 + .long 460474083 + .long 2694650145 + .long 6591214 + .long 2077718700 + .long 1070214261 + .long 1212791388 + .long 920948167 + .long 1094332995 + .long 13182429 + .long 4155437400 + .long 2140428522 + .long 2425582776 + .long 1841896334 + .long 2188665991 + .long 26364858 + .long 4015907504 + .long 4280857045 + .long 556198256 + .long 3683792669 + .long 82364686 + .long 52729717 + .long 3736847713 + .long 4266746795 + .long 1112396512 + .long 3072618042 + .long 164729372 + .long 105459434 + .long 3178728131 + .long 4238526295 + .long 2224793024 + .long 1850268788 + .long 329458745 + .long 210918868 + .long 2062488966 + .long 4182085295 + .long 154618752 + .long 3700537577 + .long 658917491 + .long 421837736 + .long 4124977933 + .long 4069203294 + .long 309237504 + .long 3106107858 + .long 1317834983 + .long 843675472 + .long 3954988571 + .long 3843439293 + .long 618475008 + .long 1917248420 + .long 2635669967 + .long 1687350944 + .long 3615009846 + .long 3391911291 + .long 1236950016 + .long 3834496840 + .long 976372639 + .long 3374701889 + .long 2935052397 + .long 2488855287 + .long 2473900033 + .long 3374026384 + .long 1952745279 + .long 2454436482 + .long 1575137499 + .long 682743279 + .long 652832771 + .long 2453085473 + .long 3905490559 + .long 613905668 + .long 3150274999 + .long 1365486558 + .long 1305665542 + .long 611203650 + .long 3516013822 + .long 1227811337 + .long 2005582702 + .long 2730973117 + .long 2611331084 + .long 1222407300 + .long 2737060348 + .long 2455622675 + .long 4011165404 + .long 1166978938 + .long 927694873 + .long 2444814601 + .long 1179153400 + .long 616278055 + .long 3727363513 + .long 2333957877 + .long 1855389746 + .long 594661906 + .long 2358306800 + .long 1232556110 + .long 3159759730 + .long 372948459 + .long 3710779492 + .long 1189323812 + .long 421646305 + .long 2465112221 + .long 2024552164 + .long 745896919 + .long 3126591689 + .long 2378647625 + .long 843292611 + .long 635257146 + .long 4049104329 + .long 1491793838 + .long 1958216082 + .long 462327955 + .long 1686585223 + .long 1270514292 + .long 3803241362 + .long 2983587677 + .long 3916432164 + .long 924655910 + .long 3373170446 + .long 2541028584 + .long 3311515428 + .long 1672208059 + .long 3537897033 + .long 1849311821 + .long 2451373597 + .long 787089873 + .long 2328063560 + .long 3344416119 + .long 2780826770 + .long 3698623643 + .long 607779899 + .long 1574179747 + .long 361159825 + .long 2393864943 + .long 1266686244 + .long 3102279991 + .long 1215559799 + .long 3148359494 + .long 722319651 + .long 492762590 + .long 2533372489 + .long 1909592686 + .long 2431119599 + .long 2001751692 + .long 1444639302 + .long 985525180 + .long 771777682 + .long 3819185373 + .long 567271902 + .long 4003503385 + .long 2889278605 + .long 1971050360 + .long 1543555365 + .long 3343403450 + .long 1134543805 + .long 3712039474 + .long 1483589915 + .long 3942100721 + .long 3087110731 + .long 2391839604 + .long 2269087610 + .long 3129111652 + .long 2967179831 + .long 3589234146 + .long 1879254167 + .long 488711913 + .long 243207925 + .long 1963256009 + .long 1639392366 + .long 2883500997 + .long 3758508334 + .long 977423826 + .long 486415851 + .long 3926512018 + .long 3278784732 + .long 1472034698 + .long 3222049373 + .long 1954847653 + .long 972831702 + .long 3558056740 + .long 2262602168 + .long 2944069397 + .long 2149131451 + .long 3909695307 + .long 1945663404 + .long 2821146184 + .long 230237041 + .long 1593171499 + .long 3295607 + .long 3524423319 + .long 3891326808 + .long 1347325072 + .long 460474083 + .long 3186342998 + .long 6591214 + .long 2753879342 + .long 3487686321 + .long 2694650145 + .long 920948167 + .long 2077718700 + .long 13182429 + .long 1212791388 + .long 2680405347 + .long 1094332995 + .long 1841896334 + .long 4155437400 + .long 26364858 + .long 2425582776 + .long 1065843399 + .long 2188665991 + .long 3683792669 + .long 4015907504 + .long 52729717 + .long 556198256 + .long 2131686798 + .long 82364686 + .long 3072618042 + .long 3736847713 + .long 105459434 + .long 1112396512 + .long 4263373596 + .long 164729372 + .long 1850268788 + .long 3178728131 + .long 210918868 + .long 2224793024 + .long 4231779897 + .long 329458745 + .long 3700537577 + .long 2062488966 + .long 421837736 + .long 154618752 + .long 4168592498 + .long 658917491 + .long 3106107858 + .long 4124977933 + .long 843675472 + .long 309237504 + .long 4042217701 + .long 1317834983 + .long 1917248420 + .long 3954988571 + .long 1687350944 + .long 618475008 + .long 3789468107 + .long 2635669967 + .long 3834496840 + .long 3615009846 + .long 3374701889 + .long 1236950016 + .long 3283968918 + .long 976372639 + .long 3374026384 + .long 2935052397 + .long 2454436482 + .long 2473900033 + .long 2272970540 + .long 1952745279 + .long 2453085473 + .long 1575137499 + .long 613905668 + .long 652832771 + .long 250973784 + .long 3905490559 + .long 611203650 + .long 3150274999 + .long 1227811337 + .long 1305665542 + .long 501947569 + .long 3516013822 + .long 1222407300 + .long 2005582702 + .long 2455622675 + .long 2611331084 + .long 1003895138 + .long 2737060348 + .long 2444814601 + .long 4011165404 + .long 616278055 + .long 927694873 + .long 2007790276 + .long 1179153400 + .long 594661906 + .long 3727363513 + .long 1232556110 + .long 1855389746 + .long 4015580553 + .long 2358306800 + .long 1189323812 + .long 3159759730 + .long 2465112221 + .long 3710779492 + .long 3736193810 + .long 421646305 + .long 2378647625 + .long 2024552164 + .long 635257146 + .long 3126591689 + .long 3177420325 + .long 843292611 + .long 462327955 + .long 4049104329 + .long 1270514292 + .long 1958216082 + .long 2059873354 + .long 1686585223 + .long 924655910 + .long 3803241362 + .long 2541028584 + .long 3916432164 + .long 4119746708 + .long 3373170446 + .long 1849311821 + .long 3311515428 + .long 787089873 + .long 3537897033 + .long 3944526121 + .long 2451373597 + .long 3698623643 + .long 2328063560 + .long 1574179747 + .long 2780826770 + .long 3594084947 + .long 607779899 + .long 3102279991 + .long 361159825 + .long 3148359494 + .long 1266686244 + .long 2893202598 + .long 1215559799 + .long 1909592686 + .long 722319651 + .long 2001751692 + .long 2533372489 + .long 1491437901 + .long 2431119599 + .long 3819185373 + .long 1444639302 + .long 4003503385 + .long 771777682 + .long 2982875802 + .long 567271902 + .long 3343403450 + .long 2889278605 + .long 3712039474 + .long 1543555365 + .long 1670784308 + .long 1134543805 + .long 2391839604 + .long 1483589915 + .long 3129111652 + .long 3087110731 + .long 3341568617 + .long 2269087610 + .long 488711913 + .long 2967179831 + .long 1963256009 + .long 1879254167 + .long 2388169939 + .long 243207925 + .long 977423826 + .long 1639392366 + .long 3926512018 + .long 3758508334 + .long 481372583 + .long 486415851 + .long 1954847653 + .long 3278784732 + .long 3558056740 + .long 3222049373 + .long 962745166 + .long 972831702 + .long 3909695307 + .long 2262602168 + .long 2821146184 + .long 2149131451 + .long 1925490332 + .long 1945663404 + .long 3524423319 + .long 230237041 + .long 1347325072 + .long 3295607 + .long 3850980665 + .long 3891326808 + .long 2753879342 + .long 460474083 + .long 2694650145 + .long 6591214 + .long 3406994035 + .long 3487686321 + .long 1212791388 + .long 920948167 + .long 1094332995 + .long 13182429 + .long 2519020775 + .long 2680405347 + .long 2425582776 + .long 1841896334 + .long 2188665991 + .long 26364858 + .long 743074255 + .long 1065843399 + .long 556198256 + .long 3683792669 + .long 82364686 + .long 52729717 + .long 1486148511 + .long 2131686798 + .long 1112396512 + .long 3072618042 + .long 164729372 + .long 105459434 + .long 2972297022 + .long 4263373596 + .long 2224793024 + .long 1850268788 + .long 329458745 + .long 210918868 + .long 1649626749 + .long 4231779897 + .long 154618752 + .long 3700537577 + .long 658917491 + .long 421837736 + .long 3299253499 + .long 4168592498 + .long 309237504 + .long 3106107858 + .long 1317834983 + .long 843675472 + .long 2303539703 + .long 4042217701 + .long 618475008 + .long 1917248420 + .long 2635669967 + .long 1687350944 + .long 312112110 + .long 3789468107 + .long 1236950016 + .long 3834496840 + .long 976372639 + .long 3374701889 + .long 624224221 + .long 3283968918 + .long 2473900033 + .long 3374026384 + .long 1952745279 + .long 2454436482 + .long 1248448442 + .long 2272970540 + .long 652832771 + .long 2453085473 + .long 3905490559 + .long 613905668 + .long 2496896884 + .long 250973784 + .long 1305665542 + .long 611203650 + .long 3516013822 + .long 1227811337 + .long 698826472 + .long 501947569 + .long 2611331084 + .long 1222407300 + .long 2737060348 + .long 2455622675 + .long 1397652945 + .long 1003895138 + .long 927694873 + .long 2444814601 + .long 1179153400 + .long 616278055 + .long 2795305890 + .long 2007790276 + .long 1855389746 + .long 594661906 + .long 2358306800 + .long 1232556110 + .long 1295644484 + .long 4015580553 + .long 3710779492 + .long 1189323812 + .long 421646305 + .long 2465112221 + .long 2591288968 + .long 3736193810 + .long 3126591689 + .long 2378647625 + .long 843292611 + .long 635257146 + .long 887610640 + .long 3177420325 + .long 1958216082 + .long 462327955 + .long 1686585223 + .long 1270514292 + .long 1775221280 + .long 2059873354 + .long 3916432164 + .long 924655910 + .long 3373170446 + .long 2541028584 + .long 3550442561 + .long 4119746708 + .long 3537897033 + .long 1849311821 + .long 2451373597 + .long 787089873 + .long 2805917826 + .long 3944526121 + .long 2780826770 + .long 3698623643 + .long 607779899 + .long 1574179747 + .long 1316868356 + .long 3594084947 + .long 1266686244 + .long 3102279991 + .long 1215559799 + .long 3148359494 + .long 2633736712 + .long 2893202598 + .long 2533372489 + .long 1909592686 + .long 2431119599 + .long 2001751692 + .long 972506129 + .long 1491437901 + .long 771777682 + .long 3819185373 + .long 567271902 + .long 4003503385 + .long 1945012259 + .long 2982875802 + .long 1543555365 + .long 3343403450 + .long 1134543805 + .long 3712039474 + .long 3890024518 + .long 1670784308 + .long 3087110731 + .long 2391839604 + .long 2269087610 + .long 3129111652 + .long 3485081741 + .long 3341568617 + .long 1879254167 + .long 488711913 + .long 243207925 + .long 1963256009 + .long 2675196186 + .long 2388169939 + .long 3758508334 + .long 977423826 + .long 486415851 + .long 3926512018 + .long 1055425077 + .long 481372583 + .long 3222049373 + .long 1954847653 + .long 972831702 + .long 3558056740 + .long 2110850155 + .long 962745166 + .long 2149131451 + .long 3909695307 + .long 1945663404 + .long 2821146184 + .long 4221700311 + .long 1925490332 + .long 3295607 + .long 3524423319 + .long 3891326808 + .long 1347325072 + .long 4148433327 + .long 3850980665 + .long 6591214 + .long 2753879342 + .long 3487686321 + .long 2694650145 + .long 4001899359 + .long 3406994035 + .long 13182429 + .long 1212791388 + .long 2680405347 + .long 1094332995 + .long 3708831422 + .long 2519020775 + .long 26364858 + .long 2425582776 + .long 1065843399 + .long 2188665991 + .long 3122695549 + .long 743074255 + .long 52729717 + .long 556198256 + .long 2131686798 + .long 82364686 + .long 1950423802 + .long 1486148511 + .long 105459434 + .long 1112396512 + .long 4263373596 + .long 164729372 + .long 3900847605 + .long 2972297022 + .long 210918868 + .long 2224793024 + .long 4231779897 + .long 329458745 + .long 3506727914 + .long 1649626749 + .long 421837736 + .long 154618752 + .long 4168592498 + .long 658917491 + .long 2718488532 + .long 3299253499 + .long 843675472 + .long 309237504 + .long 4042217701 + .long 1317834983 + .long 1142009769 + .long 2303539703 + .long 1687350944 + .long 618475008 + .long 3789468107 + .long 2635669967 + .long 2284019538 + .long 312112110 + .long 3374701889 + .long 1236950016 + .long 3283968918 + .long 976372639 + .long 273071781 + .long 624224221 + .long 2454436482 + .long 2473900033 + .long 2272970540 + .long 1952745279 + .long 546143563 + .long 1248448442 + .long 613905668 + .long 652832771 + .long 250973784 + .long 3905490559 + .long 1092287127 + .long 2496896884 + .long 1227811337 + .long 1305665542 + .long 501947569 + .long 3516013822 + .long 2184574254 + .long 698826472 + .long 2455622675 + .long 2611331084 + .long 1003895138 + .long 2737060348 + .long 74181213 + .long 1397652945 + .long 616278055 + .long 927694873 + .long 2007790276 + .long 1179153400 + .long 148362426 + .long 2795305890 + .long 1232556110 + .long 1855389746 + .long 4015580553 + .long 2358306800 + .long 296724853 + .long 1295644484 + .long 2465112221 + .long 3710779492 + .long 3736193810 + .long 421646305 + .long 593449707 + .long 2591288968 + .long 635257146 + .long 3126591689 + .long 3177420325 + .long 843292611 + .long 1186899415 + .long 887610640 + .long 1270514292 + .long 1958216082 + .long 2059873354 + .long 1686585223 + .long 2373798830 + .long 1775221280 + .long 2541028584 + .long 3916432164 + .long 4119746708 + .long 3373170446 + .long 452630365 + .long 3550442561 + .long 787089873 + .long 3537897033 + .long 3944526121 + .long 2451373597 + .long 905260731 + .long 2805917826 + .long 1574179747 + .long 2780826770 + .long 3594084947 + .long 607779899 + .long 1810521462 + .long 1316868356 + .long 3148359494 + .long 1266686244 + .long 2893202598 + .long 1215559799 + .long 3621042925 + .long 2633736712 + .long 2001751692 + .long 2533372489 + .long 1491437901 + .long 2431119599 + .long 2947118554 + .long 972506129 + .long 4003503385 + .long 771777682 + .long 2982875802 + .long 567271902 + .long 1599269812 + .long 1945012259 + .long 3712039474 + .long 1543555365 + .long 1670784308 + .long 1134543805 + .long 3198539624 + .long 3890024518 + .long 3129111652 + .long 3087110731 + .long 3341568617 + .long 2269087610 + .long 2102111953 + .long 3485081741 + .long 1963256009 + .long 1879254167 + .long 2388169939 + .long 243207925 + .long 4204223906 + .long 2675196186 + .long 3926512018 + .long 3758508334 + .long 481372583 + .long 486415851 + .long 4113480516 + .long 1055425077 + .long 3558056740 + .long 3222049373 + .long 962745166 + .long 972831702 + .long 3931993737 + .long 2110850155 + .long 2821146184 + .long 2149131451 + .long 1925490332 + .long 1945663404 + .long 3569020178 + .long 4221700311 + .long 1347325072 + .long 3295607 + .long 3850980665 + .long 3891326808 + .long 2843073060 + .long 4148433327 + .long 2694650145 + .long 6591214 + .long 3406994035 + .long 3487686321 + .long 1391178824 + .long 4001899359 + .long 1094332995 + .long 13182429 + .long 2519020775 + .long 2680405347 + .long 2782357648 + .long 3708831422 + .long 2188665991 + .long 26364858 + .long 743074255 + .long 1065843399 + .long 1269748001 + .long 3122695549 + .long 82364686 + .long 52729717 + .long 1486148511 + .long 2131686798 + .long 2539496002 + .long 1950423802 + .long 164729372 + .long 105459434 + .long 2972297022 + .long 4263373596 + .long 784024708 + .long 3900847605 + .long 329458745 + .long 210918868 + .long 1649626749 + .long 4231779897 + .long 1568049417 + .long 3506727914 + .long 658917491 + .long 421837736 + .long 3299253499 + .long 4168592498 + .long 3136098835 + .long 2718488532 + .long 1317834983 + .long 843675472 + .long 2303539703 + .long 4042217701 + .long 1977230375 + .long 1142009769 + .long 2635669967 + .long 1687350944 + .long 312112110 + .long 3789468107 + .long 3954460750 + .long 2284019538 + .long 976372639 + .long 3374701889 + .long 624224221 + .long 3283968918 + .long 3613954205 + .long 273071781 + .long 1952745279 + .long 2454436482 + .long 1248448442 + .long 2272970540 + .long 2932941114 + .long 546143563 + .long 3905490559 + .long 613905668 + .long 2496896884 + .long 250973784 + .long 1570914932 + .long 1092287127 + .long 3516013822 + .long 1227811337 + .long 698826472 + .long 501947569 + .long 3141829865 + .long 2184574254 + .long 2737060348 + .long 2455622675 + .long 1397652945 + .long 1003895138 + .long 1988692435 + .long 74181213 + .long 1179153400 + .long 616278055 + .long 2795305890 + .long 2007790276 + .long 3977384870 + .long 148362426 + .long 2358306800 + .long 1232556110 + .long 1295644484 + .long 4015580553 + .long 3659802444 + .long 296724853 + .long 421646305 + .long 2465112221 + .long 2591288968 + .long 3736193810 + .long 3024637593 + .long 593449707 + .long 843292611 + .long 635257146 + .long 887610640 + .long 3177420325 + .long 1754307891 + .long 1186899415 + .long 1686585223 + .long 1270514292 + .long 1775221280 + .long 2059873354 + .long 3508615783 + .long 2373798830 + .long 3373170446 + .long 2541028584 + .long 3550442561 + .long 4119746708 + .long 2722264270 + .long 452630365 + .long 2451373597 + .long 787089873 + .long 2805917826 + .long 3944526121 + .long 1149561244 + .long 905260731 + .long 607779899 + .long 1574179747 + .long 1316868356 + .long 3594084947 + .long 2299122488 + .long 1810521462 + .long 1215559799 + .long 3148359494 + .long 2633736712 + .long 2893202598 + .long 303277681 + .long 3621042925 + .long 2431119599 + .long 2001751692 + .long 972506129 + .long 1491437901 + .long 606555363 + .long 2947118554 + .long 567271902 + .long 4003503385 + .long 1945012259 + .long 2982875802 + .long 1213110727 + .long 1599269812 + .long 1134543805 + .long 3712039474 + .long 3890024518 + .long 1670784308 + .long 2426221454 + .long 3198539624 + .long 2269087610 + .long 3129111652 + .long 3485081741 + .long 3341568617 + .long 557475612 + .long 2102111953 + .long 243207925 + .long 1963256009 + .long 2675196186 + .long 2388169939 + .long 1114951224 + .long 4204223906 + .long 486415851 + .long 3926512018 + .long 1055425077 + .long 481372583 + .long 2229902448 + .long 4113480516 + .long 972831702 + .long 3558056740 + .long 2110850155 + .long 962745166 + .long 164837600 + .long 3931993737 + .long 1945663404 + .long 2821146184 + .long 4221700311 + .long 1925490332 + .long 329675200 + .long 3569020178 + .long 3891326808 + .long 1347325072 + .long 4148433327 + .long 3850980665 + .long 659350401 + .long 2843073060 + .long 3487686321 + .long 2694650145 + .long 4001899359 + .long 3406994035 + .long 1318700802 + .long 1391178824 + .long 2680405347 + .long 1094332995 + .long 3708831422 + .long 2519020775 + .long 2637401604 + .long 2782357648 + .long 1065843399 + .long 2188665991 + .long 3122695549 + .long 743074255 + .long 979835913 + .long 1269748001 + .long 2131686798 + .long 82364686 + .long 1950423802 + .long 1486148511 + .long 1959671827 + .long 2539496002 + .long 4263373596 + .long 164729372 + .long 3900847605 + .long 2972297022 + .long 3919343654 + .long 784024708 + .long 4231779897 + .long 329458745 + .long 3506727914 + .long 1649626749 + .long 3543720013 + .long 1568049417 + .long 4168592498 + .long 658917491 + .long 2718488532 + .long 3299253499 + .long 2792472730 + .long 3136098835 + .long 4042217701 + .long 1317834983 + .long 1142009769 + .long 2303539703 + .long 1289978165 + .long 1977230375 + .long 3789468107 + .long 2635669967 + .long 2284019538 + .long 312112110 + .long 2579956331 + .long 3954460750 + .long 3283968918 + .long 976372639 + .long 273071781 + .long 624224221 + .long 864945366 + .long 3613954205 + .long 2272970540 + .long 1952745279 + .long 546143563 + .long 1248448442 + .long 1729890733 + .long 2932941114 + .long 250973784 + .long 3905490559 + .long 1092287127 + .long 2496896884 + .long 3459781466 + .long 1570914932 + .long 501947569 + .long 3516013822 + .long 2184574254 + .long 698826472 + .long 2624595636 + .long 3141829865 + .long 1003895138 + .long 2737060348 + .long 74181213 + .long 1397652945 + .long 954223976 + .long 1988692435 + .long 2007790276 + .long 1179153400 + .long 148362426 + .long 2795305890 + .long 1908447953 + .long 3977384870 + .long 4015580553 + .long 2358306800 + .long 296724853 + .long 1295644484 + .long 3816895906 + .long 3659802444 + .long 3736193810 + .long 421646305 + .long 593449707 + .long 2591288968 + .long 3338824517 + .long 3024637593 + .long 3177420325 + .long 843292611 + .long 1186899415 + .long 887610640 + .long 2382681739 + .long 1754307891 + .long 2059873354 + .long 1686585223 + .long 2373798830 + .long 1775221280 + .long 470396183 + .long 3508615783 + .long 4119746708 + .long 3373170446 + .long 452630365 + .long 3550442561 + .long 940792367 + .long 2722264270 + .long 3944526121 + .long 2451373597 + .long 905260731 + .long 2805917826 + .long 1881584735 + .long 1149561244 + .long 3594084947 + .long 607779899 + .long 1810521462 + .long 1316868356 + .long 3763169470 + .long 2299122488 + .long 2893202598 + .long 1215559799 + .long 3621042925 + .long 2633736712 + .long 3231371645 + .long 303277681 + .long 1491437901 + .long 2431119599 + .long 2947118554 + .long 972506129 + .long 2167775995 + .long 606555363 + .long 2982875802 + .long 567271902 + .long 1599269812 + .long 1945012259 + .long 40584695 + .long 1213110727 + .long 1670784308 + .long 1134543805 + .long 3198539624 + .long 3890024518 + .long 81169391 + .long 2426221454 + .long 3341568617 + .long 2269087610 + .long 2102111953 + .long 3485081741 + .long 162338783 + .long 557475612 + .long 2388169939 + .long 243207925 + .long 4204223906 + .long 2675196186 + .long 324677567 + .long 1114951224 + .long 481372583 + .long 486415851 + .long 4113480516 + .long 1055425077 + .long 649355134 + .long 2229902448 + .long 962745166 + .long 972831702 + .long 3931993737 + .long 2110850155 + .long 1298710268 + .long 164837600 + .long 1925490332 + .long 1945663404 + .long 3569020178 + .long 4221700311 + .long 2597420537 + .long 329675200 + .long 3850980665 + .long 3891326808 + .long 2843073060 + .long 4148433327 + .long 899873778 + .long 659350401 + .long 3406994035 + .long 3487686321 + .long 1391178824 + .long 4001899359 + .long 1799747556 + .long 1318700802 + .long 2519020775 + .long 2680405347 + .long 2782357648 + .long 3708831422 + .long 3599495112 + .long 2637401604 + .long 743074255 + .long 1065843399 + .long 1269748001 + .long 3122695549 + .long 2904022928 + .long 979835913 + .long 1486148511 + .long 2131686798 + .long 2539496002 + .long 1950423802 + .long 1513078560 + .long 1959671827 + .long 2972297022 + .long 4263373596 + .long 784024708 + .long 3900847605 + .long 3026157121 + .long 3919343654 + .long 1649626749 + .long 4231779897 + .long 1568049417 + .long 3506727914 + .long 1757346946 + .long 3543720013 + .long 3299253499 + .long 4168592498 + .long 3136098835 + .long 2718488532 + .long 3514693892 + .long 2792472730 + .long 2303539703 + .long 4042217701 + .long 1977230375 + .long 1142009769 + .long 2734420489 + .long 1289978165 + .long 312112110 + .long 3789468107 + .long 3954460750 + .long 2284019538 + .long 1173873683 + .long 2579956331 + .long 624224221 + .long 3283968918 + .long 3613954205 + .long 273071781 + .long 2347747367 + .long 864945366 + .long 1248448442 + .long 2272970540 + .long 2932941114 + .long 546143563 + .long 400527438 + .long 1729890733 + .long 2496896884 + .long 250973784 + .long 1570914932 + .long 1092287127 + .long 801054876 + .long 3459781466 + .long 698826472 + .long 501947569 + .long 3141829865 + .long 2184574254 + .long 1602109753 + .long 2624595636 + .long 1397652945 + .long 1003895138 + .long 1988692435 + .long 74181213 + .long 3204219507 + .long 954223976 + .long 2795305890 + .long 2007790276 + .long 3977384870 + .long 148362426 + .long 2113471718 + .long 1908447953 + .long 1295644484 + .long 4015580553 + .long 3659802444 + .long 296724853 + .long 4226943436 + .long 3816895906 + .long 2591288968 + .long 3736193810 + .long 3024637593 + .long 593449707 + .long 4158919577 + .long 3338824517 + .long 887610640 + .long 3177420325 + .long 1754307891 + .long 1186899415 + .long 4022871858 + .long 2382681739 + .long 1775221280 + .long 2059873354 + .long 3508615783 + .long 2373798830 + .long 3750776420 + .long 470396183 + .long 3550442561 + .long 4119746708 + .long 2722264270 + .long 452630365 + .long 3206585544 + .long 940792367 + .long 2805917826 + .long 3944526121 + .long 1149561244 + .long 905260731 + .long 2118203793 + .long 1881584735 + .long 1316868356 + .long 3594084947 + .long 2299122488 + .long 1810521462 + .long 4236407587 + .long 3763169470 + .long 2633736712 + .long 2893202598 + .long 303277681 + .long 3621042925 + .long 4177847879 + .long 3231371645 + .long 972506129 + .long 1491437901 + .long 606555363 + .long 2947118554 + .long 4060728462 + .long 2167775995 + .long 1945012259 + .long 2982875802 + .long 1213110727 + .long 1599269812 + .long 3826489629 + .long 40584695 + .long 3890024518 + .long 1670784308 + .long 2426221454 + .long 3198539624 + .long 3358011962 + .long 81169391 + .long 3485081741 + .long 3341568617 + .long 557475612 + .long 2102111953 + .long 2421056629 + .long 162338783 + .long 2675196186 + .long 2388169939 + .long 1114951224 + .long 4204223906 + .long 547145963 + .long 324677567 + .long 1055425077 + .long 481372583 + .long 2229902448 + .long 4113480516 + .long 1094291926 + .long 649355134 + .long 2110850155 + .long 962745166 + .long 164837600 + .long 3931993737 + .long 2188583852 + .long 1298710268 + .long 4221700311 + .long 1925490332 + .long 329675200 + .long 3569020178 + .long 82200408 + .long 2597420537 + .long 4148433327 + .long 3850980665 + .long 659350401 + .long 2843073060 + .long 164400817 + .long 899873778 + .long 4001899359 + .long 3406994035 + .long 1318700802 + .long 1391178824 + .long 328801635 + .long 1799747556 + .long 3708831422 + .long 2519020775 + .long 2637401604 + .long 2782357648 + .long 657603271 + .long 3599495112 + .long 3122695549 + .long 743074255 + .long 979835913 + .long 1269748001 + .long 1315206542 + .long 2904022928 + .long 1950423802 + .long 1486148511 + .long 1959671827 + .long 2539496002 + .long 2630413084 + .long 1513078560 + .long 3900847605 + .long 2972297022 + .long 3919343654 + .long 784024708 + .long 965858873 + .long 3026157121 + .long 3506727914 + .long 1649626749 + .long 3543720013 + .long 1568049417 + .long 1931717747 + .long 1757346946 + .long 2718488532 + .long 3299253499 + .long 2792472730 + .long 3136098835 + .long 3863435494 + .long 3514693892 + .long 1142009769 + .long 2303539703 + .long 1289978165 + .long 1977230375 + .long 3431903692 + .long 2734420489 + .long 2284019538 + .long 312112110 + .long 2579956331 + .long 3954460750 + .long 2568840088 + .long 1173873683 + .long 273071781 + .long 624224221 + .long 864945366 + .long 3613954205 + .long 842712880 + .long 2347747367 + .long 546143563 + .long 1248448442 + .long 1729890733 + .long 2932941114 + .long 1685425760 + .long 400527438 + .long 1092287127 + .long 2496896884 + .long 3459781466 + .long 1570914932 + .long 3370851521 + .long 801054876 + .long 2184574254 + .long 698826472 + .long 2624595636 + .long 3141829865 + .long 2446735747 + .long 1602109753 + .long 74181213 + .long 1397652945 + .long 954223976 + .long 1988692435 + .long 598504198 + .long 3204219507 + .long 148362426 + .long 2795305890 + .long 1908447953 + .long 3977384870 + .long 1197008397 + .long 2113471718 + .long 296724853 + .long 1295644484 + .long 3816895906 + .long 3659802444 + .long 2394016794 + .long 4226943436 + .long 593449707 + .long 2591288968 + .long 3338824517 + .long 3024637593 + .long 493066293 + .long 4158919577 + .long 1186899415 + .long 887610640 + .long 2382681739 + .long 1754307891 + .long 986132586 + .long 4022871858 + .long 2373798830 + .long 1775221280 + .long 470396183 + .long 3508615783 + .long 1972265172 + .long 3750776420 + .long 452630365 + .long 3550442561 + .long 940792367 + .long 2722264270 + .long 3944530345 + .long 3206585544 + .long 905260731 + .long 2805917826 + .long 1881584735 + .long 1149561244 + .long 3594093395 + .long 2118203793 + .long 1810521462 + .long 1316868356 + .long 3763169470 + .long 2299122488 + .long 2893219494 + .long 4236407587 + .long 3621042925 + .long 2633736712 + .long 3231371645 + .long 303277681 + .long 1491471692 + .long 4177847879 + .long 2947118554 + .long 972506129 + .long 2167775995 + .long 606555363 + .long 2982943385 + .long 4060728462 + .long 1599269812 + .long 1945012259 + .long 40584695 + .long 1213110727 + .long 1670919475 + .long 3826489629 + .long 3198539624 + .long 3890024518 + .long 81169391 + .long 2426221454 + .long 3341838951 + .long 3358011962 + .long 2102111953 + .long 3485081741 + .long 162338783 + .long 557475612 + .long 2388710606 + .long 2421056629 + .long 4204223906 + .long 2675196186 + .long 324677567 + .long 1114951224 + .long 482453916 + .long 547145963 + .long 4113480516 + .long 1055425077 + .long 649355134 + .long 2229902448 + .long 964907833 + .long 1094291926 + .long 3931993737 + .long 2110850155 + .long 1298710268 + .long 164837600 + .long 1929815667 + .long 2188583852 + .long 3569020178 + .long 4221700311 + .long 2597420537 + .long 329675200 + .long 3859631335 + .long 82200408 + .long 2843073060 + .long 4148433327 + .long 899873778 + .long 659350401 + .long 3424295375 + .long 164400817 + .long 1391178824 + .long 4001899359 + .long 1799747556 + .long 1318700802 + .long 2553623455 + .long 328801635 + .long 2782357648 + .long 3708831422 + .long 3599495112 + .long 2637401604 + .long 812279614 + .long 657603271 + .long 1269748001 + .long 3122695549 + .long 2904022928 + .long 979835913 + .long 1624559229 + .long 1315206542 + .long 2539496002 + .long 1950423802 + .long 1513078560 + .long 1959671827 + .long 3249118458 + .long 2630413084 + .long 784024708 + .long 3900847605 + .long 3026157121 + .long 3919343654 + .long 2203269620 + .long 965858873 + .long 1568049417 + .long 3506727914 + .long 1757346946 + .long 3543720013 + .long 111571945 + .long 1931717747 + .long 3136098835 + .long 2718488532 + .long 3514693892 + .long 2792472730 + .long 223143890 + .long 3863435494 + .long 1977230375 + .long 1142009769 + .long 2734420489 + .long 1289978165 + .long 446287780 + .long 3431903692 + .long 3954460750 + .long 2284019538 + .long 1173873683 + .long 2579956331 + .long 892575561 + .long 2568840088 + .long 3613954205 + .long 273071781 + .long 2347747367 + .long 864945366 + .long 1785151123 + .long 842712880 + .long 2932941114 + .long 546143563 + .long 400527438 + .long 1729890733 + .long 3570302247 + .long 1685425760 + .long 1570914932 + .long 1092287127 + .long 801054876 + .long 3459781466 + .long 2845637198 + .long 3370851521 + .long 3141829865 + .long 2184574254 + .long 1602109753 + .long 2624595636 + .long 1396307100 + .long 2446735747 + .long 1988692435 + .long 74181213 + .long 3204219507 + .long 954223976 + .long 2792614201 + .long 598504198 + .long 3977384870 + .long 148362426 + .long 2113471718 + .long 1908447953 + .long 1290261106 + .long 1197008397 + .long 3659802444 + .long 296724853 + .long 4226943436 + .long 3816895906 + .long 2580522212 + .long 2394016794 + .long 3024637593 + .long 593449707 + .long 4158919577 + .long 3338824517 + .long 866077128 + .long 493066293 + .long 1754307891 + .long 1186899415 + .long 4022871858 + .long 2382681739 + .long 1732154256 + .long 986132586 + .long 3508615783 + .long 2373798830 + .long 3750776420 + .long 470396183 + .long 3464308513 + .long 1972265172 + .long 2722264270 + .long 452630365 + .long 3206585544 + .long 940792367 + .long 2633649730 + .long 3944530345 + .long 1149561244 + .long 905260731 + .long 2118203793 + .long 1881584735 + .long 972332164 + .long 3594093395 + .long 2299122488 + .long 1810521462 + .long 4236407587 + .long 3763169470 + .long 1944664328 + .long 2893219494 + .long 303277681 + .long 3621042925 + .long 4177847879 + .long 3231371645 + .long 3889328657 + .long 1491471692 + .long 606555363 + .long 2947118554 + .long 4060728462 + .long 2167775995 + .long 3483690018 + .long 2982943385 + .long 1213110727 + .long 1599269812 + .long 3826489629 + .long 40584695 + .long 2672412741 + .long 1670919475 + .long 2426221454 + .long 3198539624 + .long 3358011962 + .long 81169391 + .long 1049858187 + .long 3341838951 + .long 557475612 + .long 2102111953 + .long 2421056629 + .long 162338783 + .long 2099716375 + .long 2388710606 + .long 1114951224 + .long 4204223906 + .long 547145963 + .long 324677567 + .long 4199432751 + .long 482453916 + .long 2229902448 + .long 4113480516 + .long 1094291926 + .long 649355134 + .long 4103898207 + .long 964907833 + .long 164837600 + .long 3931993737 + .long 2188583852 + .long 1298710268 + .long 3912829119 + .long 1929815667 + .long 329675200 + .long 3569020178 + .long 82200408 + .long 2597420537 + .long 3530690942 + .long 3859631335 + .long 659350401 + .long 2843073060 + .long 164400817 + .long 899873778 + .long 2766414588 + .long 3424295375 + .long 1318700802 + .long 1391178824 + .long 328801635 + .long 1799747556 + .long 1237861880 + .long 2553623455 + .long 2637401604 + .long 2782357648 + .long 657603271 + .long 3599495112 + .long 2475723761 + .long 812279614 + .long 979835913 + .long 1269748001 + .long 1315206542 + .long 2904022928 + .long 656480226 + .long 1624559229 + .long 1959671827 + .long 2539496002 + .long 2630413084 + .long 1513078560 + .long 1312960453 + .long 3249118458 + .long 3919343654 + .long 784024708 + .long 965858873 + .long 3026157121 + .long 2625920907 + .long 2203269620 + .long 3543720013 + .long 1568049417 + .long 1931717747 + .long 1757346946 + .long 956874519 + .long 111571945 + .long 2792472730 + .long 3136098835 + .long 3863435494 + .long 3514693892 + .long 1913749038 + .long 223143890 + .long 1289978165 + .long 1977230375 + .long 3431903692 + .long 2734420489 + .long 3827498077 + .long 446287780 + .long 2579956331 + .long 3954460750 + .long 2568840088 + .long 1173873683 + .long 3360028859 + .long 892575561 + .long 864945366 + .long 3613954205 + .long 842712880 + .long 2347747367 + .long 2425090423 + .long 1785151123 + .long 1729890733 + .long 2932941114 + .long 1685425760 + .long 400527438 + .long 555213551 + .long 3570302247 + .long 3459781466 + .long 1570914932 + .long 3370851521 + .long 801054876 + .long 1110427102 + .long 2845637198 + .long 2624595636 + .long 3141829865 + .long 2446735747 + .long 1602109753 + .long 2220854205 + .long 1396307100 + .long 954223976 + .long 1988692435 + .long 598504198 + .long 3204219507 + .long 146741115 + .long 2792614201 + .long 1908447953 + .long 3977384870 + .long 1197008397 + .long 2113471718 + .long 293482231 + .long 1290261106 + .long 3816895906 + .long 3659802444 + .long 2394016794 + .long 4226943436 + .long 586964463 + .long 2580522212 + .long 3338824517 + .long 3024637593 + .long 493066293 + .long 4158919577 + .long 1173928927 + .long 866077128 + .long 2382681739 + .long 1754307891 + .long 986132586 + .long 4022871858 + .long 2347857855 + .long 1732154256 + .long 470396183 + .long 3508615783 + .long 1972265172 + .long 3750776420 + .long 400748414 + .long 3464308513 + .long 940792367 + .long 2722264270 + .long 3944530345 + .long 3206585544 + .long 801496828 + .long 2633649730 + .long 1881584735 + .long 1149561244 + .long 3594093395 + .long 2118203793 + .long 1602993657 + .long 972332164 + .long 3763169470 + .long 2299122488 + .long 2893219494 + .long 4236407587 + .long 3205987314 + .long 1944664328 + .long 3231371645 + .long 303277681 + .long 1491471692 + .long 4177847879 + .long 2117007332 + .long 3889328657 + .long 2167775995 + .long 606555363 + .long 2982943385 + .long 4060728462 + .long 4234014665 + .long 3483690018 + .long 40584695 + .long 1213110727 + .long 1670919475 + .long 3826489629 + .long 4173062034 + .long 2672412741 + .long 81169391 + .long 2426221454 + .long 3341838951 + .long 3358011962 + .long 4051156773 + .long 1049858187 + .long 162338783 + .long 557475612 + .long 2388710606 + .long 2421056629 + .long 3807346250 + .long 2099716375 + .long 324677567 + .long 1114951224 + .long 482453916 + .long 547145963 + .long 3319725204 + .long 4199432751 + .long 649355134 + .long 2229902448 + .long 964907833 + .long 1094291926 + .long 2344483112 + .long 4103898207 + .long 1298710268 + .long 164837600 + .long 1929815667 + .long 2188583852 + .long 393998928 + .long 3912829119 + .long 2597420537 + .long 329675200 + .long 3859631335 + .long 82200408 + .long 787997856 + .long 3530690942 + .long 899873778 + .long 659350401 + .long 3424295375 + .long 164400817 + .long 1575995713 + .long 2766414588 + .long 1799747556 + .long 1318700802 + .long 2553623455 + .long 328801635 + .long 3151991427 + .long 1237861880 + .long 3599495112 + .long 2637401604 + .long 812279614 + .long 657603271 + .long 2009015559 + .long 2475723761 + .long 2904022928 + .long 979835913 + .long 1624559229 + .long 1315206542 + .long 4018031118 + .long 656480226 + .long 1513078560 + .long 1959671827 + .long 3249118458 + .long 2630413084 + .long 3741094941 + .long 1312960453 + .long 3026157121 + .long 3919343654 + .long 2203269620 + .long 965858873 + .long 3187222587 + .long 2625920907 + .long 1757346946 + .long 3543720013 + .long 111571945 + .long 1931717747 + .long 2079477878 + .long 956874519 + .long 3514693892 + .long 2792472730 + .long 223143890 + .long 3863435494 + .long 4158955756 + .long 1913749038 + .long 2734420489 + .long 1289978165 + .long 446287780 + .long 3431903692 + .long 4022944216 + .long 3827498077 + .long 1173873683 + .long 2579956331 + .long 892575561 + .long 2568840088 + .long 3750921137 + .long 3360028859 + .long 2347747367 + .long 864945366 + .long 1785151123 + .long 842712880 + .long 3206874979 + .long 2425090423 + .long 400527438 + .long 1729890733 + .long 3570302247 + .long 1685425760 + .long 2118782663 + .long 555213551 + .long 801054876 + .long 3459781466 + .long 2845637198 + .long 3370851521 + .long 4237565327 + .long 1110427102 + .long 1602109753 + .long 2624595636 + .long 1396307100 + .long 2446735747 + .long 4180163359 + .long 2220854205 + .long 3204219507 + .long 954223976 + .long 2792614201 + .long 598504198 + .long 4065359423 + .long 146741115 + .long 2113471718 + .long 1908447953 + .long 1290261106 + .long 1197008397 + .long 3835751551 + .long 293482231 + .long 4226943436 + .long 3816895906 + .long 2580522212 + .long 2394016794 + .long 3376535807 + .long 586964463 + .long 4158919577 + .long 3338824517 + .long 866077128 + .long 493066293 + .long 2458104319 + .long 1173928927 + .long 4022871858 + .long 2382681739 + .long 1732154256 + .long 986132586 + .long 621241343 + .long 2347857855 + .long 3750776420 + .long 470396183 + .long 3464308513 + .long 1972265172 + .long 1242482686 + .long 400748414 + .long 3206585544 + .long 940792367 + .long 2633649730 + .long 3944530345 + .long 2484965372 + .long 801496828 + .long 2118203793 + .long 1881584735 + .long 972332164 + .long 3594093395 + .long 674963448 + .long 1602993657 + .long 4236407587 + .long 3763169470 + .long 1944664328 + .long 2893219494 + .long 1349926897 + .long 3205987314 + .long 4177847879 + .long 3231371645 + .long 3889328657 + .long 1491471692 + .long 2699853794 + .long 2117007332 + .long 4060728462 + .long 2167775995 + .long 3483690018 + .long 2982943385 + .long 1104740292 + .long 4234014665 + .long 3826489629 + .long 40584695 + .long 2672412741 + .long 1670919475 + .long 2209480585 + .long 4173062034 + .long 3358011962 + .long 81169391 + .long 1049858187 + .long 3341838951 + .long 123993874 + .long 4051156773 + .long 2421056629 + .long 162338783 + .long 2099716375 + .long 2388710606 + .long 247987749 + .long 3807346250 + .long 547145963 + .long 324677567 + .long 4199432751 + .long 482453916 + .long 495975499 + .long 3319725204 + .long 1094291926 + .long 649355134 + .long 4103898207 + .long 964907833 + .long 991950999 + .long 2344483112 + .long 2188583852 + .long 1298710268 + .long 3912829119 + .long 1929815667 + .long 1983901999 + .long 393998928 + .long 82200408 + .long 2597420537 + .long 3530690942 + .long 3859631335 + .long 3967803999 + .long 787997856 + .long 164400817 + .long 899873778 + .long 2766414588 + .long 3424295375 + .long 3640640703 + .long 1575995713 + .long 328801635 + .long 1799747556 + .long 1237861880 + .long 2553623455 + .long 2986314111 + .long 3151991427 + .long 657603271 + .long 3599495112 + .long 2475723761 + .long 812279614 + .long 1677660927 + .long 2009015559 + .long 1315206542 + .long 2904022928 + .long 656480226 + .long 1624559229 + .long 3355321855 + .long 4018031118 + .long 2630413084 + .long 1513078560 + .long 1312960453 + .long 3249118458 + .long 2415676415 + .long 3741094941 + .long 965858873 + .long 3026157121 + .long 2625920907 + .long 2203269620 + .long 536385535 + .long 3187222587 + .long 1931717747 + .long 1757346946 + .long 956874519 + .long 111571945 + .long 1072771071 + .long 2079477878 + .long 3863435494 + .long 3514693892 + .long 1913749038 + .long 223143890 + .long 2145542143 + .long 4158955756 + .long 3431903692 + .long 2734420489 + .long 3827498077 + .long 446287780 + .long 4291084286 + .long 4022944216 + .long 2568840088 + .long 1173873683 + .long 3360028859 + .long 892575561 + .long 4287201277 + .long 3750921137 + .long 842712880 + .long 2347747367 + .long 2425090423 + .long 1785151123 + .long 4279435259 + .long 3206874979 + .long 1685425760 + .long 400527438 + .long 555213551 + .long 3570302247 + .long 4263903223 + .long 2118782663 + .long 3370851521 + .long 801054876 + .long 1110427102 + .long 2845637198 + .long 4232839151 + .long 4237565327 + .long 2446735747 + .long 1602109753 + .long 2220854205 + .long 1396307100 + .long 4170711006 + .long 4180163359 + .long 598504198 + .long 3204219507 + .long 146741115 + .long 2792614201 + .long 4046454716 + .long 4065359423 + .long 1197008397 + .long 2113471718 + .long 293482231 + .long 1290261106 + .long 3797942136 + .long 3835751551 + .long 2394016794 + .long 4226943436 + .long 586964463 + .long 2580522212 + .long 3300916976 + .long 3376535807 + .long 493066293 + .long 4158919577 + .long 1173928927 + .long 866077128 + .long 2306866656 + .long 2458104319 + .long 986132586 + .long 4022871858 + .long 2347857855 + .long 1732154256 + .long 318766016 + .long 621241343 + .long 1972265172 + .long 3750776420 + .long 400748414 + .long 3464308513 + .long 637532033 + .long 1242482686 + .long 3944530345 + .long 3206585544 + .long 801496828 + .long 2633649730 + .long 1275064066 + .long 2484965372 + .long 3594093395 + .long 2118203793 + .long 1602993657 + .long 972332164 + .long 2550128133 + .long 674963448 + .long 2893219494 + .long 4236407587 + .long 3205987314 + .long 1944664328 + .long 805288971 + .long 1349926897 + .long 1491471692 + .long 4177847879 + .long 2117007332 + .long 3889328657 + .long 1610577942 + .long 2699853794 + .long 2982943385 + .long 4060728462 + .long 4234014665 + .long 3483690018 + .long 3221155884 + .long 1104740292 + .long 1670919475 + .long 3826489629 + .long 4173062034 + .long 2672412741 + .long 2147344473 + .long 2209480585 + .long 3341838951 + .long 3358011962 + .long 4051156773 + .long 1049858187 + .long 4294688947 + .long 123993874 + .long 2388710606 + .long 2421056629 + .long 3807346250 + .long 2099716375 + .long 4294410598 + .long 247987749 + .long 482453916 + .long 547145963 + .long 3319725204 + .long 4199432751 + .long 4293853900 + .long 495975499 + .long 964907833 + .long 1094291926 + .long 2344483112 + .long 4103898207 + .long 4292740504 + .long 991950999 + .long 1929815667 + .long 2188583852 + .long 393998928 + .long 3912829119 + .long 4290513712 + .long 1983901999 + .long 3859631335 + .long 82200408 + .long 787997856 + .long 3530690942 + .long 4286060128 + .long 3967803999 + .long 3424295375 + .long 164400817 + .long 1575995713 + .long 2766414588 + .long 4277152960 + .long 3640640703 + .long 2553623455 + .long 328801635 + .long 3151991427 + .long 1237861880 + .long 4259338624 + .long 2986314111 + .long 812279614 + .long 657603271 + .long 2009015559 + .long 2475723761 + .long 4223709953 + .long 1677660927 + .long 1624559229 + .long 1315206542 + .long 4018031118 + .long 656480226 + .long 4152452611 + .long 3355321855 + .long 3249118458 + .long 2630413084 + .long 3741094941 + .long 1312960453 + .long 4009937927 + .long 2415676415 + .long 2203269620 + .long 965858873 + .long 3187222587 + .long 2625920907 + .long 3724908559 + .long 536385535 + .long 111571945 + .long 1931717747 + .long 2079477878 + .long 956874519 + .long 3154849823 + .long 1072771071 + .long 223143890 + .long 3863435494 + .long 4158955756 + .long 1913749038 + .long 2014732351 + .long 2145542143 + .long 446287780 + .long 3431903692 + .long 4022944216 + .long 3827498077 + .long 4029464703 + .long 4291084286 + .long 892575561 + .long 2568840088 + .long 3750921137 + .long 3360028859 + .long 3763962110 + .long 4287201277 + .long 1785151123 + .long 842712880 + .long 3206874979 + .long 2425090423 + .long 3232956925 + .long 4279435259 + .long 3570302247 + .long 1685425760 + .long 2118782663 + .long 555213551 + .long 2170946555 + .long 4263903223 + .long 2845637198 + .long 3370851521 + .long 4237565327 + .long 1110427102 + .long 46925815 + .long 4232839151 + .long 1396307100 + .long 2446735747 + .long 4180163359 + .long 2220854205 + .long 93851631 + .long 4170711006 + .long 2792614201 + .long 598504198 + .long 4065359423 + .long 146741115 + .long 187703262 + .long 4046454716 + .long 1290261106 + .long 1197008397 + .long 3835751551 + .long 293482231 + .long 375406524 + .long 3797942136 + .long 2580522212 + .long 2394016794 + .long 3376535807 + .long 586964463 + .long 750813049 + .long 3300916976 + .long 866077128 + .long 493066293 + .long 2458104319 + .long 1173928927 + .long 1501626098 + .long 2306866656 + .long 1732154256 + .long 986132586 + .long 621241343 + .long 2347857855 + .long 3003252197 + .long 318766016 + .long 3464308513 + .long 1972265172 + .long 1242482686 + .long 400748414 + .long 1711537099 + .long 637532033 + .long 2633649730 + .long 3944530345 + .long 2484965372 + .long 801496828 + .long 3423074199 + .long 1275064066 + .long 972332164 + .long 3594093395 + .long 674963448 + .long 1602993657 + .long 2551181103 + .long 2550128133 + .long 1944664328 + .long 2893219494 + .long 1349926897 + .long 3205987314 + .long 807394910 + .long 805288971 + .long 3889328657 + .long 1491471692 + .long 2699853794 + .long 2117007332 + .long 1614789820 + .long 1610577942 + .long 3483690018 + .long 2982943385 + .long 1104740292 + .long 4234014665 + .long 3229579640 + .long 3221155884 + .long 2672412741 + .long 1670919475 + .long 2209480585 + .long 4173062034 + .long 2164191985 + .long 2147344473 + .long 1049858187 + .long 3341838951 + .long 123993874 + .long 4051156773 + .long 33416674 + .long 4294688947 + .long 2099716375 + .long 2388710606 + .long 247987749 + .long 3807346250 + .long 66833348 + .long 4294410598 + .long 4199432751 + .long 482453916 + .long 495975499 + .long 3319725204 + .long 133666696 + .long 4293853900 + .long 4103898207 + .long 964907833 + .long 991950999 + .long 2344483112 + .long 267333393 + .long 4292740504 + .long 3912829119 + .long 1929815667 + .long 1983901999 + .long 393998928 + .long 534666787 + .long 4290513712 + .long 3530690942 + .long 3859631335 + .long 3967803999 + .long 787997856 + .long 1069333574 + .long 4286060128 + .long 2766414588 + .long 3424295375 + .long 3640640703 + .long 1575995713 + .long 2138667148 + .long 4277152960 + .long 1237861880 + .long 2553623455 + .long 2986314111 + .long 3151991427 + .long 4277334296 + .long 4259338624 + .long 2475723761 + .long 812279614 + .long 1677660927 + .long 2009015559 + .long 4259701297 + .long 4223709953 + .long 656480226 + .long 1624559229 + .long 3355321855 + .long 4018031118 + .long 4224435298 + .long 4152452611 + .long 1312960453 + .long 3249118458 + .long 2415676415 + .long 3741094941 + .long 4153903301 + .long 4009937927 + .long 2625920907 + .long 2203269620 + .long 536385535 + .long 3187222587 + .long 4012839307 + .long 3724908559 + .long 956874519 + .long 111571945 + .long 1072771071 + .long 2079477878 + .long 3730711318 + .long 3154849823 + .long 1913749038 + .long 223143890 + .long 2145542143 + .long 4158955756 + .long 3166455341 + .long 2014732351 + .long 3827498077 + .long 446287780 + .long 4291084286 + .long 4022944216 + .long 2037943386 + .long 4029464703 + .long 3360028859 + .long 892575561 + .long 4287201277 + .long 3750921137 + .long 4075886773 + .long 3763962110 + .long 2425090423 + .long 1785151123 + .long 4279435259 + .long 3206874979 + .long 3856806251 + .long 3232956925 + .long 555213551 + .long 3570302247 + .long 4263903223 + .long 2118782663 + .long 3418645206 + .long 2170946555 + .long 1110427102 + .long 2845637198 + .long 4232839151 + .long 4237565327 + .long 2542323117 + .long 46925815 + .long 2220854205 + .long 1396307100 + .long 4170711006 + .long 4180163359 + .long 789678938 + .long 93851631 + .long 146741115 + .long 2792614201 + .long 4046454716 + .long 4065359423 + .long 1579357876 + .long 187703262 + .long 293482231 + .long 1290261106 + .long 3797942136 + .long 3835751551 + .long 3158715752 + .long 375406524 + .long 586964463 + .long 2580522212 + .long 3300916976 + .long 3376535807 + .long 2022464208 + .long 750813049 + .long 1173928927 + .long 866077128 + .long 2306866656 + .long 2458104319 + .long 4044928416 + .long 1501626098 + .long 2347857855 + .long 1732154256 + .long 318766016 + .long 621241343 + .long 3794889537 + .long 3003252197 + .long 400748414 + .long 3464308513 + .long 637532033 + .long 1242482686 + .long 3294811778 + .long 1711537099 + .long 801496828 + .long 2633649730 + .long 1275064066 + .long 2484965372 + .long 2294656261 + .long 3423074199 + .long 1602993657 + .long 972332164 + .long 2550128133 + .long 674963448 + .long 294345226 + .long 2551181103 + .long 3205987314 + .long 1944664328 + .long 805288971 + .long 1349926897 + .long 588690452 + .long 807394910 + .long 2117007332 + .long 3889328657 + .long 1610577942 + .long 2699853794 + .long 1177380905 + .long 1614789820 + .long 4234014665 + .long 3483690018 + .long 3221155884 + .long 1104740292 + .long 2354761811 + .long 3229579640 + .long 4173062034 + .long 2672412741 + .long 2147344473 + .long 2209480585 + .long 414556326 + .long 2164191985 + .long 4051156773 + .long 1049858187 + .long 4294688947 + .long 123993874 + .long 829112653 + .long 33416674 + .long 3807346250 + .long 2099716375 + .long 4294410598 + .long 247987749 + .long 1658225307 + .long 66833348 + .long 3319725204 + .long 4199432751 + .long 4293853900 + .long 495975499 + .long 3316450614 + .long 133666696 + .long 2344483112 + .long 4103898207 + .long 4292740504 + .long 991950999 + .long 2337933933 + .long 267333393 + .long 393998928 + .long 3912829119 + .long 4290513712 + .long 1983901999 + .long 380900570 + .long 534666787 + .long 787997856 + .long 3530690942 + .long 4286060128 + .long 3967803999 + .long 761801140 + .long 1069333574 + .long 1575995713 + .long 2766414588 + .long 4277152960 + .long 3640640703 + .long 1523602280 + .long 2138667148 + .long 3151991427 + .long 1237861880 + .long 4259338624 + .long 2986314111 + .long 3047204561 + .long 4277334296 + .long 2009015559 + .long 2475723761 + .long 4223709953 + .long 1677660927 + .long 1799441827 + .long 4259701297 + .long 4018031118 + .long 656480226 + .long 4152452611 + .long 3355321855 + .long 3598883655 + .long 4224435298 + .long 3741094941 + .long 1312960453 + .long 4009937927 + .long 2415676415 + .long 2902800015 + .long 4153903301 + .long 3187222587 + .long 2625920907 + .long 3724908559 + .long 536385535 + .long 1510632735 + .long 4012839307 + .long 2079477878 + .long 956874519 + .long 3154849823 + .long 1072771071 + .long 3021265470 + .long 3730711318 + .long 4158955756 + .long 1913749038 + .long 2014732351 + .long 2145542143 + .long 1747563645 + .long 3166455341 + .long 4022944216 + .long 3827498077 + .long 4029464703 + .long 4291084286 + .long 3495127291 + .long 2037943386 + .long 3750921137 + .long 3360028859 + .long 3763962110 + .long 4287201277 + .long 2695287286 + .long 4075886773 + .long 3206874979 + .long 2425090423 + .long 3232956925 + .long 4279435259 + .long 1095607277 + .long 3856806251 + .long 2118782663 + .long 555213551 + .long 2170946555 + .long 4263903223 + .long 2191214555 + .long 3418645206 + .long 4237565327 + .long 1110427102 + .long 46925815 + .long 4232839151 + .long 87461814 + .long 2542323117 + .long 4180163359 + .long 2220854205 + .long 93851631 + .long 4170711006 + .long 174923629 + .long 789678938 + .long 4065359423 + .long 146741115 + .long 187703262 + .long 4046454716 + .long 349847258 + .long 1579357876 + .long 3835751551 + .long 293482231 + .long 375406524 + .long 3797942136 + .long 699694516 + .long 3158715752 + .long 3376535807 + .long 586964463 + .long 750813049 + .long 3300916976 + .long 1399389033 + .long 2022464208 + .long 2458104319 + .long 1173928927 + .long 1501626098 + .long 2306866656 + .long 2798778067 + .long 4044928416 + .long 621241343 + .long 2347857855 + .long 3003252197 + .long 318766016 + .long 1302588838 + .long 3794889537 + .long 1242482686 + .long 400748414 + .long 1711537099 + .long 637532033 + .long 2605177677 + .long 3294811778 + .long 2484965372 + .long 801496828 + .long 3423074199 + .long 1275064066 + .long 915388059 + .long 2294656261 + .long 674963448 + .long 1602993657 + .long 2551181103 + .long 2550128133 + .long 1830776118 + .long 294345226 + .long 1349926897 + .long 3205987314 + .long 807394910 + .long 805288971 + .long 3661552236 + .long 588690452 + .long 2699853794 + .long 2117007332 + .long 1614789820 + .long 1610577942 + .long 3028137177 + .long 1177380905 + .long 1104740292 + .long 4234014665 + .long 3229579640 + .long 3221155884 + .long 1761307059 + .long 2354761811 + .long 2209480585 + .long 4173062034 + .long 2164191985 + .long 2147344473 + .long 3522614119 + .long 414556326 + .long 123993874 + .long 4051156773 + .long 33416674 + .long 4294688947 + .long 2750260943 + .long 829112653 + .long 247987749 + .long 3807346250 + .long 66833348 + .long 4294410598 + .long 1205554591 + .long 1658225307 + .long 495975499 + .long 3319725204 + .long 133666696 + .long 4293853900 + .long 2411109183 + .long 3316450614 + .long 991950999 + .long 2344483112 + .long 267333393 + .long 4292740504 + .long 527251070 + .long 2337933933 + .long 1983901999 + .long 393998928 + .long 534666787 + .long 4290513712 + .long 1054502141 + .long 380900570 + .long 3967803999 + .long 787997856 + .long 1069333574 + .long 4286060128 + .long 2109004283 + .long 761801140 + .long 3640640703 + .long 1575995713 + .long 2138667148 + .long 4277152960 + .long 4218008566 + .long 1523602280 + .long 2986314111 + .long 3151991427 + .long 4277334296 + .long 4259338624 + .long 4141049836 + .long 3047204561 + .long 1677660927 + .long 2009015559 + .long 4259701297 + .long 4223709953 + .long 3987132377 + .long 1799441827 + .long 3355321855 + .long 4018031118 + .long 4224435298 + .long 4152452611 + .long 3679297459 + .long 3598883655 + .long 2415676415 + .long 3741094941 + .long 4153903301 + .long 4009937927 + .long 3063627623 + .long 2902800015 + .long 536385535 + .long 3187222587 + .long 4012839307 + .long 3724908559 + .long 1832287951 + .long 1510632735 + .long 1072771071 + .long 2079477878 + .long 3730711318 + .long 3154849823 + .long 3664575902 + .long 3021265470 + .long 2145542143 + .long 4158955756 + .long 3166455341 + .long 2014732351 + .long 3034184508 + .long 1747563645 + .long 4291084286 + .long 4022944216 + .long 2037943386 + .long 4029464703 + .long 1773401721 + .long 3495127291 + .long 4287201277 + .long 3750921137 + .long 4075886773 + .long 3763962110 + .long 3546803442 + .long 2695287286 + .long 4279435259 + .long 3206874979 + .long 3856806251 + .long 3232956925 + .long 2798639588 + .long 1095607277 + .long 4263903223 + .long 2118782663 + .long 3418645206 + .long 2170946555 + .long 1302311881 + .long 2191214555 + .long 4232839151 + .long 4237565327 + .long 2542323117 + .long 46925815 + .long 2604623763 + .long 87461814 + .long 4170711006 + .long 4180163359 + .long 789678938 + .long 93851631 + .long 914280231 + .long 174923629 + .long 4046454716 + .long 4065359423 + .long 1579357876 + .long 187703262 + .long 1828560463 + .long 349847258 + .long 3797942136 + .long 3835751551 + .long 3158715752 + .long 375406524 + .long 3657120927 + .long 699694516 + .long 3300916976 + .long 3376535807 + .long 2022464208 + .long 750813049 + .long 3019274558 + .long 1399389033 + .long 2306866656 + .long 2458104319 + .long 4044928416 + .long 1501626098 + .long 1743581820 + .long 2798778067 + .long 318766016 + .long 621241343 + .long 3794889537 + .long 3003252197 + .long 3487163641 + .long 1302588838 + .long 637532033 + .long 1242482686 + .long 3294811778 + .long 1711537099 + .long 2679359986 + .long 2605177677 + .long 1275064066 + .long 2484965372 + .long 2294656261 + .long 3423074199 + .long 1063752677 + .long 915388059 + .long 2550128133 + .long 674963448 + .long 294345226 + .long 2551181103 + .long 2127505355 + .long 1830776118 + .long 805288971 + .long 1349926897 + .long 588690452 + .long 807394910 + .long 4255010710 + .long 3661552236 + .long 1610577942 + .long 2699853794 + .long 1177380905 + .long 1614789820 + .long 4215054124 + .long 3028137177 + .long 3221155884 + .long 1104740292 + .long 2354761811 + .long 3229579640 + .long 4135140952 + .long 1761307059 + .long 2147344473 + .long 2209480585 + .long 414556326 + .long 2164191985 + .long 3975314608 + .long 3522614119 + .long 4294688947 + .long 123993874 + .long 829112653 + .long 33416674 + .long 3655661921 + .long 2750260943 + .long 4294410598 + .long 247987749 + .long 1658225307 + .long 66833348 + .long 3016356546 + .long 1205554591 + .long 4293853900 + .long 495975499 + .long 3316450614 + .long 133666696 + .long 1737745796 + .long 2411109183 + .long 4292740504 + .long 991950999 + .long 2337933933 + .long 267333393 + .long 3475491593 + .long 527251070 + .long 4290513712 + .long 1983901999 + .long 380900570 + .long 534666787 + .long 2656015891 + .long 1054502141 + .long 4286060128 + .long 3967803999 + .long 761801140 + .long 1069333574 + .long 1017064486 + .long 2109004283 + .long 4277152960 + .long 3640640703 + .long 1523602280 + .long 2138667148 + .long 2034128973 + .long 4218008566 + .long 4259338624 + .long 2986314111 + .long 3047204561 + .long 4277334296 + .long 4068257947 + .long 4141049836 + .long 4223709953 + .long 1677660927 + .long 1799441827 + .long 4259701297 + .long 3841548598 + .long 3987132377 + .long 4152452611 + .long 3355321855 + .long 3598883655 + .long 4224435298 + .long 3388129901 + .long 3679297459 + .long 4009937927 + .long 2415676415 + .long 2902800015 + .long 4153903301 + .long 2481292507 + .long 3063627623 + .long 3724908559 + .long 536385535 + .long 1510632735 + .long 4012839307 + .long 667617719 + .long 1832287951 + .long 3154849823 + .long 1072771071 + .long 3021265470 + .long 3730711318 + .long 1335235438 + .long 3664575902 + .long 2014732351 + .long 2145542143 + .long 1747563645 + .long 3166455341 + .long 2670470877 + .long 3034184508 + .long 4029464703 + .long 4291084286 + .long 3495127291 + .long 2037943386 + .long 1045974458 + .long 1773401721 + .long 3763962110 + .long 4287201277 + .long 2695287286 + .long 4075886773 + .long 2091948916 + .long 3546803442 + .long 3232956925 + .long 4279435259 + .long 1095607277 + .long 3856806251 + .long 4183897833 + .long 2798639588 + .long 2170946555 + .long 4263903223 + .long 2191214555 + .long 3418645206 + .long 4072828371 + .long 1302311881 + .long 46925815 + .long 4232839151 + .long 87461814 + .long 2542323117 + .long 3850689447 + .long 2604623763 + .long 93851631 + .long 4170711006 + .long 174923629 + .long 789678938 + .long 3406411599 + .long 914280231 + .long 187703262 + .long 4046454716 + .long 349847258 + .long 1579357876 + .long 2517855902 + .long 1828560463 + .long 375406524 + .long 3797942136 + .long 699694516 + .long 3158715752 + .long 740744509 + .long 3657120927 + .long 750813049 + .long 3300916976 + .long 1399389033 + .long 2022464208 + .long 1481489018 + .long 3019274558 + .long 1501626098 + .long 2306866656 + .long 2798778067 + .long 4044928416 + .long 2962978036 + .long 1743581820 + .long 3003252197 + .long 318766016 + .long 1302588838 + .long 3794889537 + .long 1630988776 + .long 3487163641 + .long 1711537099 + .long 637532033 + .long 2605177677 + .long 3294811778 + .long 3261977553 + .long 2679359986 + .long 3423074199 + .long 1275064066 + .long 915388059 + .long 2294656261 + .long 2228987811 + .long 1063752677 + .long 2551181103 + .long 2550128133 + .long 1830776118 + .long 294345226 + .long 163008326 + .long 2127505355 + .long 807394910 + .long 805288971 + .long 3661552236 + .long 588690452 + .long 326016652 + .long 4255010710 + .long 1614789820 + .long 1610577942 + .long 3028137177 + .long 1177380905 + .long 652033304 + .long 4215054124 + .long 3229579640 + .long 3221155884 + .long 1761307059 + .long 2354761811 + .long 1304066609 + .long 4135140952 + .long 2164191985 + .long 2147344473 + .long 3522614119 + .long 414556326 + .long 2608133219 + .long 3975314608 + .long 33416674 + .long 4294688947 + .long 2750260943 + .long 829112653 + .long 921299143 + .long 3655661921 + .long 66833348 + .long 4294410598 + .long 1205554591 + .long 1658225307 + .long 1842598287 + .long 3016356546 + .long 133666696 + .long 4293853900 + .long 2411109183 + .long 3316450614 + .long 3685196575 + .long 1737745796 + .long 267333393 + .long 4292740504 + .long 527251070 + .long 2337933933 + .long 3075425855 + .long 3475491593 + .long 534666787 + .long 4290513712 + .long 1054502141 + .long 380900570 + .long 1855884414 + .long 2656015891 + .long 1069333574 + .long 4286060128 + .long 2109004283 + .long 761801140 + .long 3711768829 + .long 1017064486 + .long 2138667148 + .long 4277152960 + .long 4218008566 + .long 1523602280 + .long 3128570363 + .long 2034128973 + .long 4277334296 + .long 4259338624 + .long 4141049836 + .long 3047204561 + .long 1962173430 + .long 4068257947 + .long 4259701297 + .long 4223709953 + .long 3987132377 + .long 1799441827 + .long 3924346860 + .long 3841548598 + .long 4224435298 + .long 4152452611 + .long 3679297459 + .long 3598883655 + .long 3553726425 + .long 3388129901 + .long 4153903301 + .long 4009937927 + .long 3063627623 + .long 2902800015 + .long 2812485555 + .long 2481292507 + .long 4012839307 + .long 3724908559 + .long 1832287951 + .long 1510632735 + .long 1330003814 + .long 667617719 + .long 3730711318 + .long 3154849823 + .long 3664575902 + .long 3021265470 + .long 2660007629 + .long 1335235438 + .long 3166455341 + .long 2014732351 + .long 3034184508 + .long 1747563645 + .long 1025047962 + .long 2670470877 + .long 2037943386 + .long 4029464703 + .long 1773401721 + .long 3495127291 + .long 2050095924 + .long 1045974458 + .long 4075886773 + .long 3763962110 + .long 3546803442 + .long 2695287286 + .long 4100191849 + .long 2091948916 + .long 3856806251 + .long 3232956925 + .long 2798639588 + .long 1095607277 + .long 3905416403 + .long 4183897833 + .long 3418645206 + .long 2170946555 + .long 1302311881 + .long 2191214555 + .long 3515865511 + .long 4072828371 + .long 2542323117 + .long 46925815 + .long 2604623763 + .long 87461814 + .long 2736763727 + .long 3850689447 + .long 789678938 + .long 93851631 + .long 914280231 + .long 174923629 + .long 1178560158 + .long 3406411599 + .long 1579357876 + .long 187703262 + .long 1828560463 + .long 349847258 + .long 2357120316 + .long 2517855902 + .long 3158715752 + .long 375406524 + .long 3657120927 + .long 699694516 + .long 419273337 + .long 740744509 + .long 2022464208 + .long 750813049 + .long 3019274558 + .long 1399389033 + .long 838546674 + .long 1481489018 + .long 4044928416 + .long 1501626098 + .long 1743581820 + .long 2798778067 + .long 1677093349 + .long 2962978036 + .long 3794889537 + .long 3003252197 + .long 3487163641 + .long 1302588838 + .long 3354186699 + .long 1630988776 + .long 3294811778 + .long 1711537099 + .long 2679359986 + .long 2605177677 + .long 2413406103 + .long 3261977553 + .long 2294656261 + .long 3423074199 + .long 1063752677 + .long 915388059 + .long 531844911 + .long 2228987811 + .long 294345226 + .long 2551181103 + .long 2127505355 + .long 1830776118 + .long 1063689823 + .long 163008326 + .long 588690452 + .long 807394910 + .long 4255010710 + .long 3661552236 + .long 2127379647 + .long 326016652 + .long 1177380905 + .long 1614789820 + .long 4215054124 + .long 3028137177 + .long 4254759295 + .long 652033304 + .long 2354761811 + .long 3229579640 + .long 4135140952 + .long 1761307059 + .long 4214551295 + .long 1304066609 + .long 414556326 + .long 2164191985 + .long 3975314608 + .long 3522614119 + .long 4134135294 + .long 2608133219 + .long 829112653 + .long 33416674 + .long 3655661921 + .long 2750260943 + .long 3973303293 + .long 921299143 + .long 1658225307 + .long 66833348 + .long 3016356546 + .long 1205554591 + .long 3651639290 + .long 1842598287 + .long 3316450614 + .long 133666696 + .long 1737745796 + .long 2411109183 + .long 3008311285 + .long 3685196575 + .long 2337933933 + .long 267333393 + .long 3475491593 + .long 527251070 + .long 1721655274 + .long 3075425855 + .long 380900570 + .long 534666787 + .long 2656015891 + .long 1054502141 + .long 3443310548 + .long 1855884414 + .long 761801140 + .long 1069333574 + .long 1017064486 + .long 2109004283 + .long 2591653800 + .long 3711768829 + .long 1523602280 + .long 2138667148 + .long 2034128973 + .long 4218008566 + .long 888340305 + .long 3128570363 + .long 3047204561 + .long 4277334296 + .long 4068257947 + .long 4141049836 + .long 1776680610 + .long 1962173430 + .long 1799441827 + .long 4259701297 + .long 3841548598 + .long 3987132377 + .long 3553361221 + .long 3924346860 + .long 3598883655 + .long 4224435298 + .long 3388129901 + .long 3679297459 + .long 2811755147 + .long 3553726425 + .long 2902800015 + .long 4153903301 + .long 2481292507 + .long 3063627623 + .long 1328542998 + .long 2812485555 + .long 1510632735 + .long 4012839307 + .long 667617719 + .long 1832287951 + .long 2657085997 + .long 1330003814 + .long 3021265470 + .long 3730711318 + .long 1335235438 + .long 3664575902 + .long 1019204698 + .long 2660007629 + .long 1747563645 + .long 3166455341 + .long 2670470877 + .long 3034184508 + .long 2038409397 + .long 1025047962 + .long 3495127291 + .long 2037943386 + .long 1045974458 + .long 1773401721 + .long 4076818795 + .long 2050095924 + .long 2695287286 + .long 4075886773 + .long 2091948916 + .long 3546803442 + .long 3858670295 + .long 4100191849 + .long 1095607277 + .long 3856806251 + .long 4183897833 + .long 2798639588 + .long 3422373294 + .long 3905416403 + .long 2191214555 + .long 3418645206 + .long 4072828371 + .long 1302311881 + .long 2549779293 + .long 3515865511 + .long 87461814 + .long 2542323117 + .long 3850689447 + .long 2604623763 + .long 804591290 + .long 2736763727 + .long 174923629 + .long 789678938 + .long 3406411599 + .long 914280231 + .long 1609182581 + .long 1178560158 + .long 349847258 + .long 1579357876 + .long 2517855902 + .long 1828560463 + .long 3218365162 + .long 2357120316 + .long 699694516 + .long 3158715752 + .long 740744509 + .long 3657120927 + .long 2141763028 + .long 419273337 + .long 1399389033 + .long 2022464208 + .long 1481489018 + .long 3019274558 + .long 4283526057 + .long 838546674 + .long 2798778067 + .long 4044928416 + .long 2962978036 + .long 1743581820 + .long 4272084818 + .long 1677093349 + .long 1302588838 + .long 3794889537 + .long 1630988776 + .long 3487163641 + .long 4249202340 + .long 3354186699 + .long 2605177677 + .long 3294811778 + .long 3261977553 + .long 2679359986 + .long 4203437385 + .long 2413406103 + .long 915388059 + .long 2294656261 + .long 2228987811 + .long 1063752677 + .long 4111907475 + .long 531844911 + .long 1830776118 + .long 294345226 + .long 163008326 + .long 2127505355 + .long 3928847655 + .long 1063689823 + .long 3661552236 + .long 588690452 + .long 326016652 + .long 4255010710 + .long 3562728015 + .long 2127379647 + .long 3028137177 + .long 1177380905 + .long 652033304 + .long 4215054124 + .long 2830488734 + .long 4254759295 + .long 1761307059 + .long 2354761811 + .long 1304066609 + .long 4135140952 + .long 1366010173 + .long 4214551295 + .long 3522614119 + .long 414556326 + .long 2608133219 + .long 3975314608 + .long 2732020347 + .long 4134135294 + .long 2750260943 + .long 829112653 + .long 921299143 + .long 3655661921 + .long 1169073399 + .long 3973303293 + .long 1205554591 + .long 1658225307 + .long 1842598287 + .long 3016356546 + .long 2338146798 + .long 3651639290 + .long 2411109183 + .long 3316450614 + .long 3685196575 + .long 1737745796 + .long 381326301 + .long 3008311285 + .long 527251070 + .long 2337933933 + .long 3075425855 + .long 3475491593 + .long 762652602 + .long 1721655274 + .long 1054502141 + .long 380900570 + .long 1855884414 + .long 2656015891 + .long 1525305205 + .long 3443310548 + .long 2109004283 + .long 761801140 + .long 3711768829 + .long 1017064486 + .long 3050610411 + .long 2591653800 + .long 4218008566 + .long 1523602280 + .long 3128570363 + .long 2034128973 + .long 1806253526 + .long 888340305 + .long 4141049836 + .long 3047204561 + .long 1962173430 + .long 4068257947 + .long 3612507052 + .long 1776680610 + .long 3987132377 + .long 1799441827 + .long 3924346860 + .long 3841548598 + .long 2930046808 + .long 3553361221 + .long 3679297459 + .long 3598883655 + .long 3553726425 + .long 3388129901 + .long 1565126321 + .long 2811755147 + .long 3063627623 + .long 2902800015 + .long 2812485555 + .long 2481292507 + .long 3130252643 + .long 1328542998 + .long 1832287951 + .long 1510632735 + .long 1330003814 + .long 667617719 + .long 1965537991 + .long 2657085997 + .long 3664575902 + .long 3021265470 + .long 2660007629 + .long 1335235438 + .long 3931075983 + .long 1019204698 + .long 3034184508 + .long 1747563645 + .long 1025047962 + .long 2670470877 + .long 3567184671 + .long 2038409397 + .long 1773401721 + .long 3495127291 + .long 2050095924 + .long 1045974458 + .long 2839402047 + .long 4076818795 + .long 3546803442 + .long 2695287286 + .long 4100191849 + .long 2091948916 + .long 1383836798 + .long 3858670295 + .long 2798639588 + .long 1095607277 + .long 3905416403 + .long 4183897833 + .long 2767673597 + .long 3422373294 + .long 1302311881 + .long 2191214555 + .long 3515865511 + .long 4072828371 + .long 1240379898 + .long 2549779293 + .long 2604623763 + .long 87461814 + .long 2736763727 + .long 3850689447 + .long 2480759797 + .long 804591290 + .long 914280231 + .long 174923629 + .long 1178560158 + .long 3406411599 + .long 666552299 + .long 1609182581 + .long 1828560463 + .long 349847258 + .long 2357120316 + .long 2517855902 + .long 1333104599 + .long 3218365162 + .long 3657120927 + .long 699694516 + .long 419273337 + .long 740744509 + .long 2666209199 + .long 2141763028 + .long 3019274558 + .long 1399389033 + .long 838546674 + .long 1481489018 + .long 1037451103 + .long 4283526057 + .long 1743581820 + .long 2798778067 + .long 1677093349 + .long 2962978036 + .long 2074902206 + .long 4272084818 + .long 3487163641 + .long 1302588838 + .long 3354186699 + .long 1630988776 + .long 4149804412 + .long 4249202340 + .long 2679359986 + .long 2605177677 + .long 2413406103 + .long 3261977553 + .long 4004641529 + .long 4203437385 + .long 1063752677 + .long 915388059 + .long 531844911 + .long 2228987811 + .long 3714315762 + .long 4111907475 + .long 2127505355 + .long 1830776118 + .long 1063689823 + .long 163008326 + .long 3133664229 + .long 3928847655 + .long 4255010710 + .long 3661552236 + .long 2127379647 + .long 326016652 + .long 1972361163 + .long 3562728015 + .long 4215054124 + .long 3028137177 + .long 4254759295 + .long 652033304 + .long 3944722327 + .long 2830488734 + .long 4135140952 + .long 1761307059 + .long 4214551295 + .long 1304066609 + .long 3594477359 + .long 1366010173 + .long 3975314608 + .long 3522614119 + .long 4134135294 + .long 2608133219 + .long 2893987423 + .long 2732020347 + .long 3655661921 + .long 2750260943 + .long 3973303293 + .long 921299143 + .long 1493007550 + .long 1169073399 + .long 3016356546 + .long 1205554591 + .long 3651639290 + .long 1842598287 + .long 2986015100 + .long 2338146798 + .long 1737745796 + .long 2411109183 + .long 3008311285 + .long 3685196575 + .long 1677062904 + .long 381326301 + .long 3475491593 + .long 527251070 + .long 1721655274 + .long 3075425855 + .long 3354125809 + .long 762652602 + .long 2656015891 + .long 1054502141 + .long 3443310548 + .long 1855884414 + .long 2413284322 + .long 1525305205 + .long 1017064486 + .long 2109004283 + .long 2591653800 + .long 3711768829 + .long 531601349 + .long 3050610411 + .long 2034128973 + .long 4218008566 + .long 888340305 + .long 3128570363 + .long 1063202699 + .long 1806253526 + .long 4068257947 + .long 4141049836 + .long 1776680610 + .long 1962173430 + .long 2126405399 + .long 3612507052 + .long 3841548598 + .long 3987132377 + .long 3553361221 + .long 3924346860 + .long 4252810799 + .long 2930046808 + .long 3388129901 + .long 3679297459 + .long 2811755147 + .long 3553726425 + .long 4210654302 + .long 1565126321 + .long 2481292507 + .long 3063627623 + .long 1328542998 + .long 2812485555 + .long 4126341309 + .long 3130252643 + .long 667617719 + .long 1832287951 + .long 2657085997 + .long 1330003814 + .long 3957715323 + .long 1965537991 + .long 1335235438 + .long 3664575902 + .long 1019204698 + .long 2660007629 + .long 3620463350 + .long 3931075983 + .long 2670470877 + .long 3034184508 + .long 2038409397 + .long 1025047962 + .long 2945959404 + .long 3567184671 + .long 1045974458 + .long 1773401721 + .long 4076818795 + .long 2050095924 + .long 1596951513 + .long 2839402047 + .long 2091948916 + .long 3546803442 + .long 3858670295 + .long 4100191849 + .long 3193903027 + .long 1383836798 + .long 4183897833 + .long 2798639588 + .long 3422373294 + .long 3905416403 + .long 2092838759 + .long 2767673597 + .long 4072828371 + .long 1302311881 + .long 2549779293 + .long 3515865511 + .long 4185677519 + .long 1240379898 + .long 3850689447 + .long 2604623763 + .long 804591290 + .long 2736763727 + .long 4076387742 + .long 2480759797 + .long 3406411599 + .long 914280231 + .long 1609182581 + .long 1178560158 + .long 3857808189 + .long 666552299 + .long 2517855902 + .long 1828560463 + .long 3218365162 + .long 2357120316 + .long 3420649082 + .long 1333104599 + .long 740744509 + .long 3657120927 + .long 2141763028 + .long 419273337 + .long 2546330868 + .long 2666209199 + .long 1481489018 + .long 3019274558 + .long 4283526057 + .long 838546674 + .long 797694440 + .long 1037451103 + .long 2962978036 + .long 1743581820 + .long 4272084818 + .long 1677093349 + .long 1595388880 + .long 2074902206 + .long 1630988776 + .long 3487163641 + .long 4249202340 + .long 3354186699 + .long 3190777760 + .long 4149804412 + .long 3261977553 + .long 2679359986 + .long 4203437385 + .long 2413406103 + .long 2086588225 + .long 4004641529 + .long 2228987811 + .long 1063752677 + .long 4111907475 + .long 531844911 + .long 4173176451 + .long 3714315762 + .long 163008326 + .long 2127505355 + .long 3928847655 + .long 1063689823 + .long 4051385607 + .long 3133664229 + .long 326016652 + .long 4255010710 + .long 3562728015 + .long 2127379647 + .long 3807803918 + .long 1972361163 + .long 652033304 + .long 4215054124 + .long 2830488734 + .long 4254759295 + .long 3320640540 + .long 3944722327 + .long 1304066609 + .long 4135140952 + .long 1366010173 + .long 4214551295 + .long 2346313785 + .long 3594477359 + .long 2608133219 + .long 3975314608 + .long 2732020347 + .long 4134135294 + .long 397660275 + .long 2893987423 + .long 921299143 + .long 3655661921 + .long 1169073399 + .long 3973303293 + .long 795320551 + .long 1493007550 + .long 1842598287 + .long 3016356546 + .long 2338146798 + .long 3651639290 + .long 1590641102 + .long 2986015100 + .long 3685196575 + .long 1737745796 + .long 381326301 + .long 3008311285 + .long 3181282204 + .long 1677062904 + .long 3075425855 + .long 3475491593 + .long 762652602 + .long 1721655274 + .long 2067597113 + .long 3354125809 + .long 1855884414 + .long 2656015891 + .long 1525305205 + .long 3443310548 + .long 4135194227 + .long 2413284322 + .long 3711768829 + .long 1017064486 + .long 3050610411 + .long 2591653800 + .long 3975421159 + .long 531601349 + .long 3128570363 + .long 2034128973 + .long 1806253526 + .long 888340305 + .long 3655875023 + .long 1063202699 + .long 1962173430 + .long 4068257947 + .long 3612507052 + .long 1776680610 + .long 3016782751 + .long 2126405399 + .long 3924346860 + .long 3841548598 + .long 2930046808 + .long 3553361221 + .long 1738598206 + .long 4252810799 + .long 3553726425 + .long 3388129901 + .long 1565126321 + .long 2811755147 + .long 3477196413 + .long 4210654302 + .long 2812485555 + .long 2481292507 + .long 3130252643 + .long 1328542998 + .long 2659425531 + .long 4126341309 + .long 1330003814 + .long 667617719 + .long 1965537991 + .long 2657085997 + .long 1023883767 + .long 3957715323 + .long 2660007629 + .long 1335235438 + .long 3931075983 + .long 1019204698 + .long 2047767535 + .long 3620463350 + .long 1025047962 + .long 2670470877 + .long 3567184671 + .long 2038409397 + .long 4095535070 + .long 2945959404 + .long 2050095924 + .long 1045974458 + .long 2839402047 + .long 4076818795 + .long 3896102844 + .long 1596951513 + .long 4100191849 + .long 2091948916 + .long 1383836798 + .long 3858670295 + .long 3497238392 + .long 3193903027 + .long 3905416403 + .long 4183897833 + .long 2767673597 + .long 3422373294 + .long 2699509489 + .long 2092838759 + .long 3515865511 + .long 4072828371 + .long 1240379898 + .long 2549779293 + .long 1104051682 + .long 4185677519 + .long 2736763727 + .long 3850689447 + .long 2480759797 + .long 804591290 + .long 2208103365 + .long 4076387742 + .long 1178560158 + .long 3406411599 + .long 666552299 + .long 1609182581 + .long 121239434 + .long 3857808189 + .long 2357120316 + .long 2517855902 + .long 1333104599 + .long 3218365162 + .long 242478868 + .long 3420649082 + .long 419273337 + .long 740744509 + .long 2666209199 + .long 2141763028 + .long 484957737 + .long 2546330868 + .long 838546674 + .long 1481489018 + .long 1037451103 + .long 4283526057 + .long 969915474 + .long 797694440 + .long 1677093349 + .long 2962978036 + .long 2074902206 + .long 4272084818 + .long 1939830949 + .long 1595388880 + .long 3354186699 + .long 1630988776 + .long 4149804412 + .long 4249202340 + .long 3879661898 + .long 3190777760 + .long 2413406103 + .long 3261977553 + .long 4004641529 + .long 4203437385 + .long 3464356500 + .long 2086588225 + .long 531844911 + .long 2228987811 + .long 3714315762 + .long 4111907475 + .long 2633745705 + .long 4173176451 + .long 1063689823 + .long 163008326 + .long 3133664229 + .long 3928847655 + .long 972524114 + .long 4051385607 + .long 2127379647 + .long 326016652 + .long 1972361163 + .long 3562728015 + .long 1945048229 + .long 3807803918 + .long 4254759295 + .long 652033304 + .long 3944722327 + .long 2830488734 + .long 3890096458 + .long 3320640540 + .long 4214551295 + .long 1304066609 + .long 3594477359 + .long 1366010173 + .long 3485225620 + .long 2346313785 + .long 4134135294 + .long 2608133219 + .long 2893987423 + .long 2732020347 + .long 2675483945 + .long 397660275 + .long 3973303293 + .long 921299143 + .long 1493007550 + .long 1169073399 + .long 1056000594 + .long 795320551 + .long 3651639290 + .long 1842598287 + .long 2986015100 + .long 2338146798 + .long 2112001188 + .long 1590641102 + .long 3008311285 + .long 3685196575 + .long 1677062904 + .long 381326301 + .long 4224002377 + .long 3181282204 + .long 1721655274 + .long 3075425855 + .long 3354125809 + .long 762652602 + .long 4153037458 + .long 2067597113 + .long 3443310548 + .long 1855884414 + .long 2413284322 + .long 1525305205 + .long 4011107621 + .long 4135194227 + .long 2591653800 + .long 3711768829 + .long 531601349 + .long 3050610411 + .long 3727247947 + .long 3975421159 + .long 888340305 + .long 3128570363 + .long 1063202699 + .long 1806253526 + .long 3159528599 + .long 3655875023 + .long 1776680610 + .long 1962173430 + .long 2126405399 + .long 3612507052 + .long 2024089902 + .long 3016782751 + .long 3553361221 + .long 3924346860 + .long 4252810799 + .long 2930046808 + .long 4048179805 + .long 1738598206 + .long 2811755147 + .long 3553726425 + .long 4210654302 + .long 1565126321 + .long 3801392314 + .long 3477196413 + .long 1328542998 + .long 2812485555 + .long 4126341309 + .long 3130252643 + .long 3307817333 + .long 2659425531 + .long 2657085997 + .long 1330003814 + .long 3957715323 + .long 1965537991 + .long 2320667370 + .long 1023883767 + .long 1019204698 + .long 2660007629 + .long 3620463350 + .long 3931075983 + .long 346367444 + .long 2047767535 + .long 2038409397 + .long 1025047962 + .long 2945959404 + .long 3567184671 + .long 692734889 + .long 4095535070 + .long 4076818795 + .long 2050095924 + .long 1596951513 + .long 2839402047 + .long 1385469779 + .long 3896102844 + .long 3858670295 + .long 4100191849 + .long 3193903027 + .long 1383836798 + .long 2770939558 + .long 3497238392 + .long 3422373294 + .long 3905416403 + .long 2092838759 + .long 2767673597 + .long 1246911821 + .long 2699509489 + .long 2549779293 + .long 3515865511 + .long 4185677519 + .long 1240379898 + .long 2493823642 + .long 1104051682 + .long 804591290 + .long 2736763727 + .long 4076387742 + .long 2480759797 + .long 692679989 + .long 2208103365 + .long 1609182581 + .long 1178560158 + .long 3857808189 + .long 666552299 + .long 1385359979 + .long 121239434 + .long 3218365162 + .long 2357120316 + .long 3420649082 + .long 1333104599 + .long 2770719959 + .long 242478868 + .long 2141763028 + .long 419273337 + .long 2546330868 + .long 2666209199 + .long 1246472623 + .long 484957737 + .long 4283526057 + .long 838546674 + .long 797694440 + .long 1037451103 + .long 2492945247 + .long 969915474 + .long 4272084818 + .long 1677093349 + .long 1595388880 + .long 2074902206 + .long 690923199 + .long 1939830949 + .long 4249202340 + .long 3354186699 + .long 3190777760 + .long 4149804412 + .long 1381846399 + .long 3879661898 + .long 4203437385 + .long 2413406103 + .long 2086588225 + .long 4004641529 + .long 2763692798 + .long 3464356500 + .long 4111907475 + .long 531844911 + .long 4173176451 + .long 3714315762 + .long 1232418301 + .long 2633745705 + .long 3928847655 + .long 1063689823 + .long 4051385607 + .long 3133664229 + .long 2464836603 + .long 972524114 + .long 3562728015 + .long 2127379647 + .long 3807803918 + .long 1972361163 + .long 634705910 + .long 1945048229 + .long 2830488734 + .long 4254759295 + .long 3320640540 + .long 3944722327 + .long 1269411821 + .long 3890096458 + .long 1366010173 + .long 4214551295 + .long 2346313785 + .long 3594477359 + .long 2538823642 + .long 3485225620 + .long 2732020347 + .long 4134135294 + .long 397660275 + .long 2893987423 + .long 782679989 + .long 2675483945 + .long 1169073399 + .long 3973303293 + .long 795320551 + .long 1493007550 + .long 1565359979 + .long 1056000594 + .long 2338146798 + .long 3651639290 + .long 1590641102 + .long 2986015100 + .long 3130719959 + .long 2112001188 + .long 381326301 + .long 3008311285 + .long 3181282204 + .long 1677062904 + .long 1966472623 + .long 4224002377 + .long 762652602 + .long 1721655274 + .long 2067597113 + .long 3354125809 + .long 3932945247 + .long 4153037458 + .long 1525305205 + .long 3443310548 + .long 4135194227 + .long 2413284322 + .long 3570923199 + .long 4011107621 + .long 3050610411 + .long 2591653800 + .long 3975421159 + .long 531601349 + .long 2846879102 + .long 3727247947 + .long 1806253526 + .long 888340305 + .long 3655875023 + .long 1063202699 + .long 1398790909 + .long 3159528599 + .long 3612507052 + .long 1776680610 + .long 3016782751 + .long 2126405399 + .long 2797581819 + .long 2024089902 + .long 2930046808 + .long 3553361221 + .long 1738598206 + .long 4252810799 + .long 1300196342 + .long 4048179805 + .long 1565126321 + .long 2811755147 + .long 3477196413 + .long 4210654302 + .long 2600392684 + .long 3801392314 + .long 3130252643 + .long 1328542998 + .long 2659425531 + .long 4126341309 + .long 905818072 + .long 3307817333 + .long 1965537991 + .long 2657085997 + .long 1023883767 + .long 3957715323 + .long 1811636145 + .long 2320667370 + .long 3931075983 + .long 1019204698 + .long 2047767535 + .long 3620463350 + .long 3623272290 + .long 346367444 + .long 3567184671 + .long 2038409397 + .long 4095535070 + .long 2945959404 + .long 2951577284 + .long 692734889 + .long 2839402047 + .long 4076818795 + .long 3896102844 + .long 1596951513 + .long 1608187272 + .long 1385469779 + .long 1383836798 + .long 3858670295 + .long 3497238392 + .long 3193903027 + .long 3216374545 + .long 2770939558 + .long 2767673597 + .long 3422373294 + .long 2699509489 + .long 2092838759 + .long 2137781795 + .long 1246911821 + .long 1240379898 + .long 2549779293 + .long 1104051682 + .long 4185677519 + .long 4275563591 + .long 2493823642 + .long 2480759797 + .long 804591290 + .long 2208103365 + .long 4076387742 + .long 4256159887 + .long 692679989 + .long 666552299 + .long 1609182581 + .long 121239434 + .long 3857808189 + .long 4217352479 + .long 1385359979 + .long 1333104599 + .long 3218365162 + .long 242478868 + .long 3420649082 + .long 4139737663 + .long 2770719959 + .long 2666209199 + .long 2141763028 + .long 484957737 + .long 2546330868 + .long 3984508030 + .long 1246472623 + .long 1037451103 + .long 4283526057 + .long 969915474 + .long 797694440 + .long 3674048764 + .long 2492945247 + .long 2074902206 + .long 4272084818 + .long 1939830949 + .long 1595388880 + .long 3053130232 + .long 690923199 + .long 4149804412 + .long 4249202340 + .long 3879661898 + .long 3190777760 + .long 1811293169 + .long 1381846399 + .long 4004641529 + .long 4203437385 + .long 3464356500 + .long 2086588225 + .long 3622586339 + .long 2763692798 + .long 3714315762 + .long 4111907475 + .long 2633745705 + .long 4173176451 + .long 2950205382 + .long 1232418301 + .long 3133664229 + .long 3928847655 + .long 972524114 + .long 4051385607 + .long 1605443469 + .long 2464836603 + .long 1972361163 + .long 3562728015 + .long 1945048229 + .long 3807803918 + .long 3210886938 + .long 634705910 + .long 3944722327 + .long 2830488734 + .long 3890096458 + .long 3320640540 + .long 2126806581 + .long 1269411821 + .long 3594477359 + .long 1366010173 + .long 3485225620 + .long 2346313785 + .long 4253613162 + .long 2538823642 + .long 2893987423 + .long 2732020347 + .long 2675483945 + .long 397660275 + .long 4212259029 + .long 782679989 + .long 1493007550 + .long 1169073399 + .long 1056000594 + .long 795320551 + .long 4129550763 + .long 1565359979 + .long 2986015100 + .long 2338146798 + .long 2112001188 + .long 1590641102 + .long 3964134231 + .long 3130719959 + .long 1677062904 + .long 381326301 + .long 4224002377 + .long 3181282204 + .long 3633301166 + .long 1966472623 + .long 3354125809 + .long 762652602 + .long 4153037458 + .long 2067597113 + .long 2971635037 + .long 3932945247 + .long 2413284322 + .long 1525305205 + .long 4011107621 + .long 4135194227 + .long 1648302778 + .long 3570923199 + .long 531601349 + .long 3050610411 + .long 3727247947 + .long 3975421159 + .long 3296605556 + .long 2846879102 + .long 1063202699 + .long 1806253526 + .long 3159528599 + .long 3655875023 + .long 2298243816 + .long 1398790909 + .long 2126405399 + .long 3612507052 + .long 2024089902 + .long 3016782751 + .long 301520336 + .long 2797581819 + .long 4252810799 + .long 2930046808 + .long 4048179805 + .long 1738598206 + .long 603040673 + .long 1300196342 + .long 4210654302 + .long 1565126321 + .long 3801392314 + .long 3477196413 + .long 1206081346 + .long 2600392684 + .long 4126341309 + .long 3130252643 + .long 3307817333 + .long 2659425531 + .long 2412162692 + .long 905818072 + .long 3957715323 + .long 1965537991 + .long 2320667370 + .long 1023883767 + .long 529358088 + .long 1811636145 + .long 3620463350 + .long 3931075983 + .long 346367444 + .long 2047767535 + .long 1058716176 + .long 3623272290 + .long 2945959404 + .long 3567184671 + .long 692734889 + .long 4095535070 + .long 2117432353 + .long 2951577284 + .long 1596951513 + .long 2839402047 + .long 1385469779 + .long 3896102844 + .long 4234864706 + .long 1608187272 + .long 3193903027 + .long 1383836798 + .long 2770939558 + .long 3497238392 + .long 4174762117 + .long 3216374545 + .long 2092838759 + .long 2767673597 + .long 1246911821 + .long 2699509489 + .long 4054556938 + .long 2137781795 + .long 4185677519 + .long 1240379898 + .long 2493823642 + .long 1104051682 + .long 3814146581 + .long 4275563591 + .long 4076387742 + .long 2480759797 + .long 692679989 + .long 2208103365 + .long 3333325867 + .long 4256159887 + .long 3857808189 + .long 666552299 + .long 1385359979 + .long 121239434 + .long 2371684438 + .long 4217352479 + .long 3420649082 + .long 1333104599 + .long 2770719959 + .long 242478868 + .long 448401580 + .long 4139737663 + .long 2546330868 + .long 2666209199 + .long 1246472623 + .long 484957737 + .long 896803160 + .long 3984508030 + .type __svml_dtan_reduction_data_internal,@object + .size __svml_dtan_reduction_data_internal,49152 + .space 512, 0x00 + .align 32 +.L_2il0floatpacket.35: + .long 0x00000008,0x00000008,0x00000008,0x00000008,0x00000008,0x00000008,0x00000008,0x00000008 + .type .L_2il0floatpacket.35,@object + .size .L_2il0floatpacket.35,32 + .align 8 +.L_2il0floatpacket.18: + .long 0xffffffff,0xffffffff + .type .L_2il0floatpacket.18,@object + .size .L_2il0floatpacket.18,8 + .align 8 +.L_2il0floatpacket.19: + .long 0x00000000,0x7ff00000 + .type .L_2il0floatpacket.19,@object + .size .L_2il0floatpacket.19,8 + .align 8 +.L_2il0floatpacket.20: + .long 0xffffffff,0x000fffff + .type .L_2il0floatpacket.20,@object + .size .L_2il0floatpacket.20,8 + .align 8 +.L_2il0floatpacket.21: + .long 0x00000000,0x00100000 + .type .L_2il0floatpacket.21,@object + .size .L_2il0floatpacket.21,8 + .align 8 +.L_2il0floatpacket.22: + .long 0xffffffff,0x00000000 + .type .L_2il0floatpacket.22,@object + .size .L_2il0floatpacket.22,8 + .align 8 +.L_2il0floatpacket.23: + .long 0x00000000,0x80000000 + .type .L_2il0floatpacket.23,@object + .size .L_2il0floatpacket.23,8 + .align 8 +.L_2il0floatpacket.24: + .long 0x00000000,0x3ff00000 + .type .L_2il0floatpacket.24,@object + .size .L_2il0floatpacket.24,8 + .align 8 +.L_2il0floatpacket.25: + .long 0x00000000,0x42a80000 + .type .L_2il0floatpacket.25,@object + .size .L_2il0floatpacket.25,8 + .align 8 +.L_2il0floatpacket.26: + .long 0x000001ff,0x00000000 + .type .L_2il0floatpacket.26,@object + .size .L_2il0floatpacket.26,8 + .align 8 +.L_2il0floatpacket.27: + .long 0x00000000,0x39700000 + .type .L_2il0floatpacket.27,@object + .size .L_2il0floatpacket.27,8 + .align 8 +.L_2il0floatpacket.28: + .long 0x00ffffff,0x00000000 + .type .L_2il0floatpacket.28,@object + .size .L_2il0floatpacket.28,8 + .align 8 +.L_2il0floatpacket.29: + .long 0x00000000,0x3cb00000 + .type .L_2il0floatpacket.29,@object + .size .L_2il0floatpacket.29,8 + .align 8 +.L_2il0floatpacket.30: + .long 0x00000fff,0x00000000 + .type .L_2il0floatpacket.30,@object + .size .L_2il0floatpacket.30,8 + .align 8 +.L_2il0floatpacket.31: + .long 0x54442d18,0x401921fb + .type .L_2il0floatpacket.31,@object + .size .L_2il0floatpacket.31,8 + .align 8 +.L_2il0floatpacket.32: + .long 0x33145c07,0x3cb1a626 + .type .L_2il0floatpacket.32,@object + .size .L_2il0floatpacket.32,8 + .align 8 +.L_2il0floatpacket.33: + .long 0xffffffff,0x7fffffff + .type .L_2il0floatpacket.33,@object + .size .L_2il0floatpacket.33,8 + .align 8 +.L_2il0floatpacket.34: + .long 0x00000000,0x3eb00000 + .type .L_2il0floatpacket.34,@object + .size .L_2il0floatpacket.34,8 + .align 8 +.L_2il0floatpacket.36: + .long 0x54442d18,0x3f8921fb + .type .L_2il0floatpacket.36,@object + .size .L_2il0floatpacket.36,8 + .align 8 +.L_2il0floatpacket.37: + .long 0x33145c07,0x3c21a626 + .type .L_2il0floatpacket.37,@object + .size .L_2il0floatpacket.37,8 + .align 8 +__dtan_la_Tab: + .long 0 + .long 0 + .long 0 + .long 2146435072 + .type __dtan_la_Tab,@object + .size __dtan_la_Tab,16 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_tan_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_tan_s_la.s new file mode 100644 index 00000000..befb6edb --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_tan_s_la.s @@ -0,0 +1,3177 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * + * ( optimized for throughput, with small table lookup, works when HW FMA is available ) + * + * Implementation reduces argument x to |R|32 multiplications + */ + vmovups .L_2il0floatpacket.18(%rip), %zmm6 + kxnorw %k0, %k0, %k2 + kxnorw %k0, %k0, %k3 + kmovw %k0, %edx + vpandd .L_2il0floatpacket.15(%rip), %zmm11, %zmm5 + vpsrld $23, %zmm5, %zmm7 + vpslld $1, %zmm7, %zmm8 + vpaddd %zmm7, %zmm8, %zmm9 + vpslld $2, %zmm9, %zmm4 + vpxord %zmm3, %zmm3, %zmm3 + vgatherdps (%rax,%zmm4), %zmm3{%k2} + kxnorw %k0, %k0, %k2 + vpsrld $16, %zmm3, %zmm5 + vpxord %zmm15, %zmm15, %zmm15 + vpxord %zmm2, %zmm2, %zmm2 + vgatherdps 4(%rax,%zmm4), %zmm15{%k3} + vgatherdps 8(%rax,%zmm4), %zmm2{%k2} + vpsrld $16, %zmm2, %zmm13 + +/* + * Also get the significand as an integer + * NB: adding in the integer bit is wrong for denorms! + * To make this work for denorms we should do something slightly different + */ + vpandd .L_2il0floatpacket.16(%rip), %zmm11, %zmm0 + vpaddd .L_2il0floatpacket.17(%rip), %zmm0, %zmm1 + vpsrld $16, %zmm15, %zmm0 + vpsrld $16, %zmm1, %zmm8 + vpandd %zmm6, %zmm3, %zmm9 + vpandd %zmm6, %zmm15, %zmm12 + vpandd %zmm6, %zmm2, %zmm7 + vpandd %zmm6, %zmm1, %zmm14 + +/* Now do the big multiplication and carry propagation */ + vpmulld %zmm9, %zmm8, %zmm4 + vpmulld %zmm0, %zmm8, %zmm3 + vpmulld %zmm12, %zmm8, %zmm2 + vpmulld %zmm13, %zmm8, %zmm1 + vpmulld %zmm7, %zmm8, %zmm8 + vpmulld %zmm5, %zmm14, %zmm7 + vpmulld %zmm9, %zmm14, %zmm5 + vpmulld %zmm0, %zmm14, %zmm9 + vpmulld %zmm12, %zmm14, %zmm0 + vpmulld %zmm13, %zmm14, %zmm12 + vpsrld $16, %zmm12, %zmm14 + vpsrld $16, %zmm0, %zmm13 + vpsrld $16, %zmm9, %zmm15 + vpsrld $16, %zmm5, %zmm12 + vpsrld $16, %zmm8, %zmm8 + vpaddd %zmm14, %zmm1, %zmm1 + vpaddd %zmm13, %zmm2, %zmm2 + vpaddd %zmm15, %zmm3, %zmm15 + vpaddd %zmm12, %zmm4, %zmm3 + vpandd %zmm6, %zmm0, %zmm13 + vpaddd %zmm1, %zmm13, %zmm4 + vpaddd %zmm4, %zmm8, %zmm14 + vpsrld $16, %zmm14, %zmm0 + vpandd %zmm6, %zmm9, %zmm9 + vpaddd %zmm2, %zmm9, %zmm1 + vpaddd %zmm1, %zmm0, %zmm8 + +/* + * Now round at the 2^-8 bit position for reduction mod pi/2^7 + * instead of the original 2pi (but still with the same 2pi scaling). + * Use a shifter of 2^15 + 2^14. + * The N we get is our final version; it has an offset of + * 2^8 because of the implicit integer bit, and anyway for negative + * starting value it's a 2s complement thing. But we need to mask + * off the exponent part anyway so it's fine. + */ + vmovups .L_2il0floatpacket.21(%rip), %zmm1 + vpandd %zmm6, %zmm7, %zmm7 + vpaddd %zmm3, %zmm7, %zmm13 + vpsrld $16, %zmm8, %zmm3 + vpandd %zmm6, %zmm5, %zmm5 + vpaddd %zmm15, %zmm5, %zmm2 + vpaddd %zmm2, %zmm3, %zmm15 + vpsrld $16, %zmm15, %zmm12 + vpaddd %zmm13, %zmm12, %zmm5 + +/* Assemble reduced argument from the pieces */ + vpandd %zmm6, %zmm14, %zmm9 + vpandd %zmm6, %zmm15, %zmm7 + vpslld $16, %zmm5, %zmm6 + vpslld $16, %zmm8, %zmm5 + vpaddd %zmm7, %zmm6, %zmm4 + vpaddd %zmm9, %zmm5, %zmm9 + vpsrld $9, %zmm4, %zmm6 + +/* + * We want to incorporate the original sign now too. + * Do it here for convenience in getting the right N value, + * though we could wait right to the end if we were prepared + * to modify the sign of N later too. + * So get the appropriate sign mask now (or sooner). + */ + vpandd .L_2il0floatpacket.19(%rip), %zmm11, %zmm0 + vpandd .L_2il0floatpacket.24(%rip), %zmm9, %zmm13 + vpslld $5, %zmm13, %zmm14 + +/* + * Create floating-point high part, implicitly adding integer bit 1 + * Incorporate overall sign at this stage too. + */ + vpxord .L_2il0floatpacket.20(%rip), %zmm0, %zmm8 + vpord %zmm8, %zmm6, %zmm2 + vaddps {rn-sae}, %zmm2, %zmm1, %zmm12 + vsubps {rn-sae}, %zmm1, %zmm12, %zmm3 + vsubps {rn-sae}, %zmm3, %zmm2, %zmm7 + +/* + * Create floating-point low and medium parts, respectively + * lo_17, ... lo_0, 0, ..., 0 + * hi_8, ... hi_0, lo_31, ..., lo_18 + * then subtract off the implicitly added integer bits, + * 2^-46 and 2^-23, respectively. + * Put the original sign into all of them at this stage. + */ + vpxord .L_2il0floatpacket.23(%rip), %zmm0, %zmm6 + vpord %zmm6, %zmm14, %zmm15 + vpandd .L_2il0floatpacket.26(%rip), %zmm4, %zmm4 + vsubps {rn-sae}, %zmm6, %zmm15, %zmm8 + vandps .L_2il0floatpacket.29(%rip), %zmm11, %zmm15 + vpsrld $18, %zmm9, %zmm6 + +/* + * If the magnitude of the input is <= 2^-20, then + * just pass through the input, since no reduction will be needed and + * the main path will only work accurately if the reduced argument is + * about >= 2^-40 (which it is for all large pi multiples) + */ + vmovups .L_2il0floatpacket.30(%rip), %zmm14 + vcmpps $26, {sae}, %zmm14, %zmm15, %k3 + vcmpps $22, {sae}, %zmm14, %zmm15, %k2 + vpxord .L_2il0floatpacket.25(%rip), %zmm0, %zmm1 + vpslld $14, %zmm4, %zmm0 + vpord %zmm6, %zmm0, %zmm0 + vpord %zmm1, %zmm0, %zmm4 + vsubps {rn-sae}, %zmm1, %zmm4, %zmm2 + vpternlogd $255, %zmm6, %zmm6, %zmm6 + +/* Now add them up into 2 reasonably aligned pieces */ + vaddps {rn-sae}, %zmm2, %zmm7, %zmm13 + vsubps {rn-sae}, %zmm13, %zmm7, %zmm7 + vaddps {rn-sae}, %zmm7, %zmm2, %zmm3 + +/* + * The output is _VRES_R (high) + _VRES_E (low), and the integer part is _VRES_IND + * Set sRp2 = _VRES_R^2 and then resume the original code. + */ + vmovups .L_2il0floatpacket.31(%rip), %zmm2 + vaddps {rn-sae}, %zmm8, %zmm3, %zmm1 + vmovups .L_2il0floatpacket.28(%rip), %zmm8 + +/* Grab our final N value as an integer, appropriately masked mod 2^8 */ + vpandd .L_2il0floatpacket.22(%rip), %zmm12, %zmm5 + +/* + * Now multiply those numbers all by 2 pi, reasonably accurately. + * (RHi + RLo) * (pi_lead + pi_trail) ~= + * RHi * pi_lead + (RHi * pi_trail + RLo * pi_lead) + */ + vmovups .L_2il0floatpacket.27(%rip), %zmm12 + vmulps {rn-sae}, %zmm12, %zmm13, %zmm0 + vmovaps %zmm12, %zmm9 + vfmsub213ps {rn-sae}, %zmm0, %zmm13, %zmm9 + vfmadd213ps {rn-sae}, %zmm9, %zmm8, %zmm13 + vmovaps %zmm6, %zmm8 + vfmadd213ps {rn-sae}, %zmm13, %zmm12, %zmm1 + vpandnd %zmm15, %zmm15, %zmm8{%k3} + vpandnd %zmm15, %zmm15, %zmm6{%k2} + vandps %zmm11, %zmm6, %zmm14 + vandps %zmm0, %zmm8, %zmm15 + vandps %zmm1, %zmm8, %zmm12 + vorps %zmm15, %zmm14, %zmm6 + vpsrld $31, %zmm6, %zmm3 + vpsubd %zmm3, %zmm2, %zmm4 + vpaddd %zmm4, %zmm5, %zmm7 + vpsrld $2, %zmm7, %zmm13 + vpslld $2, %zmm13, %zmm9 + +/* + * ---------------------------------------------------------- + * End of large arguments path + * ---------------------------------------------------------- + * Merge results from main and large paths: + */ + vblendmps %zmm13, %zmm10, %zmm10{%k1} + vpsubd %zmm9, %zmm5, %zmm5 + vmovups .L_2il0floatpacket.32(%rip), %zmm9 + vcvtdq2ps {rn-sae}, %zmm5, %zmm0 + vmovups .L_2il0floatpacket.33(%rip), %zmm5 + vfmadd231ps {rn-sae}, %zmm0, %zmm5, %zmm12 + vmovups (%rsp), %zmm5 + vaddps {rn-sae}, %zmm6, %zmm12, %zmm6 + vfmadd213ps {rn-sae}, %zmm6, %zmm9, %zmm0 + vblendmps %zmm0, %zmm5, %zmm5{%k1} + jmp .LBL_1_2 + .align 16,0x90 + + .cfi_endproc + + .type __svml_tanf16,@function + .size __svml_tanf16,.-__svml_tanf16 +..LN__svml_tanf16.0: + +.L_2__routine_start___svml_stan_cout_rare_internal_1: + + .align 16,0x90 + +__svml_stan_cout_rare_internal: + + + .cfi_startproc +..L63: + + xorl %eax, %eax + movl (%rdi), %edx + movzwl 2(%rdi), %ecx + movl %edx, -8(%rsp) + andl $32640, %ecx + shrl $24, %edx + andl $127, %edx + movb %dl, -5(%rsp) + cmpl $32640, %ecx + je .LBL_2_3 + + + ret + +.LBL_2_3: + + cmpl $2139095040, -8(%rsp) + jne .LBL_2_5 + + + movss (%rdi), %xmm0 + movl $1, %eax + mulss __stan_la__vmlsTanTab(%rip), %xmm0 + movss %xmm0, (%rsi) + ret + +.LBL_2_5: + + movss (%rdi), %xmm0 + mulss (%rdi), %xmm0 + movss %xmm0, (%rsi) + ret + .align 16,0x90 + + .cfi_endproc + + .type __svml_stan_cout_rare_internal,@function + .size __svml_stan_cout_rare_internal,.-__svml_stan_cout_rare_internal +..LN__svml_stan_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +.L_2il0floatpacket.15: + .long 0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000,0x7f800000 + .type .L_2il0floatpacket.15,@object + .size .L_2il0floatpacket.15,64 + .align 64 +.L_2il0floatpacket.16: + .long 0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff,0x007fffff + .type .L_2il0floatpacket.16,@object + .size .L_2il0floatpacket.16,64 + .align 64 +.L_2il0floatpacket.17: + .long 0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000,0x00800000 + .type .L_2il0floatpacket.17,@object + .size .L_2il0floatpacket.17,64 + .align 64 +.L_2il0floatpacket.18: + .long 0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff,0x0000ffff + .type .L_2il0floatpacket.18,@object + .size .L_2il0floatpacket.18,64 + .align 64 +.L_2il0floatpacket.19: + .long 0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000 + .type .L_2il0floatpacket.19,@object + .size .L_2il0floatpacket.19,64 + .align 64 +.L_2il0floatpacket.20: + .long 0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000 + .type .L_2il0floatpacket.20,@object + .size .L_2il0floatpacket.20,64 + .align 64 +.L_2il0floatpacket.21: + .long 0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000,0x47400000 + .type .L_2il0floatpacket.21,@object + .size .L_2il0floatpacket.21,64 + .align 64 +.L_2il0floatpacket.22: + .long 0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff,0x000000ff + .type .L_2il0floatpacket.22,@object + .size .L_2il0floatpacket.22,64 + .align 64 +.L_2il0floatpacket.23: + .long 0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000,0x28800000 + .type .L_2il0floatpacket.23,@object + .size .L_2il0floatpacket.23,64 + .align 64 +.L_2il0floatpacket.24: + .long 0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff,0x0003ffff + .type .L_2il0floatpacket.24,@object + .size .L_2il0floatpacket.24,64 + .align 64 +.L_2il0floatpacket.25: + .long 0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000,0x34000000 + .type .L_2il0floatpacket.25,@object + .size .L_2il0floatpacket.25,64 + .align 64 +.L_2il0floatpacket.26: + .long 0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff,0x000001ff + .type .L_2il0floatpacket.26,@object + .size .L_2il0floatpacket.26,64 + .align 64 +.L_2il0floatpacket.27: + .long 0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb,0x40c90fdb + .type .L_2il0floatpacket.27,@object + .size .L_2il0floatpacket.27,64 + .align 64 +.L_2il0floatpacket.28: + .long 0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e,0xb43bbd2e + .type .L_2il0floatpacket.28,@object + .size .L_2il0floatpacket.28,64 + .align 64 +.L_2il0floatpacket.29: + .long 0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff + .type .L_2il0floatpacket.29,@object + .size .L_2il0floatpacket.29,64 + .align 64 +.L_2il0floatpacket.30: + .long 0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000,0x35800000 + .type .L_2il0floatpacket.30,@object + .size .L_2il0floatpacket.30,64 + .align 64 +.L_2il0floatpacket.31: + .long 0x00000002,0x00000002,0x00000002,0x00000002,0x00000002,0x00000002,0x00000002,0x00000002,0x00000002,0x00000002,0x00000002,0x00000002,0x00000002,0x00000002,0x00000002,0x00000002 + .type .L_2il0floatpacket.31,@object + .size .L_2il0floatpacket.31,64 + .align 64 +.L_2il0floatpacket.32: + .long 0x3cc90fdb,0x3cc90fdb,0x3cc90fdb,0x3cc90fdb,0x3cc90fdb,0x3cc90fdb,0x3cc90fdb,0x3cc90fdb,0x3cc90fdb,0x3cc90fdb,0x3cc90fdb,0x3cc90fdb,0x3cc90fdb,0x3cc90fdb,0x3cc90fdb,0x3cc90fdb + .type .L_2il0floatpacket.32,@object + .size .L_2il0floatpacket.32,64 + .align 64 +.L_2il0floatpacket.33: + .long 0xb03bbd2e,0xb03bbd2e,0xb03bbd2e,0xb03bbd2e,0xb03bbd2e,0xb03bbd2e,0xb03bbd2e,0xb03bbd2e,0xb03bbd2e,0xb03bbd2e,0xb03bbd2e,0xb03bbd2e,0xb03bbd2e,0xb03bbd2e,0xb03bbd2e,0xb03bbd2e + .type .L_2il0floatpacket.33,@object + .size .L_2il0floatpacket.33,64 + .align 64 +__svml_stan_data_internal: + .long 1092811139 + .long 1092811139 + .long 1092811139 + .long 1092811139 + .long 1092811139 + .long 1092811139 + .long 1092811139 + .long 1092811139 + .long 1092811139 + .long 1092811139 + .long 1092811139 + .long 1092811139 + .long 1092811139 + .long 1092811139 + .long 1092811139 + .long 1092811139 + .long 1036586970 + .long 1036586970 + .long 1036586970 + .long 1036586970 + .long 1036586970 + .long 1036586970 + .long 1036586970 + .long 1036586970 + .long 1036586970 + .long 1036586970 + .long 1036586970 + .long 1036586970 + .long 1036586970 + .long 1036586970 + .long 1036586970 + .long 1036586970 + .long 832708968 + .long 832708968 + .long 832708968 + .long 832708968 + .long 832708968 + .long 832708968 + .long 832708968 + .long 832708968 + .long 832708968 + .long 832708968 + .long 832708968 + .long 832708968 + .long 832708968 + .long 832708968 + .long 832708968 + .long 832708968 + .long 633484485 + .long 633484485 + .long 633484485 + .long 633484485 + .long 633484485 + .long 633484485 + .long 633484485 + .long 633484485 + .long 633484485 + .long 633484485 + .long 633484485 + .long 633484485 + .long 633484485 + .long 633484485 + .long 633484485 + .long 633484485 + .long 832708608 + .long 832708608 + .long 832708608 + .long 832708608 + .long 832708608 + .long 832708608 + .long 832708608 + .long 832708608 + .long 832708608 + .long 832708608 + .long 832708608 + .long 832708608 + .long 832708608 + .long 832708608 + .long 832708608 + .long 832708608 + .long 708075802 + .long 708075802 + .long 708075802 + .long 708075802 + .long 708075802 + .long 708075802 + .long 708075802 + .long 708075802 + .long 708075802 + .long 708075802 + .long 708075802 + .long 708075802 + .long 708075802 + .long 708075802 + .long 708075802 + .long 708075802 + .long 2147483648 + .long 1036629468 + .long 1045147567 + .long 1050366018 + .long 1054086093 + .long 1057543609 + .long 1059786177 + .long 1062344705 + .long 1065353216 + .long 1067186156 + .long 1069519047 + .long 1072658590 + .long 1075479162 + .long 1079179983 + .long 1084284919 + .long 1092776803 + .long 4286578687 + .long 3240260451 + .long 3231768567 + .long 3226663631 + .long 3222962810 + .long 3220142238 + .long 3217002695 + .long 3214669804 + .long 3212836864 + .long 3209828353 + .long 3207269825 + .long 3205027257 + .long 3201569741 + .long 3197849666 + .long 3192631215 + .long 3184113116 + .long 2147483648 + .long 826651354 + .long 791306928 + .long 2989111746 + .long 2982175258 + .long 2992568675 + .long 850100121 + .long 850281093 + .long 0 + .long 861435400 + .long 840342808 + .long 3003924160 + .long 3016492578 + .long 865099790 + .long 856723932 + .long 3025444934 + .long 4085252096 + .long 877961286 + .long 3004207580 + .long 3012583438 + .long 869008930 + .long 856440512 + .long 2987826456 + .long 3008919048 + .long 0 + .long 2997764741 + .long 2997583769 + .long 845085027 + .long 834691610 + .long 841628098 + .long 2938790576 + .long 2974135002 + .long 1051372198 + .long 1051372198 + .long 1051372198 + .long 1051372198 + .long 1051372198 + .long 1051372198 + .long 1051372198 + .long 1051372198 + .long 1051372198 + .long 1051372198 + .long 1051372198 + .long 1051372198 + .long 1051372198 + .long 1051372198 + .long 1051372198 + .long 1051372198 + .long 1040758920 + .long 1040758920 + .long 1040758920 + .long 1040758920 + .long 1040758920 + .long 1040758920 + .long 1040758920 + .long 1040758920 + .long 1040758920 + .long 1040758920 + .long 1040758920 + .long 1040758920 + .long 1040758920 + .long 1040758920 + .long 1040758920 + .long 1040758920 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1059256707 + .long 1059256707 + .long 1059256707 + .long 1059256707 + .long 1059256707 + .long 1059256707 + .long 1059256707 + .long 1059256707 + .long 1059256707 + .long 1059256707 + .long 1059256707 + .long 1059256707 + .long 1059256707 + .long 1059256707 + .long 1059256707 + .long 1059256707 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .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 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 2139095040 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .long 1262485504 + .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 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1174470656 + .long 1070137344 + .long 1070137344 + .long 1070137344 + .long 1070137344 + .long 1070137344 + .long 1070137344 + .long 1070137344 + .long 1070137344 + .long 1070137344 + .long 1070137344 + .long 1070137344 + .long 1070137344 + .long 1070137344 + .long 1070137344 + .long 1070137344 + .long 1070137344 + .long 972922880 + .long 972922880 + .long 972922880 + .long 972922880 + .long 972922880 + .long 972922880 + .long 972922880 + .long 972922880 + .long 972922880 + .long 972922880 + .long 972922880 + .long 972922880 + .long 972922880 + .long 972922880 + .long 972922880 + .long 972922880 + .long 866263040 + .long 866263040 + .long 866263040 + .long 866263040 + .long 866263040 + .long 866263040 + .long 866263040 + .long 866263040 + .long 866263040 + .long 866263040 + .long 866263040 + .long 866263040 + .long 866263040 + .long 866263040 + .long 866263040 + .long 866263040 + .long 741630234 + .long 741630234 + .long 741630234 + .long 741630234 + .long 741630234 + .long 741630234 + .long 741630234 + .long 741630234 + .long 741630234 + .long 741630234 + .long 741630234 + .long 741630234 + .long 741630234 + .long 741630234 + .long 741630234 + .long 741630234 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 1070141403 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 3007036718 + .long 2801216749 + .long 2801216749 + .long 2801216749 + .long 2801216749 + .long 2801216749 + .long 2801216749 + .long 2801216749 + .long 2801216749 + .long 2801216749 + .long 2801216749 + .long 2801216749 + .long 2801216749 + .long 2801216749 + .long 2801216749 + .long 2801216749 + .long 2801216749 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 3183752116 + .long 3183752116 + .long 3183752116 + .long 3183752116 + .long 3183752116 + .long 3183752116 + .long 3183752116 + .long 3183752116 + .long 3183752116 + .long 3183752116 + .long 3183752116 + .long 3183752116 + .long 3183752116 + .long 3183752116 + .long 3183752116 + .long 3183752116 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 3202070443 + .long 3202070443 + .long 3202070443 + .long 3202070443 + .long 3202070443 + .long 3202070443 + .long 3202070443 + .long 3202070443 + .long 3202070443 + .long 3202070443 + .long 3202070443 + .long 3202070443 + .long 3202070443 + .long 3202070443 + .long 3202070443 + .long 3202070443 + .long 1008677739 + .long 1008677739 + .long 1008677739 + .long 1008677739 + .long 1008677739 + .long 1008677739 + .long 1008677739 + .long 1008677739 + .long 1008677739 + .long 1008677739 + .long 1008677739 + .long 1008677739 + .long 1008677739 + .long 1008677739 + .long 1008677739 + .long 1008677739 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1073741824 + .long 1070141403 + .long 3007036718 + .long 0 + .long 0 + .long 0 + .long 1065353216 + .long 0 + .long 0 + .long 1051372765 + .long 0 + .long 1069935515 + .long 853435276 + .long 0 + .long 1019812401 + .long 797871386 + .long 1065353216 + .long 975043072 + .long 1019820333 + .long 1051400329 + .long 1015569723 + .long 1069729628 + .long 2999697034 + .long 0 + .long 1028208956 + .long 816029531 + .long 1065353216 + .long 991832832 + .long 1028240852 + .long 1051479824 + .long 1023251493 + .long 1069523740 + .long 860164016 + .long 0 + .long 1033310670 + .long 827321128 + .long 1065353216 + .long 1001540608 + .long 1033364538 + .long 1051617929 + .long 1028458464 + .long 1069317853 + .long 2977958621 + .long 0 + .long 1036629468 + .long 826649990 + .long 1065353216 + .long 1008660256 + .long 1036757738 + .long 1051807326 + .long 1032162226 + .long 1069111966 + .long 3009745511 + .long 0 + .long 1039964354 + .long 2964214364 + .long 1065353216 + .long 1014578464 + .long 1040201797 + .long 1052059423 + .long 1034708638 + .long 1068906078 + .long 848017692 + .long 0 + .long 1041753444 + .long 2982519524 + .long 1065353216 + .long 1018446032 + .long 1041972480 + .long 1052374628 + .long 1037453248 + .long 1068700191 + .long 3004118141 + .long 0 + .long 1043443277 + .long 2985501265 + .long 1065353216 + .long 1022797056 + .long 1043793882 + .long 1052746889 + .long 1039915463 + .long 1068494303 + .long 857455223 + .long 0 + .long 1045147567 + .long 791292384 + .long 1065353216 + .long 1025642520 + .long 1045675728 + .long 1053195814 + .long 1041590498 + .long 1068288416 + .long 2992986704 + .long 0 + .long 1046868583 + .long 833925599 + .long 1065353216 + .long 1028557712 + .long 1047628490 + .long 1053716836 + .long 1043186017 + .long 1068082528 + .long 863082593 + .long 0 + .long 1048592340 + .long 2988940902 + .long 1065353216 + .long 1031831496 + .long 1049119700 + .long 1054310701 + .long 1044788971 + .long 1067876641 + .long 837040812 + .long 0 + .long 1049473154 + .long 2972885556 + .long 1065353216 + .long 1033689040 + .long 1050184288 + .long 1054999523 + .long 1046698028 + .long 1067670754 + .long 3006826934 + .long 0 + .long 1050366018 + .long 2989112046 + .long 1065353216 + .long 1035760784 + .long 1051302645 + .long 1055777031 + .long 1048635818 + .long 1067464866 + .long 853854846 + .long 0 + .long 1051272279 + .long 817367088 + .long 1065353216 + .long 1038057984 + .long 1052482025 + .long 1056656040 + .long 1049723582 + .long 1067258979 + .long 2999277465 + .long 0 + .long 1052193360 + .long 2986510371 + .long 1065353216 + .long 1040390392 + .long 1053730424 + .long 1057307751 + .long 1050943059 + .long 1067053091 + .long 860373800 + .long 0 + .long 1053130765 + .long 2987705281 + .long 1065353216 + .long 1041784404 + .long 1055056706 + .long 1057868403 + .long 1052298273 + .long 1066847204 + .long 2974604846 + .long 0 + .long 1054086093 + .long 2982175058 + .long 1065353216 + .long 1043312844 + .long 1056470731 + .long 1058502663 + .long 1053852727 + .long 1066641317 + .long 3009535726 + .long 0 + .long 1055061049 + .long 2985572766 + .long 1065353216 + .long 1044984860 + .long 1057474074 + .long 1059214863 + .long 1055565854 + .long 1066435429 + .long 848437261 + .long 0 + .long 1056057456 + .long 844263924 + .long 1065353216 + .long 1046810746 + .long 1058286064 + .long 1060014844 + .long 1057227928 + .long 1066229542 + .long 3003908357 + .long 0 + .long 1057020941 + .long 2987700082 + .long 1065353216 + .long 1048689044 + .long 1059160627 + .long 1060914481 + .long 1058313864 + .long 1066023654 + .long 857665008 + .long 0 + .long 1057543609 + .long 2992568718 + .long 1065353216 + .long 1049773965 + .long 1060105673 + .long 1061932376 + .long 1059565214 + .long 1065817767 + .long 2992147565 + .long 0 + .long 1058080175 + .long 854607280 + .long 1065353216 + .long 1050955490 + .long 1061130203 + .long 1063075792 + .long 1060964899 + .long 1065611879 + .long 863292377 + .long 0 + .long 1058631876 + .long 848316488 + .long 1065353216 + .long 1052241912 + .long 1062244476 + .long 1064374250 + .long 1062608877 + .long 1065405992 + .long 838719090 + .long 0 + .long 1059200055 + .long 2987155932 + .long 1065353216 + .long 1053642609 + .long 1063460266 + .long 1065596017 + .long 1064468970 + .long 1065046993 + .long 848647046 + .long 0 + .long 1059786177 + .long 850099898 + .long 1065353216 + .long 1055168194 + .long 1064791104 + .long 1066427841 + .long 1065988022 + .long 1064635218 + .long 854274415 + .long 0 + .long 1060391849 + .long 2998448362 + .long 1065353216 + .long 1056830711 + .long 1065802920 + .long 1067373883 + .long 1067237086 + .long 1064223444 + .long 2998857895 + .long 0 + .long 1061018831 + .long 852661766 + .long 1073741824 + .long 3202769007 + .long 1066608086 + .long 1068453481 + .long 1068697612 + .long 1063811669 + .long 2991727995 + .long 0 + .long 1061669068 + .long 2986407194 + .long 1073741824 + .long 3200789612 + .long 1067498217 + .long 1069688111 + .long 1070408903 + .long 1063399894 + .long 2971248290 + .long 0 + .long 1062344705 + .long 850280824 + .long 1073741824 + .long 3198626104 + .long 1068485666 + .long 1071103306 + .long 1072410651 + .long 1062988119 + .long 839209514 + .long 0 + .long 1063048126 + .long 826671880 + .long 1073741824 + .long 3196257989 + .long 1069584946 + .long 1072731698 + .long 1074256640 + .long 1062576344 + .long 848856831 + .long 0 + .long 1063781982 + .long 845614362 + .long 1073741824 + .long 3191263702 + .long 1070813191 + .long 1074178145 + .long 1075661786 + .long 1062164569 + .long 854484200 + .long 0 + .long 1064549237 + .long 855412877 + .long 1073741824 + .long 3183449264 + .long 1072190735 + .long 1075269479 + .long 1077331464 + .long 1061752795 + .long 2998648110 + .long 1065353216 + .long 3196839438 + .long 839748996 + .long 1056964608 + .long 3187152817 + .long 3179496939 + .long 1025375660 + .long 3159543663 + .long 1061341020 + .long 2991308426 + .long 1065353216 + .long 3196528703 + .long 2993207654 + .long 1056964608 + .long 3187565865 + .long 3178961235 + .long 1025040649 + .long 3158667440 + .long 1060929245 + .long 2969570013 + .long 1065353216 + .long 3196220448 + .long 839617357 + .long 1048576000 + .long 1039897640 + .long 3178234548 + .long 1024731756 + .long 3157936127 + .long 1060517470 + .long 839629084 + .long 1065353216 + .long 3195769474 + .long 2972943314 + .long 1048576000 + .long 1039520273 + .long 3177530035 + .long 1024452069 + .long 3157392148 + .long 1060105695 + .long 849066615 + .long 1065353216 + .long 3195162227 + .long 824230882 + .long 1048576000 + .long 1039159939 + .long 3176846430 + .long 1024176063 + .long 3156719803 + .long 1059693920 + .long 854693985 + .long 1065353216 + .long 3194559300 + .long 837912886 + .long 1048576000 + .long 1038816139 + .long 3176182519 + .long 1023917626 + .long 3156100775 + .long 1059282146 + .long 2998438326 + .long 1065353216 + .long 3193960492 + .long 2976936506 + .long 1048576000 + .long 1038488404 + .long 3175537158 + .long 1023672824 + .long 3155484691 + .long 1058870371 + .long 2990888857 + .long 1065353216 + .long 3193365611 + .long 837021697 + .long 1048576000 + .long 1038176293 + .long 3174909264 + .long 1023428141 + .long 3154717848 + .long 1058458596 + .long 2966216238 + .long 1065353216 + .long 3192774465 + .long 2981011604 + .long 1048576000 + .long 1037879388 + .long 3174297790 + .long 1023026096 + .long 3154246903 + .long 1058046821 + .long 840048653 + .long 1065353216 + .long 3192186872 + .long 2982847435 + .long 1048576000 + .long 1037597300 + .long 3173701765 + .long 1022609285 + .long 3153191752 + .long 1057635046 + .long 849276400 + .long 1065353216 + .long 3191602652 + .long 2972865050 + .long 1048576000 + .long 1037329660 + .long 3173120241 + .long 1022242934 + .long 3152466531 + .long 1057223271 + .long 854903769 + .long 1065353216 + .long 3191021630 + .long 838792638 + .long 1048576000 + .long 1037076124 + .long 3172552332 + .long 1021893801 + .long 3151682133 + .long 1056658385 + .long 840258438 + .long 1065353216 + .long 3190443633 + .long 2979855596 + .long 1048576000 + .long 1036836369 + .long 3171997189 + .long 1021543079 + .long 3150495127 + .long 1055834836 + .long 2990469287 + .long 1065353216 + .long 3189868496 + .long 2981611511 + .long 1048576000 + .long 1036610091 + .long 3171453986 + .long 1021220110 + .long 3149437649 + .long 1055011286 + .long 2962859682 + .long 1065353216 + .long 3189296055 + .long 2950857776 + .long 1048576000 + .long 1036397006 + .long 3170921933 + .long 1020942892 + .long 3148919762 + .long 1054187736 + .long 840468223 + .long 1065353216 + .long 3188726149 + .long 2955915960 + .long 1048576000 + .long 1036196851 + .long 3169906765 + .long 1020660679 + .long 3147905210 + .long 1053364187 + .long 2990259502 + .long 1065353216 + .long 3188158621 + .long 2978622083 + .long 1048576000 + .long 1036009378 + .long 3168882838 + .long 1020421234 + .long 3147436656 + .long 1052540637 + .long 2961181405 + .long 1065353216 + .long 3187515595 + .long 789904544 + .long 1048576000 + .long 1035834359 + .long 3167876891 + .long 1020189995 + .long 3146799430 + .long 1051717087 + .long 840678007 + .long 1065353216 + .long 3186389132 + .long 2974324164 + .long 1048576000 + .long 1035671582 + .long 3166887590 + .long 1019957287 + .long 3145677161 + .long 1050893538 + .long 2990049718 + .long 1065353216 + .long 3185266517 + .long 821445502 + .long 1048576000 + .long 1035520850 + .long 3165913616 + .long 1019751749 + .long 3143905397 + .long 1050069988 + .long 2957827630 + .long 1065353216 + .long 3184147455 + .long 823956970 + .long 1048576000 + .long 1035381982 + .long 3164953691 + .long 1019591684 + .long 3143870825 + .long 1049246438 + .long 840887792 + .long 1065353216 + .long 3183031657 + .long 2948197632 + .long 1048576000 + .long 1035254815 + .long 3164006661 + .long 1019406069 + .long 3141406886 + .long 1048269777 + .long 831869830 + .long 1065353216 + .long 3181918839 + .long 829265530 + .long 1048576000 + .long 1035139196 + .long 3163071263 + .long 1019275107 + .long 3141473894 + .long 1046622678 + .long 2954471074 + .long 1065353216 + .long 3180808717 + .long 2974758491 + .long 1048576000 + .long 1035034991 + .long 3161787608 + .long 1019131285 + .long 3139614851 + .long 1044975579 + .long 2981870894 + .long 1065353216 + .long 3179701015 + .long 2951749952 + .long 1048576000 + .long 1034942077 + .long 3159956688 + .long 1019002541 + .long 3137649644 + .long 1043328479 + .long 832289399 + .long 1065353216 + .long 3177908479 + .long 2968441398 + .long 1048576000 + .long 1034860345 + .long 3158142289 + .long 1018906717 + .long 3137336762 + .long 1041681380 + .long 2949439022 + .long 1065353216 + .long 3175701100 + .long 2963548093 + .long 1048576000 + .long 1034789701 + .long 3156342344 + .long 1018810804 + .long 3133887847 + .long 1039881169 + .long 823481222 + .long 1065353216 + .long 3173496918 + .long 2969038481 + .long 1048576000 + .long 1034730062 + .long 3154554595 + .long 1018750428 + .long 3136028910 + .long 1036586971 + .long 2973482286 + .long 1065353216 + .long 3171295395 + .long 2968300352 + .long 1048576000 + .long 1034681361 + .long 3151437839 + .long 1018664053 + .long 3123383004 + .long 1033292772 + .long 2941050414 + .long 1065353216 + .long 3167298168 + .long 808398440 + .long 1048576000 + .long 1034643540 + .long 3147899215 + .long 1018610153 + .long 943964915 + .long 1028198363 + .long 2965093678 + .long 1065353216 + .long 3162902549 + .long 2950073902 + .long 1048576000 + .long 1034616555 + .long 3143016255 + .long 1018603598 + .long 3133555092 + .long 1019809755 + .long 2956705070 + .long 1065353216 + .long 3154512883 + .long 803361198 + .long 1048576000 + .long 1034600377 + .long 3134618720 + .long 1018580133 + .long 3134056577 + .long 0 + .long 0 + .long 1065353216 + .long 0 + .long 0 + .long 1048576000 + .long 1034594987 + .long 0 + .long 1018552971 + .long 0 + .long 3167293403 + .long 809221422 + .long 1065353216 + .long 1007029235 + .long 2950844846 + .long 1048576000 + .long 1034600377 + .long 987135072 + .long 1018580133 + .long 986572929 + .long 3175682011 + .long 817610030 + .long 1065353216 + .long 1015418901 + .long 802590254 + .long 1048576000 + .long 1034616555 + .long 995532607 + .long 1018603598 + .long 986071444 + .long 3180776420 + .long 793566766 + .long 1065353216 + .long 1019814520 + .long 2955882088 + .long 1048576000 + .long 1034643540 + .long 1000415567 + .long 1018610153 + .long 3091448562 + .long 3184070619 + .long 825998638 + .long 1065353216 + .long 1023811747 + .long 820816704 + .long 1048576000 + .long 1034681361 + .long 1003954191 + .long 1018664053 + .long 975899356 + .long 3187364817 + .long 2970964870 + .long 1065353216 + .long 1026013270 + .long 821554833 + .long 1048576000 + .long 1034730062 + .long 1007070947 + .long 1018750428 + .long 988545262 + .long 3189165028 + .long 801955374 + .long 1065353216 + .long 1028217452 + .long 816064445 + .long 1048576000 + .long 1034789701 + .long 1008858696 + .long 1018810804 + .long 986404199 + .long 3190812127 + .long 2979773047 + .long 1065353216 + .long 1030424831 + .long 820957750 + .long 1048576000 + .long 1034860345 + .long 1010658641 + .long 1018906717 + .long 989853114 + .long 3192459227 + .long 834387246 + .long 1065353216 + .long 1032217367 + .long 804266304 + .long 1048576000 + .long 1034942077 + .long 1012473040 + .long 1019002541 + .long 990165996 + .long 3194106326 + .long 806987426 + .long 1065353216 + .long 1033325069 + .long 827274843 + .long 1048576000 + .long 1035034991 + .long 1014303960 + .long 1019131285 + .long 992131203 + .long 3195753425 + .long 2979353478 + .long 1065353216 + .long 1034435191 + .long 2976749178 + .long 1048576000 + .long 1035139196 + .long 1015587615 + .long 1019275107 + .long 993990246 + .long 3196730086 + .long 2988371440 + .long 1065353216 + .long 1035548009 + .long 800713984 + .long 1048576000 + .long 1035254815 + .long 1016523013 + .long 1019406069 + .long 993923238 + .long 3197553636 + .long 810343982 + .long 1065353216 + .long 1036663807 + .long 2971440618 + .long 1048576000 + .long 1035381982 + .long 1017470043 + .long 1019591684 + .long 996387177 + .long 3198377186 + .long 842566070 + .long 1065353216 + .long 1037782869 + .long 2968929150 + .long 1048576000 + .long 1035520850 + .long 1018429968 + .long 1019751749 + .long 996421749 + .long 3199200735 + .long 2988161655 + .long 1065353216 + .long 1038905484 + .long 826840516 + .long 1048576000 + .long 1035671582 + .long 1019403942 + .long 1019957287 + .long 998193513 + .long 3200024285 + .long 813697757 + .long 1065353216 + .long 1040031947 + .long 2937388192 + .long 1048576000 + .long 1035834359 + .long 1020393243 + .long 1020189995 + .long 999315782 + .long 3200847835 + .long 842775854 + .long 1065353216 + .long 1040674973 + .long 831138435 + .long 1048576000 + .long 1036009378 + .long 1021399190 + .long 1020421234 + .long 999953008 + .long 3201671384 + .long 2987951871 + .long 1065353216 + .long 1041242501 + .long 808432312 + .long 1048576000 + .long 1036196851 + .long 1022423117 + .long 1020660679 + .long 1000421562 + .long 3202494934 + .long 815376034 + .long 1065353216 + .long 1041812407 + .long 803374128 + .long 1048576000 + .long 1036397006 + .long 1023438285 + .long 1020942892 + .long 1001436114 + .long 3203318484 + .long 842985639 + .long 1065353216 + .long 1042384848 + .long 834127863 + .long 1048576000 + .long 1036610091 + .long 1023970338 + .long 1021220110 + .long 1001954001 + .long 3204142033 + .long 2987742086 + .long 1065353216 + .long 1042959985 + .long 832371948 + .long 1048576000 + .long 1036836369 + .long 1024513541 + .long 1021543079 + .long 1003011479 + .long 3204706919 + .long 3002387417 + .long 1065353216 + .long 1043537982 + .long 2986276286 + .long 1048576000 + .long 1037076124 + .long 1025068684 + .long 1021893801 + .long 1004198485 + .long 3205118694 + .long 2996760048 + .long 1065353216 + .long 1044119004 + .long 825381402 + .long 1048576000 + .long 1037329660 + .long 1025636593 + .long 1022242934 + .long 1004982883 + .long 3205530469 + .long 2987532301 + .long 1065353216 + .long 1044703224 + .long 835363787 + .long 1048576000 + .long 1037597300 + .long 1026218117 + .long 1022609285 + .long 1005708104 + .long 3205942244 + .long 818732590 + .long 1065353216 + .long 1045290817 + .long 833527956 + .long 1048576000 + .long 1037879388 + .long 1026814142 + .long 1023026096 + .long 1006763255 + .long 3206354019 + .long 843405209 + .long 1065353216 + .long 1045881963 + .long 2984505345 + .long 1048576000 + .long 1038176293 + .long 1027425616 + .long 1023428141 + .long 1007234200 + .long 3206765794 + .long 850954678 + .long 1065353216 + .long 1046476844 + .long 829452858 + .long 1048576000 + .long 1038488404 + .long 1028053510 + .long 1023672824 + .long 1008001043 + .long 3207177568 + .long 3002177633 + .long 1065353216 + .long 1047075652 + .long 2985396534 + .long 1048576000 + .long 1038816139 + .long 1028698871 + .long 1023917626 + .long 1008617127 + .long 3207589343 + .long 2996550263 + .long 1065353216 + .long 1047678579 + .long 2971714530 + .long 1048576000 + .long 1039159939 + .long 1029362782 + .long 1024176063 + .long 1009236155 + .long 3208001118 + .long 2987112732 + .long 1065353216 + .long 1048285826 + .long 825459666 + .long 1048576000 + .long 1039520273 + .long 1030046387 + .long 1024452069 + .long 1009908500 + .long 3208412893 + .long 822086365 + .long 1065353216 + .long 1048736800 + .long 2987101005 + .long 1048576000 + .long 1039897640 + .long 1030750900 + .long 1024731756 + .long 1010452479 + .long 3208824668 + .long 843824778 + .long 1065353216 + .long 1049045055 + .long 845724006 + .long 1056964608 + .long 3187565865 + .long 1031477587 + .long 1025040649 + .long 1011183792 + .long 3209236443 + .long 851164462 + .long 0 + .long 3212836864 + .long 725680128 + .long 1073741824 + .long 3003121664 + .long 3221225472 + .long 1076541384 + .long 3226821083 + .long 3209648217 + .long 3001967848 + .long 0 + .long 3212032885 + .long 3002896525 + .long 1073741824 + .long 3183449264 + .long 3219674383 + .long 1075269479 + .long 3224815112 + .long 3210059992 + .long 2996340479 + .long 0 + .long 3211265630 + .long 2993098010 + .long 1073741824 + .long 3191263702 + .long 3218296839 + .long 1074178145 + .long 3223145434 + .long 3210471767 + .long 2986693162 + .long 0 + .long 3210531774 + .long 2974155528 + .long 1073741824 + .long 3196257989 + .long 3217068594 + .long 1072731698 + .long 3221740288 + .long 3210883542 + .long 823764642 + .long 0 + .long 3209828353 + .long 2997764472 + .long 1073741824 + .long 3198626104 + .long 3215969314 + .long 1071103306 + .long 3219894299 + .long 3211295317 + .long 844244347 + .long 0 + .long 3209152716 + .long 838923546 + .long 1073741824 + .long 3200789612 + .long 3214981865 + .long 1069688111 + .long 3217892551 + .long 3211707092 + .long 851374247 + .long 0 + .long 3208502479 + .long 3000145414 + .long 1073741824 + .long 3202769007 + .long 3214091734 + .long 1068453481 + .long 3216181260 + .long 3212118866 + .long 3001758063 + .long 0 + .long 3207875497 + .long 850964714 + .long 1065353216 + .long 1056830711 + .long 3213286568 + .long 1067373883 + .long 3214720734 + .long 3212530641 + .long 2996130694 + .long 0 + .long 3207269825 + .long 2997583546 + .long 1065353216 + .long 1055168194 + .long 3212274752 + .long 1066427841 + .long 3213471670 + .long 3212889640 + .long 2986202738 + .long 0 + .long 3206683703 + .long 839672284 + .long 1065353216 + .long 1053642609 + .long 3210943914 + .long 1065596017 + .long 3211952618 + .long 3213095527 + .long 3010776025 + .long 0 + .long 3206115524 + .long 2995800136 + .long 1065353216 + .long 1052241912 + .long 3209728124 + .long 1064374250 + .long 3210092525 + .long 3213301415 + .long 844663917 + .long 0 + .long 3205563823 + .long 3002090928 + .long 1065353216 + .long 1050955490 + .long 3208613851 + .long 1063075792 + .long 3208448547 + .long 3213507302 + .long 3005148656 + .long 0 + .long 3205027257 + .long 845085070 + .long 1065353216 + .long 1049773965 + .long 3207589321 + .long 1061932376 + .long 3207048862 + .long 3213713190 + .long 856424709 + .long 0 + .long 3204504589 + .long 840216434 + .long 1065353216 + .long 1048689044 + .long 3206644275 + .long 1060914481 + .long 3205797512 + .long 3213919077 + .long 2995920909 + .long 0 + .long 3203541104 + .long 2991747572 + .long 1065353216 + .long 1046810746 + .long 3205769712 + .long 1060014844 + .long 3204711576 + .long 3214124965 + .long 862052078 + .long 0 + .long 3202544697 + .long 838089118 + .long 1065353216 + .long 1044984860 + .long 3204957722 + .long 1059214863 + .long 3203049502 + .long 3214330852 + .long 827121198 + .long 0 + .long 3201569741 + .long 834691410 + .long 1065353216 + .long 1043312844 + .long 3203954379 + .long 1058502663 + .long 3201336375 + .long 3214536739 + .long 3007857448 + .long 0 + .long 3200614413 + .long 840221633 + .long 1065353216 + .long 1041784404 + .long 3202540354 + .long 1057868403 + .long 3199781921 + .long 3214742627 + .long 851793817 + .long 0 + .long 3199677008 + .long 839026723 + .long 1065353216 + .long 1040390392 + .long 3201214072 + .long 1057307751 + .long 3198426707 + .long 3214948514 + .long 3001338494 + .long 0 + .long 3198755927 + .long 2964850736 + .long 1065353216 + .long 1038057984 + .long 3199965673 + .long 1056656040 + .long 3197207230 + .long 3215154402 + .long 859343286 + .long 0 + .long 3197849666 + .long 841628398 + .long 1065353216 + .long 1035760784 + .long 3198786293 + .long 1055777031 + .long 3196119466 + .long 3215360289 + .long 2984524460 + .long 0 + .long 3196956802 + .long 825401908 + .long 1065353216 + .long 1033689040 + .long 3197667936 + .long 1054999523 + .long 3194181676 + .long 3215566176 + .long 3010566241 + .long 0 + .long 3196075988 + .long 841457254 + .long 1065353216 + .long 1031831496 + .long 3196603348 + .long 1054310701 + .long 3192272619 + .long 3215772064 + .long 845503056 + .long 0 + .long 3194352231 + .long 2981409247 + .long 1065353216 + .long 1028557712 + .long 3195112138 + .long 1053716836 + .long 3190669665 + .long 3215977951 + .long 3004938871 + .long 0 + .long 3192631215 + .long 2938776032 + .long 1065353216 + .long 1025642520 + .long 3193159376 + .long 1053195814 + .long 3189074146 + .long 3216183839 + .long 856634493 + .long 0 + .long 3190926925 + .long 838017617 + .long 1065353216 + .long 1022797056 + .long 3191277530 + .long 1052746889 + .long 3187399111 + .long 3216389726 + .long 2995501340 + .long 0 + .long 3189237092 + .long 835035876 + .long 1065353216 + .long 1018446032 + .long 3189456128 + .long 1052374628 + .long 3184936896 + .long 3216595614 + .long 862261863 + .long 0 + .long 3187448002 + .long 816730716 + .long 1065353216 + .long 1014578464 + .long 3187685445 + .long 1052059423 + .long 3182192286 + .long 3216801501 + .long 830474973 + .long 0 + .long 3184113116 + .long 2974133638 + .long 1065353216 + .long 1008660256 + .long 3184241386 + .long 1051807326 + .long 3179645874 + .long 3217007388 + .long 3007647664 + .long 0 + .long 3180794318 + .long 2974804776 + .long 1065353216 + .long 1001540608 + .long 3180848186 + .long 1051617929 + .long 3175942112 + .long 3217213276 + .long 852213386 + .long 0 + .long 3175692604 + .long 2963513179 + .long 1065353216 + .long 991832832 + .long 3175724500 + .long 1051479824 + .long 3170735141 + .long 3217419163 + .long 3000918924 + .long 0 + .long 3167296049 + .long 2945355034 + .long 1065353216 + .long 975043072 + .long 3167303981 + .long 1051400329 + .long 3163053371 + .type __svml_stan_data_internal,@object + .size __svml_stan_data_internal,7232 + .align 64 +__svml_stan_reduction_data_internal: + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1 + .long 0 + .long 0 + .long 2 + .long 0 + .long 0 + .long 5 + .long 0 + .long 0 + .long 10 + .long 0 + .long 0 + .long 20 + .long 0 + .long 0 + .long 40 + .long 0 + .long 0 + .long 81 + .long 0 + .long 0 + .long 162 + .long 0 + .long 0 + .long 325 + .long 0 + .long 0 + .long 651 + .long 0 + .long 0 + .long 1303 + .long 0 + .long 0 + .long 2607 + .long 0 + .long 0 + .long 5215 + .long 0 + .long 0 + .long 10430 + .long 0 + .long 0 + .long 20860 + .long 0 + .long 0 + .long 41721 + .long 0 + .long 0 + .long 83443 + .long 0 + .long 0 + .long 166886 + .long 0 + .long 0 + .long 333772 + .long 0 + .long 0 + .long 667544 + .long 0 + .long 0 + .long 1335088 + .long 0 + .long 0 + .long 2670176 + .long 0 + .long 0 + .long 5340353 + .long 0 + .long 0 + .long 10680707 + .long 0 + .long 0 + .long 21361414 + .long 0 + .long 0 + .long 42722829 + .long 0 + .long 0 + .long 85445659 + .long 0 + .long 0 + .long 170891318 + .long 0 + .long 0 + .long 341782637 + .long 0 + .long 0 + .long 683565275 + .long 0 + .long 0 + .long 1367130551 + .long 0 + .long 0 + .long 2734261102 + .long 0 + .long 1 + .long 1173554908 + .long 0 + .long 2 + .long 2347109817 + .long 0 + .long 5 + .long 399252338 + .long 0 + .long 10 + .long 798504676 + .long 0 + .long 20 + .long 1597009353 + .long 0 + .long 40 + .long 3194018707 + .long 0 + .long 81 + .long 2093070119 + .long 0 + .long 162 + .long 4186140238 + .long 0 + .long 325 + .long 4077313180 + .long 0 + .long 651 + .long 3859659065 + .long 0 + .long 1303 + .long 3424350834 + .long 0 + .long 2607 + .long 2553734372 + .long 0 + .long 5215 + .long 812501448 + .long 0 + .long 10430 + .long 1625002897 + .long 0 + .long 20860 + .long 3250005794 + .long 0 + .long 41721 + .long 2205044292 + .long 0 + .long 83443 + .long 115121288 + .long 0 + .long 166886 + .long 230242576 + .long 0 + .long 333772 + .long 460485152 + .long 0 + .long 667544 + .long 920970305 + .long 0 + .long 1335088 + .long 1841940610 + .long 0 + .long 2670176 + .long 3683881221 + .long 0 + .long 5340353 + .long 3072795146 + .long 0 + .long 10680707 + .long 1850622997 + .long 0 + .long 21361414 + .long 3701245994 + .long 0 + .long 42722829 + .long 3107524692 + .long 0 + .long 85445659 + .long 1920082089 + .long 0 + .long 170891318 + .long 3840164178 + .long 0 + .long 341782637 + .long 3385361061 + .long 0 + .long 683565275 + .long 2475754826 + .long 0 + .long 1367130551 + .long 656542356 + .long 0 + .long 2734261102 + .long 1313084713 + .long 1 + .long 1173554908 + .long 2626169427 + .long 2 + .long 2347109817 + .long 957371559 + .long 5 + .long 399252338 + .long 1914743119 + .long 10 + .long 798504676 + .long 3829486239 + .long 20 + .long 1597009353 + .long 3364005183 + .long 40 + .long 3194018707 + .long 2433043071 + .long 81 + .long 2093070119 + .long 571118846 + .long 162 + .long 4186140238 + .long 1142237692 + .long 325 + .long 4077313180 + .long 2284475384 + .long 651 + .long 3859659065 + .long 273983472 + .long 1303 + .long 3424350834 + .long 547966945 + .long 2607 + .long 2553734372 + .long 1095933890 + .long 5215 + .long 812501448 + .long 2191867780 + .long 10430 + .long 1625002897 + .long 88768265 + .long 20860 + .long 3250005794 + .long 177536531 + .long 41721 + .long 2205044292 + .long 355073063 + .long 83443 + .long 115121288 + .long 710146126 + .long 166886 + .long 230242576 + .long 1420292253 + .long 333772 + .long 460485152 + .long 2840584506 + .long 667544 + .long 920970305 + .long 1386201717 + .long 1335088 + .long 1841940610 + .long 2772403434 + .long 2670176 + .long 3683881221 + .long 1249839573 + .long 5340353 + .long 3072795146 + .long 2499679147 + .long 10680707 + .long 1850622997 + .long 704390999 + .long 21361414 + .long 3701245994 + .long 1408781999 + .long 42722829 + .long 3107524692 + .long 2817563999 + .long 85445659 + .long 1920082089 + .long 1340160702 + .long 170891318 + .long 3840164178 + .long 2680321405 + .long 341782637 + .long 3385361061 + .long 1065675514 + .long 683565275 + .long 2475754826 + .long 2131351028 + .long 1367130551 + .long 656542356 + .long 4262702056 + .long 2734261102 + .long 1313084713 + .long 4230436817 + .long 1173554908 + .long 2626169427 + .long 4165906339 + .long 2347109817 + .long 957371559 + .long 4036845383 + .long 399252338 + .long 1914743119 + .long 3778723471 + .long 798504676 + .long 3829486239 + .long 3262479647 + .long 1597009353 + .long 3364005183 + .long 2229991998 + .long 3194018707 + .long 2433043071 + .long 165016701 + .long 2093070119 + .long 571118846 + .long 330033402 + .long 4186140238 + .long 1142237692 + .long 660066805 + .long 4077313180 + .long 2284475384 + .long 1320133610 + .long 3859659065 + .long 273983472 + .long 2640267220 + .long 3424350834 + .long 547966945 + .long 985567145 + .long 2553734372 + .long 1095933890 + .long 1971134291 + .long 812501448 + .long 2191867780 + .long 3942268582 + .long 1625002897 + .long 88768265 + .long 3589569869 + .long 3250005794 + .long 177536531 + .long 2884172442 + .long 2205044292 + .long 355073063 + .long 1473377588 + .long 115121288 + .long 710146126 + .long 2946755177 + .long 230242576 + .long 1420292253 + .long 1598543059 + .long 460485152 + .long 2840584506 + .long 3197086118 + .long 920970305 + .long 1386201717 + .long 2099204941 + .long 1841940610 + .long 2772403434 + .long 4198409883 + .long 3683881221 + .long 1249839573 + .long 4101852471 + .long 3072795146 + .long 2499679147 + .long 3908737646 + .long 1850622997 + .long 704390999 + .long 3522507997 + .long 3701245994 + .long 1408781999 + .long 2750048699 + .long 3107524692 + .long 2817563999 + .long 1205130103 + .long 1920082089 + .long 1340160702 + .long 2410260206 + .long 3840164178 + .long 2680321405 + .long 525553116 + .long 3385361061 + .long 1065675514 + .long 1051106232 + .long 2475754826 + .long 2131351028 + .long 2102212464 + .long 656542356 + .long 4262702056 + .long 4204424928 + .long 1313084713 + .long 4230436817 + .long 4113882560 + .long 2626169427 + .long 4165906339 + .long 3932797825 + .long 957371559 + .long 4036845383 + .long 3570628355 + .long 1914743119 + .long 3778723471 + .long 2846289414 + .long 3829486239 + .long 3262479647 + .long 1397611533 + .long 3364005183 + .long 2229991998 + .long 2795223067 + .long 2433043071 + .long 165016701 + .long 1295478838 + .long 571118846 + .long 330033402 + .long 2590957677 + .long 1142237692 + .long 660066805 + .long 886948059 + .long 2284475384 + .long 1320133610 + .long 1773896118 + .long 273983472 + .long 2640267220 + .long 3547792237 + .long 547966945 + .long 985567145 + .long 2800617179 + .long 1095933890 + .long 1971134291 + .long 1306267062 + .long 2191867780 + .long 3942268582 + .long 2612534124 + .long 88768265 + .long 3589569869 + .long 930100952 + .long 177536531 + .long 2884172442 + .long 1860201905 + .long 355073063 + .long 1473377588 + .long 3720403810 + .long 710146126 + .long 2946755177 + .long 3145840325 + .long 1420292253 + .long 1598543059 + .long 1996713354 + .long 2840584506 + .long 3197086118 + .long 3993426708 + .long 1386201717 + .long 2099204941 + .long 3691886121 + .long 2772403434 + .long 4198409883 + .long 3088804946 + .long 1249839573 + .long 4101852471 + .long 1882642597 + .long 2499679147 + .long 3908737646 + .long 3765285194 + .long 704390999 + .long 3522507997 + .long 3235603093 + .long 1408781999 + .long 2750048699 + .long 2176238891 + .long 2817563999 + .long 1205130103 + .long 57510486 + .long 1340160702 + .long 2410260206 + .long 115020972 + .long 2680321405 + .long 525553116 + .long 230041945 + .long 1065675514 + .long 1051106232 + .long 460083891 + .long 2131351028 + .long 2102212464 + .long 920167782 + .long 4262702056 + .long 4204424928 + .long 1840335564 + .long 4230436817 + .long 4113882560 + .long 3680671129 + .long 4165906339 + .long 3932797825 + .long 3066374962 + .long 4036845383 + .long 3570628355 + .long 1837782628 + .long 3778723471 + .long 2846289414 + .long 3675565257 + .long 3262479647 + .long 1397611533 + .long 3056163219 + .long 2229991998 + .long 2795223067 + .long 1817359143 + .long 165016701 + .long 1295478838 + .long 3634718287 + .long 330033402 + .long 2590957677 + .long 2974469278 + .long 660066805 + .long 886948059 + .long 1653971260 + .long 1320133610 + .long 1773896118 + .long 3307942520 + .long 2640267220 + .long 3547792237 + .long 2320917745 + .long 985567145 + .long 2800617179 + .long 346868194 + .long 1971134291 + .long 1306267062 + .long 693736388 + .long 3942268582 + .long 2612534124 + .long 1387472776 + .long 3589569869 + .long 930100952 + .long 2774945552 + .long 2884172442 + .long 1860201905 + .long 1254923809 + .long 1473377588 + .long 3720403810 + .long 2509847619 + .long 2946755177 + .long 3145840325 + .long 724727943 + .long 1598543059 + .long 1996713354 + .long 1449455886 + .long 3197086118 + .long 3993426708 + .long 2898911772 + .long 2099204941 + .long 3691886121 + .long 1502856249 + .long 4198409883 + .long 3088804946 + .long 3005712498 + .long 4101852471 + .long 1882642597 + .long 1716457700 + .long 3908737646 + .long 3765285194 + .long 3432915400 + .long 3522507997 + .long 3235603093 + .long 2570863504 + .long 2750048699 + .long 2176238891 + .long 846759712 + .long 1205130103 + .long 57510486 + .long 1693519425 + .long 2410260206 + .long 115020972 + .long 3387038850 + .long 525553116 + .long 230041945 + .long 2479110404 + .long 1051106232 + .long 460083891 + .long 663253512 + .long 2102212464 + .long 920167782 + .long 1326507024 + .long 4204424928 + .long 1840335564 + .long 2653014048 + .long 4113882560 + .long 3680671129 + .long 1011060801 + .long 3932797825 + .long 3066374962 + .long 2022121603 + .long 3570628355 + .long 1837782628 + .long 4044243207 + .long 2846289414 + .long 3675565257 + .long 3793519119 + .long 1397611533 + .long 3056163219 + .long 3292070943 + .long 2795223067 + .long 1817359143 + .long 2289174591 + .long 1295478838 + .long 3634718287 + .long 283381887 + .long 2590957677 + .long 2974469278 + .long 566763775 + .type __svml_stan_reduction_data_internal,@object + .size __svml_stan_reduction_data_internal,3072 + .align 4 +__stan_la__vmlsTanTab: + .long 0 + .long 2139095040 + .type __stan_la__vmlsTanTab,@object + .size __stan_la__vmlsTanTab,8 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_tanh_d_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_tanh_d_la.s new file mode 100644 index 00000000..e9c3db61 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_tanh_d_la.s @@ -0,0 +1,3046 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * + * NOTE: Since the hyperbolic tangent function is odd + * (tanh(x) = -tanh(-x)), below algorithm deals with the absolute + * value of the argument |x|: tanh(x) = sign(x) * tanh(|x|) + * + * We use a table lookup method to compute tanh(|x|). + * The basic idea is to split the input range into a number of subintervals + * and to approximate tanh(.) with a polynomial on each of them. + * + * IEEE SPECIAL CONDITIONS: + * x = [+,-]0, r = [+,-]0 + * x = +Inf, r = +1 + * x = -Inf, r = -1 + * x = QNaN, r = QNaN + * x = SNaN, r = QNaN + * + * + * ALGORITHM DETAILS + * We handle special values in a callout function, aside from main path + * computations. "Special" for this algorithm are: + * INF, NAN, |x| > HUGE_THRESHOLD + * + * + * Main path computations are organized as follows: + * Actually we split the interval [0, SATURATION_THRESHOLD) + * into a number of subintervals. On each subinterval we approximate tanh(.) + * with a minimax polynomial of pre-defined degree. Polynomial coefficients + * are computed beforehand and stored in table. We also use + * + * y := |x| + B, + * + * here B depends on subinterval and is used to make argument + * closer to zero. + * We also add large fake interval [SATURATION_THRESHOLD, HUGE_THRESHOLD], + * where 1.0 + 0.0*y + 0.0*y^2 ... coefficients are stored - just to + * preserve main path computation logic but return 1.0 for all arguments. + * + * Hence reconstruction looks as follows: + * we extract proper polynomial and range reduction coefficients + * (Pj and B), corresponding to subinterval, to which |x| belongs, + * and return + * + * r := sign(x) * (P0 + P1 * y + ... + Pn * y^n) + * + * NOTE: we use multiprecision technique to multiply and sum the first + * K terms of the polynomial. So Pj, j = 0..K are stored in + * table each as a pair of target precision numbers (Pj and PLj) to + * achieve wider than target precision. + * + * -- + * + */ + + + .text +.L_2__routine_start___svml_tanh8_z0_0: + + .align 16,0x90 + .globl __svml_tanh8 + +__svml_tanh8: + + + .cfi_startproc +..L2: + + 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 + vpsrlq $32, %zmm0, %zmm4 + vmovups %zmm0, (%rsp) + vmovups __svml_dtanh_data_internal(%rip), %zmm14 + vmovups 128+__svml_dtanh_data_internal(%rip), %zmm15 + vpmovqd %zmm4, %ymm5 + +/* -------------------- Constant loading ------------------- */ + vandpd 10432+__svml_dtanh_data_internal(%rip), %zmm0, %zmm13 + vandpd 10368+__svml_dtanh_data_internal(%rip), %zmm0, %zmm3 + +/* Here huge arguments, INF and NaNs are filtered out to callout. */ + vpand 2432+__svml_dtanh_data_internal(%rip), %ymm5, %ymm7 + vmovups 384+__svml_dtanh_data_internal(%rip), %zmm0 + vmovups 2176+__svml_dtanh_data_internal(%rip), %zmm4 + vmovups 2048+__svml_dtanh_data_internal(%rip), %zmm5 + vmovups %zmm3, 64(%rsp) + vmovups 512+__svml_dtanh_data_internal(%rip), %zmm3 + vpsubd 2496+__svml_dtanh_data_internal(%rip), %ymm7, %ymm8 + +/* if VMIN, VMAX is defined for I type */ + vxorps %ymm9, %ymm9, %ymm9 + vpmaxsd %ymm9, %ymm8, %ymm10 + vpminsd 2560+__svml_dtanh_data_internal(%rip), %ymm10, %ymm11 + vpsrld $19, %ymm11, %ymm12 + vmovups 1664+__svml_dtanh_data_internal(%rip), %zmm8 + vmovups 1536+__svml_dtanh_data_internal(%rip), %zmm9 + vmovups 1408+__svml_dtanh_data_internal(%rip), %zmm10 + vmovups 1280+__svml_dtanh_data_internal(%rip), %zmm11 + vpmovzxdq %ymm12, %zmm2 + vmovups 1152+__svml_dtanh_data_internal(%rip), %zmm12 + vpermt2pd 448+__svml_dtanh_data_internal(%rip), %zmm2, %zmm0 + vpermt2pd 64+__svml_dtanh_data_internal(%rip), %zmm2, %zmm14 + vpermt2pd 2240+__svml_dtanh_data_internal(%rip), %zmm2, %zmm4 + vpermt2pd 2112+__svml_dtanh_data_internal(%rip), %zmm2, %zmm5 + vsubpd {rn-sae}, %zmm14, %zmm13, %zmm1 + vpermt2pd 1728+__svml_dtanh_data_internal(%rip), %zmm2, %zmm8 + vpermt2pd 1600+__svml_dtanh_data_internal(%rip), %zmm2, %zmm9 + vpermt2pd 1472+__svml_dtanh_data_internal(%rip), %zmm2, %zmm10 + vpermt2pd 1344+__svml_dtanh_data_internal(%rip), %zmm2, %zmm11 + vpermt2pd 1216+__svml_dtanh_data_internal(%rip), %zmm2, %zmm12 + vpermt2pd 576+__svml_dtanh_data_internal(%rip), %zmm2, %zmm3 + vpermt2pd 192+__svml_dtanh_data_internal(%rip), %zmm2, %zmm15 + vmovups %zmm0, 192(%rsp) + vmovups 2304+__svml_dtanh_data_internal(%rip), %zmm0 + vmovups 1024+__svml_dtanh_data_internal(%rip), %zmm13 + vmovups 896+__svml_dtanh_data_internal(%rip), %zmm14 + vmovups %zmm3, 256(%rsp) + vmovups 768+__svml_dtanh_data_internal(%rip), %zmm3 + vmovups %zmm15, 128(%rsp) + vmovups 640+__svml_dtanh_data_internal(%rip), %zmm15 + vpermt2pd 2368+__svml_dtanh_data_internal(%rip), %zmm2, %zmm0 + vpermt2pd 1088+__svml_dtanh_data_internal(%rip), %zmm2, %zmm13 + vpermt2pd 960+__svml_dtanh_data_internal(%rip), %zmm2, %zmm14 + vpermt2pd 832+__svml_dtanh_data_internal(%rip), %zmm2, %zmm3 + vpermt2pd 704+__svml_dtanh_data_internal(%rip), %zmm2, %zmm15 + vfmadd213pd {rn-sae}, %zmm4, %zmm1, %zmm0 + vpcmpgtd 10560+__svml_dtanh_data_internal(%rip), %ymm7, %ymm6 + vmovmskps %ymm6, %edx + vmovups 1920+__svml_dtanh_data_internal(%rip), %zmm6 + vfmadd213pd {rn-sae}, %zmm5, %zmm1, %zmm0 + vmovups 1792+__svml_dtanh_data_internal(%rip), %zmm7 + vpermt2pd 1984+__svml_dtanh_data_internal(%rip), %zmm2, %zmm6 + vpermt2pd 1856+__svml_dtanh_data_internal(%rip), %zmm2, %zmm7 + vfmadd213pd {rn-sae}, %zmm6, %zmm1, %zmm0 + vmovups 256(%rsp), %zmm2 + vfmadd213pd {rn-sae}, %zmm7, %zmm1, %zmm0 + vfmadd213pd {rn-sae}, %zmm8, %zmm1, %zmm0 + vfmadd213pd {rn-sae}, %zmm9, %zmm1, %zmm0 + vfmadd213pd {rn-sae}, %zmm10, %zmm1, %zmm0 + vfmadd213pd {rn-sae}, %zmm11, %zmm1, %zmm0 + vfmadd213pd {rn-sae}, %zmm12, %zmm1, %zmm0 + vfmadd213pd {rn-sae}, %zmm13, %zmm1, %zmm0 + vfmadd213pd {rn-sae}, %zmm14, %zmm1, %zmm0 + vfmadd213pd {rn-sae}, %zmm3, %zmm1, %zmm0 + vmovups 128(%rsp), %zmm3 + vfmadd213pd {rn-sae}, %zmm15, %zmm1, %zmm0 + vfmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0 + vmovups 192(%rsp), %zmm2 + vfmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0 + vfmadd213pd {rn-sae}, %zmm3, %zmm1, %zmm0 + vorpd 64(%rsp), %zmm0, %zmm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + 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 (%rsp), %zmm1 + vmovups %zmm0, 128(%rsp) + vmovups %zmm1, 64(%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, 0xe8, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf8, 0xfe, 0xff, 0xff, 0x22 + movl %eax, %r12d + movq %r13, 48(%rsp) + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xfe, 0xff, 0xff, 0x22 + movl %edx, %r13d + .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd8, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc8, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xfe, 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, 0xe8, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf8, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd8, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd0, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc8, 0xfe, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xfe, 0xff, 0xff, 0x22 + +.LBL_1_10: + + lea 64(%rsp,%r12,8), %rdi + lea 128(%rsp,%r12,8), %rsi + + call __svml_dtanh_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_tanh8,@function + .size __svml_tanh8,.-__svml_tanh8 +..LN__svml_tanh8.0: + +.L_2__routine_start___svml_dtanh_cout_rare_internal_1: + + .align 16,0x90 + +__svml_dtanh_cout_rare_internal: + + + .cfi_startproc +..L63: + + lea __dtanh_la__imldTanhTab(%rip), %rdx + movb 7(%rdi), %al + andb $-128, %al + shrb $7, %al + movzbl %al, %ecx + movzwl 6(%rdi), %eax + andl $32752, %eax + shrl $4, %eax + movq (%rdx,%rcx,8), %rdx + cmpl $2047, %eax + je .LBL_2_6 + + + cmpl $2046, %eax + jne .LBL_2_4 + +.LBL_2_3: + + movq %rdx, (%rsi) + jmp .LBL_2_5 + +.LBL_2_4: + + movsd (%rdi), %xmm1 + movsd __dtanh_la__imldTanhTab(%rip), %xmm0 + addsd %xmm1, %xmm0 + mulsd %xmm0, %xmm1 + movsd %xmm1, (%rsi) + +.LBL_2_5: + + xorl %eax, %eax + ret + +.LBL_2_6: + + testl $1048575, 4(%rdi) + jne .LBL_2_9 + + + cmpl $0, (%rdi) + je .LBL_2_3 + +.LBL_2_9: + + movsd (%rdi), %xmm0 + addsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + jmp .LBL_2_5 + .align 16,0x90 + + .cfi_endproc + + .type __svml_dtanh_cout_rare_internal,@function + .size __svml_dtanh_cout_rare_internal,.-__svml_dtanh_cout_rare_internal +..LN__svml_dtanh_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_dtanh_data_internal: + .long 0 + .long 0 + .long 0 + .long 1070333952 + .long 0 + .long 1070858240 + .long 0 + .long 1071382528 + .long 0 + .long 1071906816 + .long 0 + .long 1072431104 + .long 0 + .long 1072955392 + .long 0 + .long 1073479680 + .long 0 + .long 1074003968 + .long 0 + .long 1074528256 + .long 0 + .long 1075052544 + .long 0 + .long 1075576832 + .long 0 + .long 1076101120 + .long 0 + .long 1076625408 + .long 0 + .long 1077149696 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1097497746 + .long 1070305232 + .long 2699715854 + .long 1070817176 + .long 3997728823 + .long 1071273769 + .long 3938160533 + .long 1071759175 + .long 193732629 + .long 1072072293 + .long 3144363502 + .long 1072375075 + .long 2548249895 + .long 1072570303 + .long 638218690 + .long 1072665176 + .long 3325726839 + .long 1072689426 + .long 2523455249 + .long 1072693057 + .long 2200391922 + .long 1072693244 + .long 4257836853 + .long 1072693247 + .long 4294954840 + .long 1072693247 + .long 0 + .long 1072693248 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 3167993022 + .long 1013310014 + .long 2889539328 + .long 3159121931 + .long 394645568 + .long 1013728265 + .long 2799920971 + .long 1015161303 + .long 754366556 + .long 1013577885 + .long 3960180508 + .long 1014215657 + .long 69774042 + .long 3162475851 + .long 2161066944 + .long 3162264280 + .long 923362432 + .long 1014879086 + .long 2160345802 + .long 1014714211 + .long 3729195158 + .long 3161626453 + .long 675671997 + .long 1015336837 + .long 1141527416 + .long 1013957883 + .long 2209699952 + .long 3160643600 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 2750448946 + .long 1072596012 + .long 1257606939 + .long 1072501079 + .long 2619663609 + .long 1072338011 + .long 863303701 + .long 1072048204 + .long 2694810990 + .long 1071654144 + .long 837003456 + .long 1070723665 + .long 472162617 + .long 1069359818 + .long 532307062 + .long 1067137790 + .long 431106849 + .long 1064162173 + .long 329904022 + .long 1059572972 + .long 4080160942 + .long 1053550275 + .long 1402271583 + .long 1044493446 + .long 467296040 + .long 1032344560 + .long 26734424 + .long 1014207804 + .long 0 + .long 0 + .long 1071622681 + .long 3153114090 + .long 3948133409 + .long 3217705130 + .long 4096956694 + .long 3218184481 + .long 2616164369 + .long 3218465008 + .long 2620770434 + .long 3218641845 + .long 3075958072 + .long 3218520700 + .long 1950184789 + .long 3217978001 + .long 2686385024 + .long 3216731525 + .long 1489441818 + .long 3214597550 + .long 1992796697 + .long 3211642259 + .long 1952936976 + .long 3207056478 + .long 3904162951 + .long 3201033920 + .long 1382745445 + .long 3191977094 + .long 468673444 + .long 3179828208 + .long 3843669553 + .long 3161691483 + .long 0 + .long 0 + .long 1431655765 + .long 3218429269 + .long 3264395793 + .long 3218178991 + .long 60595194 + .long 3217824331 + .long 1837960166 + .long 3217124894 + .long 1964918946 + .long 3214033516 + .long 2998587684 + .long 1068822866 + .long 3421467326 + .long 1069267520 + .long 952003133 + .long 1068506016 + .long 1215426504 + .long 1066495476 + .long 2650572912 + .long 1063503494 + .long 4178958376 + .long 1059043758 + .long 3799805457 + .long 1052940753 + .long 3704238924 + .long 1043831645 + .long 2076585114 + .long 1031813109 + .long 1352847351 + .long 1013591371 + .long 0 + .long 0 + .long 3830371894 + .long 3169224254 + .long 74893150 + .long 1069567437 + .long 1235750664 + .long 1069825332 + .long 916043751 + .long 1069924975 + .long 4138411315 + .long 1069655686 + .long 829220656 + .long 1068441660 + .long 663246204 + .long 3213477792 + .long 652268865 + .long 3214415230 + .long 3251098232 + .long 3212868437 + .long 1480792335 + .long 3209929101 + .long 3365608027 + .long 3205478075 + .long 3330582883 + .long 3199375817 + .long 3573234945 + .long 3190266717 + .long 2061970086 + .long 3178248181 + .long 3148320390 + .long 3160026274 + .long 0 + .long 0 + .long 286337717 + .long 1069617425 + .long 4261152941 + .long 1068876190 + .long 3694459820 + .long 1067928728 + .long 2399079031 + .long 3212381546 + .long 394897286 + .long 3215735810 + .long 3073534041 + .long 3215860118 + .long 301960234 + .long 3214124960 + .long 3353887502 + .long 1064191753 + .long 4200665425 + .long 1063741482 + .long 2003926207 + .long 1061090030 + .long 2196865207 + .long 1056528964 + .long 2107880963 + .long 1050526402 + .long 3656860478 + .long 1041425071 + .long 881228218 + .long 1029305120 + .long 2612840768 + .long 1011136029 + .long 0 + .long 0 + .long 3722294196 + .long 3181505049 + .long 2573001951 + .long 3216029919 + .long 4095639908 + .long 3216151900 + .long 3272210374 + .long 3215957253 + .long 3439280785 + .long 3214441767 + .long 628273304 + .long 1066085542 + .long 3354767370 + .long 1066343670 + .long 300170709 + .long 1063270296 + .long 1870156670 + .long 3209139074 + .long 1580606479 + .long 3206808937 + .long 3818710870 + .long 3202408589 + .long 3126817102 + .long 3196311305 + .long 3320734688 + .long 3187224127 + .long 821170446 + .long 3175173312 + .long 3906480775 + .long 3156975650 + .long 0 + .long 0 + .long 428888587 + .long 3215696314 + .long 3125999356 + .long 3214336891 + .long 407196569 + .long 1053816799 + .long 886258254 + .long 1066874408 + .long 2149075781 + .long 1067351939 + .long 3888390356 + .long 1065784643 + .long 1226056234 + .long 3211994813 + .long 178100474 + .long 3210723675 + .long 4201249718 + .long 1058328572 + .long 3854015760 + .long 1057324616 + .long 3621220964 + .long 1052982118 + .long 1468766992 + .long 1046916174 + .long 2369608770 + .long 1037879115 + .long 327127732 + .long 1025754505 + .long 747046817 + .long 1007714190 + .long 0 + .long 0 + .long 4036362527 + .long 3191151783 + .long 839661649 + .long 1067363059 + .long 4269154241 + .long 1067251747 + .long 391446303 + .long 1066410535 + .long 2090623151 + .long 3211993063 + .long 1751510141 + .long 3213141508 + .long 4072216875 + .long 3209470961 + .long 3769618983 + .long 1061976030 + .long 3462945146 + .long 1057228123 + .long 3030849095 + .long 3202531084 + .long 4269010901 + .long 3198361258 + .long 742615277 + .long 3192302512 + .long 3397417437 + .long 3183265609 + .long 943110610 + .long 3171141000 + .long 371608300 + .long 3153099348 + .long 0 + .long 0 + .long 1315619150 + .long 1066820857 + .long 1001273821 + .long 3214201652 + .long 3859675203 + .long 3212560200 + .long 725858949 + .long 3213658423 + .long 2464052346 + .long 3212913056 + .long 1297319750 + .long 1063307355 + .long 563735576 + .long 1062988089 + .long 2756222736 + .long 3207203944 + .long 31207338 + .long 3204466214 + .long 434022900 + .long 1052227234 + .long 2370591882 + .long 1048628172 + .long 588930601 + .long 1042556347 + .long 3198977634 + .long 1033474724 + .long 1590950759 + .long 1021415866 + .long 195904708 + .long 1003000389 + .long 0 + .long 0 + .long 4252521214 + .long 3198731457 + .long 2969857811 + .long 3217870358 + .long 575387574 + .long 3212943727 + .long 67550217 + .long 3210922992 + .long 2955736731 + .long 1064678043 + .long 4193848343 + .long 1063288304 + .long 1845975253 + .long 3209397546 + .long 1025213509 + .long 3204479174 + .long 3713384058 + .long 1055658730 + .long 4120057883 + .long 3194988032 + .long 1573797757 + .long 3193584787 + .long 2514726550 + .long 3187678317 + .long 15343571 + .long 3178526042 + .long 104576940 + .long 3166444652 + .long 1147207168 + .long 3148070554 + .long 0 + .long 0 + .long 1467656669 + .long 3212977156 + .long 4154993315 + .long 1077775111 + .long 2465966858 + .long 3214886059 + .long 71777642 + .long 1068690118 + .long 2419763912 + .long 1061550205 + .long 1896047360 + .long 3210612806 + .long 3723555648 + .long 1058651288 + .long 3163703016 + .long 1057833732 + .long 1601936705 + .long 3201383489 + .long 2535509424 + .long 3195153293 + .long 3610885824 + .long 1043474022 + .long 1031698712 + .long 1037527637 + .long 1497459257 + .long 1028514042 + .long 3476455860 + .long 1016366870 + .long 758110873 + .long 998719391 + .long 0 + .long 0 + .long 572446067 + .long 3204307354 + .long 926268084 + .long 1081104698 + .long 1313112926 + .long 3217861477 + .long 3660716 + .long 1070677720 + .long 124568711 + .long 3210757561 + .long 2123022704 + .long 1059096046 + .long 576783408 + .long 1059279430 + .long 1651052980 + .long 3204387494 + .long 3164866735 + .long 1051430920 + .long 409335328 + .long 1046695415 + .long 3481520755 + .long 3188046619 + .long 1140549474 + .long 3182373569 + .long 708689751 + .long 3173247717 + .long 2627769694 + .long 3161153086 + .long 3804346926 + .long 3143551592 + .long 0 + .long 0 + .long 2302818369 + .long 1064188902 + .long 526101185 + .long 3235013457 + .long 2975776348 + .long 1075224435 + .long 1103981749 + .long 3223699933 + .long 4261798097 + .long 3210280329 + .long 30781306 + .long 1064564655 + .long 3939597931 + .long 3206430909 + .long 1816466405 + .long 1055007949 + .long 3868125859 + .long 3190076997 + .long 4218600579 + .long 3192569835 + .long 4167655123 + .long 1037376568 + .long 952533803 + .long 1032000428 + .long 895641221 + .long 1022851193 + .long 1237761065 + .long 1010835452 + .long 2902086315 + .long 3133082401 + .long 0 + .long 0 + .long 1899646778 + .long 3207205638 + .long 2434183270 + .long 3238288976 + .long 621380814 + .long 1078065849 + .long 247717525 + .long 3225783561 + .long 1611742563 + .long 3212088477 + .long 537725662 + .long 1065131990 + .long 3769436831 + .long 1057148224 + .long 3759797009 + .long 3196422840 + .long 842759416 + .long 3195613094 + .long 1736926210 + .long 1043198029 + .long 3915271468 + .long 3180709675 + .long 807416070 + .long 3176507548 + .long 3147759461 + .long 3167409843 + .long 3443382404 + .long 3155325020 + .long 1202615797 + .long 3129870924 + .long 0 + .long 0 + .long 1841653873 + .long 3210074087 + .long 2157744327 + .long 1095928888 + .long 3038317314 + .long 3229013375 + .long 2291108570 + .long 1082519711 + .long 707775397 + .long 1067599411 + .long 445214669 + .long 3216153989 + .long 3815354898 + .long 1054410330 + .long 1285070896 + .long 3199787450 + .long 1722630166 + .long 1047526663 + .long 2672844635 + .long 3188483010 + .long 1805520457 + .long 3179260705 + .long 542550567 + .long 1026041526 + .long 392361251 + .long 1017320419 + .long 562647833 + .long 1005205418 + .long 4253488278 + .long 988137457 + .long 0 + .long 0 + .long 3077187303 + .long 1060497018 + .long 1652392454 + .long 1099206368 + .long 414484972 + .long 3231848150 + .long 130592591 + .long 1084602513 + .long 1951534810 + .long 1068932483 + .long 2677544726 + .long 3216895313 + .long 2338009969 + .long 3203411240 + .long 302629286 + .long 1051889816 + .long 1274412910 + .long 3193339538 + .long 3731558070 + .long 1038350327 + .long 3135499196 + .long 1030352152 + .long 1329461873 + .long 3170325324 + .long 4058709792 + .long 3161656179 + .long 2167788642 + .long 3149540607 + .long 1602064437 + .long 3132466971 + .long 0 + .long 0 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 1069547520 + .long 7864320 + .long 7864320 + .long 7864320 + .long 7864320 + .long 7864320 + .long 7864320 + .long 7864320 + .long 7864320 + .long 7864320 + .long 7864320 + .long 7864320 + .long 7864320 + .long 7864320 + .long 7864320 + .long 7864320 + .long 7864320 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 3616958675 + .long 3172564458 + .long 1431547708 + .long 3218429269 + .long 3390261318 + .long 3188010876 + .long 1446529494 + .long 1069617425 + .long 913571762 + .long 3199219810 + .long 1583612462 + .long 3215695720 + .long 2995724807 + .long 3207222498 + .long 847913742 + .long 1066913721 + .long 1634876930 + .long 3212167789 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1694159514 + .long 1010239653 + .long 966318664 + .long 1069606551 + .long 2992375944 + .long 1072656686 + .long 1870405289 + .long 3217070889 + .long 1411308967 + .long 3218333047 + .long 4096824853 + .long 1068863484 + .long 2220740425 + .long 1069365950 + .long 1401698298 + .long 3215430111 + .long 4137473768 + .long 3215259762 + .long 2666938667 + .long 1066889956 + .long 121190665 + .long 1066187784 + .long 821637913 + .long 3213226090 + .long 0 + .long 3217096704 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1463410348 + .long 1012925678 + .long 2389577058 + .long 1069735062 + .long 1617794783 + .long 1072647710 + .long 1889094329 + .long 3217191869 + .long 1210518828 + .long 3218309813 + .long 1479174953 + .long 1069010221 + .long 3435917531 + .long 1069290104 + .long 291210913 + .long 3215575029 + .long 464478606 + .long 3215159746 + .long 1063797118 + .long 1067014292 + .long 3489481042 + .long 1065955541 + .long 2916293494 + .long 3213319415 + .long 0 + .long 3217227776 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1308961311 + .long 1014934498 + .long 2204208241 + .long 1069862983 + .long 2945950899 + .long 1072637797 + .long 1107689125 + .long 3217310565 + .long 545938327 + .long 3218284334 + .long 3174275192 + .long 1069150773 + .long 3754729793 + .long 1069207728 + .long 1611554958 + .long 3215708601 + .long 2936527704 + .long 3215052478 + .long 2983784402 + .long 1067121823 + .long 1327150338 + .long 1065710404 + .long 3371320326 + .long 3213391099 + .long 0 + .long 3217358848 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3546392464 + .long 1015001497 + .long 631120375 + .long 1069990256 + .long 1201634405 + .long 1072626967 + .long 266657677 + .long 3217426771 + .long 1567732958 + .long 3218256710 + .long 883708059 + .long 1069284653 + .long 1008115966 + .long 1069119372 + .long 2657338981 + .long 3215830093 + .long 3402640736 + .long 3214939036 + .long 1000796573 + .long 1067211764 + .long 53805889 + .long 1065455799 + .long 1736607114 + .long 3213440608 + .long 0 + .long 3217489920 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2741128528 + .long 1013617020 + .long 3111451323 + .long 1070116823 + .long 1649040643 + .long 1072615239 + .long 3411009101 + .long 3217540290 + .long 3408666525 + .long 3218227049 + .long 60831764 + .long 1069411415 + .long 64016149 + .long 1069025616 + .long 1202785467 + .long 3215938891 + .long 1072151579 + .long 3214707060 + .long 1534357116 + .long 1067283570 + .long 4218468492 + .long 1065037194 + .long 2285827787 + .long 3213467810 + .long 0 + .long 3217620992 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2659584459 + .long 1014368295 + .long 3537749475 + .long 1070242630 + .long 3072983457 + .long 1072602635 + .long 3507245872 + .long 3217650938 + .long 3434758212 + .long 3218195466 + .long 3801643091 + .long 1069530660 + .long 1128653951 + .long 1068927067 + .long 3580298628 + .long 3216008547 + .long 1645082338 + .long 3214462237 + .long 1048857889 + .long 1067336943 + .long 21547694 + .long 1064510970 + .long 1433152914 + .long 3213472968 + .long 0 + .long 3217752064 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2718912981 + .long 1013914074 + .long 1823051285 + .long 1070367623 + .long 1714227149 + .long 1072589179 + .long 2128046799 + .long 3217758540 + .long 2655098722 + .long 3218162081 + .long 1690074008 + .long 1069594780 + .long 353091525 + .long 1068824353 + .long 4206393496 + .long 3216049578 + .long 824478721 + .long 3214211899 + .long 3850924188 + .long 1067371825 + .long 2738209029 + .long 1063668369 + .long 853664366 + .long 3213456718 + .long 0 + .long 3217883136 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2312638749 + .long 1013630664 + .long 4267025360 + .long 1070491748 + .long 3776362539 + .long 1072574894 + .long 3063840907 + .long 3217862932 + .long 2436606365 + .long 3218127019 + .long 582931594 + .long 1069646387 + .long 3079837843 + .long 1068718114 + .long 3430470362 + .long 3216083715 + .long 1015897693 + .long 3213958348 + .long 765047087 + .long 1067388396 + .long 2337193368 + .long 1061824569 + .long 3002775972 + .long 3213420044 + .long 0 + .long 3218014208 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2001712669 + .long 1015665334 + .long 1330879460 + .long 1070636148 + .long 2956987714 + .long 1072551971 + .long 4281360332 + .long 3218013175 + .long 3304213057 + .long 3218063389 + .long 3261945160 + .long 1069715874 + .long 3866284424 + .long 1068553570 + .long 3423706630 + .long 3216121886 + .long 259493169 + .long 3213268437 + .long 4223676832 + .long 1067379852 + .long 2765317642 + .long 3210752240 + .long 2292494069 + .long 3213329490 + .long 0 + .long 3218145280 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1632443533 + .long 1015769771 + .long 3788472163 + .long 1070757367 + .long 2406795724 + .long 1072518757 + .long 1173083542 + .long 3218140352 + .long 3726086528 + .long 3217906251 + .long 1205028711 + .long 1069793280 + .long 2231197855 + .long 1068156878 + .long 2368637763 + .long 3216148628 + .long 2866127296 + .long 3211617797 + .long 2424606359 + .long 1067309831 + .long 2444940724 + .long 3212180962 + .long 3308128888 + .long 3213151909 + .long 0 + .long 3218276352 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 478834383 + .long 1014053288 + .long 1342399495 + .long 1070876422 + .long 2650660168 + .long 1072482726 + .long 976724127 + .long 3218226669 + .long 962417089 + .long 3217740546 + .long 1060150306 + .long 1069852926 + .long 411739190 + .long 1067700577 + .long 3846786712 + .long 3216148687 + .long 4007187252 + .long 1064073475 + .long 3455779574 + .long 1067180067 + .long 1865169557 + .long 3212900393 + .long 1200620699 + .long 3212923615 + .long 0 + .long 3218407424 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 267289397 + .long 1014452734 + .long 302318249 + .long 1070993143 + .long 1373990511 + .long 1072444121 + .long 1606419704 + .long 3218305061 + .long 3955669825 + .long 3217568496 + .long 2701083439 + .long 1069894809 + .long 3425188888 + .long 1067047616 + .long 2305426029 + .long 3216123827 + .long 1692531481 + .long 1065641523 + .long 232815703 + .long 1067000535 + .long 3949954748 + .long 3213214884 + .long 558890519 + .long 3212487521 + .long 0 + .long 3218538496 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1719941932 + .long 1006528498 + .long 368840470 + .long 1071107377 + .long 1825320027 + .long 1072403193 + .long 538136722 + .long 3218375283 + .long 1431312010 + .long 3217392305 + .long 2586725425 + .long 1069919291 + .long 2680871675 + .long 1065941593 + .long 4123661982 + .long 3216076488 + .long 4235496382 + .long 1066406926 + .long 2618960092 + .long 1066782660 + .long 2333865044 + .long 3213444845 + .long 1545458959 + .long 3211934181 + .long 0 + .long 3218669568 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 26286236 + .long 1013191219 + .long 990113957 + .long 1071218987 + .long 3284199501 + .long 1072360200 + .long 2981906127 + .long 3218437190 + .long 3154396333 + .long 3217214106 + .long 4182117656 + .long 1069927061 + .long 903677379 + .long 3207343530 + .long 384743261 + .long 3216009637 + .long 1679228359 + .long 1066734193 + .long 3407026595 + .long 1066538544 + .long 784962854 + .long 3213588186 + .long 1956733412 + .long 3210979700 + .long 0 + .long 3218800640 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1468217372 + .long 1015658399 + .long 2570814109 + .long 1071327852 + .long 532296332 + .long 1072315404 + .long 318213600 + .long 3218490738 + .long 3661105766 + .long 3217035931 + .long 4085840862 + .long 1069919095 + .long 2798312316 + .long 3213370099 + .long 1668326589 + .long 3215870599 + .long 3158013712 + .long 1066998409 + .long 673205579 + .long 1066158659 + .long 486665227 + .long 3213647762 + .long 3317145528 + .long 3208570948 + .long 0 + .long 3218931712 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2060955015 + .long 1014233667 + .long 2567098181 + .long 1071433868 + .long 1159081245 + .long 1072269064 + .long 1492598184 + .long 3218535971 + .long 1567055841 + .long 3216688180 + .long 2821222425 + .long 1069896605 + .long 3691290783 + .long 3214336992 + .long 343679101 + .long 3215679175 + .long 1878686296 + .long 1067197462 + .long 125933636 + .long 1065636281 + .long 421076939 + .long 3213630573 + .long 3748848474 + .long 1062499186 + .long 0 + .long 3219062784 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1860475216 + .long 1015320544 + .long 439764829 + .long 1071587361 + .long 3870821058 + .long 1072197223 + .long 1430736283 + .long 3218588540 + .long 1597812790 + .long 3216174065 + .long 2398544810 + .long 1069838732 + .long 961452807 + .long 3215095800 + .long 716310499 + .long 3215360049 + .long 2337792646 + .long 1067375770 + .long 3863538422 + .long 1064417477 + .long 2203480844 + .long 3213482785 + .long 2389621902 + .long 1063978354 + .long 0 + .long 3219193856 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 517838046 + .long 1015294339 + .long 2114713104 + .long 1071713012 + .long 2046328558 + .long 1072098392 + .long 29352448 + .long 3218631376 + .long 1533416325 + .long 3215079684 + .long 765247815 + .long 1069724759 + .long 24381189 + .long 3215564623 + .long 1213155449 + .long 3214886044 + .long 379420126 + .long 1067409218 + .long 3127061143 + .long 3210809777 + .long 3193663073 + .long 3213128287 + .long 2557278876 + .long 1064581282 + .long 0 + .long 3219324928 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 201012485 + .long 1013704982 + .long 4147262407 + .long 1071803766 + .long 3048814903 + .long 1071997795 + .long 1260857726 + .long 3218645540 + .long 270462819 + .long 3209873967 + .long 874660781 + .long 1069580732 + .long 1251156804 + .long 3215866075 + .long 3568210118 + .long 3214014484 + .long 3784557811 + .long 1067255146 + .long 47772576 + .long 3212562613 + .long 2075700783 + .long 3212539455 + .long 1121561449 + .long 1064698735 + .long 0 + .long 3219456000 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 72370286 + .long 1015768239 + .long 2345366573 + .long 1071888223 + .long 3155310239 + .long 1071897123 + .long 4105462806 + .long 3218634383 + .long 2329529114 + .long 1067280331 + .long 3078782452 + .long 1069291148 + .long 2210998062 + .long 3215997483 + .long 1498585052 + .long 3212353515 + .long 3032692199 + .long 1066974465 + .long 809329973 + .long 3213081308 + .long 2713838579 + .long 3211547879 + .long 1266611175 + .long 1064568889 + .long 0 + .long 3219587072 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2137918782 + .long 1013598293 + .long 2511343836 + .long 1071966424 + .long 4205808243 + .long 1071797842 + .long 2776384587 + .long 3218601667 + .long 3824787134 + .long 1068202086 + .long 4101819712 + .long 1068956189 + .long 3547601806 + .long 3216004360 + .long 4156237724 + .long 1064058621 + .long 3714924071 + .long 1066627770 + .long 2925917146 + .long 3213234133 + .long 4211598888 + .long 3209111151 + .long 2569808389 + .long 1064277859 + .long 0 + .long 3219718144 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2979324843 + .long 1013692066 + .long 2595126306 + .long 1072038496 + .long 4263058559 + .long 1071701178 + .long 2217257467 + .long 3218551298 + .long 2310932059 + .long 1068685603 + .long 3368327571 + .long 1068627625 + .long 3037419246 + .long 3215935424 + .long 3509936675 + .long 1065724141 + .long 1557247226 + .long 1066131548 + .long 3830787958 + .long 3213205743 + .long 1781883284 + .long 1062575914 + .long 3918078093 + .long 1063614197 + .long 0 + .long 3219849216 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3630992244 + .long 1015034507 + .long 461360001 + .long 1072104635 + .long 2866201612 + .long 1071571556 + .long 1021729265 + .long 3218487113 + .long 1039036234 + .long 1068940858 + .long 1685105679 + .long 1068140011 + .long 1856275853 + .long 3215769620 + .long 2211306181 + .long 1066373046 + .long 3739405201 + .long 1065456917 + .long 3870269089 + .long 3213053509 + .long 427599213 + .long 1063593231 + .long 40698732 + .long 1062709094 + .long 0 + .long 3219980288 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 4017840557 + .long 1014067070 + .long 2764932206 + .long 1072165089 + .long 3362970633 + .long 1071394124 + .long 2677206355 + .long 3218412713 + .long 1827861303 + .long 1069122666 + .long 2476388705 + .long 1067583638 + .long 523365901 + .long 3215556224 + .long 1203249285 + .long 1066574111 + .long 4264074292 + .long 1064402288 + .long 3556167213 + .long 3212827889 + .long 3894081206 + .long 1063908871 + .long 2161178761 + .long 1061130844 + .long 0 + .long 3220111360 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3622330478 + .long 1016273425 + .long 923638641 + .long 1072245755 + .long 239419665 + .long 1071146518 + .long 4085259706 + .long 3218288969 + .long 1284806809 + .long 1069276013 + .long 2806747971 + .long 1066232498 + .long 75259250 + .long 3215197393 + .long 2597116185 + .long 1066648701 + .long 1680670491 + .long 3208755029 + .long 446818184 + .long 3212096816 + .long 1529495144 + .long 1063888972 + .long 808619025 + .long 3208443000 + .long 0 + .long 3220242432 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 462410646 + .long 1015565639 + .long 3157363066 + .long 1072336316 + .long 87541994 + .long 1070853747 + .long 2905067058 + .long 3218115077 + .long 1081050294 + .long 1069306453 + .long 4130581086 + .long 3212259234 + .long 1279737796 + .long 3214531982 + .long 901138781 + .long 1066501065 + .long 978916480 + .long 3211806490 + .long 1307294116 + .long 3210755549 + .long 1154728319 + .long 1063409950 + .long 983243444 + .long 3209435485 + .long 0 + .long 3220373504 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2617212772 + .long 1016126748 + .long 2762378177 + .long 1072409936 + .long 1926160805 + .long 1070604218 + .long 4131898582 + .long 3217810482 + .long 3068505203 + .long 1069203346 + .long 2854543895 + .long 3214027139 + .long 1276437050 + .long 3213652513 + .long 523800203 + .long 1066060621 + .long 3030576699 + .long 3212054264 + .long 210618624 + .long 3205409267 + .long 3515290542 + .long 1062456384 + .long 1613351841 + .long 3209185464 + .long 0 + .long 3220504576 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2178033281 + .long 1016051223 + .long 859883711 + .long 1072469258 + .long 4248327203 + .long 1070195167 + .long 4170103331 + .long 3217497647 + .long 3497702842 + .long 1069026027 + .long 669705965 + .long 3214426190 + .long 548733038 + .long 3212258725 + .long 1756337187 + .long 1065503890 + .long 1830841059 + .long 3211930343 + .long 1445563742 + .long 1061912703 + .long 2113494314 + .long 1060991234 + .long 1734825467 + .long 3208559895 + .long 0 + .long 3220635648 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1674478116 + .long 1016412476 + .long 1178764976 + .long 1072516719 + .long 1119346206 + .long 1069851736 + .long 1526584272 + .long 3217221512 + .long 3575463915 + .long 1068817773 + .long 2913683612 + .long 3214542291 + .long 1135909212 + .long 3207879094 + .long 1952394810 + .long 1064725296 + .long 508910559 + .long 3211537545 + .long 225204077 + .long 1062311155 + .long 1009857186 + .long 1056234420 + .long 2872841632 + .long 3207480811 + .long 0 + .long 3220766720 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1768234410 + .long 1014305046 + .long 1496797583 + .long 1072554475 + .long 3351833521 + .long 1069572393 + .long 68183265 + .long 3216938851 + .long 4178655528 + .long 1068606905 + .long 60791550 + .long 3214483781 + .long 1856281737 + .long 1063701265 + .long 4260560897 + .long 1063778674 + .long 2539586291 + .long 3210979253 + .long 2272785608 + .long 1062198907 + .long 1986161572 + .long 3206910344 + .long 1016667904 + .long 3205797138 + .long 0 + .long 3220897792 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3074583847 + .long 1017063845 + .long 4092570620 + .long 1072584374 + .long 3645618684 + .long 1069147119 + .long 1980755111 + .long 3216542681 + .long 889928399 + .long 1068320928 + .long 1360064809 + .long 3214330986 + .long 2266432388 + .long 1064407878 + .long 4147854841 + .long 1062471610 + .long 1812350685 + .long 3210287970 + .long 3710399832 + .long 1061728481 + .long 2458127659 + .long 3207279138 + .long 287360833 + .long 3197756422 + .long 0 + .long 3221028864 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 68970445 + .long 1013643458 + .long 3990219923 + .long 1072607967 + .long 97498680 + .long 1068787106 + .long 4136450559 + .long 3216216395 + .long 147179316 + .long 1067971098 + .long 1625987424 + .long 3214138005 + .long 3965878798 + .long 1064539455 + .long 3777445436 + .long 1059539413 + .long 3029913178 + .long 3209512624 + .long 2162291908 + .long 1061245910 + .long 351053474 + .long 3207087984 + .long 3766283083 + .long 1056943188 + .long 0 + .long 3221159936 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3139580402 + .long 1014663922 + .long 3748810696 + .long 1072634260 + .long 3154943320 + .long 1068262833 + .long 3181856712 + .long 3215694135 + .long 3656356636 + .long 1067539266 + .long 3897588284 + .long 3213798616 + .long 1461831298 + .long 1064461217 + .long 2900114226 + .long 3208814642 + .long 2606420357 + .long 3207868903 + .long 1741152094 + .long 1060222230 + .long 1469206701 + .long 3206514441 + .long 3518993813 + .long 1057090958 + .long 0 + .long 3221291008 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3285908565 + .long 1015477239 + .long 1797956315 + .long 1072657271 + .long 3302471936 + .long 1067543167 + .long 2151339553 + .long 3215007235 + .long 362228095 + .long 1066797401 + .long 3986406156 + .long 3213131380 + .long 388353381 + .long 1064042359 + .long 4147910906 + .long 3209239839 + .long 1739922885 + .long 1056259812 + .long 3188561056 + .long 1058406709 + .long 489122368 + .long 3205182155 + .long 202560853 + .long 1056234231 + .long 0 + .long 3221422080 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3806705628 + .long 1008327668 + .long 884432573 + .long 1072671353 + .long 137405484 + .long 1066747168 + .long 3531994812 + .long 3214216262 + .long 3217445183 + .long 1066105333 + .long 2910288024 + .long 3212464301 + .long 3196212707 + .long 1063467545 + .long 3156563895 + .long 3208963593 + .long 3591285453 + .long 1058733242 + .long 2889132271 + .long 1055392886 + .long 1038377961 + .long 3203561698 + .long 4084672077 + .long 1055001082 + .long 0 + .long 3221553152 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1881957148 + .long 1016569186 + .long 3451706443 + .long 1072679940 + .long 143468186 + .long 1066002557 + .long 553724800 + .long 3213475431 + .long 1049442771 + .long 1065415105 + .long 3378521943 + .long 3211821787 + .long 3176008209 + .long 1062800361 + .long 4016898691 + .long 3208498219 + .long 1548390021 + .long 1058670598 + .long 2097418483 + .long 3202689041 + .long 2756703589 + .long 3201351283 + .long 506736184 + .long 1053405377 + .long 0 + .long 3221684224 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 450339788 + .long 1015040915 + .long 2959639058 + .long 1072685166 + .long 2289443405 + .long 1065320893 + .long 3331959139 + .long 3212796584 + .long 724199976 + .long 1064616734 + .long 938566183 + .long 3211030741 + .long 1640535667 + .long 1062186735 + .long 187996035 + .long 3207841256 + .long 822311531 + .long 1058246461 + .long 160890851 + .long 3203087480 + .long 3163291388 + .long 1050479733 + .long 578249940 + .long 1051474021 + .long 0 + .long 3221815296 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 539445753 + .long 1012635531 + .long 3085578536 + .long 1072688342 + .long 2019637246 + .long 1064510347 + .long 2901018414 + .long 3211991061 + .long 2171427566 + .long 1063868144 + .long 678185093 + .long 3210287638 + .long 2685165718 + .long 1061401571 + .long 710336199 + .long 3207152667 + .long 2733135798 + .long 1057659331 + .long 886948177 + .long 3202751664 + .long 3345834247 + .long 1052218043 + .long 908728048 + .long 1047925874 + .long 0 + .long 3221946368 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 4240302093 + .long 1016867082 + .long 1832260410 + .long 1072690271 + .long 154153694 + .long 1063730412 + .long 2094548181 + .long 3211211898 + .long 1392727515 + .long 1063180837 + .long 3132890025 + .long 3209604411 + .long 483611698 + .long 1060651750 + .long 4246355421 + .long 3206519479 + .long 1424637421 + .long 1057044161 + .long 2138185318 + .long 3202290304 + .long 2276282642 + .long 1052095798 + .long 4227780935 + .long 3196067472 + .long 0 + .long 3222077440 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2485733495 + .long 1017000498 + .long 484092514 + .long 1072691442 + .long 1653085170 + .long 1063007344 + .long 2893019346 + .long 3210489400 + .long 878866243 + .long 1062388018 + .long 2113174452 + .long 3208818852 + .long 2654141437 + .long 1059959432 + .long 3578550869 + .long 3205727739 + .long 315005006 + .long 1056288680 + .long 3246956604 + .long 3201593495 + .long 2197286540 + .long 1051718329 + .long 3044885069 + .long 3196227269 + .long 0 + .long 3222208512 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2794994668 + .long 1016833037 + .long 3287420517 + .long 1072692394 + .long 4133778764 + .long 1061857404 + .long 689562148 + .long 3209340342 + .long 1404089106 + .long 1061273627 + .long 1292441425 + .long 3207706805 + .long 93671116 + .long 1058816787 + .long 2903327974 + .long 3204626398 + .long 4279279273 + .long 1055202414 + .long 134688023 + .long 3200552187 + .long 3315379764 + .long 1050761310 + .long 2945780649 + .long 3195568939 + .long 0 + .long 3222339584 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2135621136 + .long 1016053539 + .long 309961636 + .long 1072692934 + .long 672792810 + .long 1060347512 + .long 2960305506 + .long 3207830967 + .long 1703867620 + .long 1059726750 + .long 824905914 + .long 3206160796 + .long 3036017847 + .long 1057284422 + .long 923304464 + .long 3203122673 + .long 1848642304 + .long 1053791859 + .long 2215350763 + .long 3199158388 + .long 3049848127 + .long 1049324210 + .long 3861893815 + .long 3194293196 + .long 0 + .long 3222470656 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2236028675 + .long 1016891036 + .long 2177293363 + .long 1072693132 + .long 776830057 + .long 1058856794 + .long 4190004158 + .long 3206340337 + .long 209955488 + .long 1058225857 + .long 845130443 + .long 3204660651 + .long 4204313304 + .long 1055835544 + .long 364525198 + .long 3201597210 + .long 3889299905 + .long 1052205563 + .long 1514389355 + .long 3197586647 + .long 1706817756 + .long 1047834665 + .long 3817417318 + .long 3192934132 + .long 0 + .long 3222601728 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1074033072 + .long 1013200912 + .long 2197899301 + .long 1072693205 + .long 1097614282 + .long 1057308273 + .long 209489097 + .long 3204791893 + .long 3641526339 + .long 1056723664 + .long 1792794946 + .long 3203158586 + .long 584598707 + .long 1054254910 + .long 253996240 + .long 3200135633 + .long 642640562 + .long 1050754580 + .long 3147361740 + .long 3196139610 + .long 1167319222 + .long 1046395158 + .long 3488053038 + .long 3191370264 + .long 0 + .long 3222732800 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 871679747 + .long 1016222468 + .long 1586311569 + .long 1072693232 + .long 4199724405 + .long 1055867613 + .long 3041006250 + .long 3203351246 + .long 482130003 + .long 1055184672 + .long 1689676855 + .long 3201619703 + .long 116121201 + .long 1052814264 + .long 4166318198 + .long 3198564764 + .long 388552649 + .long 1049191609 + .long 1384400086 + .long 3194577312 + .long 135589376 + .long 1044819515 + .long 2497367318 + .long 3189906305 + .long 0 + .long 3222863872 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 752986014 + .long 1014740322 + .long 1072834312 + .long 1072693242 + .long 1389704451 + .long 1054277685 + .long 817998738 + .long 3201761329 + .long 996777029 + .long 1053731553 + .long 811547911 + .long 3200166603 + .long 1604093935 + .long 1051232383 + .long 2381858127 + .long 3197131472 + .long 806055999 + .long 1047703656 + .long 443662424 + .long 3193089938 + .long 2855612429 + .long 1043379518 + .long 3671581230 + .long 3188373004 + .long 0 + .long 3222994944 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 4161630806 + .long 1015796140 + .long 3799386689 + .long 1072693245 + .long 516062805 + .long 1052830799 + .long 6188716 + .long 3200314446 + .long 79447568 + .long 1052151909 + .long 223529141 + .long 3198586975 + .long 1557009707 + .long 1049758991 + .long 1527834451 + .long 3195539792 + .long 3841571054 + .long 1046184222 + .long 3228035136 + .long 3191570603 + .long 2497745717 + .long 1041799395 + .long 3127975351 + .long 3186863029 + .long 0 + .long 3223126016 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3013228433 + .long 1015734301 + .long 952591976 + .long 1072693247 + .long 3849195912 + .long 1051256594 + .long 1248135057 + .long 3198740242 + .long 1658384276 + .long 1050712587 + .long 3312197895 + .long 3197147657 + .long 2426751598 + .long 1048219658 + .long 2075412918 + .long 3194074453 + .long 1194511818 + .long 1044659399 + .long 2861395540 + .long 3190045864 + .long 1105252788 + .long 1040325059 + .long 278204179 + .long 3185374362 + .long 0 + .long 3223257088 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 4084683796 + .long 1014352664 + .long 3549182448 + .long 1072693247 + .long 4170486715 + .long 1048984034 + .long 3652359522 + .long 3196467682 + .long 1780445294 + .long 1048420995 + .long 3329441198 + .long 3194856066 + .long 663245309 + .long 1045935418 + .long 1918070306 + .long 3191839818 + .long 4225866973 + .long 1042419329 + .long 1974315224 + .long 3187805832 + .long 847480060 + .long 1038120500 + .long 2386310431 + .long 3183105031 + .long 0 + .long 3223388160 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 951119343 + .long 1016641415 + .long 4194036288 + .long 1072693247 + .long 4207053894 + .long 1045958742 + .long 4131013457 + .long 3193442390 + .long 2503178506 + .long 1045433060 + .long 2309798544 + .long 3191868132 + .long 1503762043 + .long 1042918157 + .long 762244907 + .long 3188792499 + .long 3745081608 + .long 1039371450 + .long 3106729171 + .long 3184757959 + .long 3799011378 + .long 1035063995 + .long 693003136 + .long 3180102041 + .long 0 + .long 3223519232 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1712896388 + .long 1016000193 + .long 4281307769 + .long 1072693247 + .long 3495080264 + .long 1042943408 + .long 3483806577 + .long 3190427056 + .long 3577360645 + .long 1042374261 + .long 3557467263 + .long 3188809333 + .long 3692227868 + .long 1039911516 + .long 1459944482 + .long 3185739496 + .long 624248087 + .long 1036331657 + .long 3930021706 + .long 3181718167 + .long 439009527 + .long 1032014849 + .long 3184212578 + .long 3177110789 + .long 0 + .long 3223650304 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1958475666 + .long 1013700788 + .long 4293118680 + .long 1072693247 + .long 3829159519 + .long 1039938855 + .long 3827364885 + .long 3187422503 + .long 2374004141 + .long 1039322650 + .long 2380228874 + .long 3185757722 + .long 853065064 + .long 1036916376 + .long 3897809499 + .long 3182694159 + .long 2467115425 + .long 1033300621 + .long 2966460473 + .long 3178687133 + .long 4249027489 + .long 1028973684 + .long 3391824522 + .long 3174085926 + .long 0 + .long 3223781376 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1028808661 + .long 1012328597 + .long 4294717113 + .long 1072693247 + .long 2759857858 + .long 1036945975 + .long 2759440340 + .long 3184429623 + .long 217750550 + .long 1036278821 + .long 228557927 + .long 3182713893 + .long 868996329 + .long 1033914811 + .long 130294465 + .long 3179657124 + .long 3979034581 + .long 1030279068 + .long 1690522291 + .long 3175665582 + .long 141102418 + .long 1025941166 + .long 3942643114 + .long 3171030731 + .long 0 + .long 3223912448 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2461075155 + .long 1015729939 + .long 4294933437 + .long 1072693247 + .long 2559161110 + .long 1033930834 + .long 2559046852 + .long 3181414482 + .long 3206412049 + .long 1033243416 + .long 3218709064 + .long 3179678488 + .long 2091270467 + .long 1030857342 + .long 245853585 + .long 3176629075 + .long 1555900931 + .long 1027267783 + .long 1186881303 + .long 3172654298 + .long 1695278520 + .long 1022918007 + .long 1853146834 + .long 3167983022 + .long 0 + .long 3224043520 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2502502488 + .long 1016572066 + .long 4294962713 + .long 1072693247 + .long 3137376149 + .long 1030874690 + .long 3137268820 + .long 3178358338 + .long 1097103169 + .long 1030217134 + .long 1110504267 + .long 3176652206 + .long 1068377398 + .long 1027807171 + .long 222176953 + .long 3173610756 + .long 3440315131 + .long 1024267613 + .long 1199778592 + .long 3169654130 + .long 257981480 + .long 1019904983 + .long 1388437918 + .long 3164943417 + .long 0 + .long 3224174592 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3418697838 + .long 1016821878 + .long 4294966675 + .long 1072693247 + .long 3798207862 + .long 1027825953 + .long 3798094058 + .long 3175309601 + .long 3391459718 + .long 1027200727 + .long 3405981646 + .long 3173635799 + .long 3694208074 + .long 1024764900 + .long 2192272311 + .long 3170602971 + .long 1464408928 + .long 1021279479 + .long 2201370875 + .long 3166665997 + .long 4139632468 + .long 1016902930 + .long 2981161402 + .long 3161912586 + .long 0 + .long 3224305664 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 3589768515 + .long 1013972501 + .long 4294967265 + .long 1072693247 + .long 2293865510 + .long 1023336450 + .long 2097549026 + .long 3170820098 + .long 2721138850 + .long 1022661962 + .long 1571631120 + .long 3169097035 + .long 3716649917 + .long 1020295299 + .long 3146231247 + .long 3166041588 + .long 84506245 + .long 1016656297 + .long 2231398946 + .long 3162043093 + .long 3305646943 + .long 1012441980 + .long 402214167 + .long 3157503609 + .long 0 + .long 3224436736 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2152156943 + .long 1016184605 + .long 4294967294 + .long 1072693247 + .long 1074684533 + .long 1018634353 + .long 1074437943 + .long 3166118001 + .long 967276073 + .long 1018090988 + .long 995296768 + .long 3164526060 + .long 4275132894 + .long 1015589675 + .long 304133116 + .long 3161485853 + .long 1232215992 + .long 1012058464 + .long 559363548 + .long 3157444977 + .long 1487618473 + .long 1007759094 + .long 2355811294 + .long 3152771929 + .long 3381626085 + .long 3224537056 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .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 2147352576 + .long 2147352576 + .long 2147352576 + .long 2147352576 + .long 2147352576 + .long 2147352576 + .long 2147352576 + .long 2147352576 + .long 2147352576 + .long 2147352576 + .long 2147352576 + .long 2147352576 + .long 2147352576 + .long 2147352576 + .long 2147352576 + .long 2147352576 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 1069416448 + .long 1069416448 + .long 1069416448 + .long 1069416448 + .long 1069416448 + .long 1069416448 + .long 1069416448 + .long 1069416448 + .long 1069416448 + .long 1069416448 + .long 1069416448 + .long 1069416448 + .long 1069416448 + .long 1069416448 + .long 1069416448 + .long 1069416448 + .long 7733248 + .long 7733248 + .long 7733248 + .long 7733248 + .long 7733248 + .long 7733248 + .long 7733248 + .long 7733248 + .long 7733248 + .long 7733248 + .long 7733248 + .long 7733248 + .long 7733248 + .long 7733248 + .long 7733248 + .long 7733248 + .long 535822336 + .long 535822336 + .long 535822336 + .long 535822336 + .long 535822336 + .long 535822336 + .long 535822336 + .long 535822336 + .long 535822336 + .long 535822336 + .long 535822336 + .long 535822336 + .long 535822336 + .long 535822336 + .long 535822336 + .long 535822336 + .type __svml_dtanh_data_internal,@object + .size __svml_dtanh_data_internal,10816 + .align 8 +__dtanh_la__imldTanhTab: + .long 0 + .long 1072693248 + .long 0 + .long 3220176896 + .type __dtanh_la__imldTanhTab,@object + .size __dtanh_la__imldTanhTab,16 diff --git a/numpy/core/src/umath/svml/linux/avx512/svml_z0_tanh_s_la.s b/numpy/core/src/umath/svml/linux/avx512/svml_z0_tanh_s_la.s new file mode 100644 index 00000000..1d5f4582 --- /dev/null +++ b/numpy/core/src/umath/svml/linux/avx512/svml_z0_tanh_s_la.s @@ -0,0 +1,1791 @@ +/******************************************* +* Copyright (C) 2021 Intel Corporation +* SPDX-License-Identifier: BSD-3-Clause +*******************************************/ + +/* + * ALGORITHM DESCRIPTION: + * + * NOTE: Since the hyperbolic tangent function is odd + * (tanh(x) = -tanh(-x)), below algorithm deals with the absolute + * value of the argument |x|: tanh(x) = sign(x) * tanh(|x|) + * + * We use a table lookup method to compute tanh(|x|). + * The basic idea is to split the input range into a number of subintervals + * and to approximate tanh(.) with a polynomial on each of them. + * + * IEEE SPECIAL CONDITIONS: + * x = [+,-]0, r = [+,-]0 + * x = +Inf, r = +1 + * x = -Inf, r = -1 + * x = QNaN, r = QNaN + * x = SNaN, r = QNaN + * + * + * ALGORITHM DETAILS + * We handle special values in a callout function, aside from main path + * computations. "Special" for this algorithm are: + * INF, NAN, |x| > HUGE_THRESHOLD + * + * + * Main path computations are organized as follows: + * Actually we split the interval [0, SATURATION_THRESHOLD) + * into a number of subintervals. On each subinterval we approximate tanh(.) + * with a minimax polynomial of pre-defined degree. Polynomial coefficients + * are computed beforehand and stored in table. We also use + * + * y := |x| + B, + * + * here B depends on subinterval and is used to make argument + * closer to zero. + * We also add large fake interval [SATURATION_THRESHOLD, HUGE_THRESHOLD], + * where 1.0 + 0.0*y + 0.0*y^2 ... coefficients are stored - just to + * preserve main path computation logic but return 1.0 for all arguments. + * + * Hence reconstruction looks as follows: + * we extract proper polynomial and range reduction coefficients + * (Pj and B), corresponding to subinterval, to which |x| belongs, + * and return + * + * r := sign(x) * (P0 + P1 * y + ... + Pn * y^n) + * + * NOTE: we use multiprecision technique to multiply and sum the first + * K terms of the polynomial. So Pj, j = 0..K are stored in + * table each as a pair of target precision numbers (Pj and PLj) to + * achieve wider than target precision. + * + * -- + * + */ + + + .text +.L_2__routine_start___svml_tanhf16_z0_0: + + .align 16,0x90 + .globl __svml_tanhf16 + +__svml_tanhf16: + + + .cfi_startproc +..L2: + + 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 + vmovaps %zmm0, %zmm1 + vmovups __svml_stanh_data_internal(%rip), %zmm9 + vmovups 896+__svml_stanh_data_internal(%rip), %zmm11 + vmovups 768+__svml_stanh_data_internal(%rip), %zmm12 + vmovups 640+__svml_stanh_data_internal(%rip), %zmm13 + vmovups 512+__svml_stanh_data_internal(%rip), %zmm14 + vmovups 384+__svml_stanh_data_internal(%rip), %zmm15 + vpternlogd $255, %zmm2, %zmm2, %zmm2 + vandps 5696+__svml_stanh_data_internal(%rip), %zmm1, %zmm8 + vandps 5632+__svml_stanh_data_internal(%rip), %zmm1, %zmm0 + +/* Here huge arguments, INF and NaNs are filtered out to callout. */ + vpandd 1152+__svml_stanh_data_internal(%rip), %zmm1, %zmm3 + vpsubd 1216+__svml_stanh_data_internal(%rip), %zmm3, %zmm4 + vpcmpd $2, 5824+__svml_stanh_data_internal(%rip), %zmm3, %k1 + +/* + * * small table specific variables * + * ********************************** + * -------------------- Constant loading ------------------- + */ + vpxord %zmm5, %zmm5, %zmm5 + +/* if VMIN, VMAX is defined for I type */ + vpmaxsd %zmm5, %zmm4, %zmm6 + vpminsd 1280+__svml_stanh_data_internal(%rip), %zmm6, %zmm7 + vpsrld $21, %zmm7, %zmm10 + vmovups 1024+__svml_stanh_data_internal(%rip), %zmm4 + vpermt2ps 64+__svml_stanh_data_internal(%rip), %zmm10, %zmm9 + vpermt2ps 960+__svml_stanh_data_internal(%rip), %zmm10, %zmm11 + vpermt2ps 1088+__svml_stanh_data_internal(%rip), %zmm10, %zmm4 + vpermt2ps 832+__svml_stanh_data_internal(%rip), %zmm10, %zmm12 + vpermt2ps 704+__svml_stanh_data_internal(%rip), %zmm10, %zmm13 + vpermt2ps 576+__svml_stanh_data_internal(%rip), %zmm10, %zmm14 + vpermt2ps 448+__svml_stanh_data_internal(%rip), %zmm10, %zmm15 + vpandnd %zmm3, %zmm3, %zmm2{%k1} + vptestmd %zmm2, %zmm2, %k0 + vmovups 128+__svml_stanh_data_internal(%rip), %zmm3 + vsubps {rn-sae}, %zmm9, %zmm8, %zmm2 + kmovw %k0, %edx + vfmadd213ps {rn-sae}, %zmm11, %zmm2, %zmm4 + vpermt2ps 192+__svml_stanh_data_internal(%rip), %zmm10, %zmm3 + vfmadd213ps {rn-sae}, %zmm12, %zmm2, %zmm4 + vfmadd213ps {rn-sae}, %zmm13, %zmm2, %zmm4 + vfmadd213ps {rn-sae}, %zmm14, %zmm2, %zmm4 + vfmadd213ps {rn-sae}, %zmm15, %zmm2, %zmm4 + vfmadd213ps {rn-sae}, %zmm3, %zmm2, %zmm4 + vorps %zmm0, %zmm4, %zmm0 + testl %edx, %edx + jne .LBL_1_3 + +.LBL_1_2: + + +/* no invcbrt in libm, so taking it out here */ + 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 %zmm1, 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_stanh_cout_rare_internal + jmp .LBL_1_8 + .align 16,0x90 + + .cfi_endproc + + .type __svml_tanhf16,@function + .size __svml_tanhf16,.-__svml_tanhf16 +..LN__svml_tanhf16.0: + +.L_2__routine_start___svml_stanh_cout_rare_internal_1: + + .align 16,0x90 + +__svml_stanh_cout_rare_internal: + + + .cfi_startproc +..L53: + + lea __stanh_la__imlsTanhTab(%rip), %rdx + movb 3(%rdi), %al + andb $-128, %al + shrb $7, %al + movzbl %al, %ecx + movzwl 2(%rdi), %r8d + andl $32640, %r8d + movl (%rdx,%rcx,4), %eax + cmpl $32640, %r8d + je .LBL_2_4 + +.LBL_2_2: + + movl %eax, (%rsi) + +.LBL_2_3: + + xorl %eax, %eax + ret + +.LBL_2_4: + + testl $8388607, (%rdi) + je .LBL_2_2 + + + movss (%rdi), %xmm0 + addss %xmm0, %xmm0 + movss %xmm0, (%rsi) + jmp .LBL_2_3 + .align 16,0x90 + + .cfi_endproc + + .type __svml_stanh_cout_rare_internal,@function + .size __svml_stanh_cout_rare_internal,.-__svml_stanh_cout_rare_internal +..LN__svml_stanh_cout_rare_internal.1: + + .section .rodata, "a" + .align 64 + .align 64 +__svml_stanh_data_internal: + .long 0 + .long 1030750208 + .long 1032847360 + .long 1034944512 + .long 1037041664 + .long 1039138816 + .long 1041235968 + .long 1043333120 + .long 1045430272 + .long 1047527424 + .long 1049624576 + .long 1051721728 + .long 1053818880 + .long 1055916032 + .long 1058013184 + .long 1060110336 + .long 1062207488 + .long 1064304640 + .long 1066401792 + .long 1068498944 + .long 1070596096 + .long 1072693248 + .long 1074790400 + .long 1076887552 + .long 1078984704 + .long 1081081856 + .long 1083179008 + .long 1085276160 + .long 1087373312 + .long 1089470464 + .long 1091567616 + .long 0 + .long 0 + .long 1030732233 + .long 1032831839 + .long 1034916201 + .long 1036994987 + .long 1039067209 + .long 1041174248 + .long 1043220868 + .long 1045245838 + .long 1047245614 + .long 1049383373 + .long 1051287907 + .long 1053115377 + .long 1054857013 + .long 1057129528 + .long 1058581488 + .long 1059832960 + .long 1060891676 + .long 1062153819 + .long 1063337043 + .long 1064100733 + .long 1064582223 + .long 1064984555 + .long 1065216645 + .long 1065302845 + .long 1065334668 + .long 1065349076 + .long 1065352656 + .long 1065353140 + .long 1065353206 + .long 1065353215 + .long 1065353216 + .long 0 + .long 2963361822 + .long 2971470750 + .long 2945658640 + .long 821708412 + .long 824483568 + .long 824941280 + .long 2984085072 + .long 2957298688 + .long 838449816 + .long 2966046080 + .long 2988320324 + .long 2989804564 + .long 842626356 + .long 3000013710 + .long 2972725824 + .long 3002017674 + .long 853753500 + .long 2987104448 + .long 3000350914 + .long 855535800 + .long 852410906 + .long 851608946 + .long 2988641656 + .long 2997011000 + .long 2989576736 + .long 3000884068 + .long 2999984336 + .long 840950056 + .long 2995215280 + .long 855269702 + .long 0 + .long 1065353216 + .long 1065295748 + .long 1065270545 + .long 1065229919 + .long 1065181343 + .long 1065124909 + .long 1065025765 + .long 1064867200 + .long 1064679597 + .long 1064464345 + .long 1064093083 + .long 1063517074 + .long 1062862743 + .long 1062146519 + .long 1060992371 + .long 1059386208 + .long 1057800167 + .long 1055660649 + .long 1051764737 + .long 1046959010 + .long 1041444634 + .long 1035462611 + .long 1026689093 + .long 1015337940 + .long 1002731447 + .long 990958554 + .long 973168670 + .long 948705851 + .long 924299482 + .long 899955662 + .long 864224966 + .long 0 + .long 2956213371 + .long 3178161821 + .long 3180268967 + .long 3182315389 + .long 3184339487 + .long 3186337805 + .long 3188474939 + .long 3190373619 + .long 3192189570 + .long 3193910865 + .long 3196176320 + .long 3197556682 + .long 3198679950 + .long 3199536798 + .long 3200331518 + .long 3200564882 + .long 3200049264 + .long 3199029518 + .long 3197040598 + .long 3192620804 + .long 3188208183 + .long 3182392393 + .long 3173916356 + .long 3162750726 + .long 3150176437 + .long 3138431708 + .long 3120650203 + .long 3096189170 + .long 3071783062 + .long 3047439278 + .long 3011707180 + .long 0 + .long 3198855845 + .long 3198879250 + .long 3198677023 + .long 3198476576 + .long 3198388151 + .long 3198245218 + .long 3197982711 + .long 3197594458 + .long 3197117197 + .long 3196587519 + .long 3195304371 + .long 3192667528 + .long 3189843074 + .long 3186330810 + .long 3177085101 + .long 1013669486 + .long 1032032579 + .long 1036132065 + .long 1038305199 + .long 1036774550 + .long 1033498413 + .long 1028927137 + .long 1021175553 + .long 1009568359 + .long 998361895 + .long 985691041 + .long 967585842 + .long 943363289 + .long 919210013 + .long 895139148 + .long 858471606 + .long 0 + .long 3077428921 + .long 3189516141 + .long 1008586543 + .long 1036101517 + .long 1033304453 + .long 1034073627 + .long 1036071831 + .long 1037235824 + .long 1039436298 + .long 1040631208 + .long 1041906362 + .long 1042793477 + .long 1043232976 + .long 1043086916 + .long 1042100375 + .long 1039444212 + .long 1034126600 + .long 1026638186 + .long 995501655 + .long 3165579977 + .long 3167654937 + .long 3165317828 + .long 3158960080 + .long 3148291549 + .long 3137354510 + .long 3124730373 + .long 3106670759 + .long 3082457650 + .long 3058305807 + .long 3034235241 + .long 2997581996 + .long 0 + .long 1040781545 + .long 1131811139 + .long 1097198812 + .long 3247503190 + .long 3230402941 + .long 3224086547 + .long 3212798938 + .long 1059790272 + .long 1053691997 + .long 1061317268 + .long 3134918084 + .long 1034173207 + .long 3176246152 + .long 3165561405 + .long 3174788493 + .long 3178015405 + .long 3178847213 + .long 3177176538 + .long 3171127099 + .long 3155996003 + .long 985352038 + .long 999682315 + .long 998398067 + .long 989522534 + .long 977926264 + .long 966355955 + .long 948911724 + .long 924561635 + .long 900244966 + .long 875993879 + .long 841254832 + .long 0 + .long 3155046246 + .long 1175181842 + .long 1138112751 + .long 3286309950 + .long 3267011817 + .long 3259619885 + .long 3246758786 + .long 1088248663 + .long 1078543936 + .long 1086795944 + .long 3205436942 + .long 1043392367 + .long 3198686087 + .long 3182586396 + .long 3174374999 + .long 3142320544 + .long 1008565243 + .long 1014115537 + .long 1016545052 + .long 1010017051 + .long 998649588 + .long 975680464 + .long 3124451591 + .long 3121544226 + .long 3112148751 + .long 3100159824 + .long 3082673659 + .long 3058641232 + .long 3034613169 + .long 3010665978 + .long 2975473412 + .long 0 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 2145386496 + .long 1027604480 + .long 1027604480 + .long 1027604480 + .long 1027604480 + .long 1027604480 + .long 1027604480 + .long 1027604480 + .long 1027604480 + .long 1027604480 + .long 1027604480 + .long 1027604480 + .long 1027604480 + .long 1027604480 + .long 1027604480 + .long 1027604480 + .long 1027604480 + .long 65011712 + .long 65011712 + .long 65011712 + .long 65011712 + .long 65011712 + .long 65011712 + .long 65011712 + .long 65011712 + .long 65011712 + .long 65011712 + .long 65011712 + .long 65011712 + .long 65011712 + .long 65011712 + .long 65011712 + .long 65011712 + .long 0 + .long 0 + .long 36466923 + .long 1072693248 + .long 2365563284 + .long 3201306247 + .long 1829111721 + .long 3218428278 + .long 3823420055 + .long 3193165324 + .long 1098370908 + .long 1072693250 + .long 2493848101 + .long 3205978300 + .long 1742787824 + .long 3218423470 + .long 4013086462 + .long 3193609799 + .long 3667406935 + .long 1072693250 + .long 1352570026 + .long 3206273363 + .long 1445916117 + .long 3218422747 + .long 3835089556 + .long 3194065339 + .long 2420711447 + .long 1072693251 + .long 2169133006 + .long 3206574718 + .long 101347106 + .long 3218421982 + .long 713636389 + .long 3194411770 + .long 1709214929 + .long 1072693252 + .long 1710199222 + .long 3206758855 + .long 2216669086 + .long 3218421174 + .long 3814844772 + .long 3194836884 + .long 1591910603 + .long 1072693253 + .long 2011589771 + .long 3206962796 + .long 3721194918 + .long 3218420324 + .long 1295469166 + .long 3195182212 + .long 2130808979 + .long 1072693254 + .long 1222040805 + .long 3207187539 + .long 555871541 + .long 3218419433 + .long 401254514 + .long 3195493098 + .long 3390924472 + .long 1072693255 + .long 3112838711 + .long 3207434078 + .long 1558155560 + .long 3218418499 + .long 683885552 + .long 3195864282 + .long 1145294069 + .long 1072693257 + .long 1821670117 + .long 3207648695 + .long 2692181933 + .long 3218417523 + .long 2704036295 + .long 3196181879 + .long 4054831834 + .long 1072693258 + .long 1649153664 + .long 3207795248 + .long 4228604383 + .long 3218416505 + .long 4004758581 + .long 3196440654 + .long 3603542514 + .long 1072693260 + .long 1123737044 + .long 3207954183 + .long 2154630785 + .long 3218415446 + .long 2606327835 + .long 3196743208 + .long 4163276658 + .long 1072693262 + .long 2048619642 + .long 3208125991 + .long 1058893780 + .long 3218414345 + .long 250194901 + .long 3197094852 + .long 1518877548 + .long 1072693265 + .long 3379868633 + .long 3208311162 + .long 1246516380 + .long 3218413202 + .long 1621358934 + .long 3197304764 + .long 48033162 + .long 1072693268 + .long 957106177 + .long 3208510185 + .long 3034045498 + .long 3218412017 + .long 798414253 + .long 3197538466 + .long 4131323741 + .long 1072693270 + .long 2207647163 + .long 3208683052 + .long 2454449664 + .long 3218410791 + .long 1709648499 + .long 3197805932 + .long 972334142 + .long 1072693274 + .long 1279092327 + .long 3208797143 + .long 4141984674 + .long 3218409523 + .long 4279927728 + .long 3198110676 + .long 3547307714 + .long 1072693277 + .long 873763845 + .long 3208918886 + .long 4152286949 + .long 3218408214 + .long 947630201 + .long 3198400037 + .long 3779918761 + .long 1072693283 + .long 2452756690 + .long 3209115951 + .long 2900277560 + .long 3218406175 + .long 4114829322 + .long 3198840356 + .long 1550746642 + .long 1072693293 + .long 3179273584 + .long 3209408258 + .long 1697097694 + .long 3218403310 + .long 3189856208 + .long 3199299134 + .long 2567958063 + .long 1072693304 + .long 2177201355 + .long 3209713300 + .long 663593652 + .long 3218400281 + .long 1915839956 + .long 3199641526 + .long 3400799630 + .long 1072693317 + .long 2625933576 + .long 3209895292 + .long 3140727122 + .long 3218397088 + .long 2825210621 + .long 3200061154 + .long 661592278 + .long 1072693333 + .long 2751163500 + .long 3210096603 + .long 4055449010 + .long 3218393733 + .long 57286782 + .long 3200412116 + .long 3889851982 + .long 1072693350 + .long 2680384314 + .long 3210318153 + .long 2804057046 + .long 3218390217 + .long 1812582369 + .long 3200718155 + .long 1191734144 + .long 1072693371 + .long 867498228 + .long 3210560852 + .long 3250577733 + .long 3218386540 + .long 3326742410 + .long 3201083020 + .long 2188854007 + .long 1072693394 + .long 363145135 + .long 3210782655 + .long 840173644 + .long 3218382704 + .long 1735074843 + .long 3201408616 + .long 3657661222 + .long 1072693420 + .long 2204762872 + .long 3210926495 + .long 4072217384 + .long 3218378708 + .long 2965875284 + .long 3201662196 + .long 2413420961 + .long 1072693450 + .long 1162405510 + .long 3211082241 + .long 138720143 + .long 3218374556 + .long 454705634 + .long 3201958187 + .long 3899194868 + .long 1072693483 + .long 669033796 + .long 3211250324 + .long 2167069495 + .long 3218370246 + .long 1542529428 + .long 3202301612 + .long 710018948 + .long 1072693521 + .long 2883210692 + .long 3211431169 + .long 1973418570 + .long 3218365781 + .long 3156689511 + .long 3202524481 + .long 2656657906 + .long 1072693562 + .long 3498100032 + .long 3211625196 + .long 125419693 + .long 3218361162 + .long 1620715508 + .long 3202751895 + .long 2404819887 + .long 1072693608 + .long 4021715948 + .long 3211810552 + .long 1645154164 + .long 3218356389 + .long 703452016 + .long 3203011668 + .long 1243884135 + .long 1072693659 + .long 480742811 + .long 3211921363 + .long 3122063309 + .long 3218351464 + .long 223504399 + .long 3203307063 + .long 495862037 + .long 1072693715 + .long 300794004 + .long 3212039372 + .long 1300653287 + .long 3218346389 + .long 1176592120 + .long 3203610816 + .long 3274452673 + .long 1072693808 + .long 2613861807 + .long 3212229889 + .long 359514654 + .long 3218338503 + .long 2923503278 + .long 3204034910 + .long 3741678157 + .long 1072693954 + .long 3651935792 + .long 3212511436 + .long 2702507736 + .long 3218327463 + .long 2210624435 + .long 3204506468 + .long 1100251351 + .long 1072694127 + .long 3514265607 + .long 3212825173 + .long 957470414 + .long 3218315845 + .long 1305550937 + .long 3204833184 + .long 2996845965 + .long 1072694328 + .long 3142229264 + .long 3213004685 + .long 1883674585 + .long 3218303659 + .long 3326598907 + .long 3205231584 + .long 274977645 + .long 1072694562 + .long 3016319234 + .long 3213195820 + .long 1539002348 + .long 3218290918 + .long 3984366897 + .long 3205604614 + .long 1292806442 + .long 1072694830 + .long 3262520051 + .long 3213405058 + .long 2372653574 + .long 3218277634 + .long 2452462577 + .long 3205892032 + .long 1815353697 + .long 1072695136 + .long 3662183375 + .long 3213632998 + .long 250148789 + .long 3218263821 + .long 2158010733 + .long 3206232708 + .long 2150433494 + .long 1072695483 + .long 3919565056 + .long 3213880202 + .long 1540395291 + .long 3218249491 + .long 3182910565 + .long 3206589369 + .long 2808974545 + .long 1072695874 + .long 1965799910 + .long 3214016317 + .long 1545570484 + .long 3218234659 + .long 1413633121 + .long 3206823218 + .long 164723038 + .long 1072696313 + .long 81021250 + .long 3214159950 + .long 1583468454 + .long 3218219339 + .long 18571726 + .long 3207094384 + .long 3588317822 + .long 1072696801 + .long 4095098713 + .long 3214313941 + .long 298038316 + .long 3218203546 + .long 912947688 + .long 3207406859 + .long 1041448961 + .long 1072697344 + .long 4179586945 + .long 3214478495 + .long 2148027612 + .long 3218187294 + .long 3720520462 + .long 3207679413 + .long 1980273179 + .long 1072697943 + .long 1752543433 + .long 3214653794 + .long 124299728 + .long 3218170600 + .long 864061540 + .long 3207883361 + .long 2949417123 + .long 1072698602 + .long 4190073881 + .long 3214839998 + .long 1415544749 + .long 3218153478 + .long 3694676202 + .long 3208114560 + .long 420771937 + .long 1072699325 + .long 1282420231 + .long 3214985633 + .long 1533345938 + .long 3218135945 + .long 2892854837 + .long 3208375402 + .long 3632588569 + .long 1072700113 + .long 2712748874 + .long 3215089842 + .long 1386124246 + .long 3218118017 + .long 1634175019 + .long 3208733922 + .long 347483009 + .long 1072701423 + .long 1161341506 + .long 3215256321 + .long 1877668895 + .long 3218090451 + .long 4108664264 + .long 3209099007 + .long 3038559136 + .long 1072703435 + .long 2683048238 + .long 3215498732 + .long 1179454900 + .long 3218025113 + .long 1332126937 + .long 3209546908 + .long 3486307715 + .long 1072705767 + .long 2508275841 + .long 3215764027 + .long 359393231 + .long 3217946511 + .long 1961215910 + .long 3209890029 + .long 2252418763 + .long 1072708441 + .long 2827865151 + .long 3216017387 + .long 3509880367 + .long 3217865627 + .long 3222140085 + .long 3210213923 + .long 1486994624 + .long 1072711477 + .long 3160629487 + .long 3216172802 + .long 1178047112 + .long 3217782741 + .long 1901428593 + .long 3210596649 + .long 3746562216 + .long 1072714893 + .long 1033996001 + .long 3216339382 + .long 39866696 + .long 3217698130 + .long 2908573463 + .long 3210891953 + .long 2324761591 + .long 1072718707 + .long 2389401627 + .long 3216516876 + .long 3645939838 + .long 3217612071 + .long 2440236284 + .long 3211151116 + .long 1761407793 + .long 1072722932 + .long 2502005220 + .long 3216704962 + .long 1997398717 + .long 3217524842 + .long 2895026412 + .long 3211448596 + .long 4114502182 + .long 1072727579 + .long 2605061383 + .long 3216903247 + .long 58515002 + .long 3217436714 + .long 711731960 + .long 3211787230 + .long 3951984035 + .long 1072732658 + .long 3516063216 + .long 3217071220 + .long 3638757279 + .long 3217347953 + .long 3233370794 + .long 3211979005 + .long 658281779 + .long 1072738175 + .long 309554960 + .long 3217179845 + .long 1331214594 + .long 3217258823 + .long 2937534811 + .long 3212193451 + .long 2289001467 + .long 1072744131 + .long 2442043690 + .long 3217292793 + .long 2664085653 + .long 3217169576 + .long 3462081454 + .long 3212432263 + .long 3795084150 + .long 1072750527 + .long 1130374688 + .long 3217409754 + .long 3638257201 + .long 3217080459 + .long 3906637920 + .long 3212696488 + .long 4040275044 + .long 1072757360 + .long 3643517564 + .long 3217530392 + .long 4148962921 + .long 3216952251 + .long 1995056602 + .long 3212911950 + .long 1479928784 + .long 1072764624 + .long 2653868580 + .long 3217654355 + .long 1010106713 + .long 3216775940 + .long 3129357315 + .long 3213070764 + .long 2856812514 + .long 1072772308 + .long 1621093115 + .long 3217781272 + .long 1824031529 + .long 3216601249 + .long 2296680075 + .long 3213333328 + .long 2460843475 + .long 1072784536 + .long 3722925065 + .long 3217975665 + .long 3901534801 + .long 3216343697 + .long 741495589 + .long 3213734822 + .long 13033194 + .long 1072802249 + .long 1706090638 + .long 3218161084 + .long 4129724113 + .long 3216008854 + .long 2582831738 + .long 3214039094 + .long 3092949488 + .long 1072821329 + .long 4163404160 + .long 3218296789 + .long 673560195 + .long 3215391593 + .long 1852259695 + .long 3214295490 + .long 3663604487 + .long 1072841572 + .long 2783926416 + .long 3218433189 + .long 538028418 + .long 3214623601 + .long 955002681 + .long 3214577680 + .long 1457520314 + .long 1072862739 + .long 2977011911 + .long 3218568683 + .long 2456605794 + .long 3213048602 + .long 1782979473 + .long 3214883178 + .long 3136246603 + .long 1072884563 + .long 4172123069 + .long 3218701739 + .long 1041205303 + .long 1065062250 + .long 1494191018 + .long 3215071352 + .long 2030188257 + .long 1072906761 + .long 242335435 + .long 3218830924 + .long 3225388224 + .long 1066807264 + .long 2597486284 + .long 3215242091 + .long 1527970838 + .long 1072929036 + .long 2966426512 + .long 3218954923 + .long 1554080475 + .long 1067589039 + .long 1299968651 + .long 3215418462 + .long 3575385503 + .long 1072951087 + .long 2115725422 + .long 3219072567 + .long 1970202642 + .long 1068007486 + .long 633750547 + .long 3215597833 + .long 4170701031 + .long 1072972617 + .long 46586082 + .long 3219155579 + .long 1194653136 + .long 1068384025 + .long 4171340731 + .long 3215777352 + .long 3578160514 + .long 1072993337 + .long 3238411740 + .long 3219206599 + .long 3278559237 + .long 1068609006 + .long 2404931200 + .long 3215954013 + .long 533888921 + .long 1073012973 + .long 1507597629 + .long 3219253160 + .long 2386969249 + .long 1068756225 + .long 272720058 + .long 3216053653 + .long 54544651 + .long 1073031269 + .long 3020671348 + .long 3219294996 + .long 4122670807 + .long 1068883785 + .long 2536786852 + .long 3216134458 + .long 230026772 + .long 1073047994 + .long 2830531360 + .long 3219331923 + .long 2545616196 + .long 1068992498 + .long 3897096954 + .long 3216209170 + .long 867435464 + .long 1073062943 + .long 3935983781 + .long 3219363830 + .long 4280666630 + .long 1069083305 + .long 1614478429 + .long 3216276286 + .long 3991143559 + .long 1073075939 + .long 3165050417 + .long 3219390677 + .long 248866814 + .long 1069157251 + .long 2328429718 + .long 3216358398 + .long 1880129173 + .long 1073091258 + .long 4059723411 + .long 3219421162 + .long 3082848917 + .long 1069238148 + .long 1081358649 + .long 3216430553 + .long 1955557582 + .long 1073104040 + .long 2869422647 + .long 3219445318 + .long 1310544530 + .long 1069299023 + .long 434435025 + .long 3216450109 + .long 3947018234 + .long 1073107343 + .long 3414641036 + .long 3219451270 + .long 4069313179 + .long 1069313321 + .long 1392468754 + .long 3216410502 + .long 3271741504 + .long 1073101128 + .long 3884994071 + .long 3219440866 + .long 1456085694 + .long 1069290099 + .long 2332856790 + .long 3216307665 + .long 3950891192 + .long 1073085735 + .long 439037894 + .long 3219416288 + .long 1197951536 + .long 1069237765 + .long 4195788421 + .long 3216139842 + .long 3990997338 + .long 1073061787 + .long 550042602 + .long 3219379833 + .long 2832452545 + .long 1069163766 + .long 1200943255 + .long 3215832361 + .long 2073883731 + .long 1073030122 + .long 3042850267 + .long 3219333800 + .long 991641143 + .long 1069074535 + .long 1637244010 + .long 3215243222 + .long 3805163810 + .long 1072991715 + .long 3517445189 + .long 3219280382 + .long 2680864185 + .long 1068975465 + .long 1457843741 + .long 3214140932 + .long 1315080793 + .long 1072947617 + .long 3059804278 + .long 3219221594 + .long 2861308047 + .long 1068870963 + .long 3296491873 + .long 1064537111 + .long 3728462150 + .long 1072898893 + .long 3615137083 + .long 3219159232 + .long 3017963192 + .long 1068764532 + .long 3972434375 + .long 1067468619 + .long 1336398218 + .long 1072846587 + .long 1068664290 + .long 3219061390 + .long 122240345 + .long 1068658880 + .long 508009436 + .long 1068456917 + .long 3501538245 + .long 1072791681 + .long 968690691 + .long 3218931236 + .long 1514516445 + .long 1068556030 + .long 671541798 + .long 1069006173 + .long 3814409280 + .long 1072735081 + .long 1553551847 + .long 3218801852 + .long 2849431279 + .long 1068415930 + .long 285838780 + .long 1069554660 + .long 2881499585 + .long 1072661949 + .long 928028610 + .long 3218674977 + .long 8837506 + .long 1068229231 + .long 4283922105 + .long 1069842903 + .long 1813934616 + .long 1072546640 + .long 2296020303 + .long 3218551962 + .long 3757630126 + .long 1068054242 + .long 4184842874 + .long 1070138481 + .long 1612285858 + .long 1072432209 + .long 3568867548 + .long 3218433820 + .long 2489334631 + .long 1067891605 + .long 3119354956 + .long 1070586029 + .long 1945534618 + .long 1072265408 + .long 12375465 + .long 3218268030 + .long 869568690 + .long 1067671872 + .long 313517472 + .long 1070892138 + .long 1205077106 + .long 1072052753 + .long 2329101392 + .long 3218055718 + .long 31064032 + .long 1067390210 + .long 1106783211 + .long 1071186310 + .long 571472860 + .long 1071856508 + .long 2279775366 + .long 3217706561 + .long 3977902324 + .long 1066976012 + .long 1438560376 + .long 1071467394 + .long 433300635 + .long 1071678859 + .long 2662131044 + .long 3217407122 + .long 3461865003 + .long 1066639491 + .long 3761842524 + .long 1071687909 + .long 591758334 + .long 1071396321 + .long 1311878841 + .long 3217153539 + .long 3007781852 + .long 1066335723 + .long 1614590629 + .long 1071809819 + .long 1253814918 + .long 1071117476 + .long 1728609767 + .long 3216850667 + .long 2200561853 + .long 1065903347 + .long 3821226689 + .long 1071921115 + .long 2022982069 + .long 1070874479 + .long 2030156196 + .long 3216496942 + .long 874711265 + .long 1065560045 + .long 2003227996 + .long 1072021655 + .long 2808404217 + .long 1070664514 + .long 1372837647 + .long 3216204595 + .long 822053276 + .long 1065224094 + .long 3767175364 + .long 1072111660 + .long 3043371777 + .long 1070372670 + .long 1442419211 + .long 3215945892 + .long 298752438 + .long 1064796452 + .long 1111528881 + .long 1072191609 + .long 3513208196 + .long 1070065467 + .long 3837735739 + .long 3215552388 + .long 3701924119 + .long 1064460397 + .long 1230501085 + .long 1072262142 + .long 2161267832 + .long 1069804871 + .long 4188367704 + .long 3215231429 + .long 401190186 + .long 1064089052 + .long 3002339892 + .long 1072323996 + .long 1480019407 + .long 1069584807 + .long 1833655520 + .long 3214970435 + .long 2907956919 + .long 1063676311 + .long 875346000 + .long 1072377952 + .long 3150437403 + .long 1069251888 + .long 876861923 + .long 3214583482 + .long 1689748747 + .long 1063353511 + .long 2795554744 + .long 1072424793 + .long 3869705215 + .long 1068941581 + .long 1837883894 + .long 3214240854 + .long 2762317048 + .long 1062946513 + .long 2491972100 + .long 1072465284 + .long 4114823501 + .long 1068682289 + .long 2146865463 + .long 3213964103 + .long 800804261 + .long 1062552648 + .long 2634953449 + .long 1072500149 + .long 2952556276 + .long 1068433515 + .long 1872935290 + .long 3213596436 + .long 525130857 + .long 1062245296 + .long 3287041404 + .long 1072542855 + .long 164674845 + .long 1067923724 + .long 3273134342 + .long 3213089271 + .long 171708004 + .long 1061610314 + .long 3035032320 + .long 1072586748 + .long 3976243935 + .long 1067403539 + .long 3504708444 + .long 3212404491 + .long 3955947885 + .long 1060882840 + .long 513098494 + .long 1072618404 + .long 416924237 + .long 1066726877 + .long 1788945081 + .long 3211801737 + .long 1199639353 + .long 1060166859 + .long 2284134637 + .long 1072641010 + .long 754275327 + .long 1066136447 + .long 94803481 + .long 3211042671 + .long 3377507017 + .long 1059354147 + .long 1467291457 + .long 1072657015 + .long 2435597312 + .long 1065520743 + .long 2819017772 + .long 3210358609 + .long 1988617747 + .long 1058591581 + .long 633705514 + .long 1072668259 + .long 392269686 + .long 1064864433 + .long 2964449929 + .long 3209729770 + .long 3963893163 + .long 1057889872 + .long 2214892393 + .long 1072676103 + .long 2190738271 + .long 1064315837 + .long 3773826451 + .long 3208969045 + .long 3609404170 + .long 1057113308 + .long 3795216963 + .long 1072681541 + .long 3959981107 + .long 1063599490 + .long 1577139384 + .long 3208281591 + .long 1777963469 + .long 1056319886 + .long 2768813161 + .long 1072685290 + .long 452197850 + .long 1062981751 + .long 625862001 + .long 3207639777 + .long 1894515286 + .long 1055580811 + .long 809336726 + .long 1072687861 + .long 325412222 + .long 1062349073 + .long 3494772326 + .long 3206874482 + .long 3143092609 + .long 1054887561 + .long 1391578948 + .long 1072689615 + .long 370441451 + .long 1061660435 + .long 67458841 + .long 3206180214 + .long 1971759196 + .long 1054066692 + .long 57274217 + .long 1072690807 + .long 293665776 + .long 1061075750 + .long 1340185983 + .long 3205535605 + .long 2210177191 + .long 1053294335 + .long 1110907588 + .long 1072691613 + .long 3961986905 + .long 1060367146 + .long 3774614905 + .long 3204763416 + .long 3590429673 + .long 1052580827 + .long 2737507729 + .long 1072692156 + .long 370479370 + .long 1059701790 + .long 1033751386 + .long 3204059641 + .long 1162278823 + .long 1051830218 + .long 2341375458 + .long 1072692521 + .long 760364123 + .long 1059103172 + .long 910883556 + .long 3203420282 + .long 401067508 + .long 1051028170 + .long 3358303651 + .long 1072692765 + .long 3104773993 + .long 1058369139 + .long 2043715743 + .long 3202639413 + .long 4274377921 + .long 1050278646 + .long 3501940353 + .long 1072692984 + .long 2710387139 + .long 1057384557 + .long 2550611600 + .long 3201592258 + .long 2260324605 + .long 1049158690 + .long 3160989127 + .long 1072693133 + .long 1403521776 + .long 1056074537 + .long 760745859 + .long 3200238663 + .long 1163121055 + .long 1047679067 + .long 3509020169 + .long 1072693198 + .long 3352058101 + .long 1054743188 + .long 2289323607 + .long 3198722761 + .long 918272756 + .long 1046147840 + .long 4268817660 + .long 1072693226 + .long 1580550645 + .long 1053325591 + .long 1736251411 + .long 3197308470 + .long 1531106447 + .long 1044632576 + .long 0 + .long 1072693248 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .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 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2146959360 + .long 2130706432 + .long 2130706432 + .long 2130706432 + .long 2130706432 + .long 2130706432 + .long 2130706432 + .long 2130706432 + .long 2130706432 + .long 2130706432 + .long 2130706432 + .long 2130706432 + .long 2130706432 + .long 2130706432 + .long 2130706432 + .long 2130706432 + .long 2130706432 + .long 1022885888 + .long 1022885888 + .long 1022885888 + .long 1022885888 + .long 1022885888 + .long 1022885888 + .long 1022885888 + .long 1022885888 + .long 1022885888 + .long 1022885888 + .long 1022885888 + .long 1022885888 + .long 1022885888 + .long 1022885888 + .long 1022885888 + .long 1022885888 + .long 69730304 + .long 69730304 + .long 69730304 + .long 69730304 + .long 69730304 + .long 69730304 + .long 69730304 + .long 69730304 + .long 69730304 + .long 69730304 + .long 69730304 + .long 69730304 + .long 69730304 + .long 69730304 + .long 69730304 + .long 69730304 + .type __svml_stanh_data_internal,@object + .size __svml_stanh_data_internal,6016 + .align 4 +__stanh_la__imlsTanhTab: + .long 1065353216 + .long 3212836864 + .type __stanh_la__imlsTanhTab,@object + .size __stanh_la__imlsTanhTab,8 diff --git a/numpy/core/tests/test_numeric.py b/numpy/core/tests/test_numeric.py index fe310058..af311066 100644 --- a/numpy/core/tests/test_numeric.py +++ b/numpy/core/tests/test_numeric.py @@ -1497,6 +1497,18 @@ class TestNonzero: a = np.array([[False], [TrueThenFalse()]]) assert_raises(RuntimeError, np.nonzero, a) + def test_nonzero_sideffects_structured_void(self): + # Checks that structured void does not mutate alignment flag of + # original array. + arr = np.zeros(5, dtype="i1,i8,i8") # `ones` may short-circuit + assert arr.flags.aligned # structs are considered "aligned" + assert not arr["f2"].flags.aligned + # make sure that nonzero/count_nonzero do not flip the flag: + np.nonzero(arr) + assert arr.flags.aligned + np.count_nonzero(arr) + assert arr.flags.aligned + def test_nonzero_exception_safe(self): # gh-13930 diff --git a/numpy/core/tests/test_simd.py b/numpy/core/tests/test_simd.py index ea5bbe10..0270ad90 100644 --- a/numpy/core/tests/test_simd.py +++ b/numpy/core/tests/test_simd.py @@ -329,7 +329,7 @@ class _SIMD_FP(_Test_Utility): data_square = [x*x for x in data] square = self.square(vdata) assert square == data_square - + def test_max(self): """ Test intrinsics: @@ -818,6 +818,7 @@ class _SIMD_ALL(_Test_Utility): if self._is_fp(): return + int_min = self._int_min() def trunc_div(a, d): """ Divide towards zero works with large integers > 2^53, @@ -830,57 +831,31 @@ class _SIMD_ALL(_Test_Utility): return a // d return (a + sign_d - sign_a) // d + 1 - int_min = self._int_min() if self._is_signed() else 1 - int_max = self._int_max() - rdata = ( - 0, 1, self.nlanes, int_max-self.nlanes, - int_min, int_min//2 + 1 - ) - divisors = (1, 2, 9, 13, self.nlanes, int_min, int_max, int_max//2) - - for x, d in itertools.product(rdata, divisors): - data = self._data(x) - vdata = self.load(data) - data_divc = [trunc_div(a, d) for a in data] - divisor = self.divisor(d) - divc = self.divc(vdata, divisor) - assert divc == data_divc - - if not self._is_signed(): - return - - safe_neg = lambda x: -x-1 if -x > int_max else -x - # test round divison for signed integers - for x, d in itertools.product(rdata, divisors): - d_neg = safe_neg(d) - data = self._data(x) - data_neg = [safe_neg(a) for a in data] - vdata = self.load(data) - vdata_neg = self.load(data_neg) - divisor = self.divisor(d) - divisor_neg = self.divisor(d_neg) - - # round towards zero - data_divc = [trunc_div(a, d_neg) for a in data] - divc = self.divc(vdata, divisor_neg) - assert divc == data_divc - data_divc = [trunc_div(a, d) for a in data_neg] - divc = self.divc(vdata_neg, divisor) + data = [1, -int_min] # to test overflow + data += range(0, 2**8, 2**5) + data += range(0, 2**8, 2**5-1) + bsize = self._scalar_size() + if bsize > 8: + data += range(2**8, 2**16, 2**13) + data += range(2**8, 2**16, 2**13-1) + if bsize > 16: + data += range(2**16, 2**32, 2**29) + data += range(2**16, 2**32, 2**29-1) + if bsize > 32: + data += range(2**32, 2**64, 2**61) + data += range(2**32, 2**64, 2**61-1) + # negate + data += [-x for x in data] + for dividend, divisor in itertools.product(data, data): + divisor = self.setall(divisor)[0] # cast + if divisor == 0: + continue + dividend = self.load(self._data(dividend)) + data_divc = [trunc_div(a, divisor) for a in dividend] + divisor_parms = self.divisor(divisor) + divc = self.divc(dividend, divisor_parms) assert divc == data_divc - # test truncate sign if the dividend is zero - vzero = self.zero() - for d in (-1, -10, -100, int_min//2, int_min): - divisor = self.divisor(d) - divc = self.divc(vzero, divisor) - assert divc == vzero - - # test overflow - vmin = self.setall(int_min) - divisor = self.divisor(-1) - divc = self.divc(vmin, divisor) - assert divc == vmin - def test_arithmetic_reduce_sum(self): """ Test reduce sum intrinsics: diff --git a/numpy/distutils/mingw32ccompiler.py b/numpy/distutils/mingw32ccompiler.py index 4681d403..c3a0cb41 100644 --- a/numpy/distutils/mingw32ccompiler.py +++ b/numpy/distutils/mingw32ccompiler.py @@ -647,11 +647,9 @@ def generate_manifest(config): if msver is not None: if msver >= 8: check_embedded_msvcr_match_linked(msver) - ma = int(msver) - mi = int((msver - ma) * 10) + ma_str, mi_str = str(msver).split('.') # Write the manifest file - manxml = msvc_manifest_xml(ma, mi) - man = open(manifest_name(config), "w") - config.temp_files.append(manifest_name(config)) - man.write(manxml) - man.close() + manxml = msvc_manifest_xml(int(ma_str), int(mi_str)) + with open(manifest_name(config), "w") as man: + config.temp_files.append(manifest_name(config)) + man.write(manxml) diff --git a/numpy/typing/tests/data/reveal/arrayterator.py b/numpy/typing/tests/data/reveal/arrayterator.py index b57861d0..ea4e7561 100644 --- a/numpy/typing/tests/data/reveal/arrayterator.py +++ b/numpy/typing/tests/data/reveal/arrayterator.py @@ -10,7 +10,7 @@ reveal_type(ar_iter.start) # E: builtins.list[builtins.int] reveal_type(ar_iter.stop) # E: builtins.list[builtins.int] reveal_type(ar_iter.step) # E: builtins.list[builtins.int] reveal_type(ar_iter.shape) # E: builtins.tuple[builtins.int] -reveal_type(ar_iter.flat) # E: 'typing.Generator[{int64}, None, None] +reveal_type(ar_iter.flat) # E: typing.Generator[{int64}, None, None] reveal_type(ar_iter.__array__()) # E: numpy.ndarray[Any, numpy.dtype[{int64}]] diff --git a/pavement.py b/pavement.py index e33695d9..1ef0fe93 100644 --- a/pavement.py +++ b/pavement.py @@ -38,7 +38,7 @@ from paver.easy import Bunch, options, task, sh #----------------------------------- # Path to the release notes -RELEASE_NOTES = 'doc/source/release/1.21.3-notes.rst' +RELEASE_NOTES = 'doc/source/release/1.21.4-notes.rst' #-------------------------------------------------------