diff options
author | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2013-04-28 15:21:50 +0000 |
---|---|---|
committer | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2013-04-28 15:21:50 +0000 |
commit | c19459a92177fc8864b461e84d017a21c4006dc5 (patch) | |
tree | fcf20ad0222de01ad3a955edb3b65b06724a3a15 /libc/sysdeps | |
parent | 8751114637bcc3caaf16a4216da0afb84456558a (diff) | |
download | eglibc2-c19459a92177fc8864b461e84d017a21c4006dc5.tar.gz |
Merge changes between r22663 and r22954 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@22955 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc/sysdeps')
111 files changed, 11815 insertions, 1867 deletions
diff --git a/libc/sysdeps/generic/inttypes.h b/libc/sysdeps/generic/inttypes.h index dc9751905..95d781815 100644 --- a/libc/sysdeps/generic/inttypes.h +++ b/libc/sysdeps/generic/inttypes.h @@ -40,11 +40,6 @@ typedef wchar_t __gwchar_t; # define ____gwchar_t_defined 1 #endif - -/* The ISO C99 standard specifies that these macros must only be - defined if explicitly requested. */ -#if !defined __cplusplus || defined __STDC_FORMAT_MACROS - # if __WORDSIZE == 64 # define __PRI64_PREFIX "l" # define __PRIPTR_PREFIX "l" @@ -267,8 +262,6 @@ typedef wchar_t __gwchar_t; # define SCNuPTR __PRIPTR_PREFIX "u" # define SCNxPTR __PRIPTR_PREFIX "x" -#endif /* C++ && format macros */ - __BEGIN_DECLS diff --git a/libc/sysdeps/generic/ldsodefs.h b/libc/sysdeps/generic/ldsodefs.h index b89691a97..a8d6852e1 100644 --- a/libc/sysdeps/generic/ldsodefs.h +++ b/libc/sysdeps/generic/ldsodefs.h @@ -609,6 +609,12 @@ extern const struct rtld_global_ro _rtld_global_ro #endif #undef EXTERN +#ifndef SHARED +/* dl-support.c defines these and initializes them early on. */ +extern const ElfW(Phdr) *_dl_phdr; +extern size_t _dl_phnum; +#endif + #ifdef IS_IN_rtld /* This is the initial value of GL(dl_error_catch_tsd). A non-TLS libpthread will change it. */ diff --git a/libc/sysdeps/generic/math-tests.h b/libc/sysdeps/generic/math-tests.h new file mode 100644 index 000000000..da8747a94 --- /dev/null +++ b/libc/sysdeps/generic/math-tests.h @@ -0,0 +1,42 @@ +/* Configuration for math tests. Generic version. + Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +/* Indicate whether to run tests involving sNaN values for the float, double, + and long double C data types, respectively. All are run unless + overridden. */ +#ifndef SNAN_TESTS_float +# define SNAN_TESTS_float 1 +#endif +#ifndef SNAN_TESTS_double +# define SNAN_TESTS_double 1 +#endif +#ifndef SNAN_TESTS_long_double +# define SNAN_TESTS_long_double 1 +#endif + +/* Return nonzero value if to run tests involving sNaN values for X. */ +#define SNAN_TESTS(x) \ + (sizeof (x) == sizeof (float) ? SNAN_TESTS_float \ + : sizeof (x) == sizeof (double) ? SNAN_TESTS_double \ + : SNAN_TESTS_long_double) + +/* Indicate whether to run tests involving type casts of sNaN values. These + are run unless overridden. */ +#ifndef SNAN_TESTS_TYPE_CAST +# define SNAN_TESTS_TYPE_CAST 1 +#endif diff --git a/libc/sysdeps/generic/stdint.h b/libc/sysdeps/generic/stdint.h index 15f750807..94c3203c8 100644 --- a/libc/sysdeps/generic/stdint.h +++ b/libc/sysdeps/generic/stdint.h @@ -141,10 +141,6 @@ typedef unsigned long long int uintmax_t; #endif -/* The ISO C99 standard specifies that in C++ implementations these - macros should only be defined if explicitly requested. */ -#if !defined __cplusplus || defined __STDC_LIMIT_MACROS - # if __WORDSIZE == 64 # define __INT64_C(c) c ## L # define __UINT64_C(c) c ## UL @@ -278,13 +274,6 @@ typedef unsigned long long int uintmax_t; # define WINT_MIN (0u) # define WINT_MAX (4294967295u) -#endif /* C++ && limit macros */ - - -/* The ISO C99 standard specifies that in C++ implementations these - should only be defined if explicitly requested. */ -#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS - /* Signed. */ # define INT8_C(c) c # define INT16_C(c) c @@ -314,6 +303,4 @@ typedef unsigned long long int uintmax_t; # define UINTMAX_C(c) c ## ULL # endif -#endif /* C++ && constant macros */ - #endif /* stdint.h */ diff --git a/libc/sysdeps/gnu/configure b/libc/sysdeps/gnu/configure index 26327ca3b..70aaa9019 100644 --- a/libc/sysdeps/gnu/configure +++ b/libc/sysdeps/gnu/configure @@ -9,12 +9,17 @@ case "$prefix" in /usr | /usr/) # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib. - # Allow earlier configure scripts to handle libc_cv_slibdir, libdir, - # and libc_cv_localedir. + # Allow earlier configure scripts to handle libc_cv_slibdir, + # libc_cv_rtlddir, libdir, and libc_cv_localedir. test -n "$libc_cv_slibdir" || \ case $machine in sparc/sparc64 | x86_64* | powerpc/powerpc64 | s390/s390-64) libc_cv_slibdir=/lib64 + case $machine in + s390/s390-64) + libc_cv_rtlddir=/lib + ;; + esac if test "$libdir" = '${exec_prefix}/lib'; then libdir='${exec_prefix}/lib64'; # Locale data can be shared between 32bit and 64bit libraries diff --git a/libc/sysdeps/gnu/configure.in b/libc/sysdeps/gnu/configure.in index b8fd74cff..ce251df0c 100644 --- a/libc/sysdeps/gnu/configure.in +++ b/libc/sysdeps/gnu/configure.in @@ -9,12 +9,17 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. case "$prefix" in /usr | /usr/) # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib. - # Allow earlier configure scripts to handle libc_cv_slibdir, libdir, - # and libc_cv_localedir. + # Allow earlier configure scripts to handle libc_cv_slibdir, + # libc_cv_rtlddir, libdir, and libc_cv_localedir. test -n "$libc_cv_slibdir" || \ case $machine in sparc/sparc64 | x86_64* | powerpc/powerpc64 | s390/s390-64) libc_cv_slibdir=/lib64 + case $machine in + s390/s390-64) + libc_cv_rtlddir=/lib + ;; + esac if test "$libdir" = '${exec_prefix}/lib'; then libdir='${exec_prefix}/lib64'; # Locale data can be shared between 32bit and 64bit libraries diff --git a/libc/sysdeps/i386/configure b/libc/sysdeps/i386/configure index 7b3683f60..53b6a619d 100755 --- a/libc/sysdeps/i386/configure +++ b/libc/sysdeps/i386/configure @@ -32,6 +32,55 @@ $as_echo "$ac_res" >&6; } # This file is generated from configure.in by Autoconf. DO NOT EDIT! # Local configure fragment for sysdeps/i386. +# We no longer support i386 since it lacks the atomic instructions +# required to implement NPTL threading. +if test "$config_machine" = i386; then + as_fn_error $? " +*** ERROR: Support for i386 is deprecated. +*** Please use host i786, i686, i585 or i486. +*** For example: /src/glibc/configure --host=i686-pc-linux-gnu ...\"" "$LINENO" 5 +fi + +# The GNU C Library can't be built for i386. There are several reasons for +# this restriction. The primary reason is that i386 lacks the atomic +# operations required to support the current NPTL implementation. While it is +# possible that such atomic operations could be emulated in the kernel to date +# no such work has been done to enable this. Even with NPTL disabled you still +# have no atomic.h implementation. Given the declining use of i386 we disable +# support for building with `-march=i386' or `-mcpu=i386.' We don't explicitly +# check for i386, instead we make sure the compiler has support for inlining +# the builtin __sync_val_compare_and_swap. If it does then we should have no +# problem building for i386. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler support of inlined builtin function __sync_val_compare_and_swap" >&5 +$as_echo_n "checking for compiler support of inlined builtin function __sync_val_compare_and_swap... " >&6; } +libc_compiler_builtin_inlined=no +cat > conftest.c <<EOF +int _start (void) { int a, b, c; __sync_val_compare_and_swap (&a, b, c); return 0; } +EOF +if ! { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS + -O0 -nostdlib -nostartfiles + -S conftest.c -o - | fgrep "__sync_val_compare_and_swap" + 1>&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then + libc_compiler_builtin_inlined=yes +fi +rm -f conftest* +if test $libc_compiler_builtin_inlined = yes; then + libc_cv_unsupported_i386=no +else + as_fn_error $? " +*** Building with -march=i386/-mcpu=i386 is not supported. +*** Please use host i786, i686, i586, or i486. +*** For example: /source/glibc/configure CFLAGS='-O2 -march=i686' ..." "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_compiler_builtin_inlined" >&5 +$as_echo "$libc_compiler_builtin_inlined" >&6; } + ac_fn_c_check_header_compile "$LINENO" "cpuid.h" "ac_cv_header_cpuid_h" "/* No default includes. */ " @@ -66,6 +115,8 @@ if test $libc_cv_cc_sse4 = yes; then $as_echo "#define HAVE_SSE4_SUPPORT 1" >>confdefs.h fi +config_vars="$config_vars +config-cflags-sse4 = $libc_cv_cc_sse4" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for assembler -mtune=i686 support" >&5 $as_echo_n "checking for assembler -mtune=i686 support... " >&6; } @@ -86,6 +137,8 @@ fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_as_i686" >&5 $as_echo "$libc_cv_as_i686" >&6; } +config_vars="$config_vars +config-asflags-i686 = $libc_cv_as_i686" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX support" >&5 $as_echo_n "checking for AVX support... " >&6; } @@ -110,6 +163,8 @@ if test $libc_cv_cc_avx = yes; then $as_echo "#define HAVE_AVX_SUPPORT 1" >>confdefs.h fi +config_vars="$config_vars +config-cflags-avx = $libc_cv_cc_avx" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX encoding of SSE instructions" >&5 $as_echo_n "checking for AVX encoding of SSE instructions... " >&6; } @@ -134,6 +189,8 @@ if test $libc_cv_cc_sse2avx = yes; then $as_echo "#define HAVE_SSE2AVX_SUPPORT 1" >>confdefs.h fi +config_vars="$config_vars +config-cflags-sse2avx = $libc_cv_cc_sse2avx" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FMA4 support" >&5 $as_echo_n "checking for FMA4 support... " >&6; } @@ -158,6 +215,8 @@ if test $libc_cv_cc_fma4 = yes; then $as_echo "#define HAVE_FMA4_SUPPORT 1" >>confdefs.h fi +config_vars="$config_vars +have-mfma4 = $libc_cv_cc_fma4" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -mno-vzeroupper support" >&5 $as_echo_n "checking for -mno-vzeroupper support... " >&6; } @@ -178,6 +237,8 @@ fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_novzeroupper" >&5 $as_echo "$libc_cv_cc_novzeroupper" >&6; } +config_vars="$config_vars +config-cflags-novzeroupper = $libc_cv_cc_novzeroupper" $as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h diff --git a/libc/sysdeps/i386/configure.in b/libc/sysdeps/i386/configure.in index 36cb3e46e..96ab7b0f5 100644 --- a/libc/sysdeps/i386/configure.in +++ b/libc/sysdeps/i386/configure.in @@ -1,6 +1,35 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. # Local configure fragment for sysdeps/i386. +# We no longer support i386 since it lacks the atomic instructions +# required to implement NPTL threading. +if test "$config_machine" = i386; then + AC_MSG_ERROR([ +*** ERROR: Support for i386 is deprecated. +*** Please use host i786, i686, i585 or i486. +*** For example: /src/glibc/configure --host=i686-pc-linux-gnu ..."]) +fi + +# The GNU C Library can't be built for i386. There are several reasons for +# this restriction. The primary reason is that i386 lacks the atomic +# operations required to support the current NPTL implementation. While it is +# possible that such atomic operations could be emulated in the kernel to date +# no such work has been done to enable this. Even with NPTL disabled you still +# have no atomic.h implementation. Given the declining use of i386 we disable +# support for building with `-march=i386' or `-mcpu=i386.' We don't explicitly +# check for i386, instead we make sure the compiler has support for inlining +# the builtin __sync_val_compare_and_swap. If it does then we should have no +# problem building for i386. +LIBC_COMPILER_BUILTIN_INLINED( + [__sync_val_compare_and_swap], + [int a, b, c; __sync_val_compare_and_swap (&a, b, c);], + [-O0], + [libc_cv_unsupported_i386=no], + [AC_MSG_ERROR([ +*** Building with -march=i386/-mcpu=i386 is not supported. +*** Please use host i786, i686, i586, or i486. +*** For example: /source/glibc/configure CFLAGS='-O2 -march=i686' ...])]) + AC_CHECK_HEADER([cpuid.h], , [AC_MSG_ERROR([gcc must provide the <cpuid.h> header])], [/* No default includes. */]) @@ -12,6 +41,7 @@ LIBC_TRY_CC_OPTION([-msse4], [libc_cv_cc_sse4=yes], [libc_cv_cc_sse4=no]) if test $libc_cv_cc_sse4 = yes; then AC_DEFINE(HAVE_SSE4_SUPPORT) fi +LIBC_CONFIG_VAR([config-cflags-sse4], [$libc_cv_cc_sse4]) dnl Check if -Wa,-mtune=i686 works. AC_CACHE_CHECK(for assembler -mtune=i686 support, libc_cv_as_i686, [dnl @@ -19,6 +49,7 @@ LIBC_TRY_CC_OPTION([-Wa,-mtune=i686], [libc_cv_as_i686=yes], [libc_cv_as_i686=no]) ]) +LIBC_CONFIG_VAR([config-asflags-i686], [$libc_cv_as_i686]) dnl Check if -mavx works. AC_CACHE_CHECK(for AVX support, libc_cv_cc_avx, [dnl @@ -27,6 +58,7 @@ LIBC_TRY_CC_OPTION([-mavx], [libc_cv_cc_avx=yes], [libc_cv_cc_avx=no]) if test $libc_cv_cc_avx = yes; then AC_DEFINE(HAVE_AVX_SUPPORT) fi +LIBC_CONFIG_VAR([config-cflags-avx], [$libc_cv_cc_avx]) dnl Check if -msse2avx works. AC_CACHE_CHECK(for AVX encoding of SSE instructions, libc_cv_cc_sse2avx, [dnl @@ -37,6 +69,7 @@ LIBC_TRY_CC_OPTION([-msse2avx], if test $libc_cv_cc_sse2avx = yes; then AC_DEFINE(HAVE_SSE2AVX_SUPPORT) fi +LIBC_CONFIG_VAR([config-cflags-sse2avx], [$libc_cv_cc_sse2avx]) dnl Check if -mfma4 works. AC_CACHE_CHECK(for FMA4 support, libc_cv_cc_fma4, [dnl @@ -45,6 +78,7 @@ LIBC_TRY_CC_OPTION([-mfma4], [libc_cv_cc_fma4=yes], [libc_cv_cc_fma4=no]) if test $libc_cv_cc_fma4 = yes; then AC_DEFINE(HAVE_FMA4_SUPPORT) fi +LIBC_CONFIG_VAR([have-mfma4], [$libc_cv_cc_fma4]) dnl Check if -mno-vzeroupper works. AC_CACHE_CHECK(for -mno-vzeroupper support, libc_cv_cc_novzeroupper, [dnl @@ -52,6 +86,7 @@ LIBC_TRY_CC_OPTION([-mno-vzeroupper], [libc_cv_cc_novzeroupper=yes], [libc_cv_cc_novzeroupper=no]) ]) +LIBC_CONFIG_VAR([config-cflags-novzeroupper], [$libc_cv_cc_novzeroupper]) dnl It is always possible to access static and hidden symbols in an dnl position independent way. diff --git a/libc/sysdeps/i386/fpu/libm-test-ulps b/libc/sysdeps/i386/fpu/libm-test-ulps index 6186c99af..e36d0c374 100644 --- a/libc/sysdeps/i386/fpu/libm-test-ulps +++ b/libc/sysdeps/i386/fpu/libm-test-ulps @@ -208,31 +208,19 @@ ldouble: 1 # cacos Test "Imaginary part of: cacos (+0 + 0.5 i) == pi/2 - 0.4812118250596034474977589134243684231352 i": -double: 2 float: 1 -idouble: 2 ifloat: 1 -ildouble: 1 -ldouble: 1 Test "Imaginary part of: cacos (+0 + 1.0 i) == pi/2 - 0.8813735870195430252326093249797923090282 i": -double: 2 +double: 1 float: 1 -idouble: 2 +idouble: 1 ifloat: 1 -ildouble: 2 -ldouble: 2 Test "Imaginary part of: cacos (+0 + 1.5 i) == pi/2 - 1.194763217287109304111930828519090523536 i": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "Imaginary part of: cacos (+0 - 0.5 i) == pi/2 + 0.4812118250596034474977589134243684231352 i": double: 1 -float: 1 idouble: 1 +Test "Imaginary part of: cacos (+0 - 0.5 i) == pi/2 + 0.4812118250596034474977589134243684231352 i": +float: 1 ifloat: 1 -ildouble: 1 -ldouble: 1 Test "Imaginary part of: cacos (+0 - 1.0 i) == pi/2 + 0.8813735870195430252326093249797923090282 i": double: 1 float: 1 @@ -242,58 +230,336 @@ Test "Imaginary part of: cacos (+0 - 1.5 i) == pi/2 + 1.194763217287109304111930 double: 1 idouble: 1 Test "Imaginary part of: cacos (-0 + 0.5 i) == pi/2 - 0.4812118250596034474977589134243684231352 i": -double: 2 float: 1 -idouble: 2 ifloat: 1 -ildouble: 1 -ldouble: 1 Test "Imaginary part of: cacos (-0 + 1.0 i) == pi/2 - 0.8813735870195430252326093249797923090282 i": -double: 2 +double: 1 float: 1 -idouble: 2 +idouble: 1 ifloat: 1 -ildouble: 2 -ldouble: 2 Test "Imaginary part of: cacos (-0 + 1.5 i) == pi/2 - 1.194763217287109304111930828519090523536 i": -double: 2 +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0 - 0.5 i) == pi/2 + 0.4812118250596034474977589134243684231352 i": float: 1 -idouble: 2 ifloat: 1 -Test "Imaginary part of: cacos (-0 - 0.5 i) == pi/2 + 0.4812118250596034474977589134243684231352 i": +Test "Imaginary part of: cacos (-0 - 1.0 i) == pi/2 + 0.8813735870195430252326093249797923090282 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Imaginary part of: cacos (-0 - 1.5 i) == pi/2 + 1.194763217287109304111930828519090523536 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.0 + 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430251942769895627079569917e-1 i": ildouble: 1 ldouble: 1 -Test "Imaginary part of: cacos (-0 - 1.0 i) == pi/2 + 0.8813735870195430252326093249797923090282 i": +Test "Imaginary part of: cacos (-0.0 + 0x1.000002p0 i) == 1.570796326794896619231321691639751442099 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 + 0x1p-23 i) == 1.570796326794896619231321691639751442099 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 - 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 - 0x1.000002p0 i) == 1.570796326794896619231321691639751442099 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 - 0x1p-23 i) == 1.570796326794896619231321691639751442099 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.25 + 1.0 i) == 1.747098759571863549650000258275841544745 - 8.924633639033482359562124741744951972772e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.25 + 1.0 i) == 1.747098759571863549650000258275841544745 - 8.924633639033482359562124741744951972772e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.25 - 1.0 i) == 1.747098759571863549650000258275841544745 + 8.924633639033482359562124741744951972772e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.25 - 1.0 i) == 1.747098759571863549650000258275841544745 + 8.924633639033482359562124741744951972772e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1.fp-1025 i) == 2.094395102393195492308428922186335256131 - 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1.fp-129 i) == 2.094395102393195492308428922186335256131 - 3.287317402534702257036015056278368274737e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1.fp-16385 i) == 2.094395102393195492308428922186335256131 - 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1p-23 i) == 2.094395102393190022547898764614298351924 - 1.376510308240943236356088341381173571841e-7 i": double: 1 float: 1 idouble: 1 ifloat: 1 -Test "Imaginary part of: cacos (-0 - 1.5 i) == pi/2 + 1.194763217287109304111930828519090523536 i": +Test "Imaginary part of: cacos (-0.5 + 0x1p-52 i) == 2.094395102393195492308428922186316279087 - 2.563950248511418570403591756798643804971e-16 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 1.0 i) == 1.920235389652109912858733517715121394831 - 9.261330313501824245501244453057873152694e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1.fp-1025 i) == 2.094395102393195492308428922186335256131 + 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1.fp-129 i) == 2.094395102393195492308428922186335256131 + 3.287317402534702257036015056278368274737e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1.fp-16385 i) == 2.094395102393195492308428922186335256131 + 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1p-23 i) == 2.094395102393190022547898764614298351924 + 1.376510308240943236356088341381173571841e-7 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1p-52 i) == 2.094395102393195492308428922186316279087 + 2.563950248511418570403591756798643804971e-16 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 1.0 i) == 1.920235389652109912858733517715121394831 + 9.261330313501824245501244453057873152694e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 + 0x1p-52 i) == 3.141592634635223399311902261000251614142 - 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 - 0x1p-52 i) == 3.141592634635223399311902261000251614142 + 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == 3.141592653260520984471283759942320330996 - 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 + 0x1p-63 i) == 3.141592653170952461345846619605307690007 - 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == 3.141592653260520984471283759942320330996 + 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 - 0x1p-63 i) == 3.141592653170952461345846619605307690007 + 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffp0 + 0x1p-23 i) == 3.141153467203602189751698864505105063797 - 2.714321200917194650737217746780928423385e-4 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffp0 - 0x1p-23 i) == 3.141153467203602189751698864505105063797 + 2.714321200917194650737217746780928423385e-4 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000000002p0 + 0x1p-63 i) == 3.141592653377875508152537040020250564229 - 5.116146586219826555037807251857670783420e-10 i": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacos (-0x1.0000000000000002p0 - 0x1p-63 i) == 3.141592653377875508152537040020250564229 + 5.116146586219826555037807251857670783420e-10 i": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 + 0.0 i) == 3.141592653589793238462643383279502884197 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 + 0x1.fp-1025 i) == 3.141592653589793238462643383279502884197 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 + 0x1p-52 i) == 3.141592643999491532482601997450598791535 - 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 - 0.0 i) == 3.141592653589793238462643383279502884197 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 - 0x1.fp-1025 i) == 3.141592653589793238462643383279502884197 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 - 0x1p-52 i) == 3.141592643999491532482601997450598791535 + 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-10 + 1.0 i) == 1.572134236154454360143880041170803681211 - 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-10 - 1.0 i) == 1.572134236154454360143880041170803681211 + 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-100 + 1.0 i) == 1.570796326794896619231321691640832196834 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-100 - 1.0 i) == 1.570796326794896619231321691640832196834 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-1000 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1000 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": double: 1 idouble: 1 Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.5 i) == 1.570796326794896619231321691639751442099 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.5 i) == 1.570796326794896619231321691639751442099 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 0.5 i) == 1.570796326794896619231321691639751442101 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 0x1.000002p0 i) == 1.570796326794896619231321691639751442101 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 0x1p-23 i) == 1.570796326794896619231321691639751442101 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 1.0 i) == 1.570796326794896619231321691639751442101 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Imaginary part of: cacos (-0x1.fp-129 + 1.5 i) == 1.570796326794896619231321691639751442100 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 0.5 i) == 1.570796326794896619231321691639751442101 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 0x1.000002p0 i) == 1.570796326794896619231321691639751442101 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 0x1p-23 i) == 1.570796326794896619231321691639751442101 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 1.0 i) == 1.570796326794896619231321691639751442101 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Imaginary part of: cacos (-0x1.fp-129 - 1.5 i) == 1.570796326794896619231321691639751442100 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 -Test "Imaginary part of: cacos (-1.5 + +0 i) == pi - 0.9624236501192068949955178268487368462704 i": +Test "Imaginary part of: cacos (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-30 + 1.0 i) == 1.570796328070826603447840231892468927106 - 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-30 - 1.0 i) == 1.570796328070826603447840231892468927106 + 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-105 + 0.5 i) == 1.570796326794896619231321691639773491431 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-105 - 0.5 i) == 1.570796326794896619231321691639773491431 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-112 + 0.5 i) == 1.570796326794896619231321691639751614359 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-112 - 0.5 i) == 1.570796326794896619231321691639751614359 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-23 + 0.5 i) == 1.570796433418926613232299739606181733819 - 4.812118250596059896127318386463676808798e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-23 + 0x0.ffffffp0 i) == 1.570796411088596153167306681647360823228 - 8.813735448726963984495965873956465777250e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-23 - 0.5 i) == 1.570796433418926613232299739606181733819 + 4.812118250596059896127318386463676808798e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-23 - 0x0.ffffffp0 i) == 1.570796411088596153167306681647360823228 + 8.813735448726963984495965873956465777250e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-52 + 0.5 i) == 1.570796326794896817834053951421591208280 - 4.812118250596034474977589134243772428682e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-52 - 0.5 i) == 1.570796326794896817834053951421591208280 + 4.812118250596034474977589134243772428682e-1 i": double: 1 float: 1 idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-63 + 0.5 i) == 1.570796326794896619328295682000973043547 - 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-63 + 0x0.ffffffffffffffffp0 i) == 1.570796326794896619307986362473920146173 - 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-63 - 0.5 i) == 1.570796326794896619328295682000973043547 + 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-63 - 0x0.ffffffffffffffffp0 i) == 1.570796326794896619307986362473920146173 + 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-1.0 + 0.5 i) == 2.466703808003786858297978415967328452322 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.0 + 0.5 i) == 2.466703808003786858297978415967328452322 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 + 0x1.fp-30 i) == 3.141550174918818561961484385371624132331 - 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-1.0 - 0.5 i) == 2.466703808003786858297978415967328452322 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.0 - 0.5 i) == 2.466703808003786858297978415967328452322 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 - 0x1.fp-30 i) == 3.141550174918818561961484385371624132331 + 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.5 + +0 i) == pi - 0.9624236501192068949955178268487368462704 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (-1.5 + 0x1.fp-1025 i) == 3.141592653589793238462643383279502884197 - 9.624236501192068949955178268487368462704e-1 i": ildouble: 1 ldouble: 1 @@ -315,49 +581,404 @@ ldouble: 1 Test "Imaginary part of: cacos (-1.5 - 0x1.fp-16385 i) == 3.141592653589793238462643383279502884197 + 9.624236501192068949955178268487368462704e-1 i": ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (0.0 + 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 + 0x1.000002p0 i) == 1.570796326794896619231321691639751442099 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 + 0x1p-23 i) == 1.570796326794896619231321691639751442099 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 - 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 - 0x1.000002p0 i) == 1.570796326794896619231321691639751442099 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 - 0x1p-23 i) == 1.570796326794896619231321691639751442099 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.25 + 1.0 i) == 1.394493894017929688812643125003661339452 - 8.924633639033482359562124741744951972772e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.25 - 1.0 i) == 1.394493894017929688812643125003661339452 + 8.924633639033482359562124741744951972772e-1 i": +ildouble: 1 +ldouble: 1 Test "Real part of: cacos (0.5 + +0 i) == 1.047197551196597746154214461093167628066 - 0 i": double: 1 idouble: 1 +Test "Real part of: cacos (0.5 + 0x1.fp-1025 i) == 1.047197551196597746154214461093167628066 - 6.222508863508420569166420770843207333493e-309 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1.fp-1025 i) == 1.047197551196597746154214461093167628066 - 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 - 3.287317402534702257036015056278368274737e-39 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 - 3.287317402534702257036015056278368274737e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1.fp-16385 i) == 1.047197551196597746154214461093167628066 - 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-105 i) == 1.047197551196597746154214461093167628066 - 2.846556599890768890940941645338546615370e-32 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-112 i) == 1.047197551196597746154214461093167628066 - 2.223872343664663196047610660420739543258e-34 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1p-23 i) == 1.047197551196603215914744618665204532273 - 1.376510308240943236356088341381173571841e-7 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacos (0.5 + 0x1p-52 i) == 1.047197551196597746154214461093186605110 - 2.563950248511418570403591756798643804971e-16 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1p-52 i) == 1.047197551196597746154214461093186605110 - 2.563950248511418570403591756798643804971e-16 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-63 i) == 1.047197551196597746154214461093167628070 - 1.251928832280966098829878787499365228659e-19 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 1.0 i) == 1.221357263937683325603909865564381489366 - 9.261330313501824245501244453057873152694e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 ildouble: 1 ldouble: 1 Test "Real part of: cacos (0.5 - 0 i) == 1.047197551196597746154214461093167628066 + +0 i": double: 1 idouble: 1 +Test "Real part of: cacos (0.5 - 0x1.fp-1025 i) == 1.047197551196597746154214461093167628066 + 6.222508863508420569166420770843207333493e-309 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1.fp-1025 i) == 1.047197551196597746154214461093167628066 + 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 - 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 + 3.287317402534702257036015056278368274737e-39 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 + 3.287317402534702257036015056278368274737e-39 i": ildouble: 1 ldouble: 1 -Test "Real part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i": +Test "Imaginary part of: cacos (0.5 - 0x1.fp-16385 i) == 1.047197551196597746154214461093167628066 + 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-105 i) == 1.047197551196597746154214461093167628066 + 2.846556599890768890940941645338546615370e-32 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-112 i) == 1.047197551196597746154214461093167628066 + 2.223872343664663196047610660420739543258e-34 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1p-23 i) == 1.047197551196603215914744618665204532273 + 1.376510308240943236356088341381173571841e-7 i": +double: 1 float: 1 +idouble: 1 ifloat: 1 -Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i": +Test "Real part of: cacos (0.5 - 0x1p-52 i) == 1.047197551196597746154214461093186605110 + 2.563950248511418570403591756798643804971e-16 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1p-52 i) == 1.047197551196597746154214461093186605110 + 2.563950248511418570403591756798643804971e-16 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-63 i) == 1.047197551196597746154214461093167628070 + 1.251928832280966098829878787499365228659e-19 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 1.0 i) == 1.221357263937683325603909865564381489366 + 9.261330313501824245501244453057873152694e-1 i": +double: 1 float: 1 +idouble: 1 ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.895456983915074112227925127005564372844e-8 - 1.171456840272878582596796205397918831268e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.895456983915074112227925127005564372844e-8 - 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.895456983915074112227925127005564372844e-8 + 1.171456840272878582596796205397918831268e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.895456983915074112227925127005564372844e-8 + 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == 3.292722539913596233371825532007990724506e-10 - 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffffffffffffp0 + 0x1p-63 i) == 4.188407771167967636741951941902992986043e-10 - 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 + 0x1p-63 i) == 4.188407771167967636741951941902992986043e-10 - 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == 3.292722539913596233371825532007990724506e-10 + 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffffffffffffp0 - 0x1p-63 i) == 4.188407771167967636741951941902992986043e-10 + 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 - 0x1p-63 i) == 4.188407771167967636741951941902992986043e-10 + 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffp0 + 0x1p-23 i) == 4.391863861910487109445187743978204002614e-4 - 2.714321200917194650737217746780928423385e-4 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffp0 - 0x1p-23 i) == 4.391863861910487109445187743978204002614e-4 + 2.714321200917194650737217746780928423385e-4 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (0x1.0000000000000002p0 + 0x1p-63 i) == 2.119177303101063432592523199680782317447e-10 - 5.116146586219826555037807251857670783420e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000000002p0 + 0x1p-63 i) == 2.119177303101063432592523199680782317447e-10 - 5.116146586219826555037807251857670783420e-10 i": ildouble: 2 ldouble: 2 +Test "Real part of: cacos (0x1.0000000000000002p0 - 0x1p-63 i) == 2.119177303101063432592523199680782317447e-10 + 5.116146586219826555037807251857670783420e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000000002p0 - 0x1p-63 i) == 2.119177303101063432592523199680782317447e-10 + 5.116146586219826555037807251857670783420e-10 i": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacos (0x1.0000000000001p0 + 0.0 i) == 0.0 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000001p0 + 0x1.fp-1025 i) == 2.557178503953494342609835913586108008322e-301 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.0000000000001p0 + 0x1p-52 i) == 9.590301705980041385828904092662391018164e-9 - 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000001p0 + 0x1p-52 i) == 9.590301705980041385828904092662391018164e-9 - 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000001p0 - 0.0 i) == 0.0 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000001p0 - 0x1.fp-1025 i) == 2.557178503953494342609835913586108008322e-301 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.0000000000001p0 - 0x1p-52 i) == 9.590301705980041385828904092662391018164e-9 + 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000001p0 - 0x1p-52 i) == 9.590301705980041385828904092662391018164e-9 + 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-10 + 1.0 i) == 1.569458417435338878318763342108699202986 - 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-10 - 1.0 i) == 1.569458417435338878318763342108699202986 + 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-100 + 1.0 i) == 1.570796326794896619231321691638670687364 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-100 - 1.0 i) == 1.570796326794896619231321691638670687364 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-1000 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1000 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 Test "Imaginary part of: cacos (0x1.fp-1025 + 1.5 i) == 1.570796326794896619231321691639751442099 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 Test "Imaginary part of: cacos (0x1.fp-1025 - 1.5 i) == 1.570796326794896619231321691639751442099 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 0.5 i) == 1.570796326794896619231321691639751442096 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 0x1.000002p0 i) == 1.570796326794896619231321691639751442097 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 0x1p-23 i) == 1.570796326794896619231321691639751442096 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 1.0 i) == 1.570796326794896619231321691639751442097 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Imaginary part of: cacos (0x1.fp-129 + 1.5 i) == 1.570796326794896619231321691639751442097 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 0.5 i) == 1.570796326794896619231321691639751442096 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 0x1.000002p0 i) == 1.570796326794896619231321691639751442097 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 0x1p-23 i) == 1.570796326794896619231321691639751442096 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 1.0 i) == 1.570796326794896619231321691639751442097 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Imaginary part of: cacos (0x1.fp-129 - 1.5 i) == 1.570796326794896619231321691639751442097 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-30 + 1.0 i) == 1.570796325518966635014803151387033957091 - 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-30 - 1.0 i) == 1.570796325518966635014803151387033957091 + 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (0x1.fp1023 + 0x1.fp1023 i) == 7.853981633974483096156608458198757210493e-1 - 7.107906849659093345062145442726115449315e2 i": double: 1 idouble: 1 Test "Imaginary part of: cacos (0x1.fp127 + 0x1.fp127 i) == 7.853981633974483096156608458198757210493e-1 - 8.973081118419833726837456344608533993585e1 i": double: 1 idouble: 1 -Test "Imaginary part of: cacos (1.5 + +0 i) == +0 - 0.9624236501192068949955178268487368462704 i": +Test "Imaginary part of: cacos (0x1p-105 + 0.5 i) == 1.570796326794896619231321691639729392766 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-105 - 0.5 i) == 1.570796326794896619231321691639729392766 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-112 + 0.5 i) == 1.570796326794896619231321691639751269838 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-112 - 0.5 i) == 1.570796326794896619231321691639751269838 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-23 + 0.5 i) == 1.570796220170866625230343643673321150378 - 4.812118250596059896127318386463676808798e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-23 + 0x0.ffffffp0 i) == 1.570796242501197085295336701632142060969 - 8.813735448726963984495965873956465777250e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-23 - 0.5 i) == 1.570796220170866625230343643673321150378 + 4.812118250596059896127318386463676808798e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-23 - 0x0.ffffffp0 i) == 1.570796242501197085295336701632142060969 + 8.813735448726963984495965873956465777250e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-52 + 0.5 i) == 1.570796326794896420628589431857911675917 - 4.812118250596034474977589134243772428682e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-52 - 0.5 i) == 1.570796326794896420628589431857911675917 + 4.812118250596034474977589134243772428682e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 + 0.5 i) == 1.570796326794896619134347701278529840650 - 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 + 0x0.ffffffffffffffffp0 i) == 1.570796326794896619154657020805582738025 - 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 - 0.5 i) == 1.570796326794896619134347701278529840650 + 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 - 0x0.ffffffffffffffffp0 i) == 1.570796326794896619154657020805582738025 + 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 + 0.5 i) == 6.748888455860063801646649673121744318756e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (1.0 + 0.5 i) == 6.748888455860063801646649673121744318756e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 + 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 - 4.350501469856803800217957402220976497152e-2 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 + 0x1.fp-30 i) == 4.247867097467650115899790787875186617316e-5 - 4.247867098745151888768727039216644758847e-5 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (1.0 + 0x1.fp-30 i) == 4.247867097467650115899790787875186617316e-5 - 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 - 0.5 i) == 6.748888455860063801646649673121744318756e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (1.0 - 0.5 i) == 6.748888455860063801646649673121744318756e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 - 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 + 4.350501469856803800217957402220976497152e-2 i": double: 1 float: 1 idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Real part of: cacos (1.0 - 0x1.fp-30 i) == 4.247867097467650115899790787875186617316e-5 + 4.247867098745151888768727039216644758847e-5 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (1.0 - 0x1.fp-30 i) == 4.247867097467650115899790787875186617316e-5 + 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.5 + +0 i) == +0 - 0.9624236501192068949955178268487368462704 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (1.5 + 0x1.fp-1025 i) == 4.819934639999230680322935210539402497827e-309 - 9.624236501192068949955178268487368462704e-1 i": ildouble: 1 ldouble: 1 @@ -382,144 +1003,814 @@ ldouble: 1 # cacosh Test "Real part of: cacosh (+0 + 0.5 i) == 0.4812118250596034474977589134243684231352 + pi/2 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (+0 + 1.0 i) == 0.8813735870195430252326093249797923090282 + pi/2 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Real part of: cacosh (+0 + 1.5 i) == 1.194763217287109304111930828519090523536 + pi/2 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (+0 - 0.5 i) == 0.4812118250596034474977589134243684231352 - pi/2 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (+0 - 1.0 i) == 0.8813735870195430252326093249797923090282 - pi/2 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (+0 - 1.5 i) == 1.194763217287109304111930828519090523536 - pi/2 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0 + 0.5 i) == 0.4812118250596034474977589134243684231352 + pi/2 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0 + 1.0 i) == 0.8813735870195430252326093249797923090282 + pi/2 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0 + 1.5 i) == 1.194763217287109304111930828519090523536 + pi/2 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0 - 0.5 i) == 0.4812118250596034474977589134243684231352 - pi/2 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0 - 1.0 i) == 0.8813735870195430252326093249797923090282 - pi/2 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0 - 1.5 i) == 1.194763217287109304111930828519090523536 - pi/2 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.0 + 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 + 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 -Test "Real part of: cacosh (+0 + 1.0 i) == 0.8813735870195430252326093249797923090282 + pi/2 i": +Test "Real part of: cacosh (-0.0 + 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 + 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 - 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 - 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 - 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.25 + 1.0 i) == 8.924633639033482359562124741744951972772e-1 + 1.747098759571863549650000258275841544745 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.25 + 1.0 i) == 8.924633639033482359562124741744951972772e-1 + 1.747098759571863549650000258275841544745 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.25 - 1.0 i) == 8.924633639033482359562124741744951972772e-1 - 1.747098759571863549650000258275841544745 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.25 - 1.0 i) == 8.924633639033482359562124741744951972772e-1 - 1.747098759571863549650000258275841544745 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1.fp-1025 i) == 6.222508863508420569166420770843207333493e-309 + 2.094395102393195492308428922186335256131 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 + 2.094395102393195492308428922186335256131 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1.fp-16385 i) == 9.402257155670418112159334875199821342890e-4933 + 2.094395102393195492308428922186335256131 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1p-23 i) == 1.376510308240943236356088341381173571841e-7 + 2.094395102393190022547898764614298351924 i": double: 1 float: 1 idouble: 1 ifloat: 1 -Test "Real part of: cacosh (+0 + 1.5 i) == 1.194763217287109304111930828519090523536 + pi/2 i": +Test "Real part of: cacosh (-0.5 + 0x1p-52 i) == 2.563950248511418570403591756798643804971e-16 + 2.094395102393195492308428922186316279087 i": double: 1 idouble: 1 -Test "Real part of: cacosh (+0 - 0.5 i) == 0.4812118250596034474977589134243684231352 - pi/2 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 1.0 i) == 9.261330313501824245501244453057873152694e-1 + 1.920235389652109912858733517715121394831 i": double: 1 float: 1 idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 -Test "Real part of: cacosh (+0 - 1.0 i) == 0.8813735870195430252326093249797923090282 - pi/2 i": +Test "Real part of: cacosh (-0.5 - 0x1.fp-1025 i) == 6.222508863508420569166420770843207333493e-309 - 2.094395102393195492308428922186335256131 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 - 2.094395102393195492308428922186335256131 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1.fp-16385 i) == 9.402257155670418112159334875199821342890e-4933 - 2.094395102393195492308428922186335256131 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1p-23 i) == 1.376510308240943236356088341381173571841e-7 - 2.094395102393190022547898764614298351924 i": double: 1 float: 1 idouble: 1 ifloat: 1 -Test "Real part of: cacosh (+0 - 1.5 i) == 1.194763217287109304111930828519090523536 - pi/2 i": +Test "Real part of: cacosh (-0.5 - 0x1p-52 i) == 2.563950248511418570403591756798643804971e-16 - 2.094395102393195492308428922186316279087 i": double: 1 idouble: 1 -Test "Real part of: cacosh (-0 + 0.5 i) == 0.4812118250596034474977589134243684231352 + pi/2 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 1.0 i) == 9.261330313501824245501244453057873152694e-1 - 1.920235389652109912858733517715121394831 i": double: 1 float: 1 idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 -Test "Real part of: cacosh (-0 + 1.0 i) == 0.8813735870195430252326093249797923090282 + pi/2 i": +Test "Real part of: cacosh (-0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 + 3.141592634635223399311902261000251614142 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 - 3.141592634635223399311902261000251614142 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == 2.472906068161537187835415298076415423459e-4923 + 3.141592653260520984471283759942320330996 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 + 0x1p-63 i) == 2.588578361325995866221775673638805081337e-10 + 3.141592653170952461345846619605307690007 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == 2.472906068161537187835415298076415423459e-4923 - 3.141592653260520984471283759942320330996 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 - 0x1p-63 i) == 2.588578361325995866221775673638805081337e-10 - 3.141592653170952461345846619605307690007 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x0.ffffffp0 + 0x1p-23 i) == 2.714321200917194650737217746780928423385e-4 + 3.141153467203602189751698864505105063797 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x0.ffffffp0 - 0x1p-23 i) == 2.714321200917194650737217746780928423385e-4 - 3.141153467203602189751698864505105063797 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.0000000000000002p0 + 0x1p-63 i) == 5.116146586219826555037807251857670783420e-10 + 3.141592653377875508152537040020250564229 i": +ildouble: 2 +ldouble: 2 +Test "Real part of: cacosh (-0x1.0000000000000002p0 - 0x1p-63 i) == 5.116146586219826555037807251857670783420e-10 - 3.141592653377875508152537040020250564229 i": +ildouble: 2 +ldouble: 2 +Test "Real part of: cacosh (-0x1.0000000000001p0 + 0.0 i) == 2.107342425544701550354780375182800088393e-8 + 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000001p0 + 0x1.fp-1025 i) == 2.107342425544701550354780375182800088393e-8 + 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000001p0 + 0x1p-52 i) == 2.315303644582684770975188768022139415020e-8 + 3.141592643999491532482601997450598791535 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000001p0 - 0.0 i) == 2.107342425544701550354780375182800088393e-8 - 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000001p0 - 0x1.fp-1025 i) == 2.107342425544701550354780375182800088393e-8 - 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000001p0 - 0x1p-52 i) == 2.315303644582684770975188768022139415020e-8 - 3.141592643999491532482601997450598791535 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-10 + 1.0 i) == 8.813742198809567991336704287826445879025e-1 + 1.572134236154454360143880041170803681211 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-10 - 1.0 i) == 8.813742198809567991336704287826445879025e-1 - 1.572134236154454360143880041170803681211 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-100 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691640832196834 i": double: 1 float: 1 idouble: 1 ifloat: 1 -Test "Real part of: cacosh (-0 + 1.5 i) == 1.194763217287109304111930828519090523536 + pi/2 i": +Test "Real part of: cacosh (-0x1.fp-100 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691640832196834 i": double: 1 +float: 1 idouble: 1 -Test "Real part of: cacosh (-0 - 0.5 i) == 0.4812118250596034474977589134243684231352 - pi/2 i": +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-1000 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1000 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 + 1.5 i) == 1.194763217287109304111930828519090523536 + 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691639751442099 i": double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 - 1.5 i) == 1.194763217287109304111930828519090523536 - 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 0.5 i) == 4.812118250596034474977589134243684231352e-1 + 1.570796326794896619231321691639751442101 i": float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 + 1.570796326794896619231321691639751442101 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 + 1.570796326794896619231321691639751442101 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691639751442101 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 1.5 i) == 1.194763217287109304111930828519090523536 + 1.570796326794896619231321691639751442100 i": +double: 1 idouble: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 0.5 i) == 4.812118250596034474977589134243684231352e-1 - 1.570796326794896619231321691639751442101 i": +float: 1 ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 - 1.570796326794896619231321691639751442101 i": ildouble: 1 ldouble: 1 -Test "Real part of: cacosh (-0 - 1.0 i) == 0.8813735870195430252326093249797923090282 - pi/2 i": +Test "Real part of: cacosh (-0x1.fp-129 - 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 - 1.570796326794896619231321691639751442101 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691639751442101 i": double: 1 float: 1 idouble: 1 ifloat: 1 -Test "Real part of: cacosh (-0 - 1.5 i) == 1.194763217287109304111930828519090523536 - pi/2 i": +Test "Real part of: cacosh (-0x1.fp-129 - 1.5 i) == 1.194763217287109304111930828519090523536 - 1.570796326794896619231321691639751442100 i": double: 1 idouble: 1 -Test "Imaginary part of: cacosh (-0.5 + +0 i) == +0 + 2.094395102393195492308428922186335256131 i": +Test "Real part of: cacosh (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-30 + 1.0 i) == 8.813735870195430258081932989769495326854e-1 + 1.570796328070826603447840231892468927106 i": double: 1 +float: 1 idouble: 1 -Test "Imaginary part of: cacosh (-0.5 - 0 i) == +0 - 2.094395102393195492308428922186335256131 i": +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-30 - 1.0 i) == 8.813735870195430258081932989769495326854e-1 - 1.570796328070826603447840231892468927106 i": double: 1 +float: 1 idouble: 1 -Test "Real part of: cacosh (-1.5 + +0 i) == 0.9624236501192068949955178268487368462704 + pi i": +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-105 + 0.5 i) == 4.812118250596034474977589134243684231352e-1 + 1.570796326794896619231321691639773491431 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-105 - 0.5 i) == 4.812118250596034474977589134243684231352e-1 - 1.570796326794896619231321691639773491431 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-112 + 0.5 i) == 4.812118250596034474977589134243684231352e-1 + 1.570796326794896619231321691639751614359 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-112 - 0.5 i) == 4.812118250596034474977589134243684231352e-1 - 1.570796326794896619231321691639751614359 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-23 + 0.5 i) == 4.812118250596059896127318386463676808798e-1 + 1.570796433418926613232299739606181733819 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Real part of: cacosh (-0x1p-23 + 0x0.ffffffp0 i) == 8.813735448726963984495965873956465777250e-1 + 1.570796411088596153167306681647360823228 i": +double: 1 +idouble: 1 ildouble: 1 ldouble: 1 -Test "Real part of: cacosh (-1.5 - 0 i) == 0.9624236501192068949955178268487368462704 - pi i": +Test "Real part of: cacosh (-0x1p-23 - 0.5 i) == 4.812118250596059896127318386463676808798e-1 - 1.570796433418926613232299739606181733819 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Real part of: cacosh (-0x1p-23 - 0x0.ffffffp0 i) == 8.813735448726963984495965873956465777250e-1 - 1.570796411088596153167306681647360823228 i": +double: 1 +idouble: 1 ildouble: 1 ldouble: 1 -Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": +Test "Real part of: cacosh (-0x1p-52 + 0.5 i) == 4.812118250596034474977589134243772428682e-1 + 1.570796326794896817834053951421591208280 i": double: 1 -float: 9 +float: 1 idouble: 1 -ifloat: 9 -ildouble: 6 -ldouble: 6 -Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-52 - 0.5 i) == 4.812118250596034474977589134243772428682e-1 - 1.570796326794896817834053951421591208280 i": double: 1 -float: 4 +float: 1 idouble: 1 -ifloat: 4 +ifloat: 1 ildouble: 1 ldouble: 1 -Test "Real part of: cacosh (0.75 + 1.25 i) == 1.13239363160530819522266333696834467 + 1.11752014915610270578240049553777969 i": +Test "Real part of: cacosh (-0x1p-63 + 0.5 i) == 4.812118250596034474977589134243684231373e-1 + 1.570796326794896619328295682000973043547 i": +float: 1 +ifloat: 1 ildouble: 1 ldouble: 1 -Test "Real part of: cacosh (1.5 + +0 i) == 0.9624236501192068949955178268487368462704 + +0 i": +Test "Real part of: cacosh (-0x1p-63 + 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569937e-1 + 1.570796326794896619307986362473920146173 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-63 - 0.5 i) == 4.812118250596034474977589134243684231373e-1 - 1.570796326794896619328295682000973043547 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-63 - 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569937e-1 - 1.570796326794896619307986362473920146173 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.0 + 0.5 i) == 7.328576759736452608886724437653071523305e-1 + 2.466703808003786858297978415967328452322 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-1.0 + 0.5 i) == 7.328576759736452608886724437653071523305e-1 + 2.466703808003786858297978415967328452322 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-1.0 + 0x1.fp-30 i) == 4.247867098745151888768727039216644758847e-5 + 3.141550174918818561961484385371624132331 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.0 - 0.5 i) == 7.328576759736452608886724437653071523305e-1 - 2.466703808003786858297978415967328452322 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-1.0 - 0.5 i) == 7.328576759736452608886724437653071523305e-1 - 2.466703808003786858297978415967328452322 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-1.0 - 0x1.fp-30 i) == 4.247867098745151888768727039216644758847e-5 - 3.141550174918818561961484385371624132331 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 + +0 i) == 0.9624236501192068949955178268487368462704 + pi i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 + 0x1.fp-1025 i) == 9.624236501192068949955178268487368462704e-1 + 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 + 0x1.fp-129 i) == 9.624236501192068949955178268487368462704e-1 + 3.141592653589793238462643383279502884195 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 + 0x1.fp-16385 i) == 9.624236501192068949955178268487368462704e-1 + 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 - 0 i) == 0.9624236501192068949955178268487368462704 - pi i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 - 0x1.fp-1025 i) == 9.624236501192068949955178268487368462704e-1 - 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 - 0x1.fp-129 i) == 9.624236501192068949955178268487368462704e-1 - 3.141592653589793238462643383279502884195 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 - 0x1.fp-16385 i) == 9.624236501192068949955178268487368462704e-1 - 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 + 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 + 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 + 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 - 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 - 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 - 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.25 + 1.0 i) == 8.924633639033482359562124741744951972772e-1 + 1.394493894017929688812643125003661339452 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.25 - 1.0 i) == 8.924633639033482359562124741744951972772e-1 - 1.394493894017929688812643125003661339452 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + +0 i) == +0 + 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1.fp-1025 i) == 6.222508863508420569166420770843207333493e-309 + 1.047197551196597746154214461093167628066 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1.fp-1025 i) == 6.222508863508420569166420770843207333493e-309 + 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 + 1.047197551196597746154214461093167628066 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 + 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1.fp-16385 i) == 9.402257155670418112159334875199821342890e-4933 + 1.047197551196597746154214461093167628066 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-105 i) == 2.846556599890768890940941645338546615370e-32 + 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-112 i) == 2.223872343664663196047610660420739543258e-34 + 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1p-23 i) == 1.376510308240943236356088341381173571841e-7 + 1.047197551196603215914744618665204532273 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Real part of: cacosh (0.5 + 0x1p-52 i) == 2.563950248511418570403591756798643804971e-16 + 1.047197551196597746154214461093186605110 i": +double: 1 +idouble: 1 ildouble: 1 ldouble: 1 -Test "Real part of: cacosh (1.5 - 0 i) == 0.9624236501192068949955178268487368462704 - 0 i": +Test "Imaginary part of: cacosh (0.5 + 0x1p-52 i) == 2.563950248511418570403591756798643804971e-16 + 1.047197551196597746154214461093186605110 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-63 i) == 1.251928832280966098829878787499365228659e-19 + 1.047197551196597746154214461093167628070 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 1.0 i) == 9.261330313501824245501244453057873152694e-1 + 1.221357263937683325603909865564381489366 i": double: 1 float: 1 idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 - -# casin -Test "Imaginary part of: casin (+0 + 0.5 i) == +0 + 0.4812118250596034474977589134243684231352 i": -double: 2 +Test "Imaginary part of: cacosh (0.5 - 0 i) == +0 - 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1.fp-1025 i) == 6.222508863508420569166420770843207333493e-309 - 1.047197551196597746154214461093167628066 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1.fp-1025 i) == 6.222508863508420569166420770843207333493e-309 - 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 - 1.047197551196597746154214461093167628066 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 - 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1.fp-16385 i) == 9.402257155670418112159334875199821342890e-4933 - 1.047197551196597746154214461093167628066 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-105 i) == 2.846556599890768890940941645338546615370e-32 - 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-112 i) == 2.223872343664663196047610660420739543258e-34 - 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1p-23 i) == 1.376510308240943236356088341381173571841e-7 - 1.047197551196603215914744618665204532273 i": +double: 1 float: 1 -idouble: 2 +idouble: 1 ifloat: 1 +Test "Real part of: cacosh (0.5 - 0x1p-52 i) == 2.563950248511418570403591756798643804971e-16 - 1.047197551196597746154214461093186605110 i": +double: 1 +idouble: 1 ildouble: 1 ldouble: 1 -Test "Imaginary part of: casin (+0 + 1.0 i) == +0 + 0.8813735870195430252326093249797923090282 i": -double: 2 +Test "Imaginary part of: cacosh (0.5 - 0x1p-52 i) == 2.563950248511418570403591756798643804971e-16 - 1.047197551196597746154214461093186605110 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-63 i) == 1.251928832280966098829878787499365228659e-19 - 1.047197551196597746154214461093167628070 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 1.0 i) == 9.261330313501824245501244453057873152694e-1 - 1.221357263937683325603909865564381489366 i": +double: 1 float: 1 -idouble: 2 +idouble: 1 ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.75 + 1.25 i) == 1.13239363160530819522266333696834467 + 1.11752014915610270578240049553777969 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 + 1.895456983915074112227925127005564372844e-8 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 + 1.895456983915074112227925127005564372844e-8 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 - 1.895456983915074112227925127005564372844e-8 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 - 1.895456983915074112227925127005564372844e-8 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == 2.472906068161537187835415298076415423459e-4923 + 3.292722539913596233371825532007990724506e-10 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffffffffffffp0 + 0x1p-63 i) == 2.588578361325995866221775673638805081337e-10 + 4.188407771167967636741951941902992986043e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffp0 + 0x1p-63 i) == 2.588578361325995866221775673638805081337e-10 + 4.188407771167967636741951941902992986043e-10 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == 2.472906068161537187835415298076415423459e-4923 - 3.292722539913596233371825532007990724506e-10 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffffffffffffp0 - 0x1p-63 i) == 2.588578361325995866221775673638805081337e-10 - 4.188407771167967636741951941902992986043e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffp0 - 0x1p-63 i) == 2.588578361325995866221775673638805081337e-10 - 4.188407771167967636741951941902992986043e-10 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffp0 + 0x1p-23 i) == 2.714321200917194650737217746780928423385e-4 + 4.391863861910487109445187743978204002614e-4 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x0.ffffffp0 - 0x1p-23 i) == 2.714321200917194650737217746780928423385e-4 - 4.391863861910487109445187743978204002614e-4 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.0000000000000002p0 + 0x1p-63 i) == 5.116146586219826555037807251857670783420e-10 + 2.119177303101063432592523199680782317447e-10 i": ildouble: 2 ldouble: 2 -Test "Imaginary part of: casin (+0 + 1.5 i) == +0 + 1.194763217287109304111930828519090523536 i": -double: 2 +Test "Imaginary part of: cacosh (0x1.0000000000000002p0 + 0x1p-63 i) == 5.116146586219826555037807251857670783420e-10 + 2.119177303101063432592523199680782317447e-10 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000000002p0 - 0x1p-63 i) == 5.116146586219826555037807251857670783420e-10 - 2.119177303101063432592523199680782317447e-10 i": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacosh (0x1.0000000000000002p0 - 0x1p-63 i) == 5.116146586219826555037807251857670783420e-10 - 2.119177303101063432592523199680782317447e-10 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 + 0.0 i) == 2.107342425544701550354780375182800088393e-8 + 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 + 0x1.fp-1025 i) == 2.107342425544701550354780375182800088393e-8 + 2.557178503953494342609835913586108008322e-301 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 + 0x1p-52 i) == 2.315303644582684770975188768022139415020e-8 + 9.590301705980041385828904092662391018164e-9 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.0000000000001p0 + 0x1p-52 i) == 2.315303644582684770975188768022139415020e-8 + 9.590301705980041385828904092662391018164e-9 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 - 0.0 i) == 2.107342425544701550354780375182800088393e-8 - 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 - 0x1.fp-1025 i) == 2.107342425544701550354780375182800088393e-8 - 2.557178503953494342609835913586108008322e-301 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 - 0x1p-52 i) == 2.315303644582684770975188768022139415020e-8 - 9.590301705980041385828904092662391018164e-9 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.0000000000001p0 - 0x1p-52 i) == 2.315303644582684770975188768022139415020e-8 - 9.590301705980041385828904092662391018164e-9 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-10 + 1.0 i) == 8.813742198809567991336704287826445879025e-1 + 1.569458417435338878318763342108699202986 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-10 - 1.0 i) == 8.813742198809567991336704287826445879025e-1 - 1.569458417435338878318763342108699202986 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-100 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691638670687364 i": +double: 1 float: 1 -idouble: 2 +idouble: 1 ifloat: 1 -Test "Imaginary part of: casin (+0 - 0.5 i) == +0 - 0.4812118250596034474977589134243684231352 i": +Test "Real part of: cacosh (0x1.fp-100 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691638670687364 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-1000 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1000 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 + 1.5 i) == 1.194763217287109304111930828519090523536 + 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 - 1.5 i) == 1.194763217287109304111930828519090523536 - 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-129 + 0.5 i) == 4.812118250596034474977589134243684231352e-1 + 1.570796326794896619231321691639751442096 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 + 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 + 1.570796326794896619231321691639751442097 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 + 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 + 1.570796326794896619231321691639751442096 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691639751442097 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 + 1.5 i) == 1.194763217287109304111930828519090523536 + 1.570796326794896619231321691639751442097 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-129 - 0.5 i) == 4.812118250596034474977589134243684231352e-1 - 1.570796326794896619231321691639751442096 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 - 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 - 1.570796326794896619231321691639751442097 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 - 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 - 1.570796326794896619231321691639751442096 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691639751442097 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 - 1.5 i) == 1.194763217287109304111930828519090523536 - 1.570796326794896619231321691639751442097 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-30 + 1.0 i) == 8.813735870195430258081932989769495326854e-1 + 1.570796325518966635014803151387033957091 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-30 - 1.0 i) == 8.813735870195430258081932989769495326854e-1 - 1.570796325518966635014803151387033957091 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp1023 + 0x1.fp1023 i) == 7.107906849659093345062145442726115449315e2 + 7.853981633974483096156608458198757210493e-1 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp127 + 0x1.fp127 i) == 8.973081118419833726837456344608533993585e1 + 7.853981633974483096156608458198757210493e-1 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1p-105 + 0.5 i) == 4.812118250596034474977589134243684231352e-1 + 1.570796326794896619231321691639729392766 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-105 - 0.5 i) == 4.812118250596034474977589134243684231352e-1 - 1.570796326794896619231321691639729392766 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-112 + 0.5 i) == 4.812118250596034474977589134243684231352e-1 + 1.570796326794896619231321691639751269838 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-112 - 0.5 i) == 4.812118250596034474977589134243684231352e-1 - 1.570796326794896619231321691639751269838 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-23 + 0.5 i) == 4.812118250596059896127318386463676808798e-1 + 1.570796220170866625230343643673321150378 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-23 + 0x0.ffffffp0 i) == 8.813735448726963984495965873956465777250e-1 + 1.570796242501197085295336701632142060969 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-23 - 0.5 i) == 4.812118250596059896127318386463676808798e-1 - 1.570796220170866625230343643673321150378 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-23 - 0x0.ffffffp0 i) == 8.813735448726963984495965873956465777250e-1 - 1.570796242501197085295336701632142060969 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-52 + 0.5 i) == 4.812118250596034474977589134243772428682e-1 + 1.570796326794896420628589431857911675917 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-52 - 0.5 i) == 4.812118250596034474977589134243772428682e-1 - 1.570796326794896420628589431857911675917 i": double: 1 float: 1 idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Real part of: cacosh (0x1p-63 + 0.5 i) == 4.812118250596034474977589134243684231373e-1 + 1.570796326794896619134347701278529840650 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-63 + 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569937e-1 + 1.570796326794896619154657020805582738025 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-63 - 0.5 i) == 4.812118250596034474977589134243684231373e-1 - 1.570796326794896619134347701278529840650 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-63 - 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569937e-1 - 1.570796326794896619154657020805582738025 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.0 + 0.5 i) == 7.328576759736452608886724437653071523305e-1 + 6.748888455860063801646649673121744318756e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 + 0.5 i) == 7.328576759736452608886724437653071523305e-1 + 6.748888455860063801646649673121744318756e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (1.0 + 0x1.fp-10 i) == 4.350501469856803800217957402220976497152e-2 + 4.349129763101882771258049954181971959031e-2 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.0 + 0x1.fp-30 i) == 4.247867098745151888768727039216644758847e-5 + 4.247867097467650115899790787875186617316e-5 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 + 0x1.fp-30 i) == 4.247867098745151888768727039216644758847e-5 + 4.247867097467650115899790787875186617316e-5 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (1.0 - 0.5 i) == 7.328576759736452608886724437653071523305e-1 - 6.748888455860063801646649673121744318756e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 - 0.5 i) == 7.328576759736452608886724437653071523305e-1 - 6.748888455860063801646649673121744318756e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (1.0 - 0x1.fp-10 i) == 4.350501469856803800217957402220976497152e-2 - 4.349129763101882771258049954181971959031e-2 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.0 - 0x1.fp-30 i) == 4.247867098745151888768727039216644758847e-5 - 4.247867097467650115899790787875186617316e-5 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 - 0x1.fp-30 i) == 4.247867098745151888768727039216644758847e-5 - 4.247867097467650115899790787875186617316e-5 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (1.5 + +0 i) == 0.9624236501192068949955178268487368462704 + +0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 + 0x1.fp-1025 i) == 9.624236501192068949955178268487368462704e-1 + 4.819934639999230680322935210539402497827e-309 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 + 0x1.fp-129 i) == 9.624236501192068949955178268487368462704e-1 + 2.546345110742945032959687790021055102355e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 + 0x1.fp-16385 i) == 9.624236501192068949955178268487368462704e-1 + 7.282957076134209141226696333885150260319e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 - 0 i) == 0.9624236501192068949955178268487368462704 - 0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 - 0x1.fp-1025 i) == 9.624236501192068949955178268487368462704e-1 - 4.819934639999230680322935210539402497827e-309 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 - 0x1.fp-129 i) == 9.624236501192068949955178268487368462704e-1 - 2.546345110742945032959687790021055102355e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 - 0x1.fp-16385 i) == 9.624236501192068949955178268487368462704e-1 - 7.282957076134209141226696333885150260319e-4933 i": +ildouble: 1 +ldouble: 1 + +# casin +Test "Imaginary part of: casin (+0 + 0.5 i) == +0 + 0.4812118250596034474977589134243684231352 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (+0 + 1.0 i) == +0 + 0.8813735870195430252326093249797923090282 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (+0 + 1.5 i) == +0 + 1.194763217287109304111930828519090523536 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (+0 - 0.5 i) == +0 - 0.4812118250596034474977589134243684231352 i": +float: 1 +ifloat: 1 Test "Imaginary part of: casin (+0 - 1.0 i) == +0 - 0.8813735870195430252326093249797923090282 i": double: 1 float: 1 @@ -529,56 +1820,394 @@ Test "Imaginary part of: casin (+0 - 1.5 i) == +0 - 1.19476321728710930411193082 double: 1 idouble: 1 Test "Imaginary part of: casin (-0 + 0.5 i) == -0 + 0.4812118250596034474977589134243684231352 i": -double: 2 float: 1 -idouble: 2 ifloat: 1 -ildouble: 1 -ldouble: 1 Test "Imaginary part of: casin (-0 + 1.0 i) == -0 + 0.8813735870195430252326093249797923090282 i": -double: 2 +double: 1 float: 1 -idouble: 2 +idouble: 1 ifloat: 1 -ildouble: 2 -ldouble: 2 Test "Imaginary part of: casin (-0 + 1.5 i) == -0 + 1.194763217287109304111930828519090523536 i": -double: 2 +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0 - 0.5 i) == -0 - 0.4812118250596034474977589134243684231352 i": float: 1 -idouble: 2 ifloat: 1 -Test "Imaginary part of: casin (-0 - 0.5 i) == -0 - 0.4812118250596034474977589134243684231352 i": +Test "Imaginary part of: casin (-0 - 1.0 i) == -0 - 0.8813735870195430252326093249797923090282 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Imaginary part of: casin (-0 - 1.5 i) == -0 - 1.194763217287109304111930828519090523536 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.0 + 0x0.ffffffffffffffffp0 i) == -0.0 + 8.813735870195430251942769895627079569917e-1 i": ildouble: 1 ldouble: 1 -Test "Imaginary part of: casin (-0 - 1.0 i) == -0 - 0.8813735870195430252326093249797923090282 i": +Test "Imaginary part of: casin (-0.0 + 0x1.000002p0 i) == -0.0 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 + 0x1p-23 i) == -0.0 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 - 0x0.ffffffffffffffffp0 i) == -0.0 - 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 - 0x1.000002p0 i) == -0.0 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 - 0x1p-23 i) == -0.0 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.25 + 1.0 i) == -1.763024327769669304186785666360901026468e-1 + 8.924633639033482359562124741744951972772e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.25 - 1.0 i) == -1.763024327769669304186785666360901026468e-1 - 8.924633639033482359562124741744951972772e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1.fp-1025 i) == -5.235987755982988730771072305465838140329e-1 + 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1.fp-129 i) == -5.235987755982988730771072305465838140329e-1 + 3.287317402534702257036015056278368274737e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1.fp-16385 i) == -5.235987755982988730771072305465838140329e-1 + 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 + 0x1p-23 i) == -5.235987755982934033165770729745469098254e-1 + 1.376510308240943236356088341381173571841e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1p-23 i) == -5.235987755982934033165770729745469098254e-1 + 1.376510308240943236356088341381173571841e-7 i": double: 1 float: 1 idouble: 1 ifloat: 1 -Test "Imaginary part of: casin (-0 - 1.5 i) == -0 - 1.194763217287109304111930828519090523536 i": +Test "Imaginary part of: casin (-0.5 + 0x1p-52 i) == -5.235987755982988730771072305465648369889e-1 + 2.563950248511418570403591756798643804971e-16 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 + 1.0 i) == -3.494390628572132936274118260753699527325e-1 + 9.261330313501824245501244453057873152694e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 1.0 i) == -3.494390628572132936274118260753699527325e-1 + 9.261330313501824245501244453057873152694e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1.fp-1025 i) == -5.235987755982988730771072305465838140329e-1 - 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1.fp-129 i) == -5.235987755982988730771072305465838140329e-1 - 3.287317402534702257036015056278368274737e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1.fp-16385 i) == -5.235987755982988730771072305465838140329e-1 - 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 - 0x1p-23 i) == -5.235987755982934033165770729745469098254e-1 - 1.376510308240943236356088341381173571841e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1p-23 i) == -5.235987755982934033165770729745469098254e-1 - 1.376510308240943236356088341381173571841e-7 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0.5 - 0x1p-52 i) == -5.235987755982988730771072305465648369889e-1 - 2.563950248511418570403591756798643804971e-16 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 - 1.0 i) == -3.494390628572132936274118260753699527325e-1 - 9.261330313501824245501244453057873152694e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 1.0 i) == -3.494390628572132936274118260753699527325e-1 - 9.261330313501824245501244453057873152694e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 + 0x1p-52 i) == -1.570796307840326780080580569360500172043 + 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 - 0x1p-52 i) == -1.570796307840326780080580569360500172043 - 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == -1.570796326465624365239962068302568888898 + 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 + 0x1p-63 i) == -1.570796326376055842114524927965556247908 + 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == -1.570796326465624365239962068302568888898 - 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 - 0x1p-63 i) == -1.570796326376055842114524927965556247908 - 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffp0 + 0x1p-23 i) == -1.570357140408705570520377172865353621698 + 2.714321200917194650737217746780928423385e-4 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffp0 - 0x1p-23 i) == -1.570357140408705570520377172865353621698 - 2.714321200917194650737217746780928423385e-4 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000000002p0 + 0x1p-63 i) == -1.570796326582978888921215348380499122131 + 5.116146586219826555037807251857670783420e-10 i": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (-0x1.0000000000000002p0 - 0x1p-63 i) == -1.570796326582978888921215348380499122131 - 5.116146586219826555037807251857670783420e-10 i": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (-0x1.0000000000001p0 + 0.0 i) == -1.570796326794896619231321691639751442099 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000001p0 + 0x1.fp-1025 i) == -1.570796326794896619231321691639751442099 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000001p0 + 0x1p-52 i) == -1.570796317204594913251280305810847349436 + 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000001p0 - 0.0 i) == -1.570796326794896619231321691639751442099 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000001p0 - 0x1.fp-1025 i) == -1.570796326794896619231321691639751442099 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000001p0 - 0x1p-52 i) == -1.570796317204594913251280305810847349436 - 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-10 + 1.0 i) == -1.337909359557740912558349531052239112857e-3 + 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-10 - 1.0 i) == -1.337909359557740912558349531052239112857e-3 - 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-100 + 1.0 i) == -1.080754735021050612990719608916167354321e-30 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-100 - 1.0 i) == -1.080754735021050612990719608916167354321e-30 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-1000 + 1.0 i) == -1.278589251976747242280879285935084814093e-301 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1000 - 1.0 i) == -1.278589251976747242280879285935084814093e-301 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 + 1.0 i) == -3.810492908885321743133304375216617626230e-309 + 8.813735870195430252326093249797923090282e-1 i": double: 1 idouble: 1 Test "Imaginary part of: casin (-0x1.fp-1025 + 1.5 i) == -2.989196569048182929051881765490354365918e-309 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 - 1.0 i) == -3.810492908885321743133304375216617626230e-309 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 Test "Imaginary part of: casin (-0x1.fp-1025 - 1.5 i) == -2.989196569048182929051881765490354365918e-309 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 0.5 i) == -2.546345110742945032959687790021055102355e-39 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: casin (-0x1.fp-129 + 0x1.000002p0 i) == -2.013062444707472738895109955455676357057e-39 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 0x1.000002p0 i) == -2.013062444707472738895109955455676357057e-39 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 0x1p-23 i) == -2.846900380897707329917933005874691056564e-39 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 1.0 i) == -2.013062564695348242280482517399205554874e-39 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Imaginary part of: casin (-0x1.fp-129 + 1.5 i) == -1.579176199917649005841160751101628985741e-39 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 0.5 i) == -2.546345110742945032959687790021055102355e-39 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: casin (-0x1.fp-129 - 0x1.000002p0 i) == -2.013062444707472738895109955455676357057e-39 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 0x1.000002p0 i) == -2.013062444707472738895109955455676357057e-39 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 0x1p-23 i) == -2.846900380897707329917933005874691056564e-39 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 1.0 i) == -2.013062564695348242280482517399205554874e-39 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Imaginary part of: casin (-0x1.fp-129 - 1.5 i) == -1.579176199917649005841160751101628985741e-39 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 -Test "Imaginary part of: casin (-1.5 + +0 i) == -pi/2 + 0.9624236501192068949955178268487368462704 i": +Test "Imaginary part of: casin (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == -5.757683115456107044287327268904964422212e-4933 + 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == -5.757683115456107044287327268904964422212e-4933 - 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-30 + 1.0 i) == -1.275929984216518540252717485007112529021e-9 + 8.813735870195430258081932989769495326854e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-30 + 1.0 i) == -1.275929984216518540252717485007112529021e-9 + 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-30 - 1.0 i) == -1.275929984216518540252717485007112529021e-9 - 8.813735870195430258081932989769495326854e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-30 - 1.0 i) == -1.275929984216518540252717485007112529021e-9 - 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-105 + 0.5 i) == -2.204933261082751447436996198490110245167e-32 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-105 - 0.5 i) == -2.204933261082751447436996198490110245167e-32 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-112 + 0.5 i) == -1.722604110220899568310153280070398629037e-34 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-112 - 0.5 i) == -1.722604110220899568310153280070398629037e-34 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: casin (-0x1p-23 + 0.5 i) == -1.066240299940009780479664302917201696886e-7 + 4.812118250596059896127318386463676808798e-1 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 + 0.5 i) == -1.066240299940009780479664302917201696886e-7 + 4.812118250596059896127318386463676808798e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 + 0x0.ffffffp0 i) == -8.429369953393598499000760938112968755257e-8 + 8.813735448726963984495965873956465777250e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-23 + 0x1.000002p0 i) == -8.429369199749229560964789467980644296420e-8 + 8.813736713132400470205730751186547909968e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (-0x1p-23 - 0.5 i) == -1.066240299940009780479664302917201696886e-7 - 4.812118250596059896127318386463676808798e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 - 0.5 i) == -1.066240299940009780479664302917201696886e-7 - 4.812118250596059896127318386463676808798e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 - 0x0.ffffffp0 i) == -8.429369953393598499000760938112968755257e-8 - 8.813735448726963984495965873956465777250e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-23 - 0x1.000002p0 i) == -8.429369199749229560964789467980644296420e-8 - 8.813736713132400470205730751186547909968e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-52 + 0.5 i) == -1.986027322597818397661816253158024383707e-16 + 4.812118250596034474977589134243772428682e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-52 + 0x1.0000000000001p0 i) == -1.570092458683774885078102529858632363236e-16 + 8.813735870195431822418551933572982483664e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1p-52 - 0.5 i) == -1.986027322597818397661816253158024383707e-16 - 4.812118250596034474977589134243772428682e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-52 - 0x1.0000000000001p0 i) == -1.570092458683774885078102529858632363236e-16 - 8.813735870195431822418551933572982483664e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1p-63 + 0.5 i) == -9.697399036122160144833087173623140436413e-20 + 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-63 + 0x0.ffffffffffffffffp0 i) == -7.666467083416870407402049869781566856442e-20 + 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-63 + 0x0.ffffffffffffffffp0 i) == -7.666467083416870407402049869781566856442e-20 + 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-63 + 0x1.0000000000000002p0 i) == -7.666467083416870406778649849746878368519e-20 + 8.813735870195430253092739958139610131001e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-63 - 0.5 i) == -9.697399036122160144833087173623140436413e-20 - 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-63 - 0x0.ffffffffffffffffp0 i) == -7.666467083416870407402049869781566856442e-20 - 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-63 - 0x0.ffffffffffffffffp0 i) == -7.666467083416870407402049869781566856442e-20 - 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-63 - 0x1.0000000000000002p0 i) == -7.666467083416870406778649849746878368519e-20 - 8.813735870195430253092739958139610131001e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-1.0 + 0.5 i) == -8.959074812088902390666567243275770102229e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 + 0.5 i) == -8.959074812088902390666567243275770102229e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 + 0x1.fp-30 i) == -1.570753848123921942730162693731872690232 + 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-1.0 - 0.5 i) == -8.959074812088902390666567243275770102229e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 - 0.5 i) == -8.959074812088902390666567243275770102229e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 - 0x1.fp-30 i) == -1.570753848123921942730162693731872690232 - 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.5 + +0 i) == -pi/2 + 0.9624236501192068949955178268487368462704 i": ildouble: 1 ldouble: 1 Test "Imaginary part of: casin (-1.5 + 0x1.fp-1025 i) == -1.570796326794896619231321691639751442099 + 9.624236501192068949955178268487368462704e-1 i": @@ -602,43 +2231,387 @@ ldouble: 1 Test "Imaginary part of: casin (-1.5 - 0x1.fp-16385 i) == -1.570796326794896619231321691639751442099 - 9.624236501192068949955178268487368462704e-1 i": ildouble: 1 ldouble: 1 -Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": +Test "Imaginary part of: casin (0.0 + 0x0.ffffffffffffffffp0 i) == 0.0 + 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 + 0x1.000002p0 i) == 0.0 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 + 0x1p-23 i) == 0.0 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 - 0x0.ffffffffffffffffp0 i) == 0.0 - 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 - 0x1.000002p0 i) == 0.0 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 - 0x1p-23 i) == 0.0 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.25 + 1.0 i) == 1.763024327769669304186785666360901026468e-1 + 8.924633639033482359562124741744951972772e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.25 - 1.0 i) == 1.763024327769669304186785666360901026468e-1 - 8.924633639033482359562124741744951972772e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1.fp-1025 i) == 5.235987755982988730771072305465838140329e-1 + 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1.fp-129 i) == 5.235987755982988730771072305465838140329e-1 + 3.287317402534702257036015056278368274737e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1.fp-16385 i) == 5.235987755982988730771072305465838140329e-1 + 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 + 0x1p-23 i) == 5.235987755982934033165770729745469098254e-1 + 1.376510308240943236356088341381173571841e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1p-23 i) == 5.235987755982934033165770729745469098254e-1 + 1.376510308240943236356088341381173571841e-7 i": double: 1 float: 1 idouble: 1 ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": +Test "Imaginary part of: casin (0.5 + 0x1p-52 i) == 5.235987755982988730771072305465648369889e-1 + 2.563950248511418570403591756798643804971e-16 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 + 1.0 i) == 3.494390628572132936274118260753699527325e-1 + 9.261330313501824245501244453057873152694e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 1.0 i) == 3.494390628572132936274118260753699527325e-1 + 9.261330313501824245501244453057873152694e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1.fp-1025 i) == 5.235987755982988730771072305465838140329e-1 - 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1.fp-129 i) == 5.235987755982988730771072305465838140329e-1 - 3.287317402534702257036015056278368274737e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1.fp-16385 i) == 5.235987755982988730771072305465838140329e-1 - 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 - 0x1p-23 i) == 5.235987755982934033165770729745469098254e-1 - 1.376510308240943236356088341381173571841e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1p-23 i) == 5.235987755982934033165770729745469098254e-1 - 1.376510308240943236356088341381173571841e-7 i": +double: 1 float: 1 +idouble: 1 ifloat: 1 +Test "Imaginary part of: casin (0.5 - 0x1p-52 i) == 5.235987755982988730771072305465648369889e-1 - 2.563950248511418570403591756798643804971e-16 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 - 1.0 i) == 3.494390628572132936274118260753699527325e-1 - 9.261330313501824245501244453057873152694e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 1.0 i) == 3.494390628572132936274118260753699527325e-1 - 9.261330313501824245501244453057873152694e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.570796307840326780080580569360500172043 + 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.570796307840326780080580569360500172043 - 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == 1.570796326465624365239962068302568888898 + 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 + 0x1p-63 i) == 1.570796326376055842114524927965556247908 + 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == 1.570796326465624365239962068302568888898 - 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 - 0x1p-63 i) == 1.570796326376055842114524927965556247908 - 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffp0 + 0x1p-23 i) == 1.570357140408705570520377172865353621698 + 2.714321200917194650737217746780928423385e-4 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x0.ffffffp0 - 0x1p-23 i) == 1.570357140408705570520377172865353621698 - 2.714321200917194650737217746780928423385e-4 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.0000000000000002p0 + 0x1p-63 i) == 1.570796326582978888921215348380499122131 + 5.116146586219826555037807251857670783420e-10 i": ildouble: 2 ldouble: 2 +Test "Imaginary part of: casin (0x1.0000000000000002p0 - 0x1p-63 i) == 1.570796326582978888921215348380499122131 - 5.116146586219826555037807251857670783420e-10 i": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (0x1.0000000000001p0 + 0.0 i) == 1.570796326794896619231321691639751442099 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000001p0 + 0x1.fp-1025 i) == 1.570796326794896619231321691639751442099 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000001p0 + 0x1p-52 i) == 1.570796317204594913251280305810847349436 + 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000001p0 - 0.0 i) == 1.570796326794896619231321691639751442099 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000001p0 - 0x1.fp-1025 i) == 1.570796326794896619231321691639751442099 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000001p0 - 0x1p-52 i) == 1.570796317204594913251280305810847349436 - 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-10 + 1.0 i) == 1.337909359557740912558349531052239112857e-3 + 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-10 - 1.0 i) == 1.337909359557740912558349531052239112857e-3 - 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-100 + 1.0 i) == 1.080754735021050612990719608916167354321e-30 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-100 - 1.0 i) == 1.080754735021050612990719608916167354321e-30 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-1000 + 1.0 i) == 1.278589251976747242280879285935084814093e-301 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-1000 - 1.0 i) == 1.278589251976747242280879285935084814093e-301 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 + 1.0 i) == 3.810492908885321743133304375216617626230e-309 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 Test "Imaginary part of: casin (0x1.fp-1025 + 1.5 i) == 2.989196569048182929051881765490354365918e-309 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 - 1.0 i) == 3.810492908885321743133304375216617626230e-309 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 Test "Imaginary part of: casin (0x1.fp-1025 - 1.5 i) == 2.989196569048182929051881765490354365918e-309 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 0.5 i) == 2.546345110742945032959687790021055102355e-39 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: casin (0x1.fp-129 + 0x1.000002p0 i) == 2.013062444707472738895109955455676357057e-39 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 0x1.000002p0 i) == 2.013062444707472738895109955455676357057e-39 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 0x1p-23 i) == 2.846900380897707329917933005874691056564e-39 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 1.0 i) == 2.013062564695348242280482517399205554874e-39 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Imaginary part of: casin (0x1.fp-129 + 1.5 i) == 1.579176199917649005841160751101628985741e-39 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 0.5 i) == 2.546345110742945032959687790021055102355e-39 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: casin (0x1.fp-129 - 0x1.000002p0 i) == 2.013062444707472738895109955455676357057e-39 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 0x1.000002p0 i) == 2.013062444707472738895109955455676357057e-39 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 0x1p-23 i) == 2.846900380897707329917933005874691056564e-39 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 1.0 i) == 2.013062564695348242280482517399205554874e-39 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Imaginary part of: casin (0x1.fp-129 - 1.5 i) == 1.579176199917649005841160751101628985741e-39 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == 5.757683115456107044287327268904964422212e-4933 + 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == 5.757683115456107044287327268904964422212e-4933 - 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-30 + 1.0 i) == 1.275929984216518540252717485007112529021e-9 + 8.813735870195430258081932989769495326854e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-30 + 1.0 i) == 1.275929984216518540252717485007112529021e-9 + 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-30 - 1.0 i) == 1.275929984216518540252717485007112529021e-9 - 8.813735870195430258081932989769495326854e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-30 - 1.0 i) == 1.275929984216518540252717485007112529021e-9 - 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (0x1.fp1023 + 0x1.fp1023 i) == 7.853981633974483096156608458198757210493e-1 + 7.107906849659093345062145442726115449315e2 i": double: 1 idouble: 1 Test "Imaginary part of: casin (0x1.fp127 + 0x1.fp127 i) == 7.853981633974483096156608458198757210493e-1 + 8.973081118419833726837456344608533993585e1 i": double: 1 idouble: 1 -Test "Imaginary part of: casin (1.5 + +0 i) == pi/2 + 0.9624236501192068949955178268487368462704 i": +Test "Imaginary part of: casin (0x1p-105 + 0.5 i) == 2.204933261082751447436996198490110245167e-32 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-105 - 0.5 i) == 2.204933261082751447436996198490110245167e-32 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-112 + 0.5 i) == 1.722604110220899568310153280070398629037e-34 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-112 - 0.5 i) == 1.722604110220899568310153280070398629037e-34 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: casin (0x1p-23 + 0.5 i) == 1.066240299940009780479664302917201696886e-7 + 4.812118250596059896127318386463676808798e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 + 0.5 i) == 1.066240299940009780479664302917201696886e-7 + 4.812118250596059896127318386463676808798e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 + 0x0.ffffffp0 i) == 8.429369953393598499000760938112968755257e-8 + 8.813735448726963984495965873956465777250e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-23 + 0x1.000002p0 i) == 8.429369199749229560964789467980644296420e-8 + 8.813736713132400470205730751186547909968e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (0x1p-23 - 0.5 i) == 1.066240299940009780479664302917201696886e-7 - 4.812118250596059896127318386463676808798e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 - 0.5 i) == 1.066240299940009780479664302917201696886e-7 - 4.812118250596059896127318386463676808798e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 - 0x0.ffffffp0 i) == 8.429369953393598499000760938112968755257e-8 - 8.813735448726963984495965873956465777250e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-23 - 0x1.000002p0 i) == 8.429369199749229560964789467980644296420e-8 - 8.813736713132400470205730751186547909968e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-52 + 0.5 i) == 1.986027322597818397661816253158024383707e-16 + 4.812118250596034474977589134243772428682e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-52 + 0x1.0000000000001p0 i) == 1.570092458683774885078102529858632363236e-16 + 8.813735870195431822418551933572982483664e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1p-52 - 0.5 i) == 1.986027322597818397661816253158024383707e-16 - 4.812118250596034474977589134243772428682e-1 i": double: 1 float: 1 idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Real part of: casin (0x1p-52 - 0x1.0000000000001p0 i) == 1.570092458683774885078102529858632363236e-16 - 8.813735870195431822418551933572982483664e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1p-63 + 0.5 i) == 9.697399036122160144833087173623140436413e-20 + 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-63 + 0x0.ffffffffffffffffp0 i) == 7.666467083416870407402049869781566856442e-20 + 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-63 + 0x0.ffffffffffffffffp0 i) == 7.666467083416870407402049869781566856442e-20 + 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-63 + 0x1.0000000000000002p0 i) == 7.666467083416870406778649849746878368519e-20 + 8.813735870195430253092739958139610131001e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-63 - 0.5 i) == 9.697399036122160144833087173623140436413e-20 - 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-63 - 0x0.ffffffffffffffffp0 i) == 7.666467083416870407402049869781566856442e-20 - 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-63 - 0x0.ffffffffffffffffp0 i) == 7.666467083416870407402049869781566856442e-20 - 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-63 - 0x1.0000000000000002p0 i) == 7.666467083416870406778649849746878368519e-20 - 8.813735870195430253092739958139610131001e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (1.0 + 0.5 i) == 8.959074812088902390666567243275770102229e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 + 0.5 i) == 8.959074812088902390666567243275770102229e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 + 0x1.fp-30 i) == 1.570753848123921942730162693731872690232 + 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (1.0 - 0.5 i) == 8.959074812088902390666567243275770102229e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 - 0.5 i) == 8.959074812088902390666567243275770102229e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 - 0x1.fp-30 i) == 1.570753848123921942730162693731872690232 - 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.5 + +0 i) == pi/2 + 0.9624236501192068949955178268487368462704 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (1.5 + 0x1.fp-1025 i) == 1.570796326794896619231321691639751442099 + 9.624236501192068949955178268487368462704e-1 i": ildouble: 1 ldouble: 1 @@ -669,70 +2642,402 @@ Test "Real part of: casinh (+0 - 1.5 i) == 0.96242365011920689499551782684873684 ildouble: 1 ldouble: 1 Test "Real part of: casinh (-0 + 1.5 i) == -0.9624236501192068949955178268487368462704 + pi/2 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0 - 1.5 i) == -0.9624236501192068949955178268487368462704 - pi/2 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.0 + 0x1.0000000000001p0 i) == -2.107342425544701550354780375182800088393e-8 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.0 - 0x1.0000000000001p0 i) == -2.107342425544701550354780375182800088393e-8 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 + +0 i) == -0.4812118250596034474977589134243684231352 + +0 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1.fp-129 i) == -4.812118250596034474977589134243684231352e-1 + 2.546345110742945032959687790021055102355e-39 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-105 i) == -4.812118250596034474977589134243684231352e-1 + 2.204933261082751447436996198490110245167e-32 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-112 i) == -4.812118250596034474977589134243684231352e-1 + 1.722604110220899568310153280070398629037e-34 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-23 i) == -4.812118250596059896127318386463676808798e-1 + 1.066240299940009780479664302917201696886e-7 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-0.5 + 0x1p-23 i) == -4.812118250596059896127318386463676808798e-1 + 1.066240299940009780479664302917201696886e-7 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-52 i) == -4.812118250596034474977589134243772428682e-1 + 1.986027322597818397661816253158024383707e-16 i": double: 1 float: 1 idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 -Test "Real part of: casinh (-0 - 1.5 i) == -0.9624236501192068949955178268487368462704 - pi/2 i": +Test "Real part of: casinh (-0.5 + 0x1p-63 i) == -4.812118250596034474977589134243684231373e-1 + 9.697399036122160144833087173623140436413e-20 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 + 1.0 i) == -7.328576759736452608886724437653071523305e-1 + 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.5 + 1.0 i) == -7.328576759736452608886724437653071523305e-1 + 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 - 0 i) == -0.4812118250596034474977589134243684231352 - 0 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1.fp-129 i) == -4.812118250596034474977589134243684231352e-1 - 2.546345110742945032959687790021055102355e-39 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-105 i) == -4.812118250596034474977589134243684231352e-1 - 2.204933261082751447436996198490110245167e-32 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-112 i) == -4.812118250596034474977589134243684231352e-1 - 1.722604110220899568310153280070398629037e-34 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-23 i) == -4.812118250596059896127318386463676808798e-1 - 1.066240299940009780479664302917201696886e-7 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-0.5 - 0x1p-23 i) == -4.812118250596059896127318386463676808798e-1 - 1.066240299940009780479664302917201696886e-7 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-52 i) == -4.812118250596034474977589134243772428682e-1 - 1.986027322597818397661816253158024383707e-16 i": double: 1 float: 1 idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 -Test "Real part of: casinh (-0.5 + +0 i) == -0.4812118250596034474977589134243684231352 + +0 i": -double: 2 +Test "Real part of: casinh (-0.5 - 0x1p-63 i) == -4.812118250596034474977589134243684231373e-1 - 9.697399036122160144833087173623140436413e-20 i": float: 1 -idouble: 2 ifloat: 1 ildouble: 1 ldouble: 1 -Test "Real part of: casinh (-0.5 - 0 i) == -0.4812118250596034474977589134243684231352 - 0 i": -double: 2 +Test "Real part of: casinh (-0.5 - 1.0 i) == -7.328576759736452608886724437653071523305e-1 - 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.5 - 1.0 i) == -7.328576759736452608886724437653071523305e-1 - 8.959074812088902390666567243275770102229e-1 i": float: 1 -idouble: 2 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 + 0.0 i) == -8.813735870195430251942769895627079569917e-1 + 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == -8.813735870195430251942769895627079569917e-1 + 5.757683115456107044287327268904964422212e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 + 0x1p-63 i) == -8.813735870195430251942769895627079569937e-1 + 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x0.ffffffffffffffffp0 + 0x1p-63 i) == -8.813735870195430251942769895627079569937e-1 + 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 - 0.0 i) == -8.813735870195430251942769895627079569917e-1 - 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == -8.813735870195430251942769895627079569917e-1 - 5.757683115456107044287327268904964422212e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 - 0x1p-63 i) == -8.813735870195430251942769895627079569937e-1 - 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x0.ffffffffffffffffp0 - 0x1p-63 i) == -8.813735870195430251942769895627079569937e-1 - 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffp0 + 0x1p-23 i) == -8.813735448726963984495965873956465777250e-1 + 8.429369953393598499000760938112968755257e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffp0 - 0x1p-23 i) == -8.813735448726963984495965873956465777250e-1 - 8.429369953393598499000760938112968755257e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.0000000000000002p0 + 0x1p-63 i) == -8.813735870195430253092739958139610131001e-1 + 7.666467083416870406778649849746878368519e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.0000000000000002p0 - 0x1p-63 i) == -8.813735870195430253092739958139610131001e-1 - 7.666467083416870406778649849746878368519e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.0000000000001p0 + 0x1p-52 i) == -8.813735870195431822418551933572982483664e-1 + 1.570092458683774885078102529858632363236e-16 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-0x1.0000000000001p0 - 0x1p-52 i) == -8.813735870195431822418551933572982483664e-1 - 1.570092458683774885078102529858632363236e-16 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1.000002p0 + 0.0 i) == -8.813736713132375348727889167749389235161e-1 + 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.000002p0 + 0x1.fp-129 i) == -8.813736713132375348727889167749389235161e-1 + 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 + 0x1.fp-129 i) == -8.813736713132375348727889167749389235161e-1 + 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 + 0x1p-23 i) == -8.813736713132400470205730751186547909968e-1 + 8.429369199749229560964789467980644296420e-8 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1.000002p0 - 0.0 i) == -8.813736713132375348727889167749389235161e-1 - 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.000002p0 - 0x1.fp-129 i) == -8.813736713132375348727889167749389235161e-1 - 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 - 0x1.fp-129 i) == -8.813736713132375348727889167749389235161e-1 - 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 - 0x1p-23 i) == -8.813736713132400470205730751186547909968e-1 - 8.429369199749229560964789467980644296420e-8 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1.fp-1025 + 0.5 i) == -6.222508863508420569166420770843207333493e-309 + 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-1025 + 0x1.0000000000001p0 i) == -2.107342425544701550354780375182800088393e-8 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-0x1.fp-1025 + 1.5 i) == -9.624236501192068949955178268487368462704e-1 + 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (-0x1.fp-1025 - 0.5 i) == -6.222508863508420569166420770843207333493e-309 - 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-1025 - 0x1.0000000000001p0 i) == -2.107342425544701550354780375182800088393e-8 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-0x1.fp-1025 - 1.5 i) == -9.624236501192068949955178268487368462704e-1 - 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (-0x1.fp-129 + 0.5 i) == -3.287317402534702257036015056278368274737e-39 + 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-0x1.fp-129 + 1.5 i) == -9.624236501192068949955178268487368462704e-1 + 1.570796326794896619231321691639751442096 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (-0x1.fp-129 - 0.5 i) == -3.287317402534702257036015056278368274737e-39 - 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-0x1.fp-129 - 1.5 i) == -9.624236501192068949955178268487368462704e-1 - 1.570796326794896619231321691639751442096 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 + 0.5 i) == -9.402257155670418112159334875199821342890e-4933 + 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == -2.472906068161537187835415298076415423459e-4923 + 1.570796326465624365239962068302568888898 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-0x1.fp-16385 + 1.5 i) == -9.624236501192068949955178268487368462704e-1 + 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 - 0.5 i) == -9.402257155670418112159334875199821342890e-4933 - 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == -2.472906068161537187835415298076415423459e-4923 - 1.570796326465624365239962068302568888898 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-0x1.fp-16385 - 1.5 i) == -9.624236501192068949955178268487368462704e-1 - 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 -Test "Real part of: casinh (-1.0 + +0 i) == -0.8813735870195430252326093249797923090282 + +0 i": -double: 2 +Test "Real part of: casinh (-0x1.fp-30 + 1.0 i) == -4.247867098745151888768727039216644758847e-5 + 1.570753848123921942730162693731872690232 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-30 - 1.0 i) == -4.247867098745151888768727039216644758847e-5 - 1.570753848123921942730162693731872690232 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 + 0.0 i) == -1.192092895507809676556842485683592032154e-7 + 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 + 0.5 i) == -1.376510308240943236356088341381173571841e-7 + 5.235987755982934033165770729745469098254e-1 i": +double: 1 float: 1 -idouble: 2 +idouble: 1 ifloat: 1 +Test "Imaginary part of: casinh (-0x1p-23 + 0.5 i) == -1.376510308240943236356088341381173571841e-7 + 5.235987755982934033165770729745469098254e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 + 0x0.ffffffp0 i) == -2.714321200917194650737217746780928423385e-4 + 1.570357140408705570520377172865353621698 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-23 + 0x1.fp-129 i) == -1.192092895507809676556842485683592032154e-7 + 2.846900380897707329917933005874691056564e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 - 0.0 i) == -1.192092895507809676556842485683592032154e-7 - 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 - 0.5 i) == -1.376510308240943236356088341381173571841e-7 - 5.235987755982934033165770729745469098254e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-0x1p-23 - 0.5 i) == -1.376510308240943236356088341381173571841e-7 - 5.235987755982934033165770729745469098254e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 - 0x0.ffffffp0 i) == -2.714321200917194650737217746780928423385e-4 - 1.570357140408705570520377172865353621698 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-23 - 0x1.fp-129 i) == -1.192092895507809676556842485683592032154e-7 - 2.846900380897707329917933005874691056564e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-52 + 0.5 i) == -2.563950248511418570403591756798643804971e-16 + 5.235987755982988730771072305465648369889e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-52 + 0x0.fffffffffffff8p0 i) == -1.171456840272878582596796205397918831268e-8 + 1.570796307840326780080580569360500172043 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-52 + 0x1.0000000000001p0 i) == -2.315303644582684770975188768022139415020e-8 + 1.570796317204594913251280305810847349436 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-52 - 0.5 i) == -2.563950248511418570403591756798643804971e-16 - 5.235987755982988730771072305465648369889e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-52 - 0x0.fffffffffffff8p0 i) == -1.171456840272878582596796205397918831268e-8 - 1.570796307840326780080580569360500172043 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-52 - 0x1.0000000000001p0 i) == -2.315303644582684770975188768022139415020e-8 - 1.570796317204594913251280305810847349436 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-63 + 0x0.ffffffffffffffffp0 i) == -2.588578361325995866221775673638805081337e-10 + 1.570796326376055842114524927965556247908 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-63 + 0x1.0000000000000002p0 i) == -5.116146586219826555037807251857670783420e-10 + 1.570796326582978888921215348380499122131 i": +ildouble: 2 +ldouble: 2 +Test "Real part of: casinh (-0x1p-63 - 0x0.ffffffffffffffffp0 i) == -2.588578361325995866221775673638805081337e-10 - 1.570796326376055842114524927965556247908 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-63 - 0x1.0000000000000002p0 i) == -5.116146586219826555037807251857670783420e-10 - 1.570796326582978888921215348380499122131 i": ildouble: 2 ldouble: 2 +Test "Real part of: casinh (-1.0 + +0 i) == -0.8813735870195430252326093249797923090282 + +0 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 + 0.25 i) == -8.924633639033482359562124741744951972772e-1 + 1.763024327769669304186785666360901026468e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0.5 i) == -9.261330313501824245501244453057873152694e-1 + 3.494390628572132936274118260753699527325e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0.5 i) == -9.261330313501824245501244453057873152694e-1 + 3.494390628572132936274118260753699527325e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-10 i) == -8.813742198809567991336704287826445879025e-1 + 1.337909359557740912558349531052239112857e-3 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-100 i) == -8.813735870195430252326093249797923090282e-1 + 1.080754735021050612990719608916167354321e-30 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-1000 i) == -8.813735870195430252326093249797923090282e-1 + 1.278589251976747242280879285935084814093e-301 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-1025 i) == -8.813735870195430252326093249797923090282e-1 + 3.810492908885321743133304375216617626230e-309 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-129 i) == -8.813735870195430252326093249797923090282e-1 + 2.013062564695348242280482517399205554874e-39 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-30 i) == -8.813735870195430258081932989769495326854e-1 + 1.275929984216518540252717485007112529021e-9 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-30 i) == -8.813735870195430258081932989769495326854e-1 + 1.275929984216518540252717485007112529021e-9 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-1.0 - 0 i) == -0.8813735870195430252326093249797923090282 - 0 i": -double: 2 +double: 1 float: 1 -idouble: 2 +idouble: 1 ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Real part of: casinh (-1.5 + +0 i) == -1.194763217287109304111930828519090523536 + +0 i": -double: 2 +Test "Real part of: casinh (-1.0 - 0.25 i) == -8.924633639033482359562124741744951972772e-1 - 1.763024327769669304186785666360901026468e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0.5 i) == -9.261330313501824245501244453057873152694e-1 - 3.494390628572132936274118260753699527325e-1 i": +double: 1 float: 1 -idouble: 2 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0.5 i) == -9.261330313501824245501244453057873152694e-1 - 3.494390628572132936274118260753699527325e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-10 i) == -8.813742198809567991336704287826445879025e-1 - 1.337909359557740912558349531052239112857e-3 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-100 i) == -8.813735870195430252326093249797923090282e-1 - 1.080754735021050612990719608916167354321e-30 i": +double: 1 +float: 1 +idouble: 1 ifloat: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-1000 i) == -8.813735870195430252326093249797923090282e-1 - 1.278589251976747242280879285935084814093e-301 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-1025 i) == -8.813735870195430252326093249797923090282e-1 - 3.810492908885321743133304375216617626230e-309 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-129 i) == -8.813735870195430252326093249797923090282e-1 - 2.013062564695348242280482517399205554874e-39 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-30 i) == -8.813735870195430258081932989769495326854e-1 - 1.275929984216518540252717485007112529021e-9 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-30 i) == -8.813735870195430258081932989769495326854e-1 - 1.275929984216518540252717485007112529021e-9 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.5 + +0 i) == -1.194763217287109304111930828519090523536 + +0 i": +double: 1 +idouble: 1 Test "Real part of: casinh (-1.5 + 0x1.fp-1025 i) == -1.194763217287109304111930828519090523536 + 2.989196569048182929051881765490354365918e-309 i": double: 1 idouble: 1 @@ -740,10 +3045,8 @@ Test "Real part of: casinh (-1.5 + 0x1.fp-129 i) == -1.1947632172871093041119308 double: 1 idouble: 1 Test "Real part of: casinh (-1.5 - 0 i) == -1.194763217287109304111930828519090523536 - 0 i": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 +double: 1 +idouble: 1 Test "Real part of: casinh (-1.5 - 0x1.fp-1025 i) == -1.194763217287109304111930828519090523536 - 2.989196569048182929051881765490354365918e-309 i": double: 1 idouble: 1 @@ -751,31 +3054,100 @@ Test "Real part of: casinh (-1.5 - 0x1.fp-129 i) == -1.1947632172871093041119308 double: 1 idouble: 1 Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 5 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.0 + 0x1.0000000000001p0 i) == 2.107342425544701550354780375182800088393e-8 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.0 - 0x1.0000000000001p0 i) == 2.107342425544701550354780375182800088393e-8 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 + +0 i) == 0.4812118250596034474977589134243684231352 + +0 i": float: 1 -idouble: 5 ifloat: 1 -ildouble: 5 -ldouble: 5 -Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 -ildouble: 5 -ldouble: 5 -Test "Real part of: casinh (0.5 + +0 i) == 0.4812118250596034474977589134243684231352 + +0 i": +Test "Real part of: casinh (0.5 + 0x1.fp-129 i) == 4.812118250596034474977589134243684231352e-1 + 2.546345110742945032959687790021055102355e-39 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-105 i) == 4.812118250596034474977589134243684231352e-1 + 2.204933261082751447436996198490110245167e-32 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-112 i) == 4.812118250596034474977589134243684231352e-1 + 1.722604110220899568310153280070398629037e-34 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-23 i) == 4.812118250596059896127318386463676808798e-1 + 1.066240299940009780479664302917201696886e-7 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (0.5 + 0x1p-23 i) == 4.812118250596059896127318386463676808798e-1 + 1.066240299940009780479664302917201696886e-7 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-52 i) == 4.812118250596034474977589134243772428682e-1 + 1.986027322597818397661816253158024383707e-16 i": double: 1 float: 1 idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0.5 + 0x1p-63 i) == 4.812118250596034474977589134243684231373e-1 + 9.697399036122160144833087173623140436413e-20 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 + 1.0 i) == 7.328576759736452608886724437653071523305e-1 + 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.5 + 1.0 i) == 7.328576759736452608886724437653071523305e-1 + 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0.5 - 0 i) == 0.4812118250596034474977589134243684231352 - 0 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1.fp-129 i) == 4.812118250596034474977589134243684231352e-1 - 2.546345110742945032959687790021055102355e-39 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-105 i) == 4.812118250596034474977589134243684231352e-1 - 2.204933261082751447436996198490110245167e-32 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-112 i) == 4.812118250596034474977589134243684231352e-1 - 1.722604110220899568310153280070398629037e-34 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-23 i) == 4.812118250596059896127318386463676808798e-1 - 1.066240299940009780479664302917201696886e-7 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Imaginary part of: casinh (0.5 - 0x1p-23 i) == 4.812118250596059896127318386463676808798e-1 - 1.066240299940009780479664302917201696886e-7 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-52 i) == 4.812118250596034474977589134243772428682e-1 - 1.986027322597818397661816253158024383707e-16 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 - 0x1p-63 i) == 4.812118250596034474977589134243684231373e-1 - 9.697399036122160144833087173623140436413e-20 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 - 1.0 i) == 7.328576759736452608886724437653071523305e-1 - 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.5 - 1.0 i) == 7.328576759736452608886724437653071523305e-1 - 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 ildouble: 1 ldouble: 1 Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i": @@ -788,40 +3160,306 @@ idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 + 0.0 i) == 8.813735870195430251942769895627079569917e-1 + 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == 8.813735870195430251942769895627079569917e-1 + 5.757683115456107044287327268904964422212e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 + 0x1p-63 i) == 8.813735870195430251942769895627079569937e-1 + 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x0.ffffffffffffffffp0 + 0x1p-63 i) == 8.813735870195430251942769895627079569937e-1 + 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 - 0.0 i) == 8.813735870195430251942769895627079569917e-1 - 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == 8.813735870195430251942769895627079569917e-1 - 5.757683115456107044287327268904964422212e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 - 0x1p-63 i) == 8.813735870195430251942769895627079569937e-1 - 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x0.ffffffffffffffffp0 - 0x1p-63 i) == 8.813735870195430251942769895627079569937e-1 - 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffp0 + 0x1p-23 i) == 8.813735448726963984495965873956465777250e-1 + 8.429369953393598499000760938112968755257e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffp0 - 0x1p-23 i) == 8.813735448726963984495965873956465777250e-1 - 8.429369953393598499000760938112968755257e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.0000000000000002p0 + 0x1p-63 i) == 8.813735870195430253092739958139610131001e-1 + 7.666467083416870406778649849746878368519e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.0000000000000002p0 - 0x1p-63 i) == 8.813735870195430253092739958139610131001e-1 - 7.666467083416870406778649849746878368519e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.0000000000001p0 + 0x1p-52 i) == 8.813735870195431822418551933572982483664e-1 + 1.570092458683774885078102529858632363236e-16 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (0x1.0000000000001p0 - 0x1p-52 i) == 8.813735870195431822418551933572982483664e-1 - 1.570092458683774885078102529858632363236e-16 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1.000002p0 + 0.0 i) == 8.813736713132375348727889167749389235161e-1 + 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.000002p0 + 0x1.fp-129 i) == 8.813736713132375348727889167749389235161e-1 + 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.000002p0 + 0x1.fp-129 i) == 8.813736713132375348727889167749389235161e-1 + 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.000002p0 + 0x1p-23 i) == 8.813736713132400470205730751186547909968e-1 + 8.429369199749229560964789467980644296420e-8 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0x1.000002p0 - 0.0 i) == 8.813736713132375348727889167749389235161e-1 - 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.000002p0 - 0x1.fp-129 i) == 8.813736713132375348727889167749389235161e-1 - 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.000002p0 - 0x1.fp-129 i) == 8.813736713132375348727889167749389235161e-1 - 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.000002p0 - 0x1p-23 i) == 8.813736713132400470205730751186547909968e-1 - 8.429369199749229560964789467980644296420e-8 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0x1.fp-1025 + 0.5 i) == 6.222508863508420569166420770843207333493e-309 + 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-1025 + 0x1.0000000000001p0 i) == 2.107342425544701550354780375182800088393e-8 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0x1.fp-1025 + 1.5 i) == 9.624236501192068949955178268487368462704e-1 + 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0x1.fp-1025 - 0.5 i) == 6.222508863508420569166420770843207333493e-309 - 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-1025 - 0x1.0000000000001p0 i) == 2.107342425544701550354780375182800088393e-8 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0x1.fp-1025 - 1.5 i) == 9.624236501192068949955178268487368462704e-1 - 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0x1.fp-129 + 0.5 i) == 3.287317402534702257036015056278368274737e-39 + 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0x1.fp-129 + 1.5 i) == 9.624236501192068949955178268487368462704e-1 + 1.570796326794896619231321691639751442096 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0x1.fp-129 - 0.5 i) == 3.287317402534702257036015056278368274737e-39 - 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0x1.fp-129 - 1.5 i) == 9.624236501192068949955178268487368462704e-1 - 1.570796326794896619231321691639751442096 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 + 0.5 i) == 9.402257155670418112159334875199821342890e-4933 + 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == 2.472906068161537187835415298076415423459e-4923 + 1.570796326465624365239962068302568888898 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0x1.fp-16385 + 1.5 i) == 9.624236501192068949955178268487368462704e-1 + 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 - 0.5 i) == 9.402257155670418112159334875199821342890e-4933 - 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == 2.472906068161537187835415298076415423459e-4923 - 1.570796326465624365239962068302568888898 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0x1.fp-16385 - 1.5 i) == 9.624236501192068949955178268487368462704e-1 - 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0x1.fp-30 + 1.0 i) == 4.247867098745151888768727039216644758847e-5 + 1.570753848123921942730162693731872690232 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-30 - 1.0 i) == 4.247867098745151888768727039216644758847e-5 - 1.570753848123921942730162693731872690232 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0x1.fp1023 + 0x1.fp1023 i) == 7.107906849659093345062145442726115449315e2 + 7.853981633974483096156608458198757210493e-1 i": double: 1 idouble: 1 Test "Real part of: casinh (0x1.fp127 + 0x1.fp127 i) == 8.973081118419833726837456344608533993585e1 + 7.853981633974483096156608458198757210493e-1 i": double: 1 idouble: 1 +Test "Real part of: casinh (0x1p-23 + 0.0 i) == 1.192092895507809676556842485683592032154e-7 + 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 + 0.5 i) == 1.376510308240943236356088341381173571841e-7 + 5.235987755982934033165770729745469098254e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (0x1p-23 + 0.5 i) == 1.376510308240943236356088341381173571841e-7 + 5.235987755982934033165770729745469098254e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 + 0x0.ffffffp0 i) == 2.714321200917194650737217746780928423385e-4 + 1.570357140408705570520377172865353621698 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-23 + 0x1.fp-129 i) == 1.192092895507809676556842485683592032154e-7 + 2.846900380897707329917933005874691056564e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 - 0.0 i) == 1.192092895507809676556842485683592032154e-7 - 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 - 0.5 i) == 1.376510308240943236356088341381173571841e-7 - 5.235987755982934033165770729745469098254e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (0x1p-23 - 0.5 i) == 1.376510308240943236356088341381173571841e-7 - 5.235987755982934033165770729745469098254e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 - 0x0.ffffffp0 i) == 2.714321200917194650737217746780928423385e-4 - 1.570357140408705570520377172865353621698 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-23 - 0x1.fp-129 i) == 1.192092895507809676556842485683592032154e-7 - 2.846900380897707329917933005874691056564e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-52 + 0.5 i) == 2.563950248511418570403591756798643804971e-16 + 5.235987755982988730771072305465648369889e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-52 + 0x0.fffffffffffff8p0 i) == 1.171456840272878582596796205397918831268e-8 + 1.570796307840326780080580569360500172043 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-52 + 0x1.0000000000001p0 i) == 2.315303644582684770975188768022139415020e-8 + 1.570796317204594913251280305810847349436 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-52 - 0.5 i) == 2.563950248511418570403591756798643804971e-16 - 5.235987755982988730771072305465648369889e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-52 - 0x0.fffffffffffff8p0 i) == 1.171456840272878582596796205397918831268e-8 - 1.570796307840326780080580569360500172043 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-52 - 0x1.0000000000001p0 i) == 2.315303644582684770975188768022139415020e-8 - 1.570796317204594913251280305810847349436 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-63 + 0x0.ffffffffffffffffp0 i) == 2.588578361325995866221775673638805081337e-10 + 1.570796326376055842114524927965556247908 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-63 + 0x1.0000000000000002p0 i) == 5.116146586219826555037807251857670783420e-10 + 1.570796326582978888921215348380499122131 i": +ildouble: 2 +ldouble: 2 +Test "Real part of: casinh (0x1p-63 - 0x0.ffffffffffffffffp0 i) == 2.588578361325995866221775673638805081337e-10 - 1.570796326376055842114524927965556247908 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-63 - 0x1.0000000000000002p0 i) == 5.116146586219826555037807251857670783420e-10 - 1.570796326582978888921215348380499122131 i": +ildouble: 2 +ldouble: 2 Test "Real part of: casinh (1.0 + +0 i) == 0.8813735870195430252326093249797923090282 + +0 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Real part of: casinh (1.0 + 0.25 i) == 8.924633639033482359562124741744951972772e-1 + 1.763024327769669304186785666360901026468e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0.5 i) == 9.261330313501824245501244453057873152694e-1 + 3.494390628572132936274118260753699527325e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 + 0.5 i) == 9.261330313501824245501244453057873152694e-1 + 3.494390628572132936274118260753699527325e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-10 i) == 8.813742198809567991336704287826445879025e-1 + 1.337909359557740912558349531052239112857e-3 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-100 i) == 8.813735870195430252326093249797923090282e-1 + 1.080754735021050612990719608916167354321e-30 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-1000 i) == 8.813735870195430252326093249797923090282e-1 + 1.278589251976747242280879285935084814093e-301 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-1025 i) == 8.813735870195430252326093249797923090282e-1 + 3.810492908885321743133304375216617626230e-309 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-129 i) == 8.813735870195430252326093249797923090282e-1 + 2.013062564695348242280482517399205554874e-39 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-30 i) == 8.813735870195430258081932989769495326854e-1 + 1.275929984216518540252717485007112529021e-9 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-30 i) == 8.813735870195430258081932989769495326854e-1 + 1.275929984216518540252717485007112529021e-9 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (1.0 - 0 i) == 0.8813735870195430252326093249797923090282 - 0 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Real part of: casinh (1.0 - 0.25 i) == 8.924633639033482359562124741744951972772e-1 - 1.763024327769669304186785666360901026468e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0.5 i) == 9.261330313501824245501244453057873152694e-1 - 3.494390628572132936274118260753699527325e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 - 0.5 i) == 9.261330313501824245501244453057873152694e-1 - 3.494390628572132936274118260753699527325e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-10 i) == 8.813742198809567991336704287826445879025e-1 - 1.337909359557740912558349531052239112857e-3 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-100 i) == 8.813735870195430252326093249797923090282e-1 - 1.080754735021050612990719608916167354321e-30 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-1000 i) == 8.813735870195430252326093249797923090282e-1 - 1.278589251976747242280879285935084814093e-301 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-1025 i) == 8.813735870195430252326093249797923090282e-1 - 3.810492908885321743133304375216617626230e-309 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-129 i) == 8.813735870195430252326093249797923090282e-1 - 2.013062564695348242280482517399205554874e-39 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-30 i) == 8.813735870195430258081932989769495326854e-1 - 1.275929984216518540252717485007112529021e-9 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-30 i) == 8.813735870195430258081932989769495326854e-1 - 1.275929984216518540252717485007112529021e-9 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (1.5 + +0 i) == 1.194763217287109304111930828519090523536 + +0 i": double: 1 idouble: 1 @@ -842,13 +3480,49 @@ double: 1 idouble: 1 # catan +Test "Imaginary part of: catan (-0x1.fp1023 + 0x1.fp1023 i) == -1.570796326794896619231321691639751442099 + 2.871063043235098558826106732041811695767e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1.fp1023 - 0x1.fp1023 i) == -1.570796326794896619231321691639751442099 - 2.871063043235098558826106732041811695767e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1.fp127 + 0x1.fp127 i) == -1.570796326794896619231321691639751442097 + 1.516766904286822590927401983512575068153e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1.fp127 - 0x1.fp127 i) == -1.570796326794896619231321691639751442097 - 1.516766904286822590927401983512575068153e-39 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Imaginary part of: catan (0x1.fp1023 + 0x1.fp1023 i) == 1.570796326794896619231321691639751442099 + 2.871063043235098558826106732041811695767e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1.fp1023 - 0x1.fp1023 i) == 1.570796326794896619231321691639751442099 - 2.871063043235098558826106732041811695767e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1.fp127 + 0x1.fp127 i) == 1.570796326794896619231321691639751442097 + 1.516766904286822590927401983512575068153e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1.fp127 - 0x1.fp127 i) == 1.570796326794896619231321691639751442097 - 1.516766904286822590927401983512575068153e-39 i": +ildouble: 1 +ldouble: 1 # catanh +Test "Real part of: catanh (-0x1.fp1023 + 0x1.fp1023 i) == -2.871063043235098558826106732041811695767e-309 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1.fp1023 - 0x1.fp1023 i) == -2.871063043235098558826106732041811695767e-309 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1.fp127 + 0x1.fp127 i) == -1.516766904286822590927401983512575068153e-39 + 1.570796326794896619231321691639751442097 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1.fp127 - 0x1.fp127 i) == -1.516766904286822590927401983512575068153e-39 - 1.570796326794896619231321691639751442097 i": +ildouble: 1 +ldouble: 1 Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": double: 2 float: 1 @@ -859,6 +3533,20 @@ ldouble: 1 Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": double: 1 idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1.fp1023 + 0x1.fp1023 i) == 2.871063043235098558826106732041811695767e-309 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1.fp1023 - 0x1.fp1023 i) == 2.871063043235098558826106732041811695767e-309 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1.fp127 + 0x1.fp127 i) == 1.516766904286822590927401983512575068153e-39 + 1.570796326794896619231321691639751442097 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1.fp127 - 0x1.fp127 i) == 1.516766904286822590927401983512575068153e-39 - 1.570796326794896619231321691639751442097 i": +ildouble: 1 +ldouble: 1 # cbrt Test "cbrt (-27.0) == -3.0": @@ -1591,13 +4279,6 @@ idouble: 2 ifloat: 1 ildouble: 1 ldouble: 1 -Test "cos (pi/2) == 0": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 # cos_downward Test "cos_downward (1) == 0.5403023058681397174009366074429766037323": @@ -2475,6 +5156,9 @@ ldouble: 2 Test "j0 (0x1.d7ce3ap+107) == 2.775523647291230802651040996274861694514e-17": float: 1 ifloat: 1 +Test "j0 (0x1p1023) == -1.5665258060609012834424478437196679802783e-155": +double: 1 +idouble: 1 Test "j0 (0x1p16382) == -1.2193782500509000574176799046642541129387e-2466": ildouble: 1 ldouble: 1 @@ -2952,13 +5636,6 @@ idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 -Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 # sinh Test "sinh (0.75) == 0.822316731935829980703661634446913849": @@ -3338,6 +6015,9 @@ ldouble: 1 Test "y1 (0x1p-10) == -6.5190099301063115047395187618929589514382e+02": float: 1 ifloat: 1 +Test "y1 (0x1p1023) == 1.5665258060609012834424478437196679802783e-155": +double: 1 +idouble: 1 Test "y1 (0x1p16382) == 1.2193782500509000574176799046642541129387e-2466": ildouble: 1 ldouble: 1 @@ -3544,26 +6224,26 @@ ildouble: 1 ldouble: 1 Function: Imaginary part of "cacos": -double: 2 +double: 1 float: 1 -idouble: 2 +idouble: 1 ifloat: 1 ildouble: 2 ldouble: 2 Function: Real part of "cacosh": double: 1 -float: 9 +float: 1 idouble: 1 -ifloat: 9 -ildouble: 6 -ldouble: 6 +ifloat: 1 +ildouble: 2 +ldouble: 2 Function: Imaginary part of "cacosh": double: 1 -float: 4 +float: 1 idouble: 1 -ifloat: 4 +ifloat: 1 ildouble: 1 ldouble: 1 @@ -3572,38 +6252,40 @@ double: 1 float: 1 idouble: 1 ifloat: 1 -ildouble: 2 -ldouble: 2 +ildouble: 1 +ldouble: 1 Function: Imaginary part of "casin": -double: 2 +double: 1 float: 1 -idouble: 2 +idouble: 1 ifloat: 1 ildouble: 2 ldouble: 2 Function: Real part of "casinh": -double: 5 +double: 1 float: 1 -idouble: 5 +idouble: 1 ifloat: 1 -ildouble: 5 -ldouble: 5 +ildouble: 2 +ldouble: 2 Function: Imaginary part of "casinh": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 -ildouble: 5 -ldouble: 5 +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Function: Imaginary part of "catan": double: 1 float: 1 idouble: 1 ifloat: 1 +ildouble: 1 +ldouble: 1 Function: Real part of "catanh": double: 2 diff --git a/libc/sysdeps/i386/fpu/math-tests.h b/libc/sysdeps/i386/fpu/math-tests.h new file mode 100644 index 000000000..2245fc901 --- /dev/null +++ b/libc/sysdeps/i386/fpu/math-tests.h @@ -0,0 +1,27 @@ +/* Configuration for math tests. 32-bit x86 version. + Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +/* On 32-bit x86, versions of GCC up to at least 4.8 are happy to use FPU load + instructions for sNaN values, and loading a float or double sNaN value will + already raise an INVALID exception as well as turn the sNaN into a qNaN, + rendering certain tests infeasible in this scenario. + <http://gcc.gnu.org/PR56831>. */ +#define SNAN_TESTS_float 0 +#define SNAN_TESTS_double 0 + +#include_next <math-tests.h> diff --git a/libc/sysdeps/ieee754/dbl-64/branred.c b/libc/sysdeps/ieee754/dbl-64/branred.c index ecceeca63..524d091dc 100644 --- a/libc/sysdeps/ieee754/dbl-64/branred.c +++ b/libc/sysdeps/ieee754/dbl-64/branred.c @@ -53,13 +53,7 @@ SECTION __branred(double x, double *a, double *aa) { int i,k; -#if 0 - int n; -#endif mynumber u,gor; -#if 0 - mynumber v; -#endif double r[6],s,t,sum,b,bb,sum1,sum2,b1,bb1,b2,bb2,x1,x2,t1,t2; x*=tm600.x; diff --git a/libc/sysdeps/ieee754/dbl-64/dosincos.c b/libc/sysdeps/ieee754/dbl-64/dosincos.c index bbef186ad..00726285a 100644 --- a/libc/sysdeps/ieee754/dbl-64/dosincos.c +++ b/libc/sysdeps/ieee754/dbl-64/dosincos.c @@ -63,9 +63,6 @@ __dubsin(double x, double dx, double v[]) { #ifndef DLA_FMS double p,hx,tx,hy,ty,q; #endif -#if 0 - double xx,y,yy,z,zz; -#endif mynumber u; int4 k; @@ -119,9 +116,6 @@ __dubcos(double x, double dx, double v[]) { #ifndef DLA_FMS double p,hx,tx,hy,ty,q; #endif -#if 0 - double xx,y,yy,z,zz; -#endif mynumber u; int4 k; u.x=x+big.x; diff --git a/libc/sysdeps/ieee754/dbl-64/e_asin.c b/libc/sysdeps/ieee754/dbl-64/e_asin.c index 5585ad1d0..27cd2a10d 100644 --- a/libc/sysdeps/ieee754/dbl-64/e_asin.c +++ b/libc/sysdeps/ieee754/dbl-64/e_asin.c @@ -62,9 +62,6 @@ __ieee754_asin(double x){ double x1,x2,xx,s1,s2,res1,p,t,res,r,cor,cc,y,c,z,w[2]; mynumber u,v; int4 k,m,n; -#if 0 - int4 nn; -#endif u.x = x; m = u.i[HIGH_HALF]; @@ -344,14 +341,8 @@ SECTION __ieee754_acos(double x) { double x1,x2,xx,s1,s2,res1,p,t,res,r,cor,cc,y,c,z,w[2],eps; -#if 0 - double fc; -#endif mynumber u,v; int4 k,m,n; -#if 0 - int4 nn; -#endif u.x = x; m = u.i[HIGH_HALF]; k = 0x7fffffff&m; diff --git a/libc/sysdeps/ieee754/dbl-64/e_atan2.c b/libc/sysdeps/ieee754/dbl-64/e_atan2.c index ee3215ed3..4ebe9c01f 100644 --- a/libc/sysdeps/ieee754/dbl-64/e_atan2.c +++ b/libc/sysdeps/ieee754/dbl-64/e_atan2.c @@ -53,105 +53,171 @@ /* Assumption: Machine arithmetic operations are performed in */ /* round to nearest mode of IEEE 754 standard. */ /************************************************************************/ -static double atan2Mp(double ,double ,const int[]); +static double atan2Mp (double, double, const int[]); /* Fix the sign and return after stage 1 or stage 2 */ -static double signArctan2(double y,double z) +static double +signArctan2 (double y, double z) { - return __copysign(z, y); + return __copysign (z, y); } -static double normalized(double ,double,double ,double); -void __mpatan2(mp_no *,mp_no *,mp_no *,int); + +static double normalized (double, double, double, double); +void __mpatan2 (mp_no *, mp_no *, mp_no *, int); double SECTION -__ieee754_atan2(double y,double x) { - - int i,de,ux,dx,uy,dy; -#if 0 - int p; -#endif - static const int pr[MM]={6,8,10,20,32}; - double ax,ay,u,du,u9,ua,v,vv,dv,t1,t2,t3,t7,t8, - z,zz,cor,s1,ss1,s2,ss2; +__ieee754_atan2 (double y, double x) +{ + int i, de, ux, dx, uy, dy; + static const int pr[MM] = { 6, 8, 10, 20, 32 }; + double ax, ay, u, du, u9, ua, v, vv, dv, t1, t2, t3, t7, t8, + z, zz, cor, s1, ss1, s2, ss2; #ifndef DLA_FMS - double t4,t5,t6; -#endif -#if 0 - double z1,z2; + double t4, t5, t6; #endif number num; -#if 0 - mp_no mperr,mpt1,mpx,mpy,mpz,mpz1,mpz2; -#endif - static const int ep= 59768832, /* 57*16**5 */ - em=-59768832; /* -57*16**5 */ + static const int ep = 59768832, /* 57*16**5 */ + em = -59768832; /* -57*16**5 */ /* x=NaN or y=NaN */ - num.d = x; ux = num.i[HIGH_HALF]; dx = num.i[LOW_HALF]; - if ((ux&0x7ff00000) ==0x7ff00000) { - if (((ux&0x000fffff)|dx)!=0x00000000) return x+x; } - num.d = y; uy = num.i[HIGH_HALF]; dy = num.i[LOW_HALF]; - if ((uy&0x7ff00000) ==0x7ff00000) { - if (((uy&0x000fffff)|dy)!=0x00000000) return y+y; } + num.d = x; + ux = num.i[HIGH_HALF]; + dx = num.i[LOW_HALF]; + if ((ux & 0x7ff00000) == 0x7ff00000) + { + if (((ux & 0x000fffff) | dx) != 0x00000000) + return x + x; + } + num.d = y; + uy = num.i[HIGH_HALF]; + dy = num.i[LOW_HALF]; + if ((uy & 0x7ff00000) == 0x7ff00000) + { + if (((uy & 0x000fffff) | dy) != 0x00000000) + return y + y; + } /* y=+-0 */ - if (uy==0x00000000) { - if (dy==0x00000000) { - if ((ux&0x80000000)==0x00000000) return ZERO; - else return opi.d; } } - else if (uy==0x80000000) { - if (dy==0x00000000) { - if ((ux&0x80000000)==0x00000000) return MZERO; - else return mopi.d;} } + if (uy == 0x00000000) + { + if (dy == 0x00000000) + { + if ((ux & 0x80000000) == 0x00000000) + return 0; + else + return opi.d; + } + } + else if (uy == 0x80000000) + { + if (dy == 0x00000000) + { + if ((ux & 0x80000000) == 0x00000000) + return -0.0; + else + return mopi.d; + } + } /* x=+-0 */ - if (x==ZERO) { - if ((uy&0x80000000)==0x00000000) return hpi.d; - else return mhpi.d; } + if (x == 0) + { + if ((uy & 0x80000000) == 0x00000000) + return hpi.d; + else + return mhpi.d; + } /* x=+-INF */ - if (ux==0x7ff00000) { - if (dx==0x00000000) { - if (uy==0x7ff00000) { - if (dy==0x00000000) return qpi.d; } - else if (uy==0xfff00000) { - if (dy==0x00000000) return mqpi.d; } - else { - if ((uy&0x80000000)==0x00000000) return ZERO; - else return MZERO; } + if (ux == 0x7ff00000) + { + if (dx == 0x00000000) + { + if (uy == 0x7ff00000) + { + if (dy == 0x00000000) + return qpi.d; + } + else if (uy == 0xfff00000) + { + if (dy == 0x00000000) + return mqpi.d; + } + else + { + if ((uy & 0x80000000) == 0x00000000) + return 0; + else + return -0.0; + } + } } - } - else if (ux==0xfff00000) { - if (dx==0x00000000) { - if (uy==0x7ff00000) { - if (dy==0x00000000) return tqpi.d; } - else if (uy==0xfff00000) { - if (dy==0x00000000) return mtqpi.d; } - else { - if ((uy&0x80000000)==0x00000000) return opi.d; - else return mopi.d; } + else if (ux == 0xfff00000) + { + if (dx == 0x00000000) + { + if (uy == 0x7ff00000) + { + if (dy == 0x00000000) + return tqpi.d; + } + else if (uy == 0xfff00000) + { + if (dy == 0x00000000) + return mtqpi.d; + } + else + { + if ((uy & 0x80000000) == 0x00000000) + return opi.d; + else + return mopi.d; + } + } } - } /* y=+-INF */ - if (uy==0x7ff00000) { - if (dy==0x00000000) return hpi.d; } - else if (uy==0xfff00000) { - if (dy==0x00000000) return mhpi.d; } + if (uy == 0x7ff00000) + { + if (dy == 0x00000000) + return hpi.d; + } + else if (uy == 0xfff00000) + { + if (dy == 0x00000000) + return mhpi.d; + } /* either x/y or y/x is very close to zero */ - ax = (x<ZERO) ? -x : x; ay = (y<ZERO) ? -y : y; + ax = (x < 0) ? -x : x; + ay = (y < 0) ? -y : y; de = (uy & 0x7ff00000) - (ux & 0x7ff00000); - if (de>=ep) { return ((y>ZERO) ? hpi.d : mhpi.d); } - else if (de<=em) { - if (x>ZERO) { - if ((z=ay/ax)<TWOM1022) return normalized(ax,ay,y,z); - else return signArctan2(y,z); } - else { return ((y>ZERO) ? opi.d : mopi.d); } } + if (de >= ep) + { + return ((y > 0) ? hpi.d : mhpi.d); + } + else if (de <= em) + { + if (x > 0) + { + if ((z = ay / ax) < TWOM1022) + return normalized (ax, ay, y, z); + else + return signArctan2 (y, z); + } + else + { + return ((y > 0) ? opi.d : mopi.d); + } + } /* if either x or y is extremely close to zero, scale abs(x), abs(y). */ - if (ax<twom500.d || ay<twom500.d) { ax*=two500.d; ay*=two500.d; } + if (ax < twom500.d || ay < twom500.d) + { + ax *= two500.d; + ay *= two500.d; + } /* Likewise for large x and y. */ if (ax > two500.d || ay > two500.d) @@ -161,268 +227,377 @@ __ieee754_atan2(double y,double x) { } /* x,y which are neither special nor extreme */ - if (ay<ax) { - u=ay/ax; - EMULV(ax,u,v,vv,t1,t2,t3,t4,t5) - du=((ay-v)-vv)/ax; } - else { - u=ax/ay; - EMULV(ay,u,v,vv,t1,t2,t3,t4,t5) - du=((ax-v)-vv)/ay; } - - if (x>ZERO) { - - /* (i) x>0, abs(y)< abs(x): atan(ay/ax) */ - if (ay<ax) { - if (u<inv16.d) { - v=u*u; zz=du+u*v*(d3.d+v*(d5.d+v*(d7.d+v*(d9.d+v*(d11.d+v*d13.d))))); - if ((z=u+(zz-u1.d*u)) == u+(zz+u1.d*u)) return signArctan2(y,z); - - MUL2(u,du,u,du,v,vv,t1,t2,t3,t4,t5,t6,t7,t8) - s1=v*(f11.d+v*(f13.d+v*(f15.d+v*(f17.d+v*f19.d)))); - ADD2(f9.d,ff9.d,s1,ZERO,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f7.d,ff7.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f5.d,ff5.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f3.d,ff3.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(u,du,s1,ss1,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(u,du,s2,ss2,s1,ss1,t1,t2) - if ((z=s1+(ss1-u5.d*s1)) == s1+(ss1+u5.d*s1)) return signArctan2(y,z); - return atan2Mp(x,y,pr); - } - else { - i=(TWO52+TWO8*u)-TWO52; i-=16; - t3=u-cij[i][0].d; - EADD(t3,du,v,dv) - t1=cij[i][1].d; t2=cij[i][2].d; - zz=v*t2+(dv*t2+v*v*(cij[i][3].d+v*(cij[i][4].d+ - v*(cij[i][5].d+v* cij[i][6].d)))); - if (i<112) { - if (i<48) u9=u91.d; /* u < 1/4 */ - else u9=u92.d; } /* 1/4 <= u < 1/2 */ - else { - if (i<176) u9=u93.d; /* 1/2 <= u < 3/4 */ - else u9=u94.d; } /* 3/4 <= u <= 1 */ - if ((z=t1+(zz-u9*t1)) == t1+(zz+u9*t1)) return signArctan2(y,z); - - t1=u-hij[i][0].d; - EADD(t1,du,v,vv) - s1=v*(hij[i][11].d+v*(hij[i][12].d+v*(hij[i][13].d+ - v*(hij[i][14].d+v* hij[i][15].d)))); - ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2) - if ((z=s2+(ss2-ub.d*s2)) == s2+(ss2+ub.d*s2)) return signArctan2(y,z); - return atan2Mp(x,y,pr); - } + if (ay < ax) + { + u = ay / ax; + EMULV (ax, u, v, vv, t1, t2, t3, t4, t5); + du = ((ay - v) - vv) / ax; + } + else + { + u = ax / ay; + EMULV (ay, u, v, vv, t1, t2, t3, t4, t5); + du = ((ax - v) - vv) / ay; } - /* (ii) x>0, abs(x)<=abs(y): pi/2-atan(ax/ay) */ - else { - if (u<inv16.d) { - v=u*u; - zz=u*v*(d3.d+v*(d5.d+v*(d7.d+v*(d9.d+v*(d11.d+v*d13.d))))); - ESUB(hpi.d,u,t2,cor) - t3=((hpi1.d+cor)-du)-zz; - if ((z=t2+(t3-u2.d)) == t2+(t3+u2.d)) return signArctan2(y,z); - - MUL2(u,du,u,du,v,vv,t1,t2,t3,t4,t5,t6,t7,t8) - s1=v*(f11.d+v*(f13.d+v*(f15.d+v*(f17.d+v*f19.d)))); - ADD2(f9.d,ff9.d,s1,ZERO,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f7.d,ff7.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f5.d,ff5.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f3.d,ff3.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(u,du,s1,ss1,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(u,du,s2,ss2,s1,ss1,t1,t2) - SUB2(hpi.d,hpi1.d,s1,ss1,s2,ss2,t1,t2) - if ((z=s2+(ss2-u6.d)) == s2+(ss2+u6.d)) return signArctan2(y,z); - return atan2Mp(x,y,pr); - } - else { - i=(TWO52+TWO8*u)-TWO52; i-=16; - v=(u-cij[i][0].d)+du; - zz=hpi1.d-v*(cij[i][2].d+v*(cij[i][3].d+v*(cij[i][4].d+ - v*(cij[i][5].d+v* cij[i][6].d)))); - t1=hpi.d-cij[i][1].d; - if (i<112) ua=ua1.d; /* w < 1/2 */ - else ua=ua2.d; /* w >= 1/2 */ - if ((z=t1+(zz-ua)) == t1+(zz+ua)) return signArctan2(y,z); - - t1=u-hij[i][0].d; - EADD(t1,du,v,vv) - s1=v*(hij[i][11].d+v*(hij[i][12].d+v*(hij[i][13].d+ - v*(hij[i][14].d+v* hij[i][15].d)))); - ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2) - SUB2(hpi.d,hpi1.d,s2,ss2,s1,ss1,t1,t2) - if ((z=s1+(ss1-uc.d)) == s1+(ss1+uc.d)) return signArctan2(y,z); - return atan2Mp(x,y,pr); - } + if (x > 0) + { + /* (i) x>0, abs(y)< abs(x): atan(ay/ax) */ + if (ay < ax) + { + if (u < inv16.d) + { + v = u * u; + + zz = du + u * v * (d3.d + + v * (d5.d + + v * (d7.d + + v * (d9.d + + v * (d11.d + + v * d13.d))))); + + if ((z = u + (zz - u1.d * u)) == u + (zz + u1.d * u)) + return signArctan2 (y, z); + + MUL2 (u, du, u, du, v, vv, t1, t2, t3, t4, t5, t6, t7, t8); + s1 = v * (f11.d + v * (f13.d + + v * (f15.d + v * (f17.d + v * f19.d)))); + ADD2 (f9.d, ff9.d, s1, 0, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f7.d, ff7.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f5.d, ff5.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f3.d, ff3.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (u, du, s1, ss1, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (u, du, s2, ss2, s1, ss1, t1, t2); + + if ((z = s1 + (ss1 - u5.d * s1)) == s1 + (ss1 + u5.d * s1)) + return signArctan2 (y, z); + + return atan2Mp (x, y, pr); + } + + i = (TWO52 + TWO8 * u) - TWO52; + i -= 16; + t3 = u - cij[i][0].d; + EADD (t3, du, v, dv); + t1 = cij[i][1].d; + t2 = cij[i][2].d; + zz = v * t2 + (dv * t2 + + v * v * (cij[i][3].d + + v * (cij[i][4].d + + v * (cij[i][5].d + + v * cij[i][6].d)))); + if (i < 112) + { + if (i < 48) + u9 = u91.d; /* u < 1/4 */ + else + u9 = u92.d; + } /* 1/4 <= u < 1/2 */ + else + { + if (i < 176) + u9 = u93.d; /* 1/2 <= u < 3/4 */ + else + u9 = u94.d; + } /* 3/4 <= u <= 1 */ + if ((z = t1 + (zz - u9 * t1)) == t1 + (zz + u9 * t1)) + return signArctan2 (y, z); + + t1 = u - hij[i][0].d; + EADD (t1, du, v, vv); + s1 = v * (hij[i][11].d + + v * (hij[i][12].d + + v * (hij[i][13].d + + v * (hij[i][14].d + + v * hij[i][15].d)))); + ADD2 (hij[i][9].d, hij[i][10].d, s1, 0, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][7].d, hij[i][8].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][5].d, hij[i][6].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][3].d, hij[i][4].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][1].d, hij[i][2].d, s1, ss1, s2, ss2, t1, t2); + + if ((z = s2 + (ss2 - ub.d * s2)) == s2 + (ss2 + ub.d * s2)) + return signArctan2 (y, z); + return atan2Mp (x, y, pr); + } + + /* (ii) x>0, abs(x)<=abs(y): pi/2-atan(ax/ay) */ + if (u < inv16.d) + { + v = u * u; + zz = u * v * (d3.d + + v * (d5.d + + v * (d7.d + + v * (d9.d + + v * (d11.d + + v * d13.d))))); + ESUB (hpi.d, u, t2, cor); + t3 = ((hpi1.d + cor) - du) - zz; + if ((z = t2 + (t3 - u2.d)) == t2 + (t3 + u2.d)) + return signArctan2 (y, z); + + MUL2 (u, du, u, du, v, vv, t1, t2, t3, t4, t5, t6, t7, t8); + s1 = v * (f11.d + + v * (f13.d + + v * (f15.d + v * (f17.d + v * f19.d)))); + ADD2 (f9.d, ff9.d, s1, 0, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f7.d, ff7.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f5.d, ff5.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f3.d, ff3.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (u, du, s1, ss1, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (u, du, s2, ss2, s1, ss1, t1, t2); + SUB2 (hpi.d, hpi1.d, s1, ss1, s2, ss2, t1, t2); + + if ((z = s2 + (ss2 - u6.d)) == s2 + (ss2 + u6.d)) + return signArctan2 (y, z); + return atan2Mp (x, y, pr); + } + + i = (TWO52 + TWO8 * u) - TWO52; + i -= 16; + v = (u - cij[i][0].d) + du; + + zz = hpi1.d - v * (cij[i][2].d + + v * (cij[i][3].d + + v * (cij[i][4].d + + v * (cij[i][5].d + + v * cij[i][6].d)))); + t1 = hpi.d - cij[i][1].d; + if (i < 112) + ua = ua1.d; /* w < 1/2 */ + else + ua = ua2.d; /* w >= 1/2 */ + if ((z = t1 + (zz - ua)) == t1 + (zz + ua)) + return signArctan2 (y, z); + + t1 = u - hij[i][0].d; + EADD (t1, du, v, vv); + + s1 = v * (hij[i][11].d + + v * (hij[i][12].d + + v * (hij[i][13].d + + v * (hij[i][14].d + + v * hij[i][15].d)))); + + ADD2 (hij[i][9].d, hij[i][10].d, s1, 0, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][7].d, hij[i][8].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][5].d, hij[i][6].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][3].d, hij[i][4].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][1].d, hij[i][2].d, s1, ss1, s2, ss2, t1, t2); + SUB2 (hpi.d, hpi1.d, s2, ss2, s1, ss1, t1, t2); + + if ((z = s1 + (ss1 - uc.d)) == s1 + (ss1 + uc.d)) + return signArctan2 (y, z); + return atan2Mp (x, y, pr); } - } - else { - - /* (iii) x<0, abs(x)< abs(y): pi/2+atan(ax/ay) */ - if (ax<ay) { - if (u<inv16.d) { - v=u*u; - zz=u*v*(d3.d+v*(d5.d+v*(d7.d+v*(d9.d+v*(d11.d+v*d13.d))))); - EADD(hpi.d,u,t2,cor) - t3=((hpi1.d+cor)+du)+zz; - if ((z=t2+(t3-u3.d)) == t2+(t3+u3.d)) return signArctan2(y,z); - - MUL2(u,du,u,du,v,vv,t1,t2,t3,t4,t5,t6,t7,t8) - s1=v*(f11.d+v*(f13.d+v*(f15.d+v*(f17.d+v*f19.d)))); - ADD2(f9.d,ff9.d,s1,ZERO,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f7.d,ff7.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f5.d,ff5.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f3.d,ff3.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(u,du,s1,ss1,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(u,du,s2,ss2,s1,ss1,t1,t2) - ADD2(hpi.d,hpi1.d,s1,ss1,s2,ss2,t1,t2) - if ((z=s2+(ss2-u7.d)) == s2+(ss2+u7.d)) return signArctan2(y,z); - return atan2Mp(x,y,pr); - } - else { - i=(TWO52+TWO8*u)-TWO52; i-=16; - v=(u-cij[i][0].d)+du; - zz=hpi1.d+v*(cij[i][2].d+v*(cij[i][3].d+v*(cij[i][4].d+ - v*(cij[i][5].d+v* cij[i][6].d)))); - t1=hpi.d+cij[i][1].d; - if (i<112) ua=ua1.d; /* w < 1/2 */ - else ua=ua2.d; /* w >= 1/2 */ - if ((z=t1+(zz-ua)) == t1+(zz+ua)) return signArctan2(y,z); - - t1=u-hij[i][0].d; - EADD(t1,du,v,vv) - s1=v*(hij[i][11].d+v*(hij[i][12].d+v*(hij[i][13].d+ - v*(hij[i][14].d+v* hij[i][15].d)))); - ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2) - ADD2(hpi.d,hpi1.d,s2,ss2,s1,ss1,t1,t2) - if ((z=s1+(ss1-uc.d)) == s1+(ss1+uc.d)) return signArctan2(y,z); - return atan2Mp(x,y,pr); - } + + /* (iii) x<0, abs(x)< abs(y): pi/2+atan(ax/ay) */ + if (ax < ay) + { + if (u < inv16.d) + { + v = u * u; + zz = u * v * (d3.d + + v * (d5.d + + v * (d7.d + + v * (d9.d + + v * (d11.d + v * d13.d))))); + EADD (hpi.d, u, t2, cor); + t3 = ((hpi1.d + cor) + du) + zz; + if ((z = t2 + (t3 - u3.d)) == t2 + (t3 + u3.d)) + return signArctan2 (y, z); + + MUL2 (u, du, u, du, v, vv, t1, t2, t3, t4, t5, t6, t7, t8); + s1 = v * (f11.d + + v * (f13.d + v * (f15.d + v * (f17.d + v * f19.d)))); + ADD2 (f9.d, ff9.d, s1, 0, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f7.d, ff7.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f5.d, ff5.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f3.d, ff3.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (u, du, s1, ss1, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (u, du, s2, ss2, s1, ss1, t1, t2); + ADD2 (hpi.d, hpi1.d, s1, ss1, s2, ss2, t1, t2); + + if ((z = s2 + (ss2 - u7.d)) == s2 + (ss2 + u7.d)) + return signArctan2 (y, z); + return atan2Mp (x, y, pr); + } + + i = (TWO52 + TWO8 * u) - TWO52; + i -= 16; + v = (u - cij[i][0].d) + du; + zz = hpi1.d + v * (cij[i][2].d + + v * (cij[i][3].d + + v * (cij[i][4].d + + v * (cij[i][5].d + + v * cij[i][6].d)))); + t1 = hpi.d + cij[i][1].d; + if (i < 112) + ua = ua1.d; /* w < 1/2 */ + else + ua = ua2.d; /* w >= 1/2 */ + if ((z = t1 + (zz - ua)) == t1 + (zz + ua)) + return signArctan2 (y, z); + + t1 = u - hij[i][0].d; + EADD (t1, du, v, vv); + s1 = v * (hij[i][11].d + + v * (hij[i][12].d + + v * (hij[i][13].d + + v * (hij[i][14].d + + v * hij[i][15].d)))); + ADD2 (hij[i][9].d, hij[i][10].d, s1, 0, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][7].d, hij[i][8].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][5].d, hij[i][6].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][3].d, hij[i][4].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][1].d, hij[i][2].d, s1, ss1, s2, ss2, t1, t2); + ADD2 (hpi.d, hpi1.d, s2, ss2, s1, ss1, t1, t2); + + if ((z = s1 + (ss1 - uc.d)) == s1 + (ss1 + uc.d)) + return signArctan2 (y, z); + return atan2Mp (x, y, pr); } - /* (iv) x<0, abs(y)<=abs(x): pi-atan(ax/ay) */ - else { - if (u<inv16.d) { - v=u*u; - zz=u*v*(d3.d+v*(d5.d+v*(d7.d+v*(d9.d+v*(d11.d+v*d13.d))))); - ESUB(opi.d,u,t2,cor) - t3=((opi1.d+cor)-du)-zz; - if ((z=t2+(t3-u4.d)) == t2+(t3+u4.d)) return signArctan2(y,z); - - MUL2(u,du,u,du,v,vv,t1,t2,t3,t4,t5,t6,t7,t8) - s1=v*(f11.d+v*(f13.d+v*(f15.d+v*(f17.d+v*f19.d)))); - ADD2(f9.d,ff9.d,s1,ZERO,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f7.d,ff7.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f5.d,ff5.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f3.d,ff3.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(u,du,s1,ss1,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(u,du,s2,ss2,s1,ss1,t1,t2) - SUB2(opi.d,opi1.d,s1,ss1,s2,ss2,t1,t2) - if ((z=s2+(ss2-u8.d)) == s2+(ss2+u8.d)) return signArctan2(y,z); - return atan2Mp(x,y,pr); - } - else { - i=(TWO52+TWO8*u)-TWO52; i-=16; - v=(u-cij[i][0].d)+du; - zz=opi1.d-v*(cij[i][2].d+v*(cij[i][3].d+v*(cij[i][4].d+ - v*(cij[i][5].d+v* cij[i][6].d)))); - t1=opi.d-cij[i][1].d; - if (i<112) ua=ua1.d; /* w < 1/2 */ - else ua=ua2.d; /* w >= 1/2 */ - if ((z=t1+(zz-ua)) == t1+(zz+ua)) return signArctan2(y,z); - - t1=u-hij[i][0].d; - EADD(t1,du,v,vv) - s1=v*(hij[i][11].d+v*(hij[i][12].d+v*(hij[i][13].d+ - v*(hij[i][14].d+v* hij[i][15].d)))); - ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2) - SUB2(opi.d,opi1.d,s2,ss2,s1,ss1,t1,t2) - if ((z=s1+(ss1-uc.d)) == s1+(ss1+uc.d)) return signArctan2(y,z); - return atan2Mp(x,y,pr); - } + /* (iv) x<0, abs(y)<=abs(x): pi-atan(ax/ay) */ + if (u < inv16.d) + { + v = u * u; + zz = u * v * (d3.d + + v * (d5.d + + v * (d7.d + + v * (d9.d + v * (d11.d + v * d13.d))))); + ESUB (opi.d, u, t2, cor); + t3 = ((opi1.d + cor) - du) - zz; + if ((z = t2 + (t3 - u4.d)) == t2 + (t3 + u4.d)) + return signArctan2 (y, z); + + MUL2 (u, du, u, du, v, vv, t1, t2, t3, t4, t5, t6, t7, t8); + s1 = v * (f11.d + v * (f13.d + v * (f15.d + v * (f17.d + v * f19.d)))); + ADD2 (f9.d, ff9.d, s1, 0, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f7.d, ff7.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f5.d, ff5.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f3.d, ff3.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (u, du, s1, ss1, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (u, du, s2, ss2, s1, ss1, t1, t2); + SUB2 (opi.d, opi1.d, s1, ss1, s2, ss2, t1, t2); + + if ((z = s2 + (ss2 - u8.d)) == s2 + (ss2 + u8.d)) + return signArctan2 (y, z); + return atan2Mp (x, y, pr); } - } + + i = (TWO52 + TWO8 * u) - TWO52; + i -= 16; + v = (u - cij[i][0].d) + du; + zz = opi1.d - v * (cij[i][2].d + + v * (cij[i][3].d + + v * (cij[i][4].d + + v * (cij[i][5].d + v * cij[i][6].d)))); + t1 = opi.d - cij[i][1].d; + if (i < 112) + ua = ua1.d; /* w < 1/2 */ + else + ua = ua2.d; /* w >= 1/2 */ + if ((z = t1 + (zz - ua)) == t1 + (zz + ua)) + return signArctan2 (y, z); + + t1 = u - hij[i][0].d; + + EADD (t1, du, v, vv); + + s1 = v * (hij[i][11].d + + v * (hij[i][12].d + + v * (hij[i][13].d + + v * (hij[i][14].d + v * hij[i][15].d)))); + + ADD2 (hij[i][9].d, hij[i][10].d, s1, 0, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][7].d, hij[i][8].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][5].d, hij[i][6].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][3].d, hij[i][4].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][1].d, hij[i][2].d, s1, ss1, s2, ss2, t1, t2); + SUB2 (opi.d, opi1.d, s2, ss2, s1, ss1, t1, t2); + + if ((z = s1 + (ss1 - uc.d)) == s1 + (ss1 + uc.d)) + return signArctan2 (y, z); + return atan2Mp (x, y, pr); } + #ifndef __ieee754_atan2 strong_alias (__ieee754_atan2, __atan2_finite) #endif - /* Treat the Denormalized case */ +/* Treat the Denormalized case */ static double SECTION -normalized(double ax,double ay,double y, double z) - { int p; - mp_no mpx,mpy,mpz,mperr,mpz2,mpt1; - p=6; - __dbl_mp(ax,&mpx,p); __dbl_mp(ay,&mpy,p); __dvd(&mpy,&mpx,&mpz,p); - __dbl_mp(ue.d,&mpt1,p); __mul(&mpz,&mpt1,&mperr,p); - __sub(&mpz,&mperr,&mpz2,p); __mp_dbl(&mpz2,&z,p); - return signArctan2(y,z); +normalized (double ax, double ay, double y, double z) +{ + int p; + mp_no mpx, mpy, mpz, mperr, mpz2, mpt1; + p = 6; + __dbl_mp (ax, &mpx, p); + __dbl_mp (ay, &mpy, p); + __dvd (&mpy, &mpx, &mpz, p); + __dbl_mp (ue.d, &mpt1, p); + __mul (&mpz, &mpt1, &mperr, p); + __sub (&mpz, &mperr, &mpz2, p); + __mp_dbl (&mpz2, &z, p); + return signArctan2 (y, z); } - /* Stage 3: Perform a multi-Precision computation */ + +/* Stage 3: Perform a multi-Precision computation */ static double SECTION -atan2Mp(double x,double y,const int pr[]) +atan2Mp (double x, double y, const int pr[]) { - double z1,z2; - int i,p; - mp_no mpx,mpy,mpz,mpz1,mpz2,mperr,mpt1; - for (i=0; i<MM; i++) { - p = pr[i]; - __dbl_mp(x,&mpx,p); __dbl_mp(y,&mpy,p); - __mpatan2(&mpy,&mpx,&mpz,p); - __dbl_mp(ud[i].d,&mpt1,p); __mul(&mpz,&mpt1,&mperr,p); - __add(&mpz,&mperr,&mpz1,p); __sub(&mpz,&mperr,&mpz2,p); - __mp_dbl(&mpz1,&z1,p); __mp_dbl(&mpz2,&z2,p); - if (z1==z2) return z1; - } - return z1; /*if unpossible to do exact computing */ + double z1, z2; + int i, p; + mp_no mpx, mpy, mpz, mpz1, mpz2, mperr, mpt1; + for (i = 0; i < MM; i++) + { + p = pr[i]; + __dbl_mp (x, &mpx, p); + __dbl_mp (y, &mpy, p); + __mpatan2 (&mpy, &mpx, &mpz, p); + __dbl_mp (ud[i].d, &mpt1, p); + __mul (&mpz, &mpt1, &mperr, p); + __add (&mpz, &mperr, &mpz1, p); + __sub (&mpz, &mperr, &mpz2, p); + __mp_dbl (&mpz1, &z1, p); + __mp_dbl (&mpz2, &z2, p); + if (z1 == z2) + return z1; + } + return z1; /*if impossible to do exact computing */ } diff --git a/libc/sysdeps/ieee754/dbl-64/e_exp.c b/libc/sysdeps/ieee754/dbl-64/e_exp.c index 0f9d87ba5..07cc4a91b 100644 --- a/libc/sysdeps/ieee754/dbl-64/e_exp.c +++ b/libc/sysdeps/ieee754/dbl-64/e_exp.c @@ -55,9 +55,6 @@ SECTION __ieee754_exp(double x) { double bexp, t, eps, del, base, y, al, bet, res, rem, cor; mynumber junk1, junk2, binexp = {{0,0}}; -#if 0 - int4 k; -#endif int4 i,j,m,n,ex; double retval; @@ -174,9 +171,6 @@ SECTION __exp1(double x, double xx, double error) { double bexp, t, eps, del, base, y, al, bet, res, rem, cor; mynumber junk1, junk2, binexp = {{0,0}}; -#if 0 - int4 k; -#endif int4 i,j,m,n,ex; junk1.x = x; diff --git a/libc/sysdeps/ieee754/dbl-64/e_log.c b/libc/sysdeps/ieee754/dbl-64/e_log.c index 762639bcd..f9300f9ce 100644 --- a/libc/sysdeps/ieee754/dbl-64/e_log.c +++ b/libc/sysdeps/ieee754/dbl-64/e_log.c @@ -44,7 +44,7 @@ # define SECTION #endif -void __mplog(mp_no *, mp_no *, int); +void __mplog (mp_no *, mp_no *, int); /*********************************************************************/ /* An ultimate log routine. Given an IEEE double machine number x */ @@ -52,166 +52,201 @@ void __mplog(mp_no *, mp_no *, int); /*********************************************************************/ double SECTION -__ieee754_log(double x) { +__ieee754_log (double x) +{ #define M 4 - static const int pr[M]={8,10,18,32}; - int i,j,n,ux,dx,p; -#if 0 - int k; -#endif - double dbl_n,u,p0,q,r0,w,nln2a,luai,lubi,lvaj,lvbj, - sij,ssij,ttij,A,B,B0,y,y1,y2,polI,polII,sa,sb, - t1,t2,t7,t8,t,ra,rb,ww, - a0,aa0,s1,s2,ss2,s3,ss3,a1,aa1,a,aa,b,bb,c; + static const int pr[M] = {8, 10, 18, 32}; + int i, j, n, ux, dx, p; + double dbl_n, u, p0, q, r0, w, nln2a, luai, lubi, lvaj, lvbj, + sij, ssij, ttij, A, B, B0, y, y1, y2, polI, polII, sa, sb, + t1, t2, t7, t8, t, ra, rb, ww, + a0, aa0, s1, s2, ss2, s3, ss3, a1, aa1, a, aa, b, bb, c; #ifndef DLA_FMS - double t3,t4,t5,t6; + double t3, t4, t5, t6; #endif number num; - mp_no mpx,mpy,mpy1,mpy2,mperr; + mp_no mpx, mpy, mpy1, mpy2, mperr; #include "ulog.tbl" #include "ulog.h" /* Treating special values of x ( x<=0, x=INF, x=NaN etc.). */ - num.d = x; ux = num.i[HIGH_HALF]; dx = num.i[LOW_HALF]; - n=0; - if (__builtin_expect(ux < 0x00100000, 0)) { - if (__builtin_expect(((ux & 0x7fffffff) | dx) == 0, 0)) - return MHALF/ZERO; /* return -INF */ - if (__builtin_expect(ux < 0, 0)) - return (x-x)/ZERO; /* return NaN */ - n -= 54; x *= two54.d; /* scale x */ - num.d = x; - } - if (__builtin_expect(ux >= 0x7ff00000, 0)) - return x+x; /* INF or NaN */ + num.d = x; + ux = num.i[HIGH_HALF]; + dx = num.i[LOW_HALF]; + n = 0; + if (__builtin_expect (ux < 0x00100000, 0)) + { + if (__builtin_expect (((ux & 0x7fffffff) | dx) == 0, 0)) + return MHALF / 0.0; /* return -INF */ + if (__builtin_expect (ux < 0, 0)) + return (x - x) / 0.0; /* return NaN */ + n -= 54; + x *= two54.d; /* scale x */ + num.d = x; + } + if (__builtin_expect (ux >= 0x7ff00000, 0)) + return x + x; /* INF or NaN */ /* Regular values of x */ - w = x-ONE; - if (__builtin_expect(ABS(w) > U03, 1)) { goto case_03; } - + w = x - 1; + if (__builtin_expect (ABS (w) > U03, 1)) + goto case_03; /*--- Stage I, the case abs(x-1) < 0.03 */ - t8 = MHALF*w; - EMULV(t8,w,a,aa,t1,t2,t3,t4,t5) - EADD(w,a,b,bb) - + t8 = MHALF * w; + EMULV (t8, w, a, aa, t1, t2, t3, t4, t5); + EADD (w, a, b, bb); /* Evaluate polynomial II */ - polII = (b0.d+w*(b1.d+w*(b2.d+w*(b3.d+w*(b4.d+ - w*(b5.d+w*(b6.d+w*(b7.d+w*b8.d))))))))*w*w*w; - c = (aa+bb)+polII; + polII = b7.d + w * b8.d; + polII = b6.d + w * polII; + polII = b5.d + w * polII; + polII = b4.d + w * polII; + polII = b3.d + w * polII; + polII = b2.d + w * polII; + polII = b1.d + w * polII; + polII = b0.d + w * polII; + polII *= w * w * w; + c = (aa + bb) + polII; /* End stage I, case abs(x-1) < 0.03 */ - if ((y=b+(c+b*E2)) == b+(c-b*E2)) return y; + if ((y = b + (c + b * E2)) == b + (c - b * E2)) + return y; /*--- Stage II, the case abs(x-1) < 0.03 */ - a = d11.d+w*(d12.d+w*(d13.d+w*(d14.d+w*(d15.d+w*(d16.d+ - w*(d17.d+w*(d18.d+w*(d19.d+w*d20.d)))))))); - EMULV(w,a,s2,ss2,t1,t2,t3,t4,t5) - ADD2(d10.d,dd10.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d9.d,dd9.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d8.d,dd8.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d7.d,dd7.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d6.d,dd6.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d5.d,dd5.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d4.d,dd4.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d3.d,dd3.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d2.d,dd2.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(w,ZERO,s2,ss2,s3,ss3,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(w,ZERO, s3,ss3, b, bb,t1,t2) + a = d19.d + w * d20.d; + a = d18.d + w * a; + a = d17.d + w * a; + a = d16.d + w * a; + a = d15.d + w * a; + a = d14.d + w * a; + a = d13.d + w * a; + a = d12.d + w * a; + a = d11.d + w * a; + + EMULV (w, a, s2, ss2, t1, t2, t3, t4, t5); + ADD2 (d10.d, dd10.d, s2, ss2, s3, ss3, t1, t2); + MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (d9.d, dd9.d, s2, ss2, s3, ss3, t1, t2); + MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (d8.d, dd8.d, s2, ss2, s3, ss3, t1, t2); + MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (d7.d, dd7.d, s2, ss2, s3, ss3, t1, t2); + MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (d6.d, dd6.d, s2, ss2, s3, ss3, t1, t2); + MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (d5.d, dd5.d, s2, ss2, s3, ss3, t1, t2); + MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (d4.d, dd4.d, s2, ss2, s3, ss3, t1, t2); + MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (d3.d, dd3.d, s2, ss2, s3, ss3, t1, t2); + MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (d2.d, dd2.d, s2, ss2, s3, ss3, t1, t2); + MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (w, 0, s2, ss2, s3, ss3, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (w, 0, s3, ss3, b, bb, t1, t2); /* End stage II, case abs(x-1) < 0.03 */ - if ((y=b+(bb+b*E4)) == b+(bb-b*E4)) return y; + if ((y = b + (bb + b * E4)) == b + (bb - b * E4)) + return y; goto stage_n; /*--- Stage I, the case abs(x-1) > 0.03 */ - case_03: +case_03: /* Find n,u such that x = u*2**n, 1/sqrt(2) < u < sqrt(2) */ n += (num.i[HIGH_HALF] >> 20) - 1023; num.i[HIGH_HALF] = (num.i[HIGH_HALF] & 0x000fffff) | 0x3ff00000; - if (num.d > SQRT_2) { num.d *= HALF; n++; } - u = num.d; dbl_n = (double) n; + if (num.d > SQRT_2) + { + num.d *= HALF; + n++; + } + u = num.d; + dbl_n = (double) n; /* Find i such that ui=1+(i-75)/2**8 is closest to u (i= 0,1,2,...,181) */ num.d += h1.d; i = (num.i[HIGH_HALF] & 0x000fffff) >> 12; /* Find j such that vj=1+(j-180)/2**16 is closest to v=u/ui (j= 0,...,361) */ - num.d = u*Iu[i].d + h2.d; + num.d = u * Iu[i].d + h2.d; j = (num.i[HIGH_HALF] & 0x000fffff) >> 4; /* Compute w=(u-ui*vj)/(ui*vj) */ - p0=(ONE+(i-75)*DEL_U)*(ONE+(j-180)*DEL_V); - q=u-p0; r0=Iu[i].d*Iv[j].d; w=q*r0; + p0 = (1 + (i - 75) * DEL_U) * (1 + (j - 180) * DEL_V); + q = u - p0; + r0 = Iu[i].d * Iv[j].d; + w = q * r0; /* Evaluate polynomial I */ - polI = w+(a2.d+a3.d*w)*w*w; + polI = w + (a2.d + a3.d * w) * w * w; /* Add up everything */ - nln2a = dbl_n*LN2A; - luai = Lu[i][0].d; lubi = Lu[i][1].d; - lvaj = Lv[j][0].d; lvbj = Lv[j][1].d; - EADD(luai,lvaj,sij,ssij) - EADD(nln2a,sij,A ,ttij) - B0 = (((lubi+lvbj)+ssij)+ttij)+dbl_n*LN2B; - B = polI+B0; + nln2a = dbl_n * LN2A; + luai = Lu[i][0].d; + lubi = Lu[i][1].d; + lvaj = Lv[j][0].d; + lvbj = Lv[j][1].d; + EADD (luai, lvaj, sij, ssij); + EADD (nln2a, sij, A, ttij); + B0 = (((lubi + lvbj) + ssij) + ttij) + dbl_n * LN2B; + B = polI + B0; /* End stage I, case abs(x-1) >= 0.03 */ - if ((y=A+(B+E1)) == A+(B-E1)) return y; + if ((y = A + (B + E1)) == A + (B - E1)) + return y; /*--- Stage II, the case abs(x-1) > 0.03 */ /* Improve the accuracy of r0 */ - EMULV(p0,r0,sa,sb,t1,t2,t3,t4,t5) - t=r0*((ONE-sa)-sb); - EADD(r0,t,ra,rb) + EMULV (p0, r0, sa, sb, t1, t2, t3, t4, t5); + t = r0 * ((1 - sa) - sb); + EADD (r0, t, ra, rb); /* Compute w */ - MUL2(q,ZERO,ra,rb,w,ww,t1,t2,t3,t4,t5,t6,t7,t8) + MUL2 (q, 0, ra, rb, w, ww, t1, t2, t3, t4, t5, t6, t7, t8); - EADD(A,B0,a0,aa0) + EADD (A, B0, a0, aa0); /* Evaluate polynomial III */ - s1 = (c3.d+(c4.d+c5.d*w)*w)*w; - EADD(c2.d,s1,s2,ss2) - MUL2(s2,ss2,w,ww,s3,ss3,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(s3,ss3,w,ww,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(s2,ss2,w,ww,s3,ss3,t1,t2) - ADD2(s3,ss3,a0,aa0,a1,aa1,t1,t2) + s1 = (c3.d + (c4.d + c5.d * w) * w) * w; + EADD (c2.d, s1, s2, ss2); + MUL2 (s2, ss2, w, ww, s3, ss3, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (s3, ss3, w, ww, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (s2, ss2, w, ww, s3, ss3, t1, t2); + ADD2 (s3, ss3, a0, aa0, a1, aa1, t1, t2); /* End stage II, case abs(x-1) >= 0.03 */ - if ((y=a1+(aa1+E3)) == a1+(aa1-E3)) return y; + if ((y = a1 + (aa1 + E3)) == a1 + (aa1 - E3)) + return y; /* Final stages. Use multi-precision arithmetic. */ - stage_n: - - for (i=0; i<M; i++) { - p = pr[i]; - __dbl_mp(x,&mpx,p); __dbl_mp(y,&mpy,p); - __mplog(&mpx,&mpy,p); - __dbl_mp(e[i].d,&mperr,p); - __add(&mpy,&mperr,&mpy1,p); __sub(&mpy,&mperr,&mpy2,p); - __mp_dbl(&mpy1,&y1,p); __mp_dbl(&mpy2,&y2,p); - if (y1==y2) return y1; - } +stage_n: + + for (i = 0; i < M; i++) + { + p = pr[i]; + __dbl_mp (x, &mpx, p); + __dbl_mp (y, &mpy, p); + __mplog (&mpx, &mpy, p); + __dbl_mp (e[i].d, &mperr, p); + __add (&mpy, &mperr, &mpy1, p); + __sub (&mpy, &mperr, &mpy2, p); + __mp_dbl (&mpy1, &y1, p); + __mp_dbl (&mpy2, &y2, p); + if (y1 == y2) + return y1; + } return y1; } + #ifndef __ieee754_log strong_alias (__ieee754_log, __log_finite) #endif diff --git a/libc/sysdeps/ieee754/dbl-64/e_pow.c b/libc/sysdeps/ieee754/dbl-64/e_pow.c index ee2711322..9a766e722 100644 --- a/libc/sysdeps/ieee754/dbl-64/e_pow.c +++ b/libc/sysdeps/ieee754/dbl-64/e_pow.c @@ -64,9 +64,6 @@ double SECTION __ieee754_pow(double x, double y) { double z,a,aa,error, t,a1,a2,y1,y2; -#if 0 - double gor=1.0; -#endif mynumber u,v; int k; int4 qx,qy; @@ -74,8 +71,9 @@ __ieee754_pow(double x, double y) { u.x=x; if (v.i[LOW_HALF] == 0) { /* of y */ qx = u.i[HIGH_HALF]&0x7fffffff; - /* Checking if x is not too small to compute */ - if (((qx==0x7ff00000)&&(u.i[LOW_HALF]!=0))||(qx>0x7ff00000)) return NaNQ.x; + /* Is x a NaN? */ + if (((qx == 0x7ff00000) && (u.i[LOW_HALF] != 0)) || (qx > 0x7ff00000)) + return x; if (y == 1.0) return x; if (y == 2.0) return x*x; if (y == -1.0) return 1.0/x; @@ -114,7 +112,7 @@ __ieee754_pow(double x, double y) { if (x == 0) { if (((v.i[HIGH_HALF] & 0x7fffffff) == 0x7ff00000 && v.i[LOW_HALF] != 0) - || (v.i[HIGH_HALF] & 0x7fffffff) > 0x7ff00000) + || (v.i[HIGH_HALF] & 0x7fffffff) > 0x7ff00000) /* NaN */ return y; if (ABS(y) > 1.0e20) return (y>0)?0:1.0/0.0; k = checkint(y); @@ -127,9 +125,10 @@ __ieee754_pow(double x, double y) { qx = u.i[HIGH_HALF]&0x7fffffff; /* no sign */ qy = v.i[HIGH_HALF]&0x7fffffff; /* no sign */ - if (qx >= 0x7ff00000 && (qx > 0x7ff00000 || u.i[LOW_HALF] != 0)) return NaNQ.x; - if (qy >= 0x7ff00000 && (qy > 0x7ff00000 || v.i[LOW_HALF] != 0)) - return x == 1.0 ? 1.0 : NaNQ.x; + if (qx >= 0x7ff00000 && (qx > 0x7ff00000 || u.i[LOW_HALF] != 0)) /* NaN */ + return x; + if (qy >= 0x7ff00000 && (qy > 0x7ff00000 || v.i[LOW_HALF] != 0)) /* NaN */ + return x == 1.0 ? 1.0 : y; /* if x<0 */ if (u.i[HIGH_HALF] < 0) { @@ -142,7 +141,7 @@ __ieee754_pow(double x, double y) { } else if (qx == 0x7ff00000) return y < 0 ? 0.0 : INF.x; - return NaNQ.x; /* y not integer and x<0 */ + return (x - x) / (x - x); /* y not integer and x<0 */ } else if (qx == 0x7ff00000) { @@ -156,8 +155,7 @@ __ieee754_pow(double x, double y) { /* x>0 */ if (qx == 0x7ff00000) /* x= 2^-0x3ff */ - {if (y == 0) return NaNQ.x; - return (y>0)?x:0; } + return y > 0 ? x : 0; if (qy > 0x45f00000 && qy < 0x7ff00000) { if (x == 1.0) return 1.0; @@ -206,13 +204,7 @@ static double SECTION log1(double x, double *delta, double *error) { int i,j,m; -#if 0 - int n; -#endif double uu,vv,eps,nx,e,e1,e2,t,t1,t2,res,add=0; -#if 0 - double cor; -#endif mynumber u,v; #ifdef BIG_ENDI mynumber @@ -300,13 +292,7 @@ static double SECTION my_log2(double x, double *delta, double *error) { int i,j,m; -#if 0 - int n; -#endif double uu,vv,eps,nx,e,e1,e2,t,t1,t2,res,add=0; -#if 0 - double cor; -#endif double ou1,ou2,lu1,lu2,ov,lv1,lv2,a,a1,a2; double y,yy,z,zz,j1,j2,j7,j8; #ifndef DLA_FMS @@ -397,9 +383,6 @@ SECTION checkint(double x) { union {int4 i[2]; double x;} u; int k,m,n; -#if 0 - int l; -#endif u.x = x; m = u.i[HIGH_HALF]&0x7fffffff; /* no sign */ if (m >= 0x7ff00000) return 0; /* x is +/-inf or NaN */ diff --git a/libc/sysdeps/ieee754/dbl-64/e_remainder.c b/libc/sysdeps/ieee754/dbl-64/e_remainder.c index ac4b55f9d..39ca0c2d0 100644 --- a/libc/sysdeps/ieee754/dbl-64/e_remainder.c +++ b/libc/sysdeps/ieee754/dbl-64/e_remainder.c @@ -42,13 +42,7 @@ double __ieee754_remainder(double x, double y) { double z,d,xx; -#if 0 - double yy; -#endif int4 kx,ky,n,nn,n1,m1,l; -#if 0 - int4 m; -#endif mynumber u,t,w={{0,0}},v={{0,0}},ww={{0,0}},r; u.x=x; t.x=y; @@ -117,12 +111,14 @@ double __ieee754_remainder(double x, double y) else return (z>0)?z-y:z+y; } else { /* if x is too big */ - if (kx == 0x7ff00000 && u.i[LOW_HALF] == 0 && y == 1.0) - return x / x; - if (kx>=0x7ff00000||(ky==0&&t.i[LOW_HALF]==0)||ky>0x7ff00000|| - (ky==0x7ff00000&&t.i[LOW_HALF]!=0)) - return (u.i[HIGH_HALF]&0x80000000)?nNAN.x:NAN.x; - else return x; + if (ky==0 && t.i[LOW_HALF] == 0) /* y = 0 */ + return (x * y) / (x * y); + else if (kx >= 0x7ff00000 /* x not finite */ + || (ky>0x7ff00000 /* y is NaN */ + || (ky == 0x7ff00000 && t.i[LOW_HALF] != 0))) + return (x * y) / (x * y); + else + return x; } } } diff --git a/libc/sysdeps/ieee754/dbl-64/mpa-arch.h b/libc/sysdeps/ieee754/dbl-64/mpa-arch.h new file mode 100644 index 000000000..7de9d51ae --- /dev/null +++ b/libc/sysdeps/ieee754/dbl-64/mpa-arch.h @@ -0,0 +1,47 @@ +/* Overridable constants and operations. + Copyright (C) 2013 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +#include <stdint.h> + +typedef long mantissa_t; +typedef int64_t mantissa_store_t; + +#define TWOPOW(i) (1L << i) + +#define RADIX_EXP 24 +#define RADIX TWOPOW (RADIX_EXP) /* 2^24 */ + +/* Divide D by RADIX and put the remainder in R. D must be a non-negative + integral value. */ +#define DIV_RADIX(d, r) \ + ({ \ + r = d & (RADIX - 1); \ + d >>= RADIX_EXP; \ + }) + +/* Put the integer component of a double X in R and retain the fraction in + X. This is used in extracting mantissa digits for MP_NO by using the + integer portion of the current value of the number as the current mantissa + digit and then scaling by RADIX to get the next mantissa digit in the same + manner. */ +#define INTEGER_OF(x, i) \ + ({ \ + i = (mantissa_t) x; \ + x -= i; \ + }) + +/* Align IN down to F. The code assumes that F is a power of two. */ +#define ALIGN_DOWN_TO(in, f) ((in) & -(f)) diff --git a/libc/sysdeps/ieee754/dbl-64/mpa.c b/libc/sysdeps/ieee754/dbl-64/mpa.c index 076647654..a3feb175e 100644 --- a/libc/sysdeps/ieee754/dbl-64/mpa.c +++ b/libc/sysdeps/ieee754/dbl-64/mpa.c @@ -80,14 +80,14 @@ __acr (const mp_no *x, const mp_no *y, int p) { long i; - if (X[0] == ZERO) + if (X[0] == 0) { - if (Y[0] == ZERO) + if (Y[0] == 0) i = 0; else i = -1; } - else if (Y[0] == ZERO) + else if (Y[0] == 0) i = 1; else { @@ -125,7 +125,8 @@ norm (const mp_no *x, double *y, int p) { #define R RADIXI long i; - double a, c, u, v, z[5]; + double c; + mantissa_t a, u, v, z[5]; if (p < 5) { if (p == 1) @@ -139,44 +140,41 @@ norm (const mp_no *x, double *y, int p) } else { - for (a = ONE, z[1] = X[1]; z[1] < TWO23;) + for (a = 1, z[1] = X[1]; z[1] < TWO23;) { - a *= TWO; - z[1] *= TWO; + a *= 2; + z[1] *= 2; } for (i = 2; i < 5; i++) { - z[i] = X[i] * a; - u = (z[i] + CUTTER) - CUTTER; - if (u > z[i]) - u -= RADIX; - z[i] -= u; - z[i - 1] += u * RADIXI; + mantissa_store_t d, r; + d = X[i] * (mantissa_store_t) a; + DIV_RADIX (d, r); + z[i] = r; + z[i - 1] += d; } - u = (z[3] + TWO71) - TWO71; - if (u > z[3]) - u -= TWO19; + u = ALIGN_DOWN_TO (z[3], TWO19); v = z[3] - u; if (v == TWO18) { - if (z[4] == ZERO) + if (z[4] == 0) { for (i = 5; i <= p; i++) { - if (X[i] == ZERO) + if (X[i] == 0) continue; else { - z[3] += ONE; + z[3] += 1; break; } } } else - z[3] += ONE; + z[3] += 1; } c = (z[1] + R * (z[2] + R * z[3])) / a; @@ -200,12 +198,13 @@ denorm (const mp_no *x, double *y, int p) { long i, k; long p2 = p; - double c, u, z[5]; + double c; + mantissa_t u, z[5]; #define R RADIXI if (EX < -44 || (EX == -44 && X[1] < TWO5)) { - *y = ZERO; + *y = 0; return; } @@ -214,21 +213,21 @@ denorm (const mp_no *x, double *y, int p) if (EX == -42) { z[1] = X[1] + TWO10; - z[2] = ZERO; - z[3] = ZERO; + z[2] = 0; + z[3] = 0; k = 3; } else if (EX == -43) { z[1] = TWO10; z[2] = X[1]; - z[3] = ZERO; + z[3] = 0; k = 2; } else { z[1] = TWO10; - z[2] = ZERO; + z[2] = 0; z[3] = X[1]; k = 1; } @@ -239,7 +238,7 @@ denorm (const mp_no *x, double *y, int p) { z[1] = X[1] + TWO10; z[2] = X[2]; - z[3] = ZERO; + z[3] = 0; k = 3; } else if (EX == -43) @@ -252,7 +251,7 @@ denorm (const mp_no *x, double *y, int p) else { z[1] = TWO10; - z[2] = ZERO; + z[2] = 0; z[3] = X[1]; k = 1; } @@ -274,25 +273,23 @@ denorm (const mp_no *x, double *y, int p) else { z[1] = TWO10; - z[2] = ZERO; + z[2] = 0; k = 1; } z[3] = X[k]; } - u = (z[3] + TWO57) - TWO57; - if (u > z[3]) - u -= TWO5; + u = ALIGN_DOWN_TO (z[3], TWO5); if (u == z[3]) { for (i = k + 1; i <= p2; i++) { - if (X[i] == ZERO) + if (X[i] == 0) continue; else { - z[3] += ONE; + z[3] += 1; break; } } @@ -309,9 +306,9 @@ denorm (const mp_no *x, double *y, int p) void __mp_dbl (const mp_no *x, double *y, int p) { - if (X[0] == ZERO) + if (X[0] == 0) { - *y = ZERO; + *y = 0; return; } @@ -330,41 +327,36 @@ __dbl_mp (double x, mp_no *y, int p) { long i, n; long p2 = p; - double u; /* Sign. */ - if (x == ZERO) + if (x == 0) { - Y[0] = ZERO; + Y[0] = 0; return; } - else if (x > ZERO) - Y[0] = ONE; + else if (x > 0) + Y[0] = 1; else { - Y[0] = MONE; + Y[0] = -1; x = -x; } /* Exponent. */ - for (EY = ONE; x >= RADIX; EY += ONE) + for (EY = 1; x >= RADIX; EY += 1) x *= RADIXI; - for (; x < ONE; EY -= ONE) + for (; x < 1; EY -= 1) x *= RADIX; /* Digits. */ n = MIN (p2, 4); for (i = 1; i <= n; i++) { - u = (x + TWO52) - TWO52; - if (u > x) - u -= ONE; - Y[i] = u; - x -= u; + INTEGER_OF (x, Y[i]); x *= RADIX; } for (; i <= p2; i++) - Y[i] = ZERO; + Y[i] = 0; } /* Add magnitudes of *X and *Y assuming that abs (*X) >= abs (*Y) > 0. The @@ -377,7 +369,7 @@ add_magnitudes (const mp_no *x, const mp_no *y, mp_no *z, int p) { long i, j, k; long p2 = p; - double zk; + mantissa_t zk; EZ = EX; @@ -391,7 +383,7 @@ add_magnitudes (const mp_no *x, const mp_no *y, mp_no *z, int p) return; } - zk = ZERO; + zk = 0; for (; j > 0; i--, j--) { @@ -399,12 +391,12 @@ add_magnitudes (const mp_no *x, const mp_no *y, mp_no *z, int p) if (zk >= RADIX) { Z[k--] = zk - RADIX; - zk = ONE; + zk = 1; } else { Z[k--] = zk; - zk = ZERO; + zk = 0; } } @@ -414,16 +406,16 @@ add_magnitudes (const mp_no *x, const mp_no *y, mp_no *z, int p) if (zk >= RADIX) { Z[k--] = zk - RADIX; - zk = ONE; + zk = 1; } else { Z[k--] = zk; - zk = ZERO; + zk = 0; } } - if (zk == ZERO) + if (zk == 0) { for (i = 1; i <= p2; i++) Z[i] = Z[i + 1]; @@ -431,7 +423,7 @@ add_magnitudes (const mp_no *x, const mp_no *y, mp_no *z, int p) else { Z[1] = zk; - EZ += ONE; + EZ += 1; } } @@ -445,7 +437,7 @@ sub_magnitudes (const mp_no *x, const mp_no *y, mp_no *z, int p) { long i, j, k; long p2 = p; - double zk; + mantissa_t zk; EZ = EX; i = p2; @@ -461,27 +453,27 @@ sub_magnitudes (const mp_no *x, const mp_no *y, mp_no *z, int p) /* The relevant least significant digit in Y is non-zero, so we factor it in to enhance accuracy. */ - if (j < p2 && Y[j + 1] > ZERO) + if (j < p2 && Y[j + 1] > 0) { Z[k + 1] = RADIX - Y[j + 1]; - zk = MONE; + zk = -1; } else - zk = Z[k + 1] = ZERO; + zk = Z[k + 1] = 0; /* Subtract and borrow. */ for (; j > 0; i--, j--) { zk += (X[i] - Y[j]); - if (zk < ZERO) + if (zk < 0) { Z[k--] = zk + RADIX; - zk = MONE; + zk = -1; } else { Z[k--] = zk; - zk = ZERO; + zk = 0; } } @@ -489,25 +481,25 @@ sub_magnitudes (const mp_no *x, const mp_no *y, mp_no *z, int p) for (; i > 0; i--) { zk += X[i]; - if (zk < ZERO) + if (zk < 0) { Z[k--] = zk + RADIX; - zk = MONE; + zk = -1; } else { Z[k--] = zk; - zk = ZERO; + zk = 0; } } /* Normalize. */ - for (i = 1; Z[i] == ZERO; i++); + for (i = 1; Z[i] == 0; i++); EZ = EZ - i + 1; for (k = 1; i <= p2 + 1;) Z[k++] = Z[i++]; for (; k <= p2;) - Z[k++] = ZERO; + Z[k++] = 0; } /* Add *X and *Y and store the result in *Z. X and Y may overlap, but not X @@ -519,12 +511,12 @@ __add (const mp_no *x, const mp_no *y, mp_no *z, int p) { int n; - if (X[0] == ZERO) + if (X[0] == 0) { __cpy (y, z, p); return; } - else if (Y[0] == ZERO) + else if (Y[0] == 0) { __cpy (x, z, p); return; @@ -556,7 +548,7 @@ __add (const mp_no *x, const mp_no *y, mp_no *z, int p) Z[0] = Y[0]; } else - Z[0] = ZERO; + Z[0] = 0; } } @@ -569,13 +561,13 @@ __sub (const mp_no *x, const mp_no *y, mp_no *z, int p) { int n; - if (X[0] == ZERO) + if (X[0] == 0) { __cpy (y, z, p); Z[0] = -Z[0]; return; } - else if (Y[0] == ZERO) + else if (Y[0] == 0) { __cpy (x, z, p); return; @@ -607,7 +599,7 @@ __sub (const mp_no *x, const mp_no *y, mp_no *z, int p) Z[0] = -Y[0]; } else - Z[0] = ZERO; + Z[0] = 0; } } @@ -621,28 +613,28 @@ __mul (const mp_no *x, const mp_no *y, mp_no *z, int p) { long i, j, k, ip, ip2; long p2 = p; - double u, zk; + mantissa_store_t zk; const mp_no *a; - double *diag; + mantissa_store_t *diag; /* Is z=0? */ - if (__glibc_unlikely (X[0] * Y[0] == ZERO)) + if (__glibc_unlikely (X[0] * Y[0] == 0)) { - Z[0] = ZERO; + Z[0] = 0; return; } /* We need not iterate through all X's and Y's since it's pointless to multiply zeroes. Here, both are zero... */ for (ip2 = p2; ip2 > 0; ip2--) - if (X[ip2] != ZERO || Y[ip2] != ZERO) + if (X[ip2] != 0 || Y[ip2] != 0) break; - a = X[ip2] != ZERO ? y : x; + a = X[ip2] != 0 ? y : x; /* ... and here, at least one of them is still zero. */ for (ip = ip2; ip > 0; ip--) - if (a->d[ip] != ZERO) + if (a->d[ip] != 0) break; /* The product looks like this for p = 3 (as an example): @@ -669,22 +661,22 @@ __mul (const mp_no *x, const mp_no *y, mp_no *z, int p) Another thing that becomes evident is that only the most significant ip+ip2 digits of the result are non-zero, where ip and ip2 are the 'internal precision' of the input numbers, i.e. digits after ip and ip2 - are all ZERO. */ + are all 0. */ k = (__glibc_unlikely (p2 < 3)) ? p2 + p2 : p2 + 3; while (k > ip + ip2 + 1) - Z[k--] = ZERO; + Z[k--] = 0; - zk = ZERO; + zk = 0; /* Precompute sums of diagonal elements so that we can directly use them later. See the next comment to know we why need them. */ - diag = alloca (k * sizeof (double)); - double d = ZERO; + diag = alloca (k * sizeof (mantissa_store_t)); + mantissa_store_t d = 0; for (i = 1; i <= ip; i++) { - d += X[i] * Y[i]; + d += X[i] * (mantissa_store_t) Y[i]; diag[i] = d; } while (i < k) @@ -697,18 +689,15 @@ __mul (const mp_no *x, const mp_no *y, mp_no *z, int p) if (k % 2 == 0) /* We want to add this only once, but since we subtract it in the sum of products above, we add twice. */ - zk += 2 * X[lim] * Y[lim]; + zk += 2 * X[lim] * (mantissa_store_t) Y[lim]; for (i = k - p2, j = p2; i < j; i++, j--) - zk += (X[i] + X[j]) * (Y[i] + Y[j]); + zk += (X[i] + X[j]) * (mantissa_store_t) (Y[i] + Y[j]); zk -= diag[k - 1]; - u = (zk + CUTTER) - CUTTER; - if (u > zk) - u -= RADIX; - Z[k--] = zk - u; - zk = u * RADIXI; + DIV_RADIX (zk, Z[k]); + k--; } /* The real deal. Mantissa digit Z[k] is the sum of all X[i] * Y[j] where i @@ -731,18 +720,15 @@ __mul (const mp_no *x, const mp_no *y, mp_no *z, int p) if (k % 2 == 0) /* We want to add this only once, but since we subtract it in the sum of products above, we add twice. */ - zk += 2 * X[lim] * Y[lim]; + zk += 2 * X[lim] * (mantissa_store_t) Y[lim]; for (i = 1, j = k - 1; i < j; i++, j--) - zk += (X[i] + X[j]) * (Y[i] + Y[j]); + zk += (X[i] + X[j]) * (mantissa_store_t) (Y[i] + Y[j]); zk -= diag[k - 1]; - u = (zk + CUTTER) - CUTTER; - if (u > zk) - u -= RADIX; - Z[k--] = zk - u; - zk = u * RADIXI; + DIV_RADIX (zk, Z[k]); + k--; } Z[k] = zk; @@ -752,7 +738,7 @@ __mul (const mp_no *x, const mp_no *y, mp_no *z, int p) int e = EX + EY; /* Is there a carry beyond the most significant digit? */ - if (__glibc_unlikely (Z[1] == ZERO)) + if (__glibc_unlikely (Z[1] == 0)) { for (i = 1; i <= p2; i++) Z[i] = Z[i + 1]; @@ -774,35 +760,35 @@ SECTION __sqr (const mp_no *x, mp_no *y, int p) { long i, j, k, ip; - double u, yk; + mantissa_store_t yk; /* Is z=0? */ - if (__glibc_unlikely (X[0] == ZERO)) + if (__glibc_unlikely (X[0] == 0)) { - Y[0] = ZERO; + Y[0] = 0; return; } /* We need not iterate through all X's since it's pointless to multiply zeroes. */ for (ip = p; ip > 0; ip--) - if (X[ip] != ZERO) + if (X[ip] != 0) break; k = (__glibc_unlikely (p < 3)) ? p + p : p + 3; while (k > 2 * ip + 1) - Y[k--] = ZERO; + Y[k--] = 0; - yk = ZERO; + yk = 0; while (k > p) { - double yk2 = 0.0; + mantissa_store_t yk2 = 0; long lim = k / 2; if (k % 2 == 0) - yk += X[lim] * X[lim]; + yk += X[lim] * (mantissa_store_t) X[lim]; /* In __mul, this loop (and the one within the next while loop) run between a range to calculate the mantissa as follows: @@ -814,41 +800,35 @@ __sqr (const mp_no *x, mp_no *y, int p) result. For cases where the range size is even, the mid-point needs to be added separately (above). */ for (i = k - p, j = p; i < j; i++, j--) - yk2 += X[i] * X[j]; + yk2 += X[i] * (mantissa_store_t) X[j]; - yk += 2.0 * yk2; + yk += 2 * yk2; - u = (yk + CUTTER) - CUTTER; - if (u > yk) - u -= RADIX; - Y[k--] = yk - u; - yk = u * RADIXI; + DIV_RADIX (yk, Y[k]); + k--; } while (k > 1) { - double yk2 = 0.0; + mantissa_store_t yk2 = 0; long lim = k / 2; if (k % 2 == 0) - yk += X[lim] * X[lim]; + yk += X[lim] * (mantissa_store_t) X[lim]; /* Likewise for this loop. */ for (i = 1, j = k - 1; i < j; i++, j--) - yk2 += X[i] * X[j]; + yk2 += X[i] * (mantissa_store_t) X[j]; - yk += 2.0 * yk2; + yk += 2 * yk2; - u = (yk + CUTTER) - CUTTER; - if (u > yk) - u -= RADIX; - Y[k--] = yk - u; - yk = u * RADIXI; + DIV_RADIX (yk, Y[k]); + k--; } Y[k] = yk; /* Squares are always positive. */ - Y[0] = 1.0; + Y[0] = 1; /* Get the exponent sum into an intermediate variable. This is a subtle optimization, where given enough registers, all operations on the exponent @@ -856,7 +836,7 @@ __sqr (const mp_no *x, mp_no *y, int p) int e = EX * 2; /* Is there a carry beyond the most significant digit? */ - if (__glibc_unlikely (Y[1] == ZERO)) + if (__glibc_unlikely (Y[1] == 0)) { for (i = 1; i <= p; i++) Y[i] = Y[i + 1]; @@ -888,7 +868,7 @@ __inv (const mp_no *x, mp_no *y, int p) __cpy (x, &z, p); z.e = 0; __mp_dbl (&z, &t, p); - t = ONE / t; + t = 1 / t; __dbl_mp (t, y, p); EY -= EX; @@ -914,8 +894,8 @@ __dvd (const mp_no *x, const mp_no *y, mp_no *z, int p) { mp_no w; - if (X[0] == ZERO) - Z[0] = ZERO; + if (X[0] == 0) + Z[0] = 0; else { __inv (y, &w, p); diff --git a/libc/sysdeps/ieee754/dbl-64/mpa.h b/libc/sysdeps/ieee754/dbl-64/mpa.h index 168b334ed..5fad58439 100644 --- a/libc/sysdeps/ieee754/dbl-64/mpa.h +++ b/libc/sysdeps/ieee754/dbl-64/mpa.h @@ -35,6 +35,7 @@ /* Common types and definition */ /************************************************************************/ +#include <mpa-arch.h> /* The mp_no structure holds the details of a multi-precision floating point number. @@ -61,7 +62,7 @@ typedef struct { int e; - double d[40]; + mantissa_t d[40]; } mp_no; typedef union @@ -82,23 +83,23 @@ extern const mp_no mptwo; #define ABS(x) ((x) < 0 ? -(x) : (x)) -#define RADIX 0x1.0p24 /* 2^24 */ -#define RADIXI 0x1.0p-24 /* 2^-24 */ -#define CUTTER 0x1.0p76 /* 2^76 */ - -#define ZERO 0.0 /* 0 */ -#define MZERO -0.0 /* 0 with the sign bit set */ -#define ONE 1.0 /* 1 */ -#define MONE -1.0 /* -1 */ -#define TWO 2.0 /* 2 */ - -#define TWO5 0x1.0p5 /* 2^5 */ -#define TWO8 0x1.0p8 /* 2^52 */ -#define TWO10 0x1.0p10 /* 2^10 */ -#define TWO18 0x1.0p18 /* 2^18 */ -#define TWO19 0x1.0p19 /* 2^19 */ -#define TWO23 0x1.0p23 /* 2^23 */ -#define TWO52 0x1.0p52 /* 2^52 */ +#ifndef RADIXI +# define RADIXI 0x1.0p-24 /* 2^-24 */ +#endif + +#ifndef TWO52 +# define TWO52 0x1.0p52 /* 2^52 */ +#endif + +#define TWO5 TWOPOW (5) /* 2^5 */ +#define TWO8 TWOPOW (8) /* 2^52 */ +#define TWO10 TWOPOW (10) /* 2^10 */ +#define TWO18 TWOPOW (18) /* 2^18 */ +#define TWO19 TWOPOW (19) /* 2^19 */ +#define TWO23 TWOPOW (23) /* 2^23 */ + +#define HALFRAD TWO23 + #define TWO57 0x1.0p57 /* 2^57 */ #define TWO71 0x1.0p71 /* 2^71 */ #define TWOM1032 0x1.0p-1032 /* 2^-1032 */ @@ -106,7 +107,6 @@ extern const mp_no mptwo; #define HALF 0x1.0p-1 /* 1/2 */ #define MHALF -0x1.0p-1 /* -1/2 */ -#define HALFRAD 0x1.0p23 /* 2^23 */ int __acr (const mp_no *, const mp_no *, int); void __cpy (const mp_no *, mp_no *, int); @@ -147,10 +147,10 @@ __pow_mp (int pow, mp_no *y, int p) rem += 24; } /* The sign of any 2^x is always positive. */ - Y[0] = ONE; + Y[0] = 1; Y[1] = 1 << rem; - /* Everything else is ZERO. */ + /* Everything else is 0. */ for (i = 2; i <= p; i++) - Y[i] = ZERO; + Y[i] = 0; } diff --git a/libc/sysdeps/ieee754/dbl-64/mpatan.c b/libc/sysdeps/ieee754/dbl-64/mpatan.c index cc879d8ec..807b16a9b 100644 --- a/libc/sysdeps/ieee754/dbl-64/mpatan.c +++ b/libc/sysdeps/ieee754/dbl-64/mpatan.c @@ -74,7 +74,7 @@ __mpatan (mp_no *x, mp_no *y, int p) } } mptwoim1.e = 1; - mptwoim1.d[0] = ONE; + mptwoim1.d[0] = 1; /* Reduce x m times. */ __sqr (x, &mpsm, p); @@ -102,7 +102,7 @@ __mpatan (mp_no *x, mp_no *y, int p) __dvd (&mpsm, &mptwoim1, &mpt, p); for (i = n - 1; i > 1; i--) { - mptwoim1.d[1] -= TWO; + mptwoim1.d[1] -= 2; __dvd (&mpsm, &mptwoim1, &mpt1, p); __mul (&mpsm, &mpt, &mpt2, p); __sub (&mpt1, &mpt2, &mpt, p); diff --git a/libc/sysdeps/ieee754/dbl-64/mpatan2.c b/libc/sysdeps/ieee754/dbl-64/mpatan2.c index d29c2fbad..f66f9eb88 100644 --- a/libc/sysdeps/ieee754/dbl-64/mpatan2.c +++ b/libc/sysdeps/ieee754/dbl-64/mpatan2.c @@ -46,12 +46,12 @@ __mpatan2 (mp_no *y, mp_no *x, mp_no *z, int p) { mp_no mpt1, mpt2, mpt3; - if (X[0] <= ZERO) + if (X[0] <= 0) { __dvd (x, y, &mpt1, p); __mul (&mpt1, &mpt1, &mpt2, p); - if (mpt1.d[0] != ZERO) - mpt1.d[0] = ONE; + if (mpt1.d[0] != 0) + mpt1.d[0] = 1; __add (&mpt2, &mpone, &mpt3, p); __mpsqrt (&mpt3, &mpt2, p); __add (&mpt1, &mpt2, &mpt3, p); diff --git a/libc/sysdeps/ieee754/dbl-64/mpexp.c b/libc/sysdeps/ieee754/dbl-64/mpexp.c index 565c6c853..06347b74b 100644 --- a/libc/sysdeps/ieee754/dbl-64/mpexp.c +++ b/libc/sysdeps/ieee754/dbl-64/mpexp.c @@ -43,7 +43,7 @@ SECTION __mpexp (mp_no *x, mp_no *y, int p) { int i, j, k, m, m1, m2, n; - double b; + mantissa_t b; static const int np[33] = { 0, 0, 0, 0, 3, 3, 4, 4, 5, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, @@ -80,12 +80,12 @@ __mpexp (mp_no *x, mp_no *y, int p) b = X[1]; m2 = 24 * EX; for (; b < HALFRAD; m2--) - b *= TWO; + b *= 2; if (b == HALFRAD) { for (i = 2; i <= p; i++) { - if (X[i] != ZERO) + if (X[i] != 0) break; } if (i == p + 1) diff --git a/libc/sysdeps/ieee754/dbl-64/mpsqrt.c b/libc/sysdeps/ieee754/dbl-64/mpsqrt.c index 71ef5ce77..230d1f36e 100644 --- a/libc/sysdeps/ieee754/dbl-64/mpsqrt.c +++ b/libc/sysdeps/ieee754/dbl-64/mpsqrt.c @@ -53,8 +53,8 @@ __mpsqrt (mp_no *x, mp_no *y, int p) { int i, m, ey; double dx, dy; - static const mp_no mphalf = {0, {1.0, 8388608.0 /* 2^23 */}}; - static const mp_no mp3halfs = {1, {1.0, 1.0, 8388608.0 /* 2^23 */}}; + static const mp_no mphalf = {0, {1.0, HALFRAD}}; + static const mp_no mp3halfs = {1, {1.0, 1.0, HALFRAD}}; mp_no mpxn, mpz, mpu, mpt1, mpt2; ey = EX / 2; diff --git a/libc/sysdeps/ieee754/dbl-64/mptan.c b/libc/sysdeps/ieee754/dbl-64/mptan.c index 51b5718e7..281bfca1c 100644 --- a/libc/sysdeps/ieee754/dbl-64/mptan.c +++ b/libc/sysdeps/ieee754/dbl-64/mptan.c @@ -56,7 +56,7 @@ __mptan (double x, mp_no *mpy, int p) if (n) { __dvd (&mpc, &mps, mpy, p); - mpy->d[0] *= MONE; + mpy->d[0] *= -1; } /* tan is negative in this area. */ else diff --git a/libc/sysdeps/ieee754/dbl-64/s_atan.c b/libc/sysdeps/ieee754/dbl-64/s_atan.c index 37442b72e..7b6c83ffb 100644 --- a/libc/sysdeps/ieee754/dbl-64/s_atan.c +++ b/libc/sysdeps/ieee754/dbl-64/s_atan.c @@ -43,186 +43,272 @@ #include "atnat.h" #include <math.h> -void __mpatan(mp_no *,mp_no *,int); /* see definition in mpatan.c */ -static double atanMp(double,const int[]); +void __mpatan (mp_no *, mp_no *, int); /* see definition in mpatan.c */ +static double atanMp (double, const int[]); /* Fix the sign of y and return */ -static double __signArctan(double x,double y){ - return __copysign(y, x); +static double +__signArctan (double x, double y) +{ + return __copysign (y, x); } /* An ultimate atan() routine. Given an IEEE double machine number x, */ /* routine computes the correctly rounded (to nearest) value of atan(x). */ -double atan(double x) { - - - double cor,s1,ss1,s2,ss2,t1,t2,t3,t7,t8,t9,t10,u,u2,u3, - v,vv,w,ww,y,yy,z,zz; +double +atan (double x) +{ + double cor, s1, ss1, s2, ss2, t1, t2, t3, t7, t8, t9, t10, u, u2, u3, + v, vv, w, ww, y, yy, z, zz; #ifndef DLA_FMS - double t4,t5,t6; -#endif -#if 0 - double y1,y2; -#endif - int i,ux,dx; -#if 0 - int p; + double t4, t5, t6; #endif - static const int pr[M]={6,8,10,32}; + int i, ux, dx; + static const int pr[M] = { 6, 8, 10, 32 }; number num; -#if 0 - mp_no mpt1,mpx,mpy,mpy1,mpy2,mperr; -#endif - num.d = x; ux = num.i[HIGH_HALF]; dx = num.i[LOW_HALF]; + num.d = x; + ux = num.i[HIGH_HALF]; + dx = num.i[LOW_HALF]; /* x=NaN */ - if (((ux&0x7ff00000)==0x7ff00000) && (((ux&0x000fffff)|dx)!=0x00000000)) - return x+x; + if (((ux & 0x7ff00000) == 0x7ff00000) + && (((ux & 0x000fffff) | dx) != 0x00000000)) + return x + x; /* Regular values of x, including denormals +-0 and +-INF */ - u = (x<ZERO) ? -x : x; - if (u<C) { - if (u<B) { - if (u<A) { /* u < A */ - return x; } - else { /* A <= u < B */ - v=x*x; yy=x*v*(d3.d+v*(d5.d+v*(d7.d+v*(d9.d+v*(d11.d+v*d13.d))))); - if ((y=x+(yy-U1*x)) == x+(yy+U1*x)) return y; - - EMULV(x,x,v,vv,t1,t2,t3,t4,t5) /* v+vv=x^2 */ - s1=v*(f11.d+v*(f13.d+v*(f15.d+v*(f17.d+v*f19.d)))); - ADD2(f9.d,ff9.d,s1,ZERO,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f7.d,ff7.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f5.d,ff5.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f3.d,ff3.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(x,ZERO,s1,ss1,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(x,ZERO,s2,ss2,s1,ss1,t1,t2) - if ((y=s1+(ss1-U5*s1)) == s1+(ss1+U5*s1)) return y; - - return atanMp(x,pr); - } } - else { /* B <= u < C */ - i=(TWO52+TWO8*u)-TWO52; i-=16; - z=u-cij[i][0].d; - yy=z*(cij[i][2].d+z*(cij[i][3].d+z*(cij[i][4].d+ - z*(cij[i][5].d+z* cij[i][6].d)))); - t1=cij[i][1].d; - if (i<112) { - if (i<48) u2=U21; /* u < 1/4 */ - else u2=U22; } /* 1/4 <= u < 1/2 */ - else { - if (i<176) u2=U23; /* 1/2 <= u < 3/4 */ - else u2=U24; } /* 3/4 <= u <= 1 */ - if ((y=t1+(yy-u2*t1)) == t1+(yy+u2*t1)) return __signArctan(x,y); - - z=u-hij[i][0].d; - s1=z*(hij[i][11].d+z*(hij[i][12].d+z*(hij[i][13].d+ - z*(hij[i][14].d+z* hij[i][15].d)))); - ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2) - MUL2(z,ZERO,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2) - MUL2(z,ZERO,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2) - MUL2(z,ZERO,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2) - MUL2(z,ZERO,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2) - if ((y=s2+(ss2-U6*s2)) == s2+(ss2+U6*s2)) return __signArctan(x,y); - - return atanMp(x,pr); - } - } - else { - if (u<D) { /* C <= u < D */ - w=ONE/u; - EMULV(w,u,t1,t2,t3,t4,t5,t6,t7) - ww=w*((ONE-t1)-t2); - i=(TWO52+TWO8*w)-TWO52; i-=16; - z=(w-cij[i][0].d)+ww; - yy=HPI1-z*(cij[i][2].d+z*(cij[i][3].d+z*(cij[i][4].d+ - z*(cij[i][5].d+z* cij[i][6].d)))); - t1=HPI-cij[i][1].d; - if (i<112) u3=U31; /* w < 1/2 */ - else u3=U32; /* w >= 1/2 */ - if ((y=t1+(yy-u3)) == t1+(yy+u3)) return __signArctan(x,y); - - DIV2(ONE,ZERO,u,ZERO,w,ww,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - t1=w-hij[i][0].d; - EADD(t1,ww,z,zz) - s1=z*(hij[i][11].d+z*(hij[i][12].d+z*(hij[i][13].d+ - z*(hij[i][14].d+z* hij[i][15].d)))); - ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2) - MUL2(z,zz,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2) - MUL2(z,zz,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2) - MUL2(z,zz,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2) - MUL2(z,zz,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2) - SUB2(HPI,HPI1,s2,ss2,s1,ss1,t1,t2) - if ((y=s1+(ss1-U7)) == s1+(ss1+U7)) return __signArctan(x,y); - - return atanMp(x,pr); - } - else { - if (u<E) { /* D <= u < E */ - w=ONE/u; v=w*w; - EMULV(w,u,t1,t2,t3,t4,t5,t6,t7) - yy=w*v*(d3.d+v*(d5.d+v*(d7.d+v*(d9.d+v*(d11.d+v*d13.d))))); - ww=w*((ONE-t1)-t2); - ESUB(HPI,w,t3,cor) - yy=((HPI1+cor)-ww)-yy; - if ((y=t3+(yy-U4)) == t3+(yy+U4)) return __signArctan(x,y); - - DIV2(ONE,ZERO,u,ZERO,w,ww,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - MUL2(w,ww,w,ww,v,vv,t1,t2,t3,t4,t5,t6,t7,t8) - s1=v*(f11.d+v*(f13.d+v*(f15.d+v*(f17.d+v*f19.d)))); - ADD2(f9.d,ff9.d,s1,ZERO,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f7.d,ff7.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f5.d,ff5.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(f3.d,ff3.d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(w,ww,s1,ss1,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(w,ww,s2,ss2,s1,ss1,t1,t2) - SUB2(HPI,HPI1,s1,ss1,s2,ss2,t1,t2) - if ((y=s2+(ss2-U8)) == s2+(ss2+U8)) return __signArctan(x,y); - - return atanMp(x,pr); - } - else { - /* u >= E */ - if (x>0) return HPI; - else return MHPI; } + u = (x < 0) ? -x : x; + if (u < C) + { + if (u < B) + { + if (u < A) + return x; + else + { /* A <= u < B */ + v = x * x; + yy = d11.d + v * d13.d; + yy = d9.d + v * yy; + yy = d7.d + v * yy; + yy = d5.d + v * yy; + yy = d3.d + v * yy; + yy *= x * v; + + if ((y = x + (yy - U1 * x)) == x + (yy + U1 * x)) + return y; + + EMULV (x, x, v, vv, t1, t2, t3, t4, t5); /* v+vv=x^2 */ + + s1 = f17.d + v * f19.d; + s1 = f15.d + v * s1; + s1 = f13.d + v * s1; + s1 = f11.d + v * s1; + s1 *= v; + + ADD2 (f9.d, ff9.d, s1, 0, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f7.d, ff7.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f5.d, ff5.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f3.d, ff3.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (x, 0, s1, ss1, s2, ss2, t1, t2, t3, t4, t5, t6, t7, + t8); + ADD2 (x, 0, s2, ss2, s1, ss1, t1, t2); + if ((y = s1 + (ss1 - U5 * s1)) == s1 + (ss1 + U5 * s1)) + return y; + + return atanMp (x, pr); + } + } + else + { /* B <= u < C */ + i = (TWO52 + TWO8 * u) - TWO52; + i -= 16; + z = u - cij[i][0].d; + yy = cij[i][5].d + z * cij[i][6].d; + yy = cij[i][4].d + z * yy; + yy = cij[i][3].d + z * yy; + yy = cij[i][2].d + z * yy; + yy *= z; + + t1 = cij[i][1].d; + if (i < 112) + { + if (i < 48) + u2 = U21; /* u < 1/4 */ + else + u2 = U22; + } /* 1/4 <= u < 1/2 */ + else + { + if (i < 176) + u2 = U23; /* 1/2 <= u < 3/4 */ + else + u2 = U24; + } /* 3/4 <= u <= 1 */ + if ((y = t1 + (yy - u2 * t1)) == t1 + (yy + u2 * t1)) + return __signArctan (x, y); + + z = u - hij[i][0].d; + + s1 = hij[i][14].d + z * hij[i][15].d; + s1 = hij[i][13].d + z * s1; + s1 = hij[i][12].d + z * s1; + s1 = hij[i][11].d + z * s1; + s1 *= z; + + ADD2 (hij[i][9].d, hij[i][10].d, s1, 0, s2, ss2, t1, t2); + MUL2 (z, 0, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][7].d, hij[i][8].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (z, 0, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][5].d, hij[i][6].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (z, 0, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][3].d, hij[i][4].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (z, 0, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][1].d, hij[i][2].d, s1, ss1, s2, ss2, t1, t2); + if ((y = s2 + (ss2 - U6 * s2)) == s2 + (ss2 + U6 * s2)) + return __signArctan (x, y); + + return atanMp (x, pr); + } } - } + else + { + if (u < D) + { /* C <= u < D */ + w = 1 / u; + EMULV (w, u, t1, t2, t3, t4, t5, t6, t7); + ww = w * ((1 - t1) - t2); + i = (TWO52 + TWO8 * w) - TWO52; + i -= 16; + z = (w - cij[i][0].d) + ww; + + yy = cij[i][5].d + z * cij[i][6].d; + yy = cij[i][4].d + z * yy; + yy = cij[i][3].d + z * yy; + yy = cij[i][2].d + z * yy; + yy = HPI1 - z * yy; + + t1 = HPI - cij[i][1].d; + if (i < 112) + u3 = U31; /* w < 1/2 */ + else + u3 = U32; /* w >= 1/2 */ + if ((y = t1 + (yy - u3)) == t1 + (yy + u3)) + return __signArctan (x, y); + + DIV2 (1 , 0, u, 0, w, ww, t1, t2, t3, t4, t5, t6, t7, t8, t9, + t10); + t1 = w - hij[i][0].d; + EADD (t1, ww, z, zz); + + s1 = hij[i][14].d + z * hij[i][15].d; + s1 = hij[i][13].d + z * s1; + s1 = hij[i][12].d + z * s1; + s1 = hij[i][11].d + z * s1; + s1 *= z; + + ADD2 (hij[i][9].d, hij[i][10].d, s1, 0, s2, ss2, t1, t2); + MUL2 (z, zz, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][7].d, hij[i][8].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (z, zz, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][5].d, hij[i][6].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (z, zz, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][3].d, hij[i][4].d, s1, ss1, s2, ss2, t1, t2); + MUL2 (z, zz, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (hij[i][1].d, hij[i][2].d, s1, ss1, s2, ss2, t1, t2); + SUB2 (HPI, HPI1, s2, ss2, s1, ss1, t1, t2); + if ((y = s1 + (ss1 - U7)) == s1 + (ss1 + U7)) + return __signArctan (x, y); + + return atanMp (x, pr); + } + else + { + if (u < E) + { /* D <= u < E */ + w = 1 / u; + v = w * w; + EMULV (w, u, t1, t2, t3, t4, t5, t6, t7); + + yy = d11.d + v * d13.d; + yy = d9.d + v * yy; + yy = d7.d + v * yy; + yy = d5.d + v * yy; + yy = d3.d + v * yy; + yy *= w * v; + ww = w * ((1 - t1) - t2); + ESUB (HPI, w, t3, cor); + yy = ((HPI1 + cor) - ww) - yy; + if ((y = t3 + (yy - U4)) == t3 + (yy + U4)) + return __signArctan (x, y); + + DIV2 (1 , 0, u, 0, w, ww, t1, t2, t3, t4, t5, t6, t7, t8, + t9, t10); + MUL2 (w, ww, w, ww, v, vv, t1, t2, t3, t4, t5, t6, t7, t8); + + s1 = f17.d + v * f19.d; + s1 = f15.d + v * s1; + s1 = f13.d + v * s1; + s1 = f11.d + v * s1; + s1 *= v; + + ADD2 (f9.d, ff9.d, s1, 0, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f7.d, ff7.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f5.d, ff5.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (f3.d, ff3.d, s1, ss1, s2, ss2, t1, t2); + MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (w, ww, s1, ss1, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (w, ww, s2, ss2, s1, ss1, t1, t2); + SUB2 (HPI, HPI1, s1, ss1, s2, ss2, t1, t2); + + if ((y = s2 + (ss2 - U8)) == s2 + (ss2 + U8)) + return __signArctan (x, y); + + return atanMp (x, pr); + } + else + { + /* u >= E */ + if (x > 0) + return HPI; + else + return MHPI; + } + } + } } /* Final stages. Compute atan(x) by multiple precision arithmetic */ -static double atanMp(double x,const int pr[]){ - mp_no mpx,mpy,mpy2,mperr,mpt1,mpy1; - double y1,y2; - int i,p; - -for (i=0; i<M; i++) { - p = pr[i]; - __dbl_mp(x,&mpx,p); __mpatan(&mpx,&mpy,p); - __dbl_mp(u9[i].d,&mpt1,p); __mul(&mpy,&mpt1,&mperr,p); - __add(&mpy,&mperr,&mpy1,p); __sub(&mpy,&mperr,&mpy2,p); - __mp_dbl(&mpy1,&y1,p); __mp_dbl(&mpy2,&y2,p); - if (y1==y2) return y1; - } - return y1; /*if unpossible to do exact computing */ +static double +atanMp (double x, const int pr[]) +{ + mp_no mpx, mpy, mpy2, mperr, mpt1, mpy1; + double y1, y2; + int i, p; + + for (i = 0; i < M; i++) + { + p = pr[i]; + __dbl_mp (x, &mpx, p); + __mpatan (&mpx, &mpy, p); + __dbl_mp (u9[i].d, &mpt1, p); + __mul (&mpy, &mpt1, &mperr, p); + __add (&mpy, &mperr, &mpy1, p); + __sub (&mpy, &mperr, &mpy2, p); + __mp_dbl (&mpy1, &y1, p); + __mp_dbl (&mpy2, &y2, p); + if (y1 == y2) + return y1; + } + return y1; /*if impossible to do exact computing */ } #ifdef NO_LONG_DOUBLE diff --git a/libc/sysdeps/ieee754/dbl-64/s_issignaling.c b/libc/sysdeps/ieee754/dbl-64/s_issignaling.c new file mode 100644 index 000000000..f475bc7bd --- /dev/null +++ b/libc/sysdeps/ieee754/dbl-64/s_issignaling.c @@ -0,0 +1,46 @@ +/* Test for signaling NaN. + Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <math.h> +#include <math_private.h> + +int +__issignaling (double x) +{ +#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN + u_int32_t hxi; + GET_HIGH_WORD (hxi, x); + /* We only have to care about the high-order bit of x's significand, because + having it set (sNaN) already makes the significand different from that + used to designate infinity. */ + return (hxi & 0x7ff80000) == 0x7ff80000; +#else + u_int32_t hxi, lxi; + EXTRACT_WORDS (hxi, lxi, x); + /* To keep the following comparison simple, toggle the quiet/signaling bit, + so that it is set for sNaNs. This is inverse to IEEE 754-2008 (as well as + common practice for IEEE 754-1985). */ + hxi ^= 0x00080000; + /* If lxi != 0, then set any suitable bit of the significand in hxi. */ + hxi |= (lxi | -lxi) >> 31; + /* We have to compare for greater (instead of greater or equal), because x's + significand being all-zero designates infinity not NaN. */ + return (hxi & 0x7fffffff) > 0x7ff80000; +#endif +} +libm_hidden_def (__issignaling) diff --git a/libc/sysdeps/ieee754/dbl-64/s_sin.c b/libc/sysdeps/ieee754/dbl-64/s_sin.c index 496f1e191..5038b7261 100644 --- a/libc/sysdeps/ieee754/dbl-64/s_sin.c +++ b/libc/sysdeps/ieee754/dbl-64/s_sin.c @@ -100,14 +100,8 @@ double SECTION __sin(double x){ double xx,res,t,cor,y,s,c,sn,ssn,cs,ccs,xn,a,da,db,eps,xn1,xn2; -#if 0 - double w[2]; -#endif mynumber u,v; int4 k,m,n; -#if 0 - int4 nn; -#endif double retval = 0; SET_RESTORE_ROUND_53BIT (FE_TONEAREST); @@ -902,10 +896,6 @@ SECTION bsloww(double x,double dx, double orig,int n) { static const double th2_36 = 206158430208.0; /* 1.5*2**37 */ double y,x1,x2,xx,r,t,res,cor,w[2]; -#if 0 - double a,da,xn; - union {int4 i[2]; double x;} v; -#endif x1=(x+th2_36)-th2_36; y = aa.x*x1*x1*x1; r=x+y; diff --git a/libc/sysdeps/ieee754/dbl-64/s_tan.c b/libc/sysdeps/ieee754/dbl-64/s_tan.c index c5446a6e5..54f863e54 100644 --- a/libc/sysdeps/ieee754/dbl-64/s_tan.c +++ b/libc/sysdeps/ieee754/dbl-64/s_tan.c @@ -46,462 +46,782 @@ # define SECTION #endif -static double tanMp(double); -void __mptan(double, mp_no *, int); +static double tanMp (double); +void __mptan (double, mp_no *, int); double SECTION -tan(double x) { +tan (double x) +{ #include "utan.h" #include "utan.tbl" - int ux,i,n; - double a,da,a2,b,db,c,dc,c1,cc1,c2,cc2,c3,cc3,fi,ffi,gi,pz,s,sy, - t,t1,t2,t3,t4,t7,t8,t9,t10,w,x2,xn,xx2,y,ya,yya,z0,z,zz,z2,zz2; + int ux, i, n; + double a, da, a2, b, db, c, dc, c1, cc1, c2, cc2, c3, cc3, fi, ffi, gi, pz, + s, sy, t, t1, t2, t3, t4, t7, t8, t9, t10, w, x2, xn, xx2, y, ya, yya, z0, + z, zz, z2, zz2; #ifndef DLA_FMS - double t5,t6; + double t5, t6; #endif int p; - number num,v; - mp_no mpa,mpt1,mpt2; -#if 0 - mp_no mpy; -#endif + number num, v; + mp_no mpa, mpt1, mpt2; double retval; - int __branred(double, double *, double *); - int __mpranred(double, mp_no *, int); + int __branred (double, double *, double *); + int __mpranred (double, mp_no *, int); SET_RESTORE_ROUND_53BIT (FE_TONEAREST); /* x=+-INF, x=NaN */ - num.d = x; ux = num.i[HIGH_HALF]; - if ((ux&0x7ff00000)==0x7ff00000) { - if ((ux&0x7fffffff)==0x7ff00000) - __set_errno (EDOM); - retval = x-x; - goto ret; - } + num.d = x; + ux = num.i[HIGH_HALF]; + if ((ux & 0x7ff00000) == 0x7ff00000) + { + if ((ux & 0x7fffffff) == 0x7ff00000) + __set_errno (EDOM); + retval = x - x; + goto ret; + } - w=(x<0.0) ? -x : x; + w = (x < 0.0) ? -x : x; /* (I) The case abs(x) <= 1.259e-8 */ - if (w<=g1.d) { retval = x; goto ret; } + if (w <= g1.d) + { + retval = x; + goto ret; + } /* (II) The case 1.259e-8 < abs(x) <= 0.0608 */ - if (w<=g2.d) { - - /* First stage */ - x2 = x*x; - t2 = x*x2*(d3.d+x2*(d5.d+x2*(d7.d+x2*(d9.d+x2*d11.d)))); - if ((y=x+(t2-u1.d*t2)) == x+(t2+u1.d*t2)) { retval = y; goto ret; } - - /* Second stage */ - c1 = x2*(a15.d+x2*(a17.d+x2*(a19.d+x2*(a21.d+x2*(a23.d+x2*(a25.d+ - x2*a27.d)))))); - EMULV(x,x,x2,xx2,t1,t2,t3,t4,t5) - ADD2(a13.d,aa13.d,c1,0.0,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a11.d,aa11.d,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a9.d ,aa9.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a7.d ,aa7.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a5.d ,aa5.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a3.d ,aa3.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(x ,0.0,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(x ,0.0,c2,cc2,c1,cc1,t1,t2) - if ((y=c1+(cc1-u2.d*c1)) == c1+(cc1+u2.d*c1)) { retval = y; goto ret; } - retval = tanMp(x); - goto ret; - } + if (w <= g2.d) + { - /* (III) The case 0.0608 < abs(x) <= 0.787 */ - if (w<=g3.d) { - - /* First stage */ - i = ((int) (mfftnhf.d+TWO8*w)); - z = w-xfg[i][0].d; z2 = z*z; s = (x<0.0) ? MONE : ONE; - pz = z+z*z2*(e0.d+z2*e1.d); - fi = xfg[i][1].d; gi = xfg[i][2].d; t2 = pz*(gi+fi)/(gi-pz); - if ((y=fi+(t2-fi*u3.d))==fi+(t2+fi*u3.d)) { retval = (s*y); goto ret; } - t3 = (t2<0.0) ? -t2 : t2; - t4 = fi*ua3.d+t3*ub3.d; - if ((y=fi+(t2-t4))==fi+(t2+t4)) { retval = (s*y); goto ret; } - - /* Second stage */ - ffi = xfg[i][3].d; - c1 = z2*(a7.d+z2*(a9.d+z2*a11.d)); - EMULV(z,z,z2,zz2,t1,t2,t3,t4,t5) - ADD2(a5.d,aa5.d,c1,0.0,c2,cc2,t1,t2) - MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a3.d,aa3.d,c1,cc1,c2,cc2,t1,t2) - MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(z ,0.0,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(z ,0.0,c2,cc2,c1,cc1,t1,t2) - - ADD2(fi ,ffi,c1,cc1,c2,cc2,t1,t2) - MUL2(fi ,ffi,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8) - SUB2(1.0,0.0,c3,cc3,c1,cc1,t1,t2) - DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - - if ((y=c3+(cc3-u4.d*c3))==c3+(cc3+u4.d*c3)) { retval = (s*y); goto ret; } - retval = tanMp(x); - goto ret; - } + /* First stage */ + x2 = x * x; - /* (---) The case 0.787 < abs(x) <= 25 */ - if (w<=g4.d) { - /* Range reduction by algorithm i */ - t = (x*hpinv.d + toint.d); - xn = t - toint.d; - v.d = t; - t1 = (x - xn*mp1.d) - xn*mp2.d; - n =v.i[LOW_HALF] & 0x00000001; - da = xn*mp3.d; - a=t1-da; - da = (t1-a)-da; - if (a<0.0) {ya=-a; yya=-da; sy=MONE;} - else {ya= a; yya= da; sy= ONE;} - - /* (IV),(V) The case 0.787 < abs(x) <= 25, abs(y) <= 1e-7 */ - if (ya<=gy1.d) { retval = tanMp(x); goto ret; } - - /* (VI) The case 0.787 < abs(x) <= 25, 1e-7 < abs(y) <= 0.0608 */ - if (ya<=gy2.d) { - a2 = a*a; - t2 = da+a*a2*(d3.d+a2*(d5.d+a2*(d7.d+a2*(d9.d+a2*d11.d)))); - if (n) { - /* First stage -cot */ - EADD(a,t2,b,db) - DIV2(1.0,0.0,b,db,c,dc,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - if ((y=c+(dc-u6.d*c))==c+(dc+u6.d*c)) { retval = (-y); goto ret; } } - else { - /* First stage tan */ - if ((y=a+(t2-u5.d*a))==a+(t2+u5.d*a)) { retval = y; goto ret; } } - /* Second stage */ - /* Range reduction by algorithm ii */ - t = (x*hpinv.d + toint.d); - xn = t - toint.d; - v.d = t; - t1 = (x - xn*mp1.d) - xn*mp2.d; - n =v.i[LOW_HALF] & 0x00000001; - da = xn*pp3.d; - t=t1-da; - da = (t1-t)-da; - t1 = xn*pp4.d; - a = t - t1; - da = ((t-a)-t1)+da; + t2 = d9.d + x2 * d11.d; + t2 = d7.d + x2 * t2; + t2 = d5.d + x2 * t2; + t2 = d3.d + x2 * t2; + t2 *= x * x2; + + if ((y = x + (t2 - u1.d * t2)) == x + (t2 + u1.d * t2)) + { + retval = y; + goto ret; + } /* Second stage */ - EADD(a,da,t1,t2) a=t1; da=t2; - MUL2(a,da,a,da,x2,xx2,t1,t2,t3,t4,t5,t6,t7,t8) - c1 = x2*(a15.d+x2*(a17.d+x2*(a19.d+x2*(a21.d+x2*(a23.d+x2*(a25.d+ - x2*a27.d)))))); - ADD2(a13.d,aa13.d,c1,0.0,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a11.d,aa11.d,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a9.d ,aa9.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a7.d ,aa7.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a5.d ,aa5.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a3.d ,aa3.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(a ,da ,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a ,da ,c2,cc2,c1,cc1,t1,t2) - - if (n) { - /* Second stage -cot */ - DIV2(1.0,0.0,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - if ((y=c2+(cc2-u8.d*c2)) == c2+(cc2+u8.d*c2)) { retval = (-y); goto ret; } } - else { - /* Second stage tan */ - if ((y=c1+(cc1-u7.d*c1)) == c1+(cc1+u7.d*c1)) { retval = y; goto ret; } } - retval = tanMp(x); + c1 = a25.d + x2 * a27.d; + c1 = a23.d + x2 * c1; + c1 = a21.d + x2 * c1; + c1 = a19.d + x2 * c1; + c1 = a17.d + x2 * c1; + c1 = a15.d + x2 * c1; + c1 *= x2; + + EMULV (x, x, x2, xx2, t1, t2, t3, t4, t5); + ADD2 (a13.d, aa13.d, c1, 0.0, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a11.d, aa11.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a9.d, aa9.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a7.d, aa7.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a5.d, aa5.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (x, 0.0, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (x, 0.0, c2, cc2, c1, cc1, t1, t2); + if ((y = c1 + (cc1 - u2.d * c1)) == c1 + (cc1 + u2.d * c1)) + { + retval = y; + goto ret; + } + retval = tanMp (x); goto ret; } - /* (VII) The case 0.787 < abs(x) <= 25, 0.0608 < abs(y) <= 0.787 */ + /* (III) The case 0.0608 < abs(x) <= 0.787 */ + if (w <= g3.d) + { + + /* First stage */ + i = ((int) (mfftnhf.d + TWO8 * w)); + z = w - xfg[i][0].d; + z2 = z * z; + s = (x < 0.0) ? -1 : 1; + pz = z + z * z2 * (e0.d + z2 * e1.d); + fi = xfg[i][1].d; + gi = xfg[i][2].d; + t2 = pz * (gi + fi) / (gi - pz); + if ((y = fi + (t2 - fi * u3.d)) == fi + (t2 + fi * u3.d)) + { + retval = (s * y); + goto ret; + } + t3 = (t2 < 0.0) ? -t2 : t2; + t4 = fi * ua3.d + t3 * ub3.d; + if ((y = fi + (t2 - t4)) == fi + (t2 + t4)) + { + retval = (s * y); + goto ret; + } - /* First stage */ - i = ((int) (mfftnhf.d+TWO8*ya)); - z = (z0=(ya-xfg[i][0].d))+yya; z2 = z*z; - pz = z+z*z2*(e0.d+z2*e1.d); - fi = xfg[i][1].d; gi = xfg[i][2].d; + /* Second stage */ + ffi = xfg[i][3].d; + c1 = z2 * (a7.d + z2 * (a9.d + z2 * a11.d)); + EMULV (z, z, z2, zz2, t1, t2, t3, t4, t5); + ADD2 (a5.d, aa5.d, c1, 0.0, c2, cc2, t1, t2); + MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (z, 0.0, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (z, 0.0, c2, cc2, c1, cc1, t1, t2); + + ADD2 (fi, ffi, c1, cc1, c2, cc2, t1, t2); + MUL2 (fi, ffi, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8); + SUB2 (1.0, 0.0, c3, cc3, c1, cc1, t1, t2); + DIV2 (c2, cc2, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8, t9, + t10); + + if ((y = c3 + (cc3 - u4.d * c3)) == c3 + (cc3 + u4.d * c3)) + { + retval = (s * y); + goto ret; + } + retval = tanMp (x); + goto ret; + } - if (n) { - /* -cot */ - t2 = pz*(fi+gi)/(fi+pz); - if ((y=gi-(t2-gi*u10.d))==gi-(t2+gi*u10.d)) { retval = (-sy*y); goto ret; } - t3 = (t2<0.0) ? -t2 : t2; - t4 = gi*ua10.d+t3*ub10.d; - if ((y=gi-(t2-t4))==gi-(t2+t4)) { retval = (-sy*y); goto ret; } } - else { - /* tan */ - t2 = pz*(gi+fi)/(gi-pz); - if ((y=fi+(t2-fi*u9.d))==fi+(t2+fi*u9.d)) { retval = (sy*y); goto ret; } - t3 = (t2<0.0) ? -t2 : t2; - t4 = fi*ua9.d+t3*ub9.d; - if ((y=fi+(t2-t4))==fi+(t2+t4)) { retval = (sy*y); goto ret; } } - - /* Second stage */ - ffi = xfg[i][3].d; - EADD(z0,yya,z,zz) - MUL2(z,zz,z,zz,z2,zz2,t1,t2,t3,t4,t5,t6,t7,t8) - c1 = z2*(a7.d+z2*(a9.d+z2*a11.d)); - ADD2(a5.d,aa5.d,c1,0.0,c2,cc2,t1,t2) - MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a3.d,aa3.d,c1,cc1,c2,cc2,t1,t2) - MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(z ,zz ,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(z ,zz ,c2,cc2,c1,cc1,t1,t2) - - ADD2(fi ,ffi,c1,cc1,c2,cc2,t1,t2) - MUL2(fi ,ffi,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8) - SUB2(1.0,0.0,c3,cc3,c1,cc1,t1,t2) - - if (n) { - /* -cot */ - DIV2(c1,cc1,c2,cc2,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - if ((y=c3+(cc3-u12.d*c3))==c3+(cc3+u12.d*c3)) { retval = (-sy*y); goto ret; } } - else { - /* tan */ - DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - if ((y=c3+(cc3-u11.d*c3))==c3+(cc3+u11.d*c3)) { retval = (sy*y); goto ret; } } + /* (---) The case 0.787 < abs(x) <= 25 */ + if (w <= g4.d) + { + /* Range reduction by algorithm i */ + t = (x * hpinv.d + toint.d); + xn = t - toint.d; + v.d = t; + t1 = (x - xn * mp1.d) - xn * mp2.d; + n = v.i[LOW_HALF] & 0x00000001; + da = xn * mp3.d; + a = t1 - da; + da = (t1 - a) - da; + if (a < 0.0) + { + ya = -a; + yya = -da; + sy = -1; + } + else + { + ya = a; + yya = da; + sy = 1; + } + + /* (IV),(V) The case 0.787 < abs(x) <= 25, abs(y) <= 1e-7 */ + if (ya <= gy1.d) + { + retval = tanMp (x); + goto ret; + } + + /* (VI) The case 0.787 < abs(x) <= 25, 1e-7 < abs(y) <= 0.0608 */ + if (ya <= gy2.d) + { + a2 = a * a; + t2 = d9.d + a2 * d11.d; + t2 = d7.d + a2 * t2; + t2 = d5.d + a2 * t2; + t2 = d3.d + a2 * t2; + t2 = da + a * a2 * t2; + + if (n) + { + /* First stage -cot */ + EADD (a, t2, b, db); + DIV2 (1.0, 0.0, b, db, c, dc, t1, t2, t3, t4, t5, t6, t7, t8, + t9, t10); + if ((y = c + (dc - u6.d * c)) == c + (dc + u6.d * c)) + { + retval = (-y); + goto ret; + } + } + else + { + /* First stage tan */ + if ((y = a + (t2 - u5.d * a)) == a + (t2 + u5.d * a)) + { + retval = y; + goto ret; + } + } + /* Second stage */ + /* Range reduction by algorithm ii */ + t = (x * hpinv.d + toint.d); + xn = t - toint.d; + v.d = t; + t1 = (x - xn * mp1.d) - xn * mp2.d; + n = v.i[LOW_HALF] & 0x00000001; + da = xn * pp3.d; + t = t1 - da; + da = (t1 - t) - da; + t1 = xn * pp4.d; + a = t - t1; + da = ((t - a) - t1) + da; + + /* Second stage */ + EADD (a, da, t1, t2); + a = t1; + da = t2; + MUL2 (a, da, a, da, x2, xx2, t1, t2, t3, t4, t5, t6, t7, t8); + + c1 = a25.d + x2 * a27.d; + c1 = a23.d + x2 * c1; + c1 = a21.d + x2 * c1; + c1 = a19.d + x2 * c1; + c1 = a17.d + x2 * c1; + c1 = a15.d + x2 * c1; + c1 *= x2; + + ADD2 (a13.d, aa13.d, c1, 0.0, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a11.d, aa11.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a9.d, aa9.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a7.d, aa7.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a5.d, aa5.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (a, da, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a, da, c2, cc2, c1, cc1, t1, t2); + + if (n) + { + /* Second stage -cot */ + DIV2 (1.0, 0.0, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, + t8, t9, t10); + if ((y = c2 + (cc2 - u8.d * c2)) == c2 + (cc2 + u8.d * c2)) + { + retval = (-y); + goto ret; + } + } + else + { + /* Second stage tan */ + if ((y = c1 + (cc1 - u7.d * c1)) == c1 + (cc1 + u7.d * c1)) + { + retval = y; + goto ret; + } + } + retval = tanMp (x); + goto ret; + } + + /* (VII) The case 0.787 < abs(x) <= 25, 0.0608 < abs(y) <= 0.787 */ + + /* First stage */ + i = ((int) (mfftnhf.d + TWO8 * ya)); + z = (z0 = (ya - xfg[i][0].d)) + yya; + z2 = z * z; + pz = z + z * z2 * (e0.d + z2 * e1.d); + fi = xfg[i][1].d; + gi = xfg[i][2].d; + + if (n) + { + /* -cot */ + t2 = pz * (fi + gi) / (fi + pz); + if ((y = gi - (t2 - gi * u10.d)) == gi - (t2 + gi * u10.d)) + { + retval = (-sy * y); + goto ret; + } + t3 = (t2 < 0.0) ? -t2 : t2; + t4 = gi * ua10.d + t3 * ub10.d; + if ((y = gi - (t2 - t4)) == gi - (t2 + t4)) + { + retval = (-sy * y); + goto ret; + } + } + else + { + /* tan */ + t2 = pz * (gi + fi) / (gi - pz); + if ((y = fi + (t2 - fi * u9.d)) == fi + (t2 + fi * u9.d)) + { + retval = (sy * y); + goto ret; + } + t3 = (t2 < 0.0) ? -t2 : t2; + t4 = fi * ua9.d + t3 * ub9.d; + if ((y = fi + (t2 - t4)) == fi + (t2 + t4)) + { + retval = (sy * y); + goto ret; + } + } - retval = tanMp(x); - goto ret; - } + /* Second stage */ + ffi = xfg[i][3].d; + EADD (z0, yya, z, zz) + MUL2 (z, zz, z, zz, z2, zz2, t1, t2, t3, t4, t5, t6, t7, t8); + c1 = z2 * (a7.d + z2 * (a9.d + z2 * a11.d)); + ADD2 (a5.d, aa5.d, c1, 0.0, c2, cc2, t1, t2); + MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (z, zz, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (z, zz, c2, cc2, c1, cc1, t1, t2); + + ADD2 (fi, ffi, c1, cc1, c2, cc2, t1, t2); + MUL2 (fi, ffi, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8); + SUB2 (1.0, 0.0, c3, cc3, c1, cc1, t1, t2); + + if (n) + { + /* -cot */ + DIV2 (c1, cc1, c2, cc2, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8, t9, + t10); + if ((y = c3 + (cc3 - u12.d * c3)) == c3 + (cc3 + u12.d * c3)) + { + retval = (-sy * y); + goto ret; + } + } + else + { + /* tan */ + DIV2 (c2, cc2, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8, t9, + t10); + if ((y = c3 + (cc3 - u11.d * c3)) == c3 + (cc3 + u11.d * c3)) + { + retval = (sy * y); + goto ret; + } + } + + retval = tanMp (x); + goto ret; + } /* (---) The case 25 < abs(x) <= 1e8 */ - if (w<=g5.d) { - /* Range reduction by algorithm ii */ - t = (x*hpinv.d + toint.d); - xn = t - toint.d; - v.d = t; - t1 = (x - xn*mp1.d) - xn*mp2.d; - n =v.i[LOW_HALF] & 0x00000001; - da = xn*pp3.d; - t=t1-da; - da = (t1-t)-da; - t1 = xn*pp4.d; - a = t - t1; - da = ((t-a)-t1)+da; - EADD(a,da,t1,t2) a=t1; da=t2; - if (a<0.0) {ya=-a; yya=-da; sy=MONE;} - else {ya= a; yya= da; sy= ONE;} - - /* (+++) The case 25 < abs(x) <= 1e8, abs(y) <= 1e-7 */ - if (ya<=gy1.d) { retval = tanMp(x); goto ret; } - - /* (VIII) The case 25 < abs(x) <= 1e8, 1e-7 < abs(y) <= 0.0608 */ - if (ya<=gy2.d) { - a2 = a*a; - t2 = da+a*a2*(d3.d+a2*(d5.d+a2*(d7.d+a2*(d9.d+a2*d11.d)))); - if (n) { - /* First stage -cot */ - EADD(a,t2,b,db) - DIV2(1.0,0.0,b,db,c,dc,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - if ((y=c+(dc-u14.d*c))==c+(dc+u14.d*c)) { retval = (-y); goto ret; } } - else { - /* First stage tan */ - if ((y=a+(t2-u13.d*a))==a+(t2+u13.d*a)) { retval = y; goto ret; } } + if (w <= g5.d) + { + /* Range reduction by algorithm ii */ + t = (x * hpinv.d + toint.d); + xn = t - toint.d; + v.d = t; + t1 = (x - xn * mp1.d) - xn * mp2.d; + n = v.i[LOW_HALF] & 0x00000001; + da = xn * pp3.d; + t = t1 - da; + da = (t1 - t) - da; + t1 = xn * pp4.d; + a = t - t1; + da = ((t - a) - t1) + da; + EADD (a, da, t1, t2); + a = t1; + da = t2; + if (a < 0.0) + { + ya = -a; + yya = -da; + sy = -1; + } + else + { + ya = a; + yya = da; + sy = 1; + } + + /* (+++) The case 25 < abs(x) <= 1e8, abs(y) <= 1e-7 */ + if (ya <= gy1.d) + { + retval = tanMp (x); + goto ret; + } + + /* (VIII) The case 25 < abs(x) <= 1e8, 1e-7 < abs(y) <= 0.0608 */ + if (ya <= gy2.d) + { + a2 = a * a; + t2 = d9.d + a2 * d11.d; + t2 = d7.d + a2 * t2; + t2 = d5.d + a2 * t2; + t2 = d3.d + a2 * t2; + t2 = da + a * a2 * t2; + + if (n) + { + /* First stage -cot */ + EADD (a, t2, b, db); + DIV2 (1.0, 0.0, b, db, c, dc, t1, t2, t3, t4, t5, t6, t7, t8, + t9, t10); + if ((y = c + (dc - u14.d * c)) == c + (dc + u14.d * c)) + { + retval = (-y); + goto ret; + } + } + else + { + /* First stage tan */ + if ((y = a + (t2 - u13.d * a)) == a + (t2 + u13.d * a)) + { + retval = y; + goto ret; + } + } + + /* Second stage */ + MUL2 (a, da, a, da, x2, xx2, t1, t2, t3, t4, t5, t6, t7, t8); + c1 = a25.d + x2 * a27.d; + c1 = a23.d + x2 * c1; + c1 = a21.d + x2 * c1; + c1 = a19.d + x2 * c1; + c1 = a17.d + x2 * c1; + c1 = a15.d + x2 * c1; + c1 *= x2; + + ADD2 (a13.d, aa13.d, c1, 0.0, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a11.d, aa11.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a9.d, aa9.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a7.d, aa7.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a5.d, aa5.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (a, da, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a, da, c2, cc2, c1, cc1, t1, t2); + + if (n) + { + /* Second stage -cot */ + DIV2 (1.0, 0.0, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, + t8, t9, t10); + if ((y = c2 + (cc2 - u16.d * c2)) == c2 + (cc2 + u16.d * c2)) + { + retval = (-y); + goto ret; + } + } + else + { + /* Second stage tan */ + if ((y = c1 + (cc1 - u15.d * c1)) == c1 + (cc1 + u15.d * c1)) + { + retval = (y); + goto ret; + } + } + retval = tanMp (x); + goto ret; + } + + /* (IX) The case 25 < abs(x) <= 1e8, 0.0608 < abs(y) <= 0.787 */ + /* First stage */ + i = ((int) (mfftnhf.d + TWO8 * ya)); + z = (z0 = (ya - xfg[i][0].d)) + yya; + z2 = z * z; + pz = z + z * z2 * (e0.d + z2 * e1.d); + fi = xfg[i][1].d; + gi = xfg[i][2].d; + + if (n) + { + /* -cot */ + t2 = pz * (fi + gi) / (fi + pz); + if ((y = gi - (t2 - gi * u18.d)) == gi - (t2 + gi * u18.d)) + { + retval = (-sy * y); + goto ret; + } + t3 = (t2 < 0.0) ? -t2 : t2; + t4 = gi * ua18.d + t3 * ub18.d; + if ((y = gi - (t2 - t4)) == gi - (t2 + t4)) + { + retval = (-sy * y); + goto ret; + } + } + else + { + /* tan */ + t2 = pz * (gi + fi) / (gi - pz); + if ((y = fi + (t2 - fi * u17.d)) == fi + (t2 + fi * u17.d)) + { + retval = (sy * y); + goto ret; + } + t3 = (t2 < 0.0) ? -t2 : t2; + t4 = fi * ua17.d + t3 * ub17.d; + if ((y = fi + (t2 - t4)) == fi + (t2 + t4)) + { + retval = (sy * y); + goto ret; + } + } /* Second stage */ - MUL2(a,da,a,da,x2,xx2,t1,t2,t3,t4,t5,t6,t7,t8) - c1 = x2*(a15.d+x2*(a17.d+x2*(a19.d+x2*(a21.d+x2*(a23.d+x2*(a25.d+ - x2*a27.d)))))); - ADD2(a13.d,aa13.d,c1,0.0,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a11.d,aa11.d,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a9.d ,aa9.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a7.d ,aa7.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a5.d ,aa5.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a3.d ,aa3.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(a ,da ,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a ,da ,c2,cc2,c1,cc1,t1,t2) - - if (n) { - /* Second stage -cot */ - DIV2(1.0,0.0,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - if ((y=c2+(cc2-u16.d*c2)) == c2+(cc2+u16.d*c2)) { retval = (-y); goto ret; } } - else { - /* Second stage tan */ - if ((y=c1+(cc1-u15.d*c1)) == c1+(cc1+u15.d*c1)) { retval = (y); goto ret; } } - retval = tanMp(x); + ffi = xfg[i][3].d; + EADD (z0, yya, z, zz); + MUL2 (z, zz, z, zz, z2, zz2, t1, t2, t3, t4, t5, t6, t7, t8); + c1 = z2 * (a7.d + z2 * (a9.d + z2 * a11.d)); + ADD2 (a5.d, aa5.d, c1, 0.0, c2, cc2, t1, t2); + MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (z, zz, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (z, zz, c2, cc2, c1, cc1, t1, t2); + + ADD2 (fi, ffi, c1, cc1, c2, cc2, t1, t2); + MUL2 (fi, ffi, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8); + SUB2 (1.0, 0.0, c3, cc3, c1, cc1, t1, t2); + + if (n) + { + /* -cot */ + DIV2 (c1, cc1, c2, cc2, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8, t9, + t10); + if ((y = c3 + (cc3 - u20.d * c3)) == c3 + (cc3 + u20.d * c3)) + { + retval = (-sy * y); + goto ret; + } + } + else + { + /* tan */ + DIV2 (c2, cc2, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8, t9, + t10); + if ((y = c3 + (cc3 - u19.d * c3)) == c3 + (cc3 + u19.d * c3)) + { + retval = (sy * y); + goto ret; + } + } + retval = tanMp (x); goto ret; } - /* (IX) The case 25 < abs(x) <= 1e8, 0.0608 < abs(y) <= 0.787 */ - /* First stage */ - i = ((int) (mfftnhf.d+TWO8*ya)); - z = (z0=(ya-xfg[i][0].d))+yya; z2 = z*z; - pz = z+z*z2*(e0.d+z2*e1.d); - fi = xfg[i][1].d; gi = xfg[i][2].d; - - if (n) { - /* -cot */ - t2 = pz*(fi+gi)/(fi+pz); - if ((y=gi-(t2-gi*u18.d))==gi-(t2+gi*u18.d)) { retval = (-sy*y); goto ret; } - t3 = (t2<0.0) ? -t2 : t2; - t4 = gi*ua18.d+t3*ub18.d; - if ((y=gi-(t2-t4))==gi-(t2+t4)) { retval = (-sy*y); goto ret; } } - else { - /* tan */ - t2 = pz*(gi+fi)/(gi-pz); - if ((y=fi+(t2-fi*u17.d))==fi+(t2+fi*u17.d)) { retval = (sy*y); goto ret; } - t3 = (t2<0.0) ? -t2 : t2; - t4 = fi*ua17.d+t3*ub17.d; - if ((y=fi+(t2-t4))==fi+(t2+t4)) { retval = (sy*y); goto ret; } } - - /* Second stage */ - ffi = xfg[i][3].d; - EADD(z0,yya,z,zz) - MUL2(z,zz,z,zz,z2,zz2,t1,t2,t3,t4,t5,t6,t7,t8) - c1 = z2*(a7.d+z2*(a9.d+z2*a11.d)); - ADD2(a5.d,aa5.d,c1,0.0,c2,cc2,t1,t2) - MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a3.d,aa3.d,c1,cc1,c2,cc2,t1,t2) - MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(z ,zz ,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(z ,zz ,c2,cc2,c1,cc1,t1,t2) - - ADD2(fi ,ffi,c1,cc1,c2,cc2,t1,t2) - MUL2(fi ,ffi,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8) - SUB2(1.0,0.0,c3,cc3,c1,cc1,t1,t2) - - if (n) { - /* -cot */ - DIV2(c1,cc1,c2,cc2,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - if ((y=c3+(cc3-u20.d*c3))==c3+(cc3+u20.d*c3)) { retval = (-sy*y); goto ret; } } - else { - /* tan */ - DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - if ((y=c3+(cc3-u19.d*c3))==c3+(cc3+u19.d*c3)) { retval = (sy*y); goto ret; } } - retval = tanMp(x); - goto ret; - } - /* (---) The case 1e8 < abs(x) < 2**1024 */ /* Range reduction by algorithm iii */ - n = (__branred(x,&a,&da)) & 0x00000001; - EADD(a,da,t1,t2) a=t1; da=t2; - if (a<0.0) {ya=-a; yya=-da; sy=MONE;} - else {ya= a; yya= da; sy= ONE;} + n = (__branred (x, &a, &da)) & 0x00000001; + EADD (a, da, t1, t2); + a = t1; + da = t2; + if (a < 0.0) + { + ya = -a; + yya = -da; + sy = -1; + } + else + { + ya = a; + yya = da; + sy = 1; + } /* (+++) The case 1e8 < abs(x) < 2**1024, abs(y) <= 1e-7 */ - if (ya<=gy1.d) { retval = tanMp(x); goto ret; } + if (ya <= gy1.d) + { + retval = tanMp (x); + goto ret; + } /* (X) The case 1e8 < abs(x) < 2**1024, 1e-7 < abs(y) <= 0.0608 */ - if (ya<=gy2.d) { - a2 = a*a; - t2 = da+a*a2*(d3.d+a2*(d5.d+a2*(d7.d+a2*(d9.d+a2*d11.d)))); - if (n) { - /* First stage -cot */ - EADD(a,t2,b,db) - DIV2(1.0,0.0,b,db,c,dc,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - if ((y=c+(dc-u22.d*c))==c+(dc+u22.d*c)) { retval = (-y); goto ret; } } - else { - /* First stage tan */ - if ((y=a+(t2-u21.d*a))==a+(t2+u21.d*a)) { retval = y; goto ret; } } - - /* Second stage */ - /* Reduction by algorithm iv */ - p=10; n = (__mpranred(x,&mpa,p)) & 0x00000001; - __mp_dbl(&mpa,&a,p); __dbl_mp(a,&mpt1,p); - __sub(&mpa,&mpt1,&mpt2,p); __mp_dbl(&mpt2,&da,p); - - MUL2(a,da,a,da,x2,xx2,t1,t2,t3,t4,t5,t6,t7,t8) - c1 = x2*(a15.d+x2*(a17.d+x2*(a19.d+x2*(a21.d+x2*(a23.d+x2*(a25.d+ - x2*a27.d)))))); - ADD2(a13.d,aa13.d,c1,0.0,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a11.d,aa11.d,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a9.d ,aa9.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a7.d ,aa7.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a5.d ,aa5.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a3.d ,aa3.d ,c1,cc1,c2,cc2,t1,t2) - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(a ,da ,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a ,da ,c2,cc2,c1,cc1,t1,t2) - - if (n) { - /* Second stage -cot */ - DIV2(1.0,0.0,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - if ((y=c2+(cc2-u24.d*c2)) == c2+(cc2+u24.d*c2)) { retval = (-y); goto ret; } } - else { - /* Second stage tan */ - if ((y=c1+(cc1-u23.d*c1)) == c1+(cc1+u23.d*c1)) { retval = y; goto ret; } } - retval = tanMp(x); - goto ret; - } + if (ya <= gy2.d) + { + a2 = a * a; + t2 = d9.d + a2 * d11.d; + t2 = d7.d + a2 * t2; + t2 = d5.d + a2 * t2; + t2 = d3.d + a2 * t2; + t2 = da + a * a2 * t2; + if (n) + { + /* First stage -cot */ + EADD (a, t2, b, db); + DIV2 (1.0, 0.0, b, db, c, dc, t1, t2, t3, t4, t5, t6, t7, t8, t9, + t10); + if ((y = c + (dc - u22.d * c)) == c + (dc + u22.d * c)) + { + retval = (-y); + goto ret; + } + } + else + { + /* First stage tan */ + if ((y = a + (t2 - u21.d * a)) == a + (t2 + u21.d * a)) + { + retval = y; + goto ret; + } + } + + /* Second stage */ + /* Reduction by algorithm iv */ + p = 10; + n = (__mpranred (x, &mpa, p)) & 0x00000001; + __mp_dbl (&mpa, &a, p); + __dbl_mp (a, &mpt1, p); + __sub (&mpa, &mpt1, &mpt2, p); + __mp_dbl (&mpt2, &da, p); + + MUL2 (a, da, a, da, x2, xx2, t1, t2, t3, t4, t5, t6, t7, t8); + + c1 = a25.d + x2 * a27.d; + c1 = a23.d + x2 * c1; + c1 = a21.d + x2 * c1; + c1 = a19.d + x2 * c1; + c1 = a17.d + x2 * c1; + c1 = a15.d + x2 * c1; + c1 *= x2; + + ADD2 (a13.d, aa13.d, c1, 0.0, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a11.d, aa11.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a9.d, aa9.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a7.d, aa7.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a5.d, aa5.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (a, da, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a, da, c2, cc2, c1, cc1, t1, t2); + + if (n) + { + /* Second stage -cot */ + DIV2 (1.0, 0.0, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8, + t9, t10); + if ((y = c2 + (cc2 - u24.d * c2)) == c2 + (cc2 + u24.d * c2)) + { + retval = (-y); + goto ret; + } + } + else + { + /* Second stage tan */ + if ((y = c1 + (cc1 - u23.d * c1)) == c1 + (cc1 + u23.d * c1)) + { + retval = y; + goto ret; + } + } + retval = tanMp (x); + goto ret; + } /* (XI) The case 1e8 < abs(x) < 2**1024, 0.0608 < abs(y) <= 0.787 */ /* First stage */ - i = ((int) (mfftnhf.d+TWO8*ya)); - z = (z0=(ya-xfg[i][0].d))+yya; z2 = z*z; - pz = z+z*z2*(e0.d+z2*e1.d); - fi = xfg[i][1].d; gi = xfg[i][2].d; - - if (n) { - /* -cot */ - t2 = pz*(fi+gi)/(fi+pz); - if ((y=gi-(t2-gi*u26.d))==gi-(t2+gi*u26.d)) { retval = (-sy*y); goto ret; } - t3 = (t2<0.0) ? -t2 : t2; - t4 = gi*ua26.d+t3*ub26.d; - if ((y=gi-(t2-t4))==gi-(t2+t4)) { retval = (-sy*y); goto ret; } } - else { - /* tan */ - t2 = pz*(gi+fi)/(gi-pz); - if ((y=fi+(t2-fi*u25.d))==fi+(t2+fi*u25.d)) { retval = (sy*y); goto ret; } - t3 = (t2<0.0) ? -t2 : t2; - t4 = fi*ua25.d+t3*ub25.d; - if ((y=fi+(t2-t4))==fi+(t2+t4)) { retval = (sy*y); goto ret; } } + i = ((int) (mfftnhf.d + TWO8 * ya)); + z = (z0 = (ya - xfg[i][0].d)) + yya; + z2 = z * z; + pz = z + z * z2 * (e0.d + z2 * e1.d); + fi = xfg[i][1].d; + gi = xfg[i][2].d; + + if (n) + { + /* -cot */ + t2 = pz * (fi + gi) / (fi + pz); + if ((y = gi - (t2 - gi * u26.d)) == gi - (t2 + gi * u26.d)) + { + retval = (-sy * y); + goto ret; + } + t3 = (t2 < 0.0) ? -t2 : t2; + t4 = gi * ua26.d + t3 * ub26.d; + if ((y = gi - (t2 - t4)) == gi - (t2 + t4)) + { + retval = (-sy * y); + goto ret; + } + } + else + { + /* tan */ + t2 = pz * (gi + fi) / (gi - pz); + if ((y = fi + (t2 - fi * u25.d)) == fi + (t2 + fi * u25.d)) + { + retval = (sy * y); + goto ret; + } + t3 = (t2 < 0.0) ? -t2 : t2; + t4 = fi * ua25.d + t3 * ub25.d; + if ((y = fi + (t2 - t4)) == fi + (t2 + t4)) + { + retval = (sy * y); + goto ret; + } + } /* Second stage */ ffi = xfg[i][3].d; - EADD(z0,yya,z,zz) - MUL2(z,zz,z,zz,z2,zz2,t1,t2,t3,t4,t5,t6,t7,t8) - c1 = z2*(a7.d+z2*(a9.d+z2*a11.d)); - ADD2(a5.d,aa5.d,c1,0.0,c2,cc2,t1,t2) - MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(a3.d,aa3.d,c1,cc1,c2,cc2,t1,t2) - MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(z ,zz ,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(z ,zz ,c2,cc2,c1,cc1,t1,t2) - - ADD2(fi ,ffi,c1,cc1,c2,cc2,t1,t2) - MUL2(fi ,ffi,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8) - SUB2(1.0,0.0,c3,cc3,c1,cc1,t1,t2) - - if (n) { - /* -cot */ - DIV2(c1,cc1,c2,cc2,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - if ((y=c3+(cc3-u28.d*c3))==c3+(cc3+u28.d*c3)) { retval = (-sy*y); goto ret; } } - else { - /* tan */ - DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - if ((y=c3+(cc3-u27.d*c3))==c3+(cc3+u27.d*c3)) { retval = (sy*y); goto ret; } } - retval = tanMp(x); + EADD (z0, yya, z, zz); + MUL2 (z, zz, z, zz, z2, zz2, t1, t2, t3, t4, t5, t6, t7, t8); + c1 = z2 * (a7.d + z2 * (a9.d + z2 * a11.d)); + ADD2 (a5.d, aa5.d, c1, 0.0, c2, cc2, t1, t2); + MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2); + MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8); + MUL2 (z, zz, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8); + ADD2 (z, zz, c2, cc2, c1, cc1, t1, t2); + + ADD2 (fi, ffi, c1, cc1, c2, cc2, t1, t2); + MUL2 (fi, ffi, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8); + SUB2 (1.0, 0.0, c3, cc3, c1, cc1, t1, t2); + + if (n) + { + /* -cot */ + DIV2 (c1, cc1, c2, cc2, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8, t9, + t10); + if ((y = c3 + (cc3 - u28.d * c3)) == c3 + (cc3 + u28.d * c3)) + { + retval = (-sy * y); + goto ret; + } + } + else + { + /* tan */ + DIV2 (c2, cc2, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8, t9, + t10); + if ((y = c3 + (cc3 - u27.d * c3)) == c3 + (cc3 + u27.d * c3)) + { + retval = (sy * y); + goto ret; + } + } + retval = tanMp (x); goto ret; - ret: +ret: return retval; } @@ -510,14 +830,14 @@ tan(double x) { /* and converts result back to double */ static double SECTION -tanMp(double x) +tanMp (double x) { int p; double y; mp_no mpy; - p=32; - __mptan(x, &mpy, p); - __mp_dbl(&mpy,&y,p); + p = 32; + __mptan (x, &mpy, p); + __mp_dbl (&mpy, &y, p); return y; } diff --git a/libc/sysdeps/ieee754/dbl-64/sincos32.c b/libc/sysdeps/ieee754/dbl-64/sincos32.c index 3d2b2914a..954db66d6 100644 --- a/libc/sysdeps/ieee754/dbl-64/sincos32.c +++ b/libc/sysdeps/ieee754/dbl-64/sincos32.c @@ -262,7 +262,7 @@ __mpranred(double x, mp_no *y, int p) for (i=1;i<=p-c.e;i++) c.d[i]=c.d[i+c.e]; for (i=p+1-c.e;i<=p;i++) c.d[i]=0; c.e=0; - if (c.d[1] >= 8388608.0) + if (c.d[1] >= HALFRAD) { t +=1.0; __sub(&c,&mpone,&b,p); __mul(&b,&hp,y,p); diff --git a/libc/sysdeps/ieee754/dbl-64/upow.h b/libc/sysdeps/ieee754/dbl-64/upow.h index 67bae1aef..130fb3296 100644 --- a/libc/sysdeps/ieee754/dbl-64/upow.h +++ b/libc/sysdeps/ieee754/dbl-64/upow.h @@ -34,7 +34,6 @@ /**/ nZERO = {{0x80000000, 0}}, /* -0.0 */ /**/ INF = {{0x7ff00000, 0x00000000}}, /* INF */ /**/ nINF = {{0xfff00000, 0x00000000}}, /* -INF */ -/**/ NaNQ = {{0x7ff80000, 0x00000000}}, /* NaNQ */ /**/ sqrt_2 = {{0x3ff6a09e, 0x667f3bcc}}, /* sqrt(2) */ /**/ ln2a = {{0x3fe62e42, 0xfefa3800}}, /* ln(2) 43 bits */ /**/ ln2b = {{0x3d2ef357, 0x93c76730}}, /* ln(2)-ln2a */ @@ -49,7 +48,6 @@ /**/ nZERO = {{0, 0x80000000}}, /* -0.0 */ /**/ INF = {{0x00000000, 0x7ff00000}}, /* INF */ /**/ nINF = {{0x00000000, 0xfff00000}}, /* -INF */ -/**/ NaNQ = {{0x00000000, 0x7ff80000}}, /* NaNQ */ /**/ sqrt_2 = {{0x667f3bcc, 0x3ff6a09e}}, /* sqrt(2) */ /**/ ln2a = {{0xfefa3800, 0x3fe62e42}}, /* ln(2) 43 bits */ /**/ ln2b = {{0x93c76730, 0x3d2ef357}}, /* ln(2)-ln2a */ diff --git a/libc/sysdeps/ieee754/dbl-64/urem.h b/libc/sysdeps/ieee754/dbl-64/urem.h index c4daa5d1a..b576691ce 100644 --- a/libc/sysdeps/ieee754/dbl-64/urem.h +++ b/libc/sysdeps/ieee754/dbl-64/urem.h @@ -32,18 +32,14 @@ static const mynumber big = {{0x43380000, 0}}, /* 6755399441055744 */ t128 = {{0x47f00000, 0}}, /* 2^ 128 */ tm128 = {{0x37f00000, 0}}, /* 2^-128 */ ZERO = {{0, 0}}, /* 0.0 */ - nZERO = {{0x80000000, 0}}, /* -0.0 */ - NAN = {{0x7ff80000, 0}}, /* NaN */ - nNAN = {{0xfff80000, 0}}; /* -NaN */ + nZERO = {{0x80000000, 0}}; /* -0.0 */ #else #ifdef LITTLE_ENDI static const mynumber big = {{0, 0x43380000}}, /* 6755399441055744 */ t128 = {{0, 0x47f00000}}, /* 2^ 128 */ tm128 = {{0, 0x37f00000}}, /* 2^-128 */ ZERO = {{0, 0}}, /* 0.0 */ - nZERO = {{0, 0x80000000}}, /* -0.0 */ - NAN = {{0, 0x7ff80000}}, /* NaN */ - nNAN = {{0, 0xfff80000}}; /* -NaN */ + nZERO = {{0, 0x80000000}}; /* -0.0 */ #endif #endif diff --git a/libc/sysdeps/ieee754/dbl-64/usncs.h b/libc/sysdeps/ieee754/dbl-64/usncs.h index 92a632144..11c189ce3 100644 --- a/libc/sysdeps/ieee754/dbl-64/usncs.h +++ b/libc/sysdeps/ieee754/dbl-64/usncs.h @@ -30,7 +30,6 @@ #ifdef BIG_ENDI static const mynumber -/**/ NAN = {{0x7ff80000, 0x00000000 }}, /* NaN */ /**/ s1 = {{0xBFC55555, 0x55555555 }}, /* -0.16666666666666666 */ /**/ s2 = {{0x3F811111, 0x11110ECE }}, /* 0.0083333333333323288 */ /**/ s3 = {{0xBF2A01A0, 0x19DB08B8 }}, /* -0.00019841269834414642 */ @@ -53,7 +52,6 @@ static const mynumber #ifdef LITTLE_ENDI static const mynumber -/**/ NAN = {{0x00000000, 0x7ff80000 }},/* NaN */ /**/ s1 = {{0x55555555, 0xBFC55555 }},/* -0.16666666666666666 */ /**/ s2 = {{0x11110ECE, 0x3F811111 }},/* 0.0083333333333323288 */ /**/ s3 = {{0x19DB08B8, 0xBF2A01A0 }},/* -0.00019841269834414642 */ diff --git a/libc/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c b/libc/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c new file mode 100644 index 000000000..3fa025437 --- /dev/null +++ b/libc/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c @@ -0,0 +1,43 @@ +/* Test for signaling NaN. + Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <math.h> +#include <math_private.h> + +int +__issignaling (double x) +{ + u_int64_t xi; + EXTRACT_WORDS64 (xi, x); +#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +# error untested + /* We only have to care about the high-order bit of x's significand, because + having it set (sNaN) already makes the significand different from that + used to designate infinity. */ + return (xi & UINT64_C (0x7ff8000000000000)) == UINT64_C (0x7ff8000000000000); +#else + /* To keep the following comparison simple, toggle the quiet/signaling bit, + so that it is set for sNaNs. This is inverse to IEEE 754-2008 (as well as + common practice for IEEE 754-1985). */ + xi ^= UINT64_C (0x0008000000000000); + /* We have to compare for greater (instead of greater or equal), because x's + significand being all-zero designates infinity not NaN. */ + return (xi & UINT64_C (0x7fffffffffffffff)) > UINT64_C (0x7ff8000000000000); +#endif +} +libm_hidden_def (__issignaling) diff --git a/libc/sysdeps/ieee754/flt-32/s_issignalingf.c b/libc/sysdeps/ieee754/flt-32/s_issignalingf.c new file mode 100644 index 000000000..59a189252 --- /dev/null +++ b/libc/sysdeps/ieee754/flt-32/s_issignalingf.c @@ -0,0 +1,42 @@ +/* Test for signaling NaN. + Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <math.h> +#include <math_private.h> + +int +__issignalingf (float x) +{ + u_int32_t xi; + GET_FLOAT_WORD (xi, x); +#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN + /* We only have to care about the high-order bit of x's significand, because + having it set (sNaN) already makes the significand different from that + used to designate infinity. */ + return (xi & 0x7fc00000) == 0x7fc00000; +#else + /* To keep the following comparison simple, toggle the quiet/signaling bit, + so that it is set for sNaNs. This is inverse to IEEE 754-2008 (as well as + common practice for IEEE 754-1985). */ + xi ^= 0x00400000; + /* We have to compare for greater (instead of greater or equal), because x's + significand being all-zero designates infinity not NaN. */ + return (xi & 0x7fffffff) > 0x7fc00000; +#endif +} +libm_hidden_def (__issignalingf) diff --git a/libc/sysdeps/ieee754/ldbl-128/e_j0l.c b/libc/sysdeps/ieee754/ldbl-128/e_j0l.c index 9e7880c49..108eff443 100644 --- a/libc/sysdeps/ieee754/ldbl-128/e_j0l.c +++ b/libc/sysdeps/ieee754/ldbl-128/e_j0l.c @@ -93,6 +93,7 @@ #include <math.h> #include <math_private.h> +#include <float.h> /* 1 / sqrt(pi) */ static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L; @@ -710,11 +711,14 @@ __ieee754_j0l (long double x) __sincosl (xx, &s, &c); ss = s - c; cc = s + c; - z = -__cosl (xx + xx); - if ((s * c) < 0) - cc = z / ss; - else - ss = z / cc; + if (xx <= LDBL_MAX / 2.0L) + { + z = -__cosl (xx + xx); + if ((s * c) < 0) + cc = z / ss; + else + ss = z / cc; + } if (xx > 0x1p256L) return ONEOSQPI * cc / __ieee754_sqrtl (xx); @@ -857,11 +861,14 @@ long double __sincosl (x, &s, &c); ss = s - c; cc = s + c; - z = -__cosl (x + x); - if ((s * c) < 0) - cc = z / ss; - else - ss = z / cc; + if (xx <= LDBL_MAX / 2.0L) + { + z = -__cosl (x + x); + if ((s * c) < 0) + cc = z / ss; + else + ss = z / cc; + } if (xx > 0x1p256L) return ONEOSQPI * ss / __ieee754_sqrtl (x); diff --git a/libc/sysdeps/ieee754/ldbl-128/e_j1l.c b/libc/sysdeps/ieee754/ldbl-128/e_j1l.c index 95e01a39c..70a1c86fd 100644 --- a/libc/sysdeps/ieee754/ldbl-128/e_j1l.c +++ b/libc/sysdeps/ieee754/ldbl-128/e_j1l.c @@ -97,6 +97,7 @@ #include <math.h> #include <math_private.h> +#include <float.h> /* 1 / sqrt(pi) */ static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L; @@ -715,11 +716,14 @@ __ieee754_j1l (long double x) __sincosl (xx, &s, &c); ss = -s - c; cc = s - c; - z = __cosl (xx + xx); - if ((s * c) > 0) - cc = z / ss; - else - ss = z / cc; + if (xx <= LDBL_MAX / 2.0L) + { + z = __cosl (xx + xx); + if ((s * c) > 0) + cc = z / ss; + else + ss = z / cc; + } if (xx > 0x1p256L) { @@ -868,11 +872,14 @@ __ieee754_y1l (long double x) __sincosl (xx, &s, &c); ss = -s - c; cc = s - c; - z = __cosl (xx + xx); - if ((s * c) > 0) - cc = z / ss; - else - ss = z / cc; + if (xx <= LDBL_MAX / 2.0L) + { + z = __cosl (xx + xx); + if ((s * c) > 0) + cc = z / ss; + else + ss = z / cc; + } if (xx > 0x1p256L) return ONEOSQPI * ss / __ieee754_sqrtl (xx); diff --git a/libc/sysdeps/ieee754/ldbl-128/s_issignalingl.c b/libc/sysdeps/ieee754/ldbl-128/s_issignalingl.c new file mode 100644 index 000000000..b69a66d0b --- /dev/null +++ b/libc/sysdeps/ieee754/ldbl-128/s_issignalingl.c @@ -0,0 +1,45 @@ +/* Test for signaling NaN. + Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <math.h> +#include <math_private.h> + +int +__issignalingl (long double x) +{ + u_int64_t hxi, lxi __attribute__ ((unused)); + GET_LDOUBLE_WORDS64 (hxi, lxi, x); +#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN + /* We only have to care about the high-order bit of x's significand, because + having it set (sNaN) already makes the significand different from that + used to designate infinity. */ + return ((hxi & UINT64_C (0x7fff800000000000)) + == UINT64_C (0x7fff800000000000)); +#else + /* To keep the following comparison simple, toggle the quiet/signaling bit, + so that it is set for sNaNs. This is inverse to IEEE 754-2008 (as well as + common practice for IEEE 754-1985). */ + hxi ^= UINT64_C (0x0000800000000000); + /* If lxi != 0, then set any suitable bit of the significand in hxi. */ + hxi |= (lxi | -lxi) >> 63; + /* We have to compare for greater (instead of greater or equal), because x's + significand being all-zero designates infinity not NaN. */ + return (hxi & UINT64_C (0x7fffffffffffffff)) > UINT64_C (0x7fff800000000000); +#endif +} +libm_hidden_def (__issignalingl) diff --git a/libc/sysdeps/ieee754/ldbl-128ibm/e_expl.c b/libc/sysdeps/ieee754/ldbl-128ibm/e_expl.c index 82363906b..9fd61983e 100644 --- a/libc/sysdeps/ieee754/ldbl-128ibm/e_expl.c +++ b/libc/sysdeps/ieee754/ldbl-128ibm/e_expl.c @@ -70,11 +70,11 @@ static const long double C[] = { /* Smallest integer x for which e^x overflows. */ #define himark C[0] - 709.08956571282405153382846025171462914L, + 709.78271289338399678773454114191496482L, /* Largest integer x for which e^x underflows. */ #define lomark C[1] --744.44007192138121808966388925909996033L, +-744.44007192138126231410729844608163411L, /* 3x2^96 */ #define THREEp96 C[2] diff --git a/libc/sysdeps/ieee754/ldbl-128ibm/e_logl.c b/libc/sysdeps/ieee754/ldbl-128ibm/e_logl.c index 14f47ebad..15b5edfab 100644 --- a/libc/sysdeps/ieee754/ldbl-128ibm/e_logl.c +++ b/libc/sysdeps/ieee754/ldbl-128ibm/e_logl.c @@ -182,6 +182,9 @@ static const long double ln2a = 6.93145751953125e-1L, ln2b = 1.4286068203094172321214581765680755001344E-6L; +static const long double + ldbl_epsilon = 0x1p-106L; + long double __ieee754_logl(long double x) { @@ -258,7 +261,12 @@ __ieee754_logl(long double x) } /* Series expansion of log(1+z). */ w = z * z; - y = ((((((((((((l15 * z + /* Avoid spurious underflows. */ + if (__glibc_unlikely(w <= ldbl_epsilon)) + y = 0.0L; + else + { + y = ((((((((((((l15 * z + l14) * z + l13) * z + l12) * z @@ -271,7 +279,8 @@ __ieee754_logl(long double x) + l5) * z + l4) * z + l3) * z * w; - y -= 0.5 * w; + y -= 0.5 * w; + } y += e * ln2b; /* Base 2 exponent offset times ln(2). */ y += z; y += logtbl[k-26]; /* log(t) - (t-1) */ diff --git a/libc/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c b/libc/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c new file mode 100644 index 000000000..96fab1aff --- /dev/null +++ b/libc/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c @@ -0,0 +1,45 @@ +/* Test for signaling NaN. + Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <math.h> +#include <math_private.h> + +int +__issignalingl (long double x) +{ + u_int64_t xi; + /* For inspecting NaN status, we only have to look at the first of the pair + of IEEE 754 64-bit precision numbers. */ + GET_LDOUBLE_MSW64 (xi, x); +#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +# error untested + /* We only have to care about the high-order bit of x's significand, because + having it set (sNaN) already makes the significand different from that + used to designate infinity. */ + return (xi & UINT64_C (0x7ff8000000000000)) == UINT64_C (0x7ff8000000000000); +#else + /* To keep the following comparison simple, toggle the quiet/signaling bit, + so that it is set for sNaNs. This is inverse to IEEE 754-2008 (as well as + common practice for IEEE 754-1985). */ + xi ^= UINT64_C (0x0008000000000000); + /* We have to compare for greater (instead of greater or equal), because x's + significand being all-zero designates infinity not NaN. */ + return (xi & UINT64_C (0x7fffffffffffffff)) > UINT64_C (0x7ff8000000000000); +#endif +} +libm_hidden_def (__issignalingl) diff --git a/libc/sysdeps/ieee754/ldbl-128ibm/w_expl.c b/libc/sysdeps/ieee754/ldbl-128ibm/w_expl.c index a5e72b217..70fe5f693 100644 --- a/libc/sysdeps/ieee754/ldbl-128ibm/w_expl.c +++ b/libc/sysdeps/ieee754/ldbl-128ibm/w_expl.c @@ -1,6 +1,24 @@ -/* Looks like we can use ieee854 w_expl.c as is for IBM extended format. */ +#include <math.h> +#include <math_private.h> #include <math_ldbl_opt.h> -#undef weak_alias -#define weak_alias(n,a) -#include <sysdeps/ieee754/ldbl-128/w_expl.c> + +static const long double o_thres = 709.78271289338399678773454114191496482L; +static const long double u_thres = -744.44007192138126231410729844608163411L; + +long double __expl(long double x) /* wrapper exp */ +{ + long double z; + z = __ieee754_expl(x); + if (_LIB_VERSION == _IEEE_) + return z; + if (__finitel(x)) + { + if (x >= o_thres) + return __kernel_standard_l(x,x,206); /* exp overflow */ + else if (x <= u_thres) + return __kernel_standard_l(x,x,207); /* exp underflow */ + } + return z; +} +hidden_def (__expl) long_double_symbol (libm, __expl, expl); diff --git a/libc/sysdeps/ieee754/ldbl-96/s_issignalingl.c b/libc/sysdeps/ieee754/ldbl-96/s_issignalingl.c new file mode 100644 index 000000000..107aff151 --- /dev/null +++ b/libc/sysdeps/ieee754/ldbl-96/s_issignalingl.c @@ -0,0 +1,43 @@ +/* Test for signaling NaN. + Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <math.h> +#include <math_private.h> + +int +__issignalingl (long double x) +{ + u_int32_t exi, hxi, lxi; + GET_LDOUBLE_WORDS (exi, hxi, lxi, x); +#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN +# error not implemented +#else + /* To keep the following comparison simple, toggle the quiet/signaling bit, + so that it is set for sNaNs. This is inverse to IEEE 754-2008 (as well as + common practice for IEEE 754-1985). */ + hxi ^= 0x40000000; + /* If lxi != 0, then set any suitable bit of the significand in hxi. */ + hxi |= (lxi | -lxi) >> 31; + /* We do not recognize a pseudo NaN as sNaN; they're invalid on 80387 and + later. */ + /* We have to compare for greater (instead of greater or equal), because x's + significand being all-zero designates infinity not NaN. */ + return ((exi & 0x7fff) == 0x7fff) && (hxi > 0xc0000000); +#endif +} +libm_hidden_def (__issignalingl) diff --git a/libc/sysdeps/mach/configure b/libc/sysdeps/mach/configure index 33cf09bd7..3af372560 100644 --- a/libc/sysdeps/mach/configure +++ b/libc/sysdeps/mach/configure @@ -162,6 +162,8 @@ fi if test "x$MIG" = xMISSING; then as_fn_error $? "cannot find required build tool mig" "$LINENO" 5 fi +config_vars="$config_vars +MIG = $MIG" ### Sanity checks for Mach header installation diff --git a/libc/sysdeps/mach/configure.in b/libc/sysdeps/mach/configure.in index 2f82c3a87..db85f47ea 100644 --- a/libc/sysdeps/mach/configure.in +++ b/libc/sysdeps/mach/configure.in @@ -4,6 +4,7 @@ AC_CHECK_TOOL(MIG, mig, MISSING) if test "x$MIG" = xMISSING; then AC_MSG_ERROR([cannot find required build tool mig]) fi +LIBC_CONFIG_VAR([MIG], [$MIG]) ### Sanity checks for Mach header installation AC_CHECK_HEADER(mach/mach_types.h,, diff --git a/libc/sysdeps/mach/hurd/bits/ioctls.h b/libc/sysdeps/mach/hurd/bits/ioctls.h index 4917055f9..fe3ca0826 100644 --- a/libc/sysdeps/mach/hurd/bits/ioctls.h +++ b/libc/sysdeps/mach/hurd/bits/ioctls.h @@ -141,7 +141,7 @@ enum __ioctl_datum { IOC_8, IOC_16, IOC_32, IOC_64 }; /* Construct an individual type field for TYPE. */ #define _IOTS(type) \ - (sizeof (type) == 8 ? IOC_64 : (sizeof (type) >> 1)) + (sizeof (type) == 8 ? IOC_64 : (enum __ioctl_datum) (sizeof (type) >> 1)) /* Construct a type information field for a single argument of the scalar TYPE. */ diff --git a/libc/sysdeps/mach/hurd/i386/init-first.c b/libc/sysdeps/mach/hurd/i386/init-first.c index c51737b48..fc3330c1f 100644 --- a/libc/sysdeps/mach/hurd/i386/init-first.c +++ b/libc/sysdeps/mach/hurd/i386/init-first.c @@ -106,10 +106,6 @@ init1 (int argc, char *arg0, ...) char **argv = &arg0; char **envp = &argv[argc + 1]; struct hurd_startup_data *d; -#ifndef SHARED - extern ElfW(Phdr) *_dl_phdr; - extern size_t _dl_phnum; -#endif while (*envp) ++envp; @@ -121,14 +117,20 @@ init1 (int argc, char *arg0, ...) if ((void *) d == argv[0]) { #ifndef SHARED - /* We may need to see our own phdrs, e.g. for TLS setup. - Try the usual kludge to find the headers without help from - the exec server. */ - extern const void _start; - const ElfW(Ehdr) *const ehdr = &_start; - _dl_phdr = (ElfW(Phdr) *) ((const void *) ehdr + ehdr->e_phoff); - _dl_phnum = ehdr->e_phnum; - assert (ehdr->e_phentsize == sizeof (ElfW(Phdr))); + /* With a new enough linker (binutils-2.23 or better), + the magic __ehdr_start symbol will be available and + __libc_start_main will have done this that way already. */ + if (_dl_phdr == NULL) + { + /* We may need to see our own phdrs, e.g. for TLS setup. + Try the usual kludge to find the headers without help from + the exec server. */ + extern const void _start; + const ElfW(Ehdr) *const ehdr = &_start; + _dl_phdr = (const void *) ehdr + ehdr->e_phoff; + _dl_phnum = ehdr->e_phnum; + assert (ehdr->e_phentsize == sizeof (ElfW(Phdr))); + } #endif return; } diff --git a/libc/sysdeps/posix/getaddrinfo.c b/libc/sysdeps/posix/getaddrinfo.c index d95c2d115..d3683066a 100644 --- a/libc/sysdeps/posix/getaddrinfo.c +++ b/libc/sysdeps/posix/getaddrinfo.c @@ -2489,11 +2489,28 @@ getaddrinfo (const char *name, const char *service, __typeof (once) old_once = once; __libc_once (once, gaiconf_init); /* Sort results according to RFC 3484. */ - struct sort_result results[nresults]; - size_t order[nresults]; + struct sort_result *results; + size_t *order; struct addrinfo *q; struct addrinfo *last = NULL; char *canonname = NULL; + bool malloc_results; + size_t alloc_size = nresults * (sizeof (*results) + sizeof (size_t)); + + malloc_results + = !__libc_use_alloca (alloc_size); + if (malloc_results) + { + results = malloc (alloc_size); + if (results == NULL) + { + __free_in6ai (in6ai); + return EAI_MEMORY; + } + } + else + results = alloca (alloc_size); + order = (size_t *) (results + nresults); /* Now we definitely need the interface information. */ if (! check_pf_called) @@ -2664,6 +2681,9 @@ getaddrinfo (const char *name, const char *service, /* Fill in the canonical name into the new first entry. */ p->ai_canonname = canonname; + + if (malloc_results) + free (results); } __free_in6ai (in6ai); diff --git a/libc/sysdeps/posix/libc_fatal.c b/libc/sysdeps/posix/libc_fatal.c index 8d416006b..5071df15b 100644 --- a/libc/sysdeps/posix/libc_fatal.c +++ b/libc/sysdeps/posix/libc_fatal.c @@ -1,4 +1,5 @@ -/* Copyright (C) 1993-2013 Free Software Foundation, Inc. +/* Catastrophic failure reports. Generic POSIX.1 version. + Copyright (C) 1993-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -27,7 +28,7 @@ #include <string.h> #include <sysdep.h> #include <unistd.h> -#include <sys/syslog.h> +#include <sys/mman.h> #include <sys/uio.h> #include <not-cancel.h> @@ -35,6 +36,25 @@ #include FATAL_PREPARE_INCLUDE #endif +#ifndef WRITEV_FOR_FATAL +# define WRITEV_FOR_FATAL writev_for_fatal +static bool +writev_for_fatal (int fd, const struct iovec *iov, size_t niov, size_t total) +{ + return TEMP_FAILURE_RETRY (__writev (fd, iov, niov)) == total; +} +#endif + +#ifndef BEFORE_ABORT +# define BEFORE_ABORT before_abort +static void +before_abort (int do_abort __attribute__ ((unused)), + bool written __attribute__ ((unused)), + int fd __attribute__ ((unused))) +{ +} +#endif + struct str_list { const char *str; @@ -42,17 +62,14 @@ struct str_list struct str_list *next; }; - /* Abort with an error message. */ void __libc_message (int do_abort, const char *fmt, ...) { va_list ap; - va_list ap_copy; int fd = -1; va_start (ap, fmt); - va_copy (ap_copy, ap); #ifdef FATAL_PREPARE FATAL_PREPARE; @@ -121,8 +138,7 @@ __libc_message (int do_abort, const char *fmt, ...) list = list->next; } - if (TEMP_FAILURE_RETRY (__writev (fd, iov, nlist)) == total) - written = true; + written = WRITEV_FOR_FATAL (fd, iov, nlist, total); if (do_abort) { @@ -131,7 +147,7 @@ __libc_message (int do_abort, const char *fmt, ...) struct abort_msg_s *buf = __mmap (NULL, total, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0); - if (buf != MAP_FAILED) + if (__glibc_likely (buf != MAP_FAILED)) { buf->size = total; char *wp = buf->msg; @@ -151,15 +167,13 @@ __libc_message (int do_abort, const char *fmt, ...) va_end (ap); - /* If we had no success writing the message, use syslog. */ - if (! written) - vsyslog (LOG_ERR, fmt, ap_copy); - - va_end (ap_copy); - if (do_abort) - /* Kill the application. */ - abort (); + { + BEFORE_ABORT (do_abort, written, fd); + + /* Kill the application. */ + abort (); + } } diff --git a/libc/sysdeps/posix/timespec_get.c b/libc/sysdeps/posix/timespec_get.c new file mode 100644 index 000000000..a578e8b98 --- /dev/null +++ b/libc/sysdeps/posix/timespec_get.c @@ -0,0 +1,38 @@ +/* timespec_get -- C11 interface to sample a clock. Generic POSIX.1 version. + Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <time.h> + + +/* Set TS to calendar time based in time base BASE. */ +int +timespec_get (struct timespec *ts, int base) +{ + switch (base) + { + case TIME_UTC: + if (__clock_gettime (CLOCK_REALTIME, ts) < 0) + return 0; + break; + + default: + return 0; + } + + return base; +} diff --git a/libc/sysdeps/powerpc/fpu/libm-test-ulps b/libc/sysdeps/powerpc/fpu/libm-test-ulps index 4221967c4..5072190fd 100644 --- a/libc/sysdeps/powerpc/fpu/libm-test-ulps +++ b/libc/sysdeps/powerpc/fpu/libm-test-ulps @@ -243,9 +243,11 @@ idouble: 1 Test "Real part of: cacos (-0.5 + +0 i) == 2.094395102393195492308428922186335256131 - 0 i": double: 1 idouble: 1 +ldouble: 1 Test "Real part of: cacos (-0.5 - 0 i) == 2.094395102393195492308428922186335256131 + +0 i": double: 1 idouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (-1.5 + +0 i) == pi - 0.9624236501192068949955178268487368462704 i": double: 1 float: 1 @@ -265,6 +267,10 @@ double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp1023 + 0x1.fp1023 i) == 7.853981633974483096156608458198757210493e-1 - 7.107906849659093345062145442726115449315e2 i": +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp127 + 0x1.fp127 i) == 7.853981633974483096156608458198757210493e-1 - 8.973081118419833726837456344608533993585e1 i": +ldouble: 1 # cacosh Test "Real part of: cacosh (+0 + 0.5 i) == 0.4812118250596034474977589134243684231352 + pi/2 i": diff --git a/libc/sysdeps/powerpc/fpu/s_llround.c b/libc/sysdeps/powerpc/fpu/s_llround.c index b53d6eed8..9a0182653 100644 --- a/libc/sysdeps/powerpc/fpu/s_llround.c +++ b/libc/sysdeps/powerpc/fpu/s_llround.c @@ -17,6 +17,7 @@ <http://www.gnu.org/licenses/>. */ #include <math.h> +#include <math_ldbl_opt.h> /* I think that what this routine is supposed to do is round a value to the nearest integer, with values exactly on the boundary rounded @@ -47,3 +48,6 @@ weak_alias (__llround, llround) strong_alias (__llround, __llroundl) weak_alias (__llround, llroundl) #endif +#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_1) +compat_symbol (libm, __llround, llroundl, GLIBC_2_1); +#endif diff --git a/libc/sysdeps/powerpc/fpu/w_sqrt.c b/libc/sysdeps/powerpc/fpu/w_sqrt.c index 2488ad9b9..70f28dd4d 100644 --- a/libc/sysdeps/powerpc/fpu/w_sqrt.c +++ b/libc/sysdeps/powerpc/fpu/w_sqrt.c @@ -19,6 +19,7 @@ #include <math.h> #include <math_private.h> #include <fenv_libc.h> +#include <math_ldbl_opt.h> double __sqrt (double x) /* wrapper sqrt */ @@ -42,3 +43,6 @@ weak_alias (__sqrt, sqrt) #ifdef NO_LONG_DOUBLE strong_alias (__sqrt, __sqrtl) weak_alias (__sqrt, sqrtl) #endif +#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) +compat_symbol (libm, __sqrt, sqrtl, GLIBC_2_0); +#endif diff --git a/libc/sysdeps/powerpc/math-tests.h b/libc/sysdeps/powerpc/math-tests.h new file mode 100644 index 000000000..d87dc9a7f --- /dev/null +++ b/libc/sysdeps/powerpc/math-tests.h @@ -0,0 +1,27 @@ +/* Configuration for math tests. PowerPC version. + Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +/* On PowerPC, in versions of GCC up to at least 4.7.2, a type cast -- which is + a IEEE 754-2008 general-computational convertFormat operation (IEEE + 754-2008, 5.4.2) -- does not turn a sNaN into a qNaN (whilst raising an + INVALID exception), which is contrary to IEEE 754-2008 5.1 and 7.2. This + renders certain tests infeasible in this scenario. + <http://gcc.gnu.org/PR56828>. */ +#define SNAN_TESTS_TYPE_CAST 0 + +#include_next <math-tests.h> diff --git a/libc/sysdeps/powerpc/power4/fpu/mpa-arch.h b/libc/sysdeps/powerpc/power4/fpu/mpa-arch.h new file mode 100644 index 000000000..43175bbcd --- /dev/null +++ b/libc/sysdeps/powerpc/power4/fpu/mpa-arch.h @@ -0,0 +1,56 @@ +/* Overridable constants and operations. + Copyright (C) 2013 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +typedef double mantissa_t; +typedef double mantissa_store_t; + +#define TWOPOW(i) (0x1.0p##i) + +#define RADIX TWOPOW (24) /* 2^24 */ +#define CUTTER TWOPOW (76) /* 2^76 */ +#define RADIXI 0x1.0p-24 /* 2^-24 */ +#define TWO52 TWOPOW (52) /* 2^52 */ + +/* Divide D by RADIX and put the remainder in R. */ +#define DIV_RADIX(d,r) \ + ({ \ + double u = ((d) + CUTTER) - CUTTER; \ + if (u > (d)) \ + u -= RADIX; \ + r = (d) - u; \ + (d) = u * RADIXI; \ + }) + +/* Put the integer component of a double X in R and retain the fraction in + X. */ +#define INTEGER_OF(x, r) \ + ({ \ + double u = ((x) + TWO52) - TWO52; \ + if (u > (x)) \ + u -= 1; \ + (r) = u; \ + (x) -= u; \ + }) + +/* Align IN down to a multiple of F, where F is a power of two. */ +#define ALIGN_DOWN_TO(in, f) \ + ({ \ + double factor = f * TWO52; \ + double u = (in + factor) - factor; \ + if (u > in) \ + u -= f; \ + u; \ + }) diff --git a/libc/sysdeps/powerpc/power4/fpu/mpa.c b/libc/sysdeps/powerpc/power4/fpu/mpa.c index 1858c9740..9d4d644cf 100644 --- a/libc/sysdeps/powerpc/power4/fpu/mpa.c +++ b/libc/sysdeps/powerpc/power4/fpu/mpa.c @@ -35,15 +35,15 @@ __mul (const mp_no *x, const mp_no *y, mp_no *z, int p) double u, zk, zk2; /* Is z=0? */ - if (__glibc_unlikely (X[0] * Y[0] == ZERO)) + if (__glibc_unlikely (X[0] * Y[0] == 0)) { - Z[0] = ZERO; + Z[0] = 0; return; } /* Multiply, add and carry */ k2 = (p2 < 3) ? p2 + p2 : p2 + 3; - zk = Z[k2] = ZERO; + zk = Z[k2] = 0; for (k = k2; k > 1;) { if (k > p2) @@ -101,7 +101,7 @@ __mul (const mp_no *x, const mp_no *y, mp_no *z, int p) int e = EX + EY; /* Is there a carry beyond the most significant digit? */ - if (Z[1] == ZERO) + if (Z[1] == 0) { for (i = 1; i <= p2; i++) Z[i] = Z[i + 1]; @@ -123,24 +123,24 @@ __sqr (const mp_no *x, mp_no *y, int p) double u, yk; /* Is z=0? */ - if (__glibc_unlikely (X[0] == ZERO)) + if (__glibc_unlikely (X[0] == 0)) { - Y[0] = ZERO; + Y[0] = 0; return; } /* We need not iterate through all X's since it's pointless to multiply zeroes. */ for (ip = p; ip > 0; ip--) - if (X[ip] != ZERO) + if (X[ip] != 0) break; k = (__glibc_unlikely (p < 3)) ? p + p : p + 3; while (k > 2 * ip + 1) - Y[k--] = ZERO; + Y[k--] = 0; - yk = ZERO; + yk = 0; while (k > p) { @@ -204,7 +204,7 @@ __sqr (const mp_no *x, mp_no *y, int p) int e = EX * 2; /* Is there a carry beyond the most significant digit? */ - if (__glibc_unlikely (Y[1] == ZERO)) + if (__glibc_unlikely (Y[1] == 0)) { for (i = 1; i <= p; i++) Y[i] = Y[i + 1]; diff --git a/libc/sysdeps/powerpc/power5+/fpu/s_modf.c b/libc/sysdeps/powerpc/power5+/fpu/s_modf.c new file mode 100644 index 000000000..b45bf6616 --- /dev/null +++ b/libc/sysdeps/powerpc/power5+/fpu/s_modf.c @@ -0,0 +1,58 @@ +/* Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If + not, see <http://www.gnu.org/licenses/>. */ + +#include <math.h> +#include <math_private.h> +#include <math_ldbl_opt.h> + +double +__modf (double x, double *iptr) +{ + if (__builtin_isinf (x)) + { + *iptr = x; + return __copysign (0.0, x); + } + else if (__builtin_isnan (x)) + { + *iptr = NAN; + return NAN; + } + + if (x >= 0.0) + { + *iptr = __floor (x); + return (x - *iptr); + } + else + { + *iptr = __ceil (x); + return (x - *iptr); + } +} +weak_alias (__modf, modf) +#ifdef NO_LONG_DOUBLE +strong_alias (__modf, __modfl) +weak_alias (__modf, modfl) +#endif +#ifdef IS_IN_libm +# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) +compat_symbol (libm, __modf, modfl, GLIBC_2_0); +# endif +#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0) +compat_symbol (libc, __modf, modfl, GLIBC_2_0); +#endif diff --git a/libc/sysdeps/powerpc/power5+/fpu/s_modff.c b/libc/sysdeps/powerpc/power5+/fpu/s_modff.c new file mode 100644 index 000000000..55759cde0 --- /dev/null +++ b/libc/sysdeps/powerpc/power5+/fpu/s_modff.c @@ -0,0 +1,46 @@ +/* Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If + not, see <http://www.gnu.org/licenses/>. */ + +#include <math.h> +#include <math_private.h> + +float +__modff (float x, float *iptr) +{ + if (__builtin_isinff (x)) + { + *iptr = x; + return __copysignf (0.0, x); + } + else if (__builtin_isnanf (x)) + { + *iptr = NAN; + return NAN; + } + + if (x >= 0.0) + { + *iptr = __floorf (x); + return (x - *iptr); + } + else + { + *iptr = __ceilf (x); + return (x - *iptr); + } +} +weak_alias (__modff, modff) diff --git a/libc/sysdeps/powerpc/powerpc32/fpu/s_rint.S b/libc/sysdeps/powerpc/powerpc32/fpu/s_rint.S index f3cd03668..f04055f46 100644 --- a/libc/sysdeps/powerpc/powerpc32/fpu/s_rint.S +++ b/libc/sysdeps/powerpc/powerpc32/fpu/s_rint.S @@ -45,14 +45,14 @@ ENTRY (__rint) fsub fp12,fp13,fp13 /* generate 0.0 */ fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO52) */ fcmpu cr6,fp1,fp12 /* if (x > 0.0) */ - bnllr- cr7 - bng- cr6,.L4 + bnllr cr7 + bng cr6,.L4 fadd fp1,fp1,fp13 /* x+= TWO52; */ fsub fp1,fp1,fp13 /* x-= TWO52; */ fabs fp1,fp1 /* if (x == 0.0) */ blr /* x = 0.0; */ .L4: - bnllr- cr6 /* if (x < 0.0) */ + bnllr cr6 /* if (x < 0.0) */ fsub fp1,fp1,fp13 /* x-= TWO52; */ fadd fp1,fp1,fp13 /* x+= TWO52; */ fnabs fp1,fp1 /* if (x == 0.0) */ diff --git a/libc/sysdeps/powerpc/powerpc32/fpu/s_rintf.S b/libc/sysdeps/powerpc/powerpc32/fpu/s_rintf.S index 247dd4a14..e0301af2e 100644 --- a/libc/sysdeps/powerpc/powerpc32/fpu/s_rintf.S +++ b/libc/sysdeps/powerpc/powerpc32/fpu/s_rintf.S @@ -41,14 +41,14 @@ ENTRY (__rintf) fsubs fp12,fp13,fp13 /* generate 0.0 */ fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO23) */ fcmpu cr6,fp1,fp12 /* if (x > 0.0) */ - bnllr- cr7 - bng- cr6,.L4 + bnllr cr7 + bng cr6,.L4 fadds fp1,fp1,fp13 /* x+= TWO23; */ fsubs fp1,fp1,fp13 /* x-= TWO23; */ fabs fp1,fp1 /* if (x == 0.0) */ blr /* x = 0.0; */ .L4: - bnllr- cr6 /* if (x < 0.0) */ + bnllr cr6 /* if (x < 0.0) */ fsubs fp1,fp1,fp13 /* x-= TWO23; */ fadds fp1,fp1,fp13 /* x+= TWO23; */ fnabs fp1,fp1 /* if (x == 0.0) */ diff --git a/libc/sysdeps/powerpc/powerpc32/power5+/Implies b/libc/sysdeps/powerpc/powerpc32/power5+/Implies index a51d2fdf9..02d222d22 100644 --- a/libc/sysdeps/powerpc/powerpc32/power5+/Implies +++ b/libc/sysdeps/powerpc/powerpc32/power5+/Implies @@ -1,2 +1,4 @@ +powerpc/power5+/fpu +powerpc/power5+ powerpc/powerpc32/power5/fpu powerpc/powerpc32/power5 diff --git a/libc/sysdeps/powerpc/powerpc32/power5/Implies b/libc/sysdeps/powerpc/powerpc32/power5/Implies index 17139bf21..17949d41c 100644 --- a/libc/sysdeps/powerpc/powerpc32/power5/Implies +++ b/libc/sysdeps/powerpc/powerpc32/power5/Implies @@ -1,2 +1,4 @@ +powerpc/power5/fpu +powerpc/power5 powerpc/powerpc32/power4/fpu powerpc/powerpc32/power4 diff --git a/libc/sysdeps/powerpc/powerpc32/start.S b/libc/sysdeps/powerpc/powerpc32/start.S index 9d5f8d344..f04446bbb 100644 --- a/libc/sysdeps/powerpc/powerpc32/start.S +++ b/libc/sysdeps/powerpc/powerpc32/start.S @@ -35,6 +35,13 @@ #include <sysdep.h> +/* We do not want .eh_frame info for crt1.o since crt1.o is linked + before crtbegin.o, the file defining __EH_FRAME_BEGIN__. */ +#undef cfi_startproc +#define cfi_startproc +#undef cfi_endproc +#define cfi_endproc + /* These are the various addresses we require. */ #ifdef PIC .section ".data" diff --git a/libc/sysdeps/powerpc/powerpc64/fpu/s_rint.S b/libc/sysdeps/powerpc/powerpc64/fpu/s_rint.S index f3339727f..57e3759bf 100644 --- a/libc/sysdeps/powerpc/powerpc64/fpu/s_rint.S +++ b/libc/sysdeps/powerpc/powerpc64/fpu/s_rint.S @@ -34,14 +34,14 @@ EALIGN (__rint, 4, 0) fsub fp12,fp13,fp13 /* generate 0.0 */ fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO52) */ fcmpu cr6,fp1,fp12 /* if (x > 0.0) */ - bnllr- cr7 - bng- cr6,.L4 + bnllr cr7 + bng cr6,.L4 fadd fp1,fp1,fp13 /* x+= TWO52; */ fsub fp1,fp1,fp13 /* x-= TWO52; */ fabs fp1,fp1 /* if (x == 0.0) */ blr /* x = 0.0; */ .L4: - bnllr- cr6 /* if (x < 0.0) */ + bnllr cr6 /* if (x < 0.0) */ fsub fp1,fp1,fp13 /* x-= TWO52; */ fadd fp1,fp1,fp13 /* x+= TWO52; */ fnabs fp1,fp1 /* if (x == 0.0) */ diff --git a/libc/sysdeps/powerpc/powerpc64/fpu/s_rintf.S b/libc/sysdeps/powerpc/powerpc64/fpu/s_rintf.S index 26b08721c..cb28ec748 100644 --- a/libc/sysdeps/powerpc/powerpc64/fpu/s_rintf.S +++ b/libc/sysdeps/powerpc/powerpc64/fpu/s_rintf.S @@ -30,14 +30,14 @@ EALIGN (__rintf, 4, 0) fsubs fp12,fp13,fp13 /* generate 0.0 */ fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO23) */ fcmpu cr6,fp1,fp12 /* if (x > 0.0) */ - bnllr- cr7 - bng- cr6,.L4 + bnllr cr7 + bng cr6,.L4 fadds fp1,fp1,fp13 /* x+= TWO23; */ fsubs fp1,fp1,fp13 /* x-= TWO23; */ fabs fp1,fp1 /* if (x == 0.0) */ blr /* x = 0.0; */ .L4: - bnllr- cr6 /* if (x < 0.0) */ + bnllr cr6 /* if (x < 0.0) */ fsubs fp1,fp1,fp13 /* x-= TWO23; */ fadds fp1,fp1,fp13 /* x+= TWO23; */ fnabs fp1,fp1 /* if (x == 0.0) */ diff --git a/libc/sysdeps/powerpc/powerpc64/power5+/Implies b/libc/sysdeps/powerpc/powerpc64/power5+/Implies index a01a13ab1..565bc9447 100644 --- a/libc/sysdeps/powerpc/powerpc64/power5+/Implies +++ b/libc/sysdeps/powerpc/powerpc64/power5+/Implies @@ -1,2 +1,4 @@ +powerpc/power5+/fpu +powerpc/power5+ powerpc/powerpc64/power5/fpu powerpc/powerpc64/power5 diff --git a/libc/sysdeps/powerpc/powerpc64/power5/Implies b/libc/sysdeps/powerpc/powerpc64/power5/Implies index bedb20b65..b36831e28 100644 --- a/libc/sysdeps/powerpc/powerpc64/power5/Implies +++ b/libc/sysdeps/powerpc/powerpc64/power5/Implies @@ -1,2 +1,4 @@ +powerpc/power5/fpu +powerpc/power5 powerpc/powerpc64/power4/fpu powerpc/powerpc64/power4 diff --git a/libc/sysdeps/powerpc/powerpc64/start.S b/libc/sysdeps/powerpc/powerpc64/start.S index ec0fd30e7..09ab464cb 100644 --- a/libc/sysdeps/powerpc/powerpc64/start.S +++ b/libc/sysdeps/powerpc/powerpc64/start.S @@ -35,6 +35,13 @@ #include <sysdep.h> +/* We do not want .eh_frame info for crt1.o since crt1.o is linked + before crtbegin.o, the file defining __EH_FRAME_BEGIN__. */ +#undef cfi_startproc +#define cfi_startproc +#undef cfi_endproc +#define cfi_endproc + /* These are the various addresses we require. */ #ifdef PIC .section ".data.rel.ro.local","aw" diff --git a/libc/sysdeps/pthread/aio_fsync.c b/libc/sysdeps/pthread/aio_fsync.c index 79b3583bd..1e5a2584f 100644 --- a/libc/sysdeps/pthread/aio_fsync.c +++ b/libc/sysdeps/pthread/aio_fsync.c @@ -36,17 +36,14 @@ int aio_fsync (int op, struct aiocb *aiocbp) { - int flags; - if (op != O_DSYNC && __builtin_expect (op != O_SYNC, 0)) { __set_errno (EINVAL); return -1; } - flags = fcntl (aiocbp->aio_fildes, F_GETFL); - if (__builtin_expect (flags == -1, 0) - || __builtin_expect ((flags & O_ACCMODE) == O_RDONLY, 0)) + /* Verify that this is an open file descriptor. */ + if (__glibc_unlikely (fcntl (aiocbp->aio_fildes, F_GETFL) == -1)) { __set_errno (EBADF); return -1; diff --git a/libc/sysdeps/s390/s390-32/sysdep.h b/libc/sysdeps/s390/s390-32/sysdep.h index d6296c13b..aa438bd9d 100644 --- a/libc/sysdeps/s390/s390-32/sysdep.h +++ b/libc/sysdeps/s390/s390-32/sysdep.h @@ -65,6 +65,7 @@ #define syscall_error __syscall_error #define mcount _mcount +#undef PSEUDO #define PSEUDO(name, syscall_name, args) \ lose: SYSCALL_PIC_SETUP \ basr %r1,0; \ diff --git a/libc/sysdeps/s390/s390-64/sysdep.h b/libc/sysdeps/s390/s390-64/sysdep.h index 46ad85ab1..57827f39e 100644 --- a/libc/sysdeps/s390/s390-64/sysdep.h +++ b/libc/sysdeps/s390/s390-64/sysdep.h @@ -63,6 +63,7 @@ #define syscall_error __syscall_error #define mcount _mcount +#undef PSEUDO #define PSEUDO(name, syscall_name, args) \ lose: SYSCALL_PIC_SETUP \ jg JUMPTARGET(syscall_error); \ diff --git a/libc/sysdeps/sparc/configure b/libc/sysdeps/sparc/configure index 3abba2750..63e02de4a 100644 --- a/libc/sysdeps/sparc/configure +++ b/libc/sysdeps/sparc/configure @@ -40,6 +40,8 @@ if test $libc_cv_sparc_as_vis3 = yes; then $as_echo "#define HAVE_AS_VIS3_SUPPORT 1" >>confdefs.h fi +config_vars="$config_vars +have-as-vis3 = $libc_cv_sparc_as_vis3" # Check for a GCC emitting GOTDATA relocations. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sparc gcc GOTDATA reloc support" >&5 diff --git a/libc/sysdeps/sparc/configure.in b/libc/sysdeps/sparc/configure.in index 080be992d..982077c9b 100644 --- a/libc/sysdeps/sparc/configure.in +++ b/libc/sysdeps/sparc/configure.in @@ -28,6 +28,7 @@ rm -f conftest*]) if test $libc_cv_sparc_as_vis3 = yes; then AC_DEFINE(HAVE_AS_VIS3_SUPPORT) fi +LIBC_CONFIG_VAR([have-as-vis3], [$libc_cv_sparc_as_vis3]) # Check for a GCC emitting GOTDATA relocations. AC_CACHE_CHECK(for sparc gcc GOTDATA reloc support, libc_cv_sparc_gcc_gotdata, [dnl diff --git a/libc/sysdeps/sparc/fpu/libm-test-ulps b/libc/sysdeps/sparc/fpu/libm-test-ulps index bacac6e00..4620af697 100644 --- a/libc/sysdeps/sparc/fpu/libm-test-ulps +++ b/libc/sysdeps/sparc/fpu/libm-test-ulps @@ -198,22 +198,120 @@ double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Real part of: cacos (-0.25 + 1.0 i) == 1.747098759571863549650000258275841544745 - 8.924633639033482359562124741744951972772e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.25 + 1.0 i) == 1.747098759571863549650000258275841544745 - 8.924633639033482359562124741744951972772e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.25 - 1.0 i) == 1.747098759571863549650000258275841544745 + 8.924633639033482359562124741744951972772e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.25 - 1.0 i) == 1.747098759571863549650000258275841544745 + 8.924633639033482359562124741744951972772e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: cacos (-0.5 + +0 i) == 2.094395102393195492308428922186335256131 - 0 i": ildouble: 1 ldouble: 1 +Test "Real part of: cacos (-0.5 + 1.0 i) == 1.920235389652109912858733517715121394831 - 9.261330313501824245501244453057873152694e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.5 + 1.0 i) == 1.920235389652109912858733517715121394831 - 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: cacos (-0.5 - 0 i) == 2.094395102393195492308428922186335256131 + +0 i": ildouble: 1 ldouble: 1 +Test "Real part of: cacos (-0.5 - 1.0 i) == 1.920235389652109912858733517715121394831 + 9.261330313501824245501244453057873152694e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.5 - 1.0 i) == 1.920235389652109912858733517715121394831 + 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-10 + 1.0 i) == 1.572134236154454360143880041170803681211 - 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-10 - 1.0 i) == 1.572134236154454360143880041170803681211 + 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0x1.fp-100 + 1.0 i) == 1.570796326794896619231321691640832196834 - 8.813735870195430252326093249797923090282e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-100 + 1.0 i) == 1.570796326794896619231321691640832196834 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-100 - 1.0 i) == 1.570796326794896619231321691640832196834 + 8.813735870195430252326093249797923090282e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-100 - 1.0 i) == 1.570796326794896619231321691640832196834 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1000 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1000 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-10000 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-10000 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.5 i) == 1.570796326794896619231321691639751442099 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.5 i) == 1.570796326794896619231321691639751442099 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Real part of: cacos (-0x1.fp-129 + 1.0 i) == 1.570796326794896619231321691639751442101 - 8.813735870195430252326093249797923090282e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 1.0 i) == 1.570796326794896619231321691639751442101 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: cacos (-0x1.fp-129 + 1.5 i) == 1.570796326794896619231321691639751442100 - 1.194763217287109304111930828519090523536 i": float: 1 ifloat: 1 @@ -222,6 +320,16 @@ double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Real part of: cacos (-0x1.fp-129 - 1.0 i) == 1.570796326794896619231321691639751442101 + 8.813735870195430252326093249797923090282e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 1.0 i) == 1.570796326794896619231321691639751442101 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: cacos (-0x1.fp-129 - 1.5 i) == 1.570796326794896619231321691639751442100 + 1.194763217287109304111930828519090523536 i": float: 1 ifloat: 1 @@ -230,12 +338,38 @@ double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (-0x1.fp-16385 + 1.5 i) == 1.570796326794896619231321691639751442099 - 1.194763217287109304111930828519090523536 i": ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (-0x1.fp-16385 - 1.5 i) == 1.570796326794896619231321691639751442099 + 1.194763217287109304111930828519090523536 i": ildouble: 1 ldouble: 1 +Test "Real part of: cacos (-0x1.fp-30 + 1.0 i) == 1.570796328070826603447840231892468927106 - 8.813735870195430258081932989769495326854e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-30 + 1.0 i) == 1.570796328070826603447840231892468927106 - 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-30 - 1.0 i) == 1.570796328070826603447840231892468927106 + 8.813735870195430258081932989769495326854e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-30 - 1.0 i) == 1.570796328070826603447840231892468927106 + 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (-0x1p500 + 1.0 i) == 3.141592653589793238462643383279502884197 - 3.472667374605326000180332928505464606058e2 i": ildouble: 1 ldouble: 1 @@ -248,6 +382,17 @@ ldouble: 1 Test "Imaginary part of: cacos (-0x1p5000 - 1.0 i) == 3.141592653589793238462643383279502884197 + 3.466429049980286492395577839412341016946e3 i": ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (-1.0 + 0.5 i) == 2.466703808003786858297978415967328452322 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.0 + 0x1.fp-10 i) == 3.098101355958774410750062883737683164607 - 4.350501469856803800217957402220976497152e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 + 0x1.fp-30 i) == 3.141550174918818561961484385371624132331 - 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 Test "Real part of: cacos (-1.0 + 0x1p50 i) == 1.570796326794897507409741391764983781004 - 3.535050620855721078027883819436759661753e1 i": float: 1 ifloat: 1 @@ -257,6 +402,17 @@ ldouble: 1 Test "Imaginary part of: cacos (-1.0 + 0x1p5000 i) == 1.570796326794896619231321691639751442099 - 3.466429049980286492395577839412341016946e3 i": ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (-1.0 - 0.5 i) == 2.466703808003786858297978415967328452322 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.0 - 0x1.fp-10 i) == 3.098101355958774410750062883737683164607 + 4.350501469856803800217957402220976497152e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 - 0x1.fp-30 i) == 3.141550174918818561961484385371624132331 + 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 Test "Real part of: cacos (-1.0 - 0x1p50 i) == 1.570796326794897507409741391764983781004 + 3.535050620855721078027883819436759661753e1 i": float: 1 ifloat: 1 @@ -278,48 +434,160 @@ float: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (0.25 + 1.0 i) == 1.394493894017929688812643125003661339452 - 8.924633639033482359562124741744951972772e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.25 - 1.0 i) == 1.394493894017929688812643125003661339452 + 8.924633639033482359562124741744951972772e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: cacos (0.5 + +0 i) == 1.047197551196597746154214461093167628066 - 0 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Real part of: cacos (0.5 + 1.0 i) == 1.221357263937683325603909865564381489366 - 9.261330313501824245501244453057873152694e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0.5 + 1.0 i) == 1.221357263937683325603909865564381489366 - 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: cacos (0.5 - 0 i) == 1.047197551196597746154214461093167628066 + +0 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Real part of: cacos (0.5 - 1.0 i) == 1.221357263937683325603909865564381489366 + 9.261330313501824245501244453057873152694e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0.5 - 1.0 i) == 1.221357263937683325603909865564381489366 + 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i": float: 1 ifloat: 1 Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i": ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-10 + 1.0 i) == 1.569458417435338878318763342108699202986 - 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-10 - 1.0 i) == 1.569458417435338878318763342108699202986 + 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (0x1.fp-100 + 1.0 i) == 1.570796326794896619231321691638670687364 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-100 + 1.0 i) == 1.570796326794896619231321691638670687364 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.fp-100 - 1.0 i) == 1.570796326794896619231321691638670687364 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-100 - 1.0 i) == 1.570796326794896619231321691638670687364 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1000 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1000 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-10000 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-10000 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (0x1.fp-1025 + 1.5 i) == 1.570796326794896619231321691639751442099 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (0x1.fp-1025 - 1.5 i) == 1.570796326794896619231321691639751442099 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 1.0 i) == 1.570796326794896619231321691639751442097 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (0x1.fp-129 + 1.5 i) == 1.570796326794896619231321691639751442097 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 1.0 i) == 1.570796326794896619231321691639751442097 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (0x1.fp-129 - 1.5 i) == 1.570796326794896619231321691639751442097 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (0x1.fp-16385 + 1.5 i) == 1.570796326794896619231321691639751442099 - 1.194763217287109304111930828519090523536 i": ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (0x1.fp-16385 - 1.5 i) == 1.570796326794896619231321691639751442099 + 1.194763217287109304111930828519090523536 i": ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-30 + 1.0 i) == 1.570796325518966635014803151387033957091 - 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-30 - 1.0 i) == 1.570796325518966635014803151387033957091 + 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (0x1.fp1023 + 0x1.fp1023 i) == 7.853981633974483096156608458198757210493e-1 - 7.107906849659093345062145442726115449315e2 i": double: 1 idouble: 1 @@ -341,12 +609,58 @@ ldouble: 1 Test "Imaginary part of: cacos (0x1p5000 - 1.0 i) == 7.079811261048172892385615158694057552948e-1506 + 3.466429049980286492395577839412341016946e3 i": ildouble: 1 ldouble: 1 +Test "Real part of: cacos (1.0 + 0.25 i) == 4.890443302710802929202843732146540079124e-1 - 5.097911466811016354623559941115413499164e-1 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (1.0 + 0.5 i) == 6.748888455860063801646649673121744318756e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (1.0 + 0.5 i) == 6.748888455860063801646649673121744318756e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (1.0 + 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 - 4.350501469856803800217957402220976497152e-2 i": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (1.0 + 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 - 4.350501469856803800217957402220976497152e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 + 0x1.fp-100 i) == 1.236292038260260888664514866456887257525e-15 - 1.236292038260260888664514866457202186027e-15 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.0 + 0x1.fp-30 i) == 4.247867097467650115899790787875186617316e-5 - 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (1.0 + 0x1p500 i) == 1.570796326794896619231321691639751442099 - 3.472667374605326000180332928505464606058e2 i": ildouble: 1 ldouble: 1 Test "Imaginary part of: cacos (1.0 + 0x1p5000 i) == 1.570796326794896619231321691639751442099 - 3.466429049980286492395577839412341016946e3 i": ildouble: 1 ldouble: 1 +Test "Real part of: cacos (1.0 - 0.25 i) == 4.890443302710802929202843732146540079124e-1 + 5.097911466811016354623559941115413499164e-1 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (1.0 - 0.5 i) == 6.748888455860063801646649673121744318756e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (1.0 - 0.5 i) == 6.748888455860063801646649673121744318756e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (1.0 - 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 + 4.350501469856803800217957402220976497152e-2 i": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (1.0 - 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 + 4.350501469856803800217957402220976497152e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 - 0x1.fp-100 i) == 1.236292038260260888664514866456887257525e-15 + 1.236292038260260888664514866457202186027e-15 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.0 - 0x1.fp-30 i) == 4.247867097467650115899790787875186617316e-5 + 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (1.0 - 0x1p500 i) == 1.570796326794896619231321691639751442099 + 3.472667374605326000180332928505464606058e2 i": ildouble: 1 ldouble: 1 @@ -539,32 +853,154 @@ double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: casin (-0.25 + 1.0 i) == -1.763024327769669304186785666360901026468e-1 + 8.924633639033482359562124741744951972772e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.25 - 1.0 i) == -1.763024327769669304186785666360901026468e-1 - 8.924633639033482359562124741744951972772e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 + 1.0 i) == -3.494390628572132936274118260753699527325e-1 + 9.261330313501824245501244453057873152694e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 1.0 i) == -3.494390628572132936274118260753699527325e-1 + 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 - 1.0 i) == -3.494390628572132936274118260753699527325e-1 - 9.261330313501824245501244453057873152694e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 1.0 i) == -3.494390628572132936274118260753699527325e-1 - 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-10 + 1.0 i) == -1.337909359557740912558349531052239112857e-3 + 8.813742198809567991336704287826445879025e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-10 + 1.0 i) == -1.337909359557740912558349531052239112857e-3 + 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +Test "Real part of: casin (-0x1.fp-10 - 1.0 i) == -1.337909359557740912558349531052239112857e-3 - 8.813742198809567991336704287826445879025e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-10 - 1.0 i) == -1.337909359557740912558349531052239112857e-3 - 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-100 + 1.0 i) == -1.080754735021050612990719608916167354321e-30 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-100 - 1.0 i) == -1.080754735021050612990719608916167354321e-30 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1000 + 1.0 i) == -1.278589251976747242280879285935084814093e-301 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1000 - 1.0 i) == -1.278589251976747242280879285935084814093e-301 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-10000 + 1.0 i) == -6.867047849047171855399183659351043150871e-3011 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-10000 - 1.0 i) == -6.867047849047171855399183659351043150871e-3011 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 + 1.0 i) == -3.810492908885321743133304375216617626230e-309 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (-0x1.fp-1025 + 1.5 i) == -2.989196569048182929051881765490354365918e-309 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 - 1.0 i) == -3.810492908885321743133304375216617626230e-309 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (-0x1.fp-1025 - 1.5 i) == -2.989196569048182929051881765490354365918e-309 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 1.0 i) == -2.013062564695348242280482517399205554874e-39 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (-0x1.fp-129 + 1.5 i) == -1.579176199917649005841160751101628985741e-39 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 1.0 i) == -2.013062564695348242280482517399205554874e-39 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (-0x1.fp-129 - 1.5 i) == -1.579176199917649005841160751101628985741e-39 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 + 1.0 i) == -5.757683115456107044131264955348448954458e-4933 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (-0x1.fp-16385 + 1.5 i) == -4.516698239814521372306784062043266700598e-4933 + 1.194763217287109304111930828519090523536 i": ildouble: 1 ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 - 1.0 i) == -5.757683115456107044131264955348448954458e-4933 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (-0x1.fp-16385 - 1.5 i) == -4.516698239814521372306784062043266700598e-4933 - 1.194763217287109304111930828519090523536 i": ildouble: 1 ldouble: 1 +Test "Real part of: casin (-0x1.fp-30 + 1.0 i) == -1.275929984216518540252717485007112529021e-9 + 8.813735870195430258081932989769495326854e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-30 + 1.0 i) == -1.275929984216518540252717485007112529021e-9 + 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-30 - 1.0 i) == -1.275929984216518540252717485007112529021e-9 - 8.813735870195430258081932989769495326854e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-30 - 1.0 i) == -1.275929984216518540252717485007112529021e-9 - 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (-0x1p500 + 1.0 i) == -1.570796326794896619231321691639751442099 + 3.472667374605326000180332928505464606058e2 i": ildouble: 1 ldouble: 1 @@ -577,12 +1013,56 @@ ldouble: 1 Test "Imaginary part of: casin (-0x1p5000 - 1.0 i) == -1.570796326794896619231321691639751442099 - 3.466429049980286492395577839412341016946e3 i": ildouble: 1 ldouble: 1 +Test "Real part of: casin (-1.0 + 0.25 i) == -1.081751996523816326311037318425097434186 + 5.097911466811016354623559941115413499164e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-1.0 + 0.5 i) == -8.959074812088902390666567243275770102229e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-1.0 + 0.5 i) == -8.959074812088902390666567243275770102229e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-1.0 + 0x1.fp-10 i) == -1.527305029163877791518741192097931722508 + 4.350501469856803800217957402220976497152e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-1.0 + 0x1.fp-129 i) == -1.570796326794896619177965338869929107115 + 5.335635276982233498398987585285818977933e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 + 0x1.fp-30 i) == -1.570753848123921942730162693731872690232 + 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (-1.0 + 0x1p500 i) == -3.054936363499604682051979393213617699789e-151 + 3.472667374605326000180332928505464606058e2 i": ildouble: 1 ldouble: 1 Test "Imaginary part of: casin (-1.0 + 0x1p5000 i) == -7.079811261048172892385615158694057552948e-1506 + 3.466429049980286492395577839412341016946e3 i": ildouble: 1 ldouble: 1 +Test "Real part of: casin (-1.0 - 0.25 i) == -1.081751996523816326311037318425097434186 - 5.097911466811016354623559941115413499164e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-1.0 - 0.5 i) == -8.959074812088902390666567243275770102229e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-1.0 - 0.5 i) == -8.959074812088902390666567243275770102229e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-1.0 - 0x1.fp-10 i) == -1.527305029163877791518741192097931722508 - 4.350501469856803800217957402220976497152e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-1.0 - 0x1.fp-129 i) == -1.570796326794896619177965338869929107115 - 5.335635276982233498398987585285818977933e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 - 0x1.fp-30 i) == -1.570753848123921942730162693731872690232 - 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (-1.0 - 0x1p500 i) == -3.054936363499604682051979393213617699789e-151 - 3.472667374605326000180332928505464606058e2 i": ildouble: 1 ldouble: 1 @@ -596,6 +1076,32 @@ idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: casin (0.25 + 1.0 i) == 1.763024327769669304186785666360901026468e-1 + 8.924633639033482359562124741744951972772e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.25 - 1.0 i) == 1.763024327769669304186785666360901026468e-1 - 8.924633639033482359562124741744951972772e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 + 1.0 i) == 3.494390628572132936274118260753699527325e-1 + 9.261330313501824245501244453057873152694e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 1.0 i) == 3.494390628572132936274118260753699527325e-1 + 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 - 1.0 i) == 3.494390628572132936274118260753699527325e-1 - 9.261330313501824245501244453057873152694e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 1.0 i) == 3.494390628572132936274118260753699527325e-1 - 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": double: 1 float: 1 @@ -604,32 +1110,128 @@ ifloat: 1 Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": ildouble: 1 ldouble: 1 +Test "Real part of: casin (0x1.fp-10 + 1.0 i) == 1.337909359557740912558349531052239112857e-3 + 8.813742198809567991336704287826445879025e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-10 + 1.0 i) == 1.337909359557740912558349531052239112857e-3 + 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +Test "Real part of: casin (0x1.fp-10 - 1.0 i) == 1.337909359557740912558349531052239112857e-3 - 8.813742198809567991336704287826445879025e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-10 - 1.0 i) == 1.337909359557740912558349531052239112857e-3 - 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-100 + 1.0 i) == 1.080754735021050612990719608916167354321e-30 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-100 - 1.0 i) == 1.080754735021050612990719608916167354321e-30 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1000 + 1.0 i) == 1.278589251976747242280879285935084814093e-301 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1000 - 1.0 i) == 1.278589251976747242280879285935084814093e-301 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-10000 + 1.0 i) == 6.867047849047171855399183659351043150871e-3011 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-10000 - 1.0 i) == 6.867047849047171855399183659351043150871e-3011 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 + 1.0 i) == 3.810492908885321743133304375216617626230e-309 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (0x1.fp-1025 + 1.5 i) == 2.989196569048182929051881765490354365918e-309 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 - 1.0 i) == 3.810492908885321743133304375216617626230e-309 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (0x1.fp-1025 - 1.5 i) == 2.989196569048182929051881765490354365918e-309 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 1.0 i) == 2.013062564695348242280482517399205554874e-39 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (0x1.fp-129 + 1.5 i) == 1.579176199917649005841160751101628985741e-39 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 1.0 i) == 2.013062564695348242280482517399205554874e-39 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (0x1.fp-129 - 1.5 i) == 1.579176199917649005841160751101628985741e-39 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 + 1.0 i) == 5.757683115456107044131264955348448954458e-4933 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (0x1.fp-16385 + 1.5 i) == 4.516698239814521372306784062043266700598e-4933 + 1.194763217287109304111930828519090523536 i": ildouble: 1 ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 - 1.0 i) == 5.757683115456107044131264955348448954458e-4933 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (0x1.fp-16385 - 1.5 i) == 4.516698239814521372306784062043266700598e-4933 - 1.194763217287109304111930828519090523536 i": ildouble: 1 ldouble: 1 +Test "Real part of: casin (0x1.fp-30 + 1.0 i) == 1.275929984216518540252717485007112529021e-9 + 8.813735870195430258081932989769495326854e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-30 + 1.0 i) == 1.275929984216518540252717485007112529021e-9 + 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-30 - 1.0 i) == 1.275929984216518540252717485007112529021e-9 - 8.813735870195430258081932989769495326854e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-30 - 1.0 i) == 1.275929984216518540252717485007112529021e-9 - 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (0x1.fp1023 + 0x1.fp1023 i) == 7.853981633974483096156608458198757210493e-1 + 7.107906849659093345062145442726115449315e2 i": double: 1 idouble: 1 @@ -651,12 +1253,56 @@ ldouble: 1 Test "Imaginary part of: casin (0x1p5000 - 1.0 i) == 1.570796326794896619231321691639751442099 - 3.466429049980286492395577839412341016946e3 i": ildouble: 1 ldouble: 1 +Test "Real part of: casin (1.0 + 0.25 i) == 1.081751996523816326311037318425097434186 + 5.097911466811016354623559941115413499164e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (1.0 + 0.5 i) == 8.959074812088902390666567243275770102229e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (1.0 + 0.5 i) == 8.959074812088902390666567243275770102229e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (1.0 + 0x1.fp-10 i) == 1.527305029163877791518741192097931722508 + 4.350501469856803800217957402220976497152e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (1.0 + 0x1.fp-129 i) == 1.570796326794896619177965338869929107115 + 5.335635276982233498398987585285818977933e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 + 0x1.fp-30 i) == 1.570753848123921942730162693731872690232 + 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (1.0 + 0x1p500 i) == 3.054936363499604682051979393213617699789e-151 + 3.472667374605326000180332928505464606058e2 i": ildouble: 1 ldouble: 1 Test "Imaginary part of: casin (1.0 + 0x1p5000 i) == 7.079811261048172892385615158694057552948e-1506 + 3.466429049980286492395577839412341016946e3 i": ildouble: 1 ldouble: 1 +Test "Real part of: casin (1.0 - 0.25 i) == 1.081751996523816326311037318425097434186 - 5.097911466811016354623559941115413499164e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (1.0 - 0.5 i) == 8.959074812088902390666567243275770102229e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (1.0 - 0.5 i) == 8.959074812088902390666567243275770102229e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (1.0 - 0x1.fp-10 i) == 1.527305029163877791518741192097931722508 - 4.350501469856803800217957402220976497152e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (1.0 - 0x1.fp-129 i) == 1.570796326794896619177965338869929107115 - 5.335635276982233498398987585285818977933e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 - 0x1.fp-30 i) == 1.570753848123921942730162693731872690232 - 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (1.0 - 0x1p500 i) == 3.054936363499604682051979393213617699789e-151 - 3.472667374605326000180332928505464606058e2 i": ildouble: 1 ldouble: 1 @@ -686,6 +1332,16 @@ idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: casinh (-0.25 + 1.0 i) == -5.097911466811016354623559941115413499164e-1 + 1.081751996523816326311037318425097434186 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.25 - 1.0 i) == -5.097911466811016354623559941115413499164e-1 - 1.081751996523816326311037318425097434186 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-0.5 + +0 i) == -0.4812118250596034474977589134243684231352 + +0 i": double: 2 float: 1 @@ -693,6 +1349,12 @@ idouble: 2 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Real part of: casinh (-0.5 + 1.0 i) == -7.328576759736452608886724437653071523305e-1 + 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-0.5 + 1.0 i) == -7.328576759736452608886724437653071523305e-1 + 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 Test "Real part of: casinh (-0.5 - 0 i) == -0.4812118250596034474977589134243684231352 - 0 i": double: 2 float: 1 @@ -700,6 +1362,34 @@ idouble: 2 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Real part of: casinh (-0.5 - 1.0 i) == -7.328576759736452608886724437653071523305e-1 - 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-0.5 - 1.0 i) == -7.328576759736452608886724437653071523305e-1 - 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1.fp-10 + 1.0 i) == -4.350501469856803800217957402220976497152e-2 + 1.527305029163877791518741192097931722508 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-10 - 1.0 i) == -4.350501469856803800217957402220976497152e-2 - 1.527305029163877791518741192097931722508 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.fp-129 + 1.0 i) == -5.335635276982233498398987585285818977933e-20 + 1.570796326794896619177965338869929107115 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.fp-129 - 1.0 i) == -5.335635276982233498398987585285818977933e-20 - 1.570796326794896619177965338869929107115 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-30 + 1.0 i) == -4.247867098745151888768727039216644758847e-5 + 1.570753848123921942730162693731872690232 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-30 - 1.0 i) == -4.247867098745151888768727039216644758847e-5 - 1.570753848123921942730162693731872690232 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-0x1p500 + 1.0 i) == -3.472667374605326000180332928505464606058e2 + 3.054936363499604682051979393213617699789e-151 i": ildouble: 1 ldouble: 1 @@ -719,6 +1409,67 @@ idouble: 2 ifloat: 1 ildouble: 3 ldouble: 3 +Test "Real part of: casinh (-1.0 + 0.25 i) == -8.924633639033482359562124741744951972772e-1 + 1.763024327769669304186785666360901026468e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0.5 i) == -9.261330313501824245501244453057873152694e-1 + 3.494390628572132936274118260753699527325e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0.5 i) == -9.261330313501824245501244453057873152694e-1 + 3.494390628572132936274118260753699527325e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-10 i) == -8.813742198809567991336704287826445879025e-1 + 1.337909359557740912558349531052239112857e-3 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-10 i) == -8.813742198809567991336704287826445879025e-1 + 1.337909359557740912558349531052239112857e-3 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-100 i) == -8.813735870195430252326093249797923090282e-1 + 1.080754735021050612990719608916167354321e-30 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-1000 i) == -8.813735870195430252326093249797923090282e-1 + 1.278589251976747242280879285935084814093e-301 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-10000 i) == -8.813735870195430252326093249797923090282e-1 + 6.867047849047171855399183659351043150871e-3011 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-1025 i) == -8.813735870195430252326093249797923090282e-1 + 3.810492908885321743133304375216617626230e-309 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-129 i) == -8.813735870195430252326093249797923090282e-1 + 2.013062564695348242280482517399205554874e-39 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-16385 i) == -8.813735870195430252326093249797923090282e-1 + 5.757683115456107044131264955348448954458e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-30 i) == -8.813735870195430258081932989769495326854e-1 + 1.275929984216518540252717485007112529021e-9 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-30 i) == -8.813735870195430258081932989769495326854e-1 + 1.275929984216518540252717485007112529021e-9 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-1.0 + 0x1p500 i) == -3.472667374605326000180332928505464606058e2 + 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 @@ -732,6 +1483,67 @@ idouble: 2 ifloat: 1 ildouble: 3 ldouble: 3 +Test "Real part of: casinh (-1.0 - 0.25 i) == -8.924633639033482359562124741744951972772e-1 - 1.763024327769669304186785666360901026468e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0.5 i) == -9.261330313501824245501244453057873152694e-1 - 3.494390628572132936274118260753699527325e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0.5 i) == -9.261330313501824245501244453057873152694e-1 - 3.494390628572132936274118260753699527325e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-10 i) == -8.813742198809567991336704287826445879025e-1 - 1.337909359557740912558349531052239112857e-3 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-10 i) == -8.813742198809567991336704287826445879025e-1 - 1.337909359557740912558349531052239112857e-3 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-100 i) == -8.813735870195430252326093249797923090282e-1 - 1.080754735021050612990719608916167354321e-30 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-1000 i) == -8.813735870195430252326093249797923090282e-1 - 1.278589251976747242280879285935084814093e-301 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-10000 i) == -8.813735870195430252326093249797923090282e-1 - 6.867047849047171855399183659351043150871e-3011 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-1025 i) == -8.813735870195430252326093249797923090282e-1 - 3.810492908885321743133304375216617626230e-309 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-129 i) == -8.813735870195430252326093249797923090282e-1 - 2.013062564695348242280482517399205554874e-39 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-16385 i) == -8.813735870195430252326093249797923090282e-1 - 5.757683115456107044131264955348448954458e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-30 i) == -8.813735870195430258081932989769495326854e-1 - 1.275929984216518540252717485007112529021e-9 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-30 i) == -8.813735870195430258081932989769495326854e-1 - 1.275929984216518540252717485007112529021e-9 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-1.0 - 0x1p500 i) == -3.472667374605326000180332928505464606058e2 - 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 @@ -792,16 +1604,38 @@ idouble: 3 ifloat: 6 ildouble: 2 ldouble: 2 +Test "Imaginary part of: casinh (0.25 + 1.0 i) == 5.097911466811016354623559941115413499164e-1 + 1.081751996523816326311037318425097434186 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.25 - 1.0 i) == 5.097911466811016354623559941115413499164e-1 - 1.081751996523816326311037318425097434186 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0.5 + +0 i) == 0.4812118250596034474977589134243684231352 + +0 i": float: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0.5 + 1.0 i) == 7.328576759736452608886724437653071523305e-1 + 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (0.5 + 1.0 i) == 7.328576759736452608886724437653071523305e-1 + 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 Test "Real part of: casinh (0.5 - 0 i) == 0.4812118250596034474977589134243684231352 - 0 i": float: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0.5 - 1.0 i) == 7.328576759736452608886724437653071523305e-1 - 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (0.5 - 1.0 i) == 7.328576759736452608886724437653071523305e-1 - 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i": float: 1 ifloat: 1 @@ -814,6 +1648,28 @@ idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0x1.fp-10 + 1.0 i) == 4.350501469856803800217957402220976497152e-2 + 1.527305029163877791518741192097931722508 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-10 - 1.0 i) == 4.350501469856803800217957402220976497152e-2 - 1.527305029163877791518741192097931722508 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.fp-129 + 1.0 i) == 5.335635276982233498398987585285818977933e-20 + 1.570796326794896619177965338869929107115 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.fp-129 - 1.0 i) == 5.335635276982233498398987585285818977933e-20 - 1.570796326794896619177965338869929107115 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-30 + 1.0 i) == 4.247867098745151888768727039216644758847e-5 + 1.570753848123921942730162693731872690232 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-30 - 1.0 i) == 4.247867098745151888768727039216644758847e-5 - 1.570753848123921942730162693731872690232 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0x1.fp1023 + 0x1.fp1023 i) == 7.107906849659093345062145442726115449315e2 + 7.853981633974483096156608458198757210493e-1 i": double: 1 idouble: 1 @@ -842,6 +1698,67 @@ idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Real part of: casinh (1.0 + 0.25 i) == 8.924633639033482359562124741744951972772e-1 + 1.763024327769669304186785666360901026468e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0.5 i) == 9.261330313501824245501244453057873152694e-1 + 3.494390628572132936274118260753699527325e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 + 0.5 i) == 9.261330313501824245501244453057873152694e-1 + 3.494390628572132936274118260753699527325e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-10 i) == 8.813742198809567991336704287826445879025e-1 + 1.337909359557740912558349531052239112857e-3 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-10 i) == 8.813742198809567991336704287826445879025e-1 + 1.337909359557740912558349531052239112857e-3 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-100 i) == 8.813735870195430252326093249797923090282e-1 + 1.080754735021050612990719608916167354321e-30 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-1000 i) == 8.813735870195430252326093249797923090282e-1 + 1.278589251976747242280879285935084814093e-301 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-10000 i) == 8.813735870195430252326093249797923090282e-1 + 6.867047849047171855399183659351043150871e-3011 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-1025 i) == 8.813735870195430252326093249797923090282e-1 + 3.810492908885321743133304375216617626230e-309 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-129 i) == 8.813735870195430252326093249797923090282e-1 + 2.013062564695348242280482517399205554874e-39 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-16385 i) == 8.813735870195430252326093249797923090282e-1 + 5.757683115456107044131264955348448954458e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-30 i) == 8.813735870195430258081932989769495326854e-1 + 1.275929984216518540252717485007112529021e-9 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-30 i) == 8.813735870195430258081932989769495326854e-1 + 1.275929984216518540252717485007112529021e-9 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (1.0 + 0x1p500 i) == 3.472667374605326000180332928505464606058e2 + 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 @@ -855,6 +1772,67 @@ idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Real part of: casinh (1.0 - 0.25 i) == 8.924633639033482359562124741744951972772e-1 - 1.763024327769669304186785666360901026468e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0.5 i) == 9.261330313501824245501244453057873152694e-1 - 3.494390628572132936274118260753699527325e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 - 0.5 i) == 9.261330313501824245501244453057873152694e-1 - 3.494390628572132936274118260753699527325e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-10 i) == 8.813742198809567991336704287826445879025e-1 - 1.337909359557740912558349531052239112857e-3 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-10 i) == 8.813742198809567991336704287826445879025e-1 - 1.337909359557740912558349531052239112857e-3 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-100 i) == 8.813735870195430252326093249797923090282e-1 - 1.080754735021050612990719608916167354321e-30 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-1000 i) == 8.813735870195430252326093249797923090282e-1 - 1.278589251976747242280879285935084814093e-301 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-10000 i) == 8.813735870195430252326093249797923090282e-1 - 6.867047849047171855399183659351043150871e-3011 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-1025 i) == 8.813735870195430252326093249797923090282e-1 - 3.810492908885321743133304375216617626230e-309 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-129 i) == 8.813735870195430252326093249797923090282e-1 - 2.013062564695348242280482517399205554874e-39 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-16385 i) == 8.813735870195430252326093249797923090282e-1 - 5.757683115456107044131264955348448954458e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-30 i) == 8.813735870195430258081932989769495326854e-1 - 1.275929984216518540252717485007112529021e-9 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-30 i) == 8.813735870195430258081932989769495326854e-1 - 1.275929984216518540252717485007112529021e-9 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (1.0 - 0x1p500 i) == 3.472667374605326000180332928505464606058e2 - 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 @@ -2637,6 +3615,9 @@ float: 2 ifloat: 2 ildouble: 1 ldouble: 1 +Test "j0 (0x1p1023) == -1.5665258060609012834424478437196679802783e-155": +ildouble: 1 +ldouble: 1 Test "j0 (0x1p16383) == 9.5859502826270374691362975419147645151233e-2467": ildouble: 2 ldouble: 2 @@ -2680,9 +3661,15 @@ double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Test "j1 (0x1p1023) == 8.2687542933709649327986678723012001545638e-155": +ildouble: 1 +ldouble: 1 Test "j1 (0x1p16382) == 8.0839224448726336195866026476176740513439e-2467": ildouble: 1 ldouble: 1 +Test "j1 (0x1p16383) == -3.8895531955766020648617743624167352352217e-2467": +ildouble: 2 +ldouble: 2 Test "j1 (1.0) == 0.440050585744933515959682203718914913": ildouble: 1 ldouble: 1 @@ -3283,9 +4270,15 @@ double: 1 float: 1 idouble: 1 ifloat: 1 +Test "y0 (0x1p1023) == 8.2687542933709649327986678723012001545638e-155": +ildouble: 1 +ldouble: 1 Test "y0 (0x1p16382) == 8.0839224448726336195866026476176740513439e-2467": ildouble: 1 ldouble: 1 +Test "y0 (0x1p16383) == -3.8895531955766020648617743624167352352217e-2467": +ildouble: 2 +ldouble: 2 Test "y0 (1.0) == 0.0882569642156769579829267660235151628": double: 2 float: 1 @@ -3330,6 +4323,9 @@ ldouble: 1 Test "y1 (0x1p-30) == -6.8356527557643159612937462812258975438856e+08": ildouble: 1 ldouble: 1 +Test "y1 (0x1p1023) == 1.5665258060609012834424478437196679802783e-155": +ildouble: 1 +ldouble: 1 Test "y1 (0x1p16383) == -9.5859502826270374691362975419147645151233e-2467": ildouble: 2 ldouble: 2 @@ -3514,9 +4510,9 @@ ifloat: 1 Function: Real part of "cacos": double: 1 -float: 1 +float: 2 idouble: 1 -ifloat: 1 +ifloat: 2 ildouble: 1 ldouble: 1 @@ -3549,14 +4545,16 @@ double: 1 float: 1 idouble: 1 ifloat: 1 +ildouble: 1 +ldouble: 1 Function: Imaginary part of "casin": double: 2 float: 1 idouble: 2 ifloat: 1 -ildouble: 3 -ldouble: 3 +ildouble: 1 +ldouble: 1 Function: Real part of "casinh": double: 5 diff --git a/libc/sysdeps/unix/sysv/linux/i386/nptl/libm.abilist b/libc/sysdeps/unix/sysv/linux/i386/nptl/libm.abilist index 401a2c6dd..c185f0b20 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/nptl/libm.abilist +++ b/libc/sysdeps/unix/sysv/linux/i386/nptl/libm.abilist @@ -396,6 +396,11 @@ GLIBC_2.15 __yn_finite F __ynf_finite F __ynl_finite F +GLIBC_2.18 + GLIBC_2.18 A + __issignaling F + __issignalingf F + __issignalingl F GLIBC_2.2 GLIBC_2.2 A __expl F diff --git a/libc/sysdeps/unix/sysv/linux/kernel-features.h b/libc/sysdeps/unix/sysv/linux/kernel-features.h index 8fdff7e38..ccd4c5918 100644 --- a/libc/sysdeps/unix/sysv/linux/kernel-features.h +++ b/libc/sysdeps/unix/sysv/linux/kernel-features.h @@ -221,3 +221,9 @@ #if defined __x86_64__ && __LINUX_KERNEL_VERSION >= 0x030100 # define __ASSUME_GETCPU_SYSCALL 1 #endif + +/* 2.6.29 removed the XFS restricted_chown sysctl, so it is pointless looking + for it in newer kernels. */ +#if __LINUX_KERNEL_VERSION >= 0x02061d +# define __ASSUME_XFS_RESTRICTED_CHOWN 1 +#endif diff --git a/libc/sysdeps/unix/sysv/linux/libc_fatal.c b/libc/sysdeps/unix/sysv/linux/libc_fatal.c index d4f646643..9b69562bc 100644 --- a/libc/sysdeps/unix/sysv/linux/libc_fatal.c +++ b/libc/sysdeps/unix/sysv/linux/libc_fatal.c @@ -1,4 +1,5 @@ -/* Copyright (C) 1993-2013 Free Software Foundation, Inc. +/* Catastrophic failure reports. Linux version. + Copyright (C) 1993-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -15,198 +16,55 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#include <atomic.h> #include <errno.h> +#include <execinfo.h> #include <fcntl.h> -#include <ldsodefs.h> -#include <paths.h> -#include <stdarg.h> -#include <stdbool.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sysdep.h> -#include <unistd.h> +#include <not-cancel.h> #include <sys/mman.h> -#include <sys/syslog.h> -#include <execinfo.h> +#include <sys/uio.h> #include <gnu/option-groups.h> -/* Abort with an error message. */ -#include <not-cancel.h> - -#ifdef FATAL_PREPARE_INCLUDE -#include FATAL_PREPARE_INCLUDE -#endif - -struct str_list +static bool +writev_for_fatal (int fd, const struct iovec *iov, size_t niov, size_t total) { - const char *str; - size_t len; - struct str_list *next; -}; - + INTERNAL_SYSCALL_DECL (err); + ssize_t cnt; + do + cnt = INTERNAL_SYSCALL (writev, err, 3, fd, iov, niov); + while (INTERNAL_SYSCALL_ERROR_P (cnt, err) + && INTERNAL_SYSCALL_ERRNO (cnt, err) == EINTR); + return cnt == total; +} +#define WRITEV_FOR_FATAL writev_for_fatal -/* Abort with an error message. */ -void -__libc_message (int do_abort, const char *fmt, ...) +static void +backtrace_and_maps (int do_abort, bool written, int fd) { - va_list ap; - va_list ap_copy; - int fd = -1; - - va_start (ap, fmt); - va_copy (ap_copy, ap); - -#ifdef FATAL_PREPARE - FATAL_PREPARE; -#endif - - /* Open a descriptor for /dev/tty unless the user explicitly - requests errors on standard error. */ - const char *on_2 = __libc_secure_getenv ("LIBC_FATAL_STDERR_"); - if (on_2 == NULL || *on_2 == '\0') - fd = open_not_cancel_2 (_PATH_TTY, O_RDWR | O_NOCTTY | O_NDELAY); - - if (fd == -1) - fd = STDERR_FILENO; - - struct str_list *list = NULL; - int nlist = 0; - - const char *cp = fmt; - while (*cp != '\0') - { - /* Find the next "%s" or the end of the string. */ - const char *next = cp; - while (next[0] != '%' || next[1] != 's') - { - next = __strchrnul (next + 1, '%'); - - if (next[0] == '\0') - break; - } - - /* Determine what to print. */ - const char *str; - size_t len; - if (cp[0] == '%' && cp[1] == 's') - { - str = va_arg (ap, const char *); - len = strlen (str); - cp += 2; - } - else - { - str = cp; - len = next - cp; - cp = next; - } - - struct str_list *newp = alloca (sizeof (struct str_list)); - newp->str = str; - newp->len = len; - newp->next = list; - list = newp; - ++nlist; - } - - bool written = false; - if (nlist > 0) - { - struct iovec *iov = alloca (nlist * sizeof (struct iovec)); - ssize_t total = 0; - - for (int cnt = nlist - 1; cnt >= 0; --cnt) - { - iov[cnt].iov_base = (void *) list->str; - iov[cnt].iov_len = list->len; - total += list->len; - list = list->next; - } - - INTERNAL_SYSCALL_DECL (err); - ssize_t cnt; - do - cnt = INTERNAL_SYSCALL (writev, err, 3, fd, iov, nlist); - while (INTERNAL_SYSCALL_ERROR_P (cnt, err) - && INTERNAL_SYSCALL_ERRNO (cnt, err) == EINTR); - - if (cnt == total) - written = true; - - if (do_abort) - { - total = ((total + 1 + GLRO(dl_pagesize) - 1) - & ~(GLRO(dl_pagesize) - 1)); - struct abort_msg_s *buf = __mmap (NULL, total, - PROT_READ | PROT_WRITE, - MAP_ANON | MAP_PRIVATE, -1, 0); - if (__builtin_expect (buf != MAP_FAILED, 1)) - { - buf->size = total; - char *wp = buf->msg; - for (int cnt = 0; cnt < nlist; ++cnt) - wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); - *wp = '\0'; - - /* We have to free the old buffer since the application might - catch the SIGABRT signal. */ - struct abort_msg_s *old = atomic_exchange_acq (&__abort_msg, - buf); - if (old != NULL) - __munmap (old, old->size); - } - } - } - - va_end (ap); - - /* If we had no success writing the message, use syslog. */ - if (! written) - vsyslog (LOG_ERR, fmt, ap_copy); - - va_end (ap_copy); - - if (do_abort) - { #if __OPTION_EGLIBC_BACKTRACE - if (do_abort > 1 && written) - { - void *addrs[64]; + if (do_abort > 1 && written) + { + void *addrs[64]; #define naddrs (sizeof (addrs) / sizeof (addrs[0])) - int n = __backtrace (addrs, naddrs); - if (n > 2) - { + int n = __backtrace (addrs, naddrs); + if (n > 2) + { #define strnsize(str) str, strlen (str) #define writestr(str) write_not_cancel (fd, str) - writestr (strnsize ("======= Backtrace: =========\n")); - __backtrace_symbols_fd (addrs + 1, n - 1, fd); - - writestr (strnsize ("======= Memory map: ========\n")); - int fd2 = open_not_cancel_2 ("/proc/self/maps", O_RDONLY); - char buf[1024]; - ssize_t n2; - while ((n2 = read_not_cancel (fd2, buf, sizeof (buf))) > 0) - if (write_not_cancel (fd, buf, n2) != n2) - break; - close_not_cancel_no_status (fd2); - } - } -#endif /* __OPTION_EGLIBC_BACKTRACE */ - - /* Terminate the process. */ - abort (); + writestr (strnsize ("======= Backtrace: =========\n")); + __backtrace_symbols_fd (addrs + 1, n - 1, fd); + + writestr (strnsize ("======= Memory map: ========\n")); + int fd2 = open_not_cancel_2 ("/proc/self/maps", O_RDONLY); + char buf[1024]; + ssize_t n2; + while ((n2 = read_not_cancel (fd2, buf, sizeof (buf))) > 0) + if (write_not_cancel (fd, buf, n2) != n2) + break; + close_not_cancel_no_status (fd2); + } } +#endif /* __OPTION_EGLIBC_BACKTRACE */ } +#define BEFORE_ABORT backtrace_and_maps - -void -__libc_fatal (message) - const char *message; -{ - /* The loop is added only to keep gcc happy. */ - while (1) - __libc_message (1, "%s", message); -} -libc_hidden_def (__libc_fatal) +#include <sysdeps/posix/libc_fatal.c> diff --git a/libc/sysdeps/unix/sysv/linux/pathconf.c b/libc/sysdeps/unix/sysv/linux/pathconf.c index de91a4541..723d23453 100644 --- a/libc/sysdeps/unix/sysv/linux/pathconf.c +++ b/libc/sysdeps/unix/sysv/linux/pathconf.c @@ -289,11 +289,16 @@ __statfs_chown_restricted (int result, const struct statfs *fsbuf) return -1; } +#if __ASSUME_XFS_RESTRICTED_CHOWN + return 1; +#else int fd; + int save_errno; long int retval = 1; switch (fsbuf->f_type) { case XFS_SUPER_MAGIC: + save_errno = errno; /* Read the value from /proc/sys/fs/xfs/restrict_chown. If we cannot read it default to assume the restriction is in place. */ fd = open_not_cancel_2 ("/proc/sys/fs/xfs/restrict_chown", O_RDONLY); @@ -306,6 +311,7 @@ __statfs_chown_restricted (int result, const struct statfs *fsbuf) close_not_cancel_no_status (fd); } + __set_errno (save_errno); break; default: @@ -313,4 +319,5 @@ __statfs_chown_restricted (int result, const struct statfs *fsbuf) } return retval; +#endif } diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libm.abilist b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libm.abilist index 620aff9e9..76a4ba31d 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libm.abilist +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libm.abilist @@ -397,6 +397,11 @@ GLIBC_2.15 __yn_finite F __ynf_finite F __ynl_finite F +GLIBC_2.18 + GLIBC_2.18 A + __issignaling F + __issignalingf F + __issignalingl F GLIBC_2.2 GLIBC_2.2 A feclearexcept F diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm.abilist b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm.abilist index 89422ab9f..d309a6fa1 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm.abilist +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm.abilist @@ -81,6 +81,11 @@ GLIBC_2.15 __yn_finite F __ynf_finite F __ynl_finite F +GLIBC_2.18 + GLIBC_2.18 A + __issignaling F + __issignalingf F + __issignalingl F GLIBC_2.3 GLIBC_2.3 A _LIB_VERSION D 0x4 diff --git a/libc/sysdeps/unix/sysv/linux/s390/bits/statfs.h b/libc/sysdeps/unix/sysv/linux/s390/bits/statfs.h index ff54607fa..91dde1533 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/bits/statfs.h +++ b/libc/sysdeps/unix/sysv/linux/s390/bits/statfs.h @@ -23,8 +23,8 @@ struct statfs { - int f_type; - int f_bsize; + unsigned int f_type; + unsigned int f_bsize; #ifndef __USE_FILE_OFFSET64 __fsblkcnt_t f_blocks; __fsblkcnt_t f_bfree; @@ -39,27 +39,27 @@ struct statfs __fsfilcnt64_t f_ffree; #endif __fsid_t f_fsid; - int f_namelen; - int f_frsize; - int f_flags; - int f_spare[4]; + unsigned int f_namelen; + unsigned int f_frsize; + unsigned int f_flags; + unsigned int f_spare[4]; }; #ifdef __USE_LARGEFILE64 struct statfs64 { - int f_type; - int f_bsize; + unsigned int f_type; + unsigned int f_bsize; __fsblkcnt64_t f_blocks; __fsblkcnt64_t f_bfree; __fsblkcnt64_t f_bavail; __fsfilcnt64_t f_files; __fsfilcnt64_t f_ffree; __fsid_t f_fsid; - int f_namelen; - int f_frsize; - int f_flags; - int f_spare[4]; + unsigned int f_namelen; + unsigned int f_frsize; + unsigned int f_flags; + unsigned int f_spare[4]; }; #endif diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libm.abilist b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libm.abilist index ae8af50eb..f836c90d9 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libm.abilist +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libm.abilist @@ -393,6 +393,11 @@ GLIBC_2.15 __yn_finite F __ynf_finite F __ynl_finite F +GLIBC_2.18 + GLIBC_2.18 A + __issignaling F + __issignalingf F + __issignalingl F GLIBC_2.2 GLIBC_2.2 A fedisableexcept F diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libm.abilist b/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libm.abilist index acf4d6851..a0891ad25 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libm.abilist +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libm.abilist @@ -81,6 +81,11 @@ GLIBC_2.15 __yn_finite F __ynf_finite F __ynl_finite F +GLIBC_2.18 + GLIBC_2.18 A + __issignaling F + __issignalingf F + __issignalingl F GLIBC_2.2 GLIBC_2.2 A _LIB_VERSION D 0x4 diff --git a/libc/sysdeps/unix/sysv/linux/sh/nptl/libm.abilist b/libc/sysdeps/unix/sysv/linux/sh/nptl/libm.abilist index d85192910..92821fdbb 100644 --- a/libc/sysdeps/unix/sysv/linux/sh/nptl/libm.abilist +++ b/libc/sysdeps/unix/sysv/linux/sh/nptl/libm.abilist @@ -54,6 +54,10 @@ GLIBC_2.15 __y1f_finite F __yn_finite F __ynf_finite F +GLIBC_2.18 + GLIBC_2.18 A + __issignaling F + __issignalingf F GLIBC_2.2 GLIBC_2.2 A _LIB_VERSION D 0x4 diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libm.abilist b/libc/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libm.abilist index 4c6ec6b71..9a1fcb1b4 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libm.abilist +++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libm.abilist @@ -388,6 +388,11 @@ GLIBC_2.15 __yn_finite F __ynf_finite F __ynl_finite F +GLIBC_2.18 + GLIBC_2.18 A + __issignaling F + __issignalingf F + __issignalingl F GLIBC_2.2 GLIBC_2.2 A feclearexcept F diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libm.abilist b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libm.abilist index 22fb92aec..2b41d3422 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libm.abilist +++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libm.abilist @@ -81,6 +81,11 @@ GLIBC_2.15 __yn_finite F __ynf_finite F __ynl_finite F +GLIBC_2.18 + GLIBC_2.18 A + __issignaling F + __issignalingf F + __issignalingl F GLIBC_2.2 GLIBC_2.2 A _LIB_VERSION D 0x4 diff --git a/libc/sysdeps/unix/sysv/linux/sys/fsuid.h b/libc/sysdeps/unix/sysv/linux/sys/fsuid.h index f844a5ff0..7590313b1 100644 --- a/libc/sysdeps/unix/sysv/linux/sys/fsuid.h +++ b/libc/sysdeps/unix/sysv/linux/sys/fsuid.h @@ -25,10 +25,10 @@ __BEGIN_DECLS /* Change uid used for file access control to UID, without affecting other privileges (such as who can send signals at the process). */ -extern int setfsuid (__uid_t __uid) __THROW __wur; +extern int setfsuid (__uid_t __uid) __THROW; /* Ditto for group id. */ -extern int setfsgid (__gid_t __gid) __THROW __wur; +extern int setfsgid (__gid_t __gid) __THROW; __END_DECLS diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/64/nptl/libm.abilist b/libc/sysdeps/unix/sysv/linux/x86_64/64/nptl/libm.abilist index 7bf568c51..239093467 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/64/nptl/libm.abilist +++ b/libc/sysdeps/unix/sysv/linux/x86_64/64/nptl/libm.abilist @@ -81,6 +81,11 @@ GLIBC_2.15 __yn_finite F __ynf_finite F __ynl_finite F +GLIBC_2.18 + GLIBC_2.18 A + __issignaling F + __issignalingf F + __issignalingl F GLIBC_2.2.5 GLIBC_2.2.5 A _LIB_VERSION D 0x4 diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libm.abilist b/libc/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libm.abilist index 0f3ea4ba4..1825adb1b 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libm.abilist +++ b/libc/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libm.abilist @@ -395,3 +395,8 @@ GLIBC_2.16 yn F ynf F ynl F +GLIBC_2.18 + GLIBC_2.18 A + __issignaling F + __issignalingf F + __issignalingl F diff --git a/libc/sysdeps/x86_64/Makefile b/libc/sysdeps/x86_64/Makefile index 78c98e7c5..08db33192 100644 --- a/libc/sysdeps/x86_64/Makefile +++ b/libc/sysdeps/x86_64/Makefile @@ -37,6 +37,50 @@ tests-pie += $(quad-pie-test) $(objpfx)tst-quad1pie: $(objpfx)tst-quadmod1pie.o $(objpfx)tst-quad2pie: $(objpfx)tst-quadmod2pie.o + +tests += tst-audit3 tst-audit4 tst-audit5 +ifeq (yes,$(config-cflags-avx)) +tests += tst-audit6 tst-audit7 +endif +modules-names += tst-auditmod3a tst-auditmod3b \ + tst-auditmod4a tst-auditmod4b \ + tst-auditmod5a tst-auditmod5b \ + tst-auditmod6a tst-auditmod6b tst-auditmod6c \ + tst-auditmod7a tst-auditmod7b + +$(objpfx)tst-audit3: $(objpfx)tst-auditmod3a.so +$(objpfx)tst-audit3.out: $(objpfx)tst-auditmod3b.so +tst-audit3-ENV = LD_AUDIT=$(objpfx)tst-auditmod3b.so + +$(objpfx)tst-audit4: $(objpfx)tst-auditmod4a.so +$(objpfx)tst-audit4.out: $(objpfx)tst-auditmod4b.so +tst-audit4-ENV = LD_AUDIT=$(objpfx)tst-auditmod4b.so + +$(objpfx)tst-audit5: $(objpfx)tst-auditmod5a.so +$(objpfx)tst-audit5.out: $(objpfx)tst-auditmod5b.so +tst-audit5-ENV = LD_AUDIT=$(objpfx)tst-auditmod5b.so + +$(objpfx)tst-audit6: $(objpfx)tst-auditmod6a.so +$(objpfx)tst-audit6.out: $(objpfx)tst-auditmod6b.so \ + $(objpfx)tst-auditmod6c.so +tst-audit6-ENV = LD_AUDIT=$(objpfx)tst-auditmod6b.so:$(objpfx)tst-auditmod6c.so + +$(objpfx)tst-audit7: $(objpfx)tst-auditmod7a.so +$(objpfx)tst-audit7.out: $(objpfx)tst-auditmod7b.so +tst-audit7-ENV = LD_AUDIT=$(objpfx)tst-auditmod7b.so + +ifeq (yes,$(config-cflags-avx)) +AVX-CFLAGS=-mavx +ifeq (yes,$(config-cflags-novzeroupper)) +AVX-CFLAGS+=-mno-vzeroupper +endif +CFLAGS-tst-audit4.c += $(AVX-CFLAGS) +CFLAGS-tst-auditmod4a.c += $(AVX-CFLAGS) +CFLAGS-tst-auditmod4b.c += $(AVX-CFLAGS) +CFLAGS-tst-auditmod6b.c += $(AVX-CFLAGS) +CFLAGS-tst-auditmod6c.c += $(AVX-CFLAGS) +CFLAGS-tst-auditmod7b.c += $(AVX-CFLAGS) +endif endif ifeq ($(subdir),csu) diff --git a/libc/sysdeps/x86_64/configure b/libc/sysdeps/x86_64/configure index 0fa0e1ecf..923241195 100644 --- a/libc/sysdeps/x86_64/configure +++ b/libc/sysdeps/x86_64/configure @@ -66,6 +66,8 @@ if test $libc_cv_cc_sse4 = yes; then $as_echo "#define HAVE_SSE4_SUPPORT 1" >>confdefs.h fi +config_vars="$config_vars +config-cflags-sse4 = $libc_cv_cc_sse4" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX support" >&5 $as_echo_n "checking for AVX support... " >&6; } @@ -90,6 +92,8 @@ if test $libc_cv_cc_avx = yes; then $as_echo "#define HAVE_AVX_SUPPORT 1" >>confdefs.h fi +config_vars="$config_vars +config-cflags-avx = $libc_cv_cc_avx" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX encoding of SSE instructions" >&5 $as_echo_n "checking for AVX encoding of SSE instructions... " >&6; } @@ -114,6 +118,8 @@ if test $libc_cv_cc_sse2avx = yes; then $as_echo "#define HAVE_SSE2AVX_SUPPORT 1" >>confdefs.h fi +config_vars="$config_vars +config-cflags-sse2avx = $libc_cv_cc_sse2avx" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FMA4 support" >&5 $as_echo_n "checking for FMA4 support... " >&6; } @@ -138,6 +144,8 @@ if test $libc_cv_cc_fma4 = yes; then $as_echo "#define HAVE_FMA4_SUPPORT 1" >>confdefs.h fi +config_vars="$config_vars +have-mfma4 = $libc_cv_cc_fma4" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -mno-vzeroupper support" >&5 $as_echo_n "checking for -mno-vzeroupper support... " >&6; } @@ -158,6 +166,8 @@ fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_novzeroupper" >&5 $as_echo "$libc_cv_cc_novzeroupper" >&6; } +config_vars="$config_vars +config-cflags-novzeroupper = $libc_cv_cc_novzeroupper" $as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h diff --git a/libc/sysdeps/x86_64/configure.in b/libc/sysdeps/x86_64/configure.in index 94bcd19f3..c682f93c3 100644 --- a/libc/sysdeps/x86_64/configure.in +++ b/libc/sysdeps/x86_64/configure.in @@ -12,6 +12,7 @@ LIBC_TRY_CC_OPTION([-msse4], [libc_cv_cc_sse4=yes], [libc_cv_cc_sse4=no]) if test $libc_cv_cc_sse4 = yes; then AC_DEFINE(HAVE_SSE4_SUPPORT) fi +LIBC_CONFIG_VAR([config-cflags-sse4], [$libc_cv_cc_sse4]) dnl Check if -mavx works. AC_CACHE_CHECK(for AVX support, libc_cv_cc_avx, [dnl @@ -20,6 +21,7 @@ LIBC_TRY_CC_OPTION([-mavx], [libc_cv_cc_avx=yes], [libc_cv_cc_avx=no]) if test $libc_cv_cc_avx = yes; then AC_DEFINE(HAVE_AVX_SUPPORT) fi +LIBC_CONFIG_VAR([config-cflags-avx], [$libc_cv_cc_avx]) dnl Check if -msse2avx works. AC_CACHE_CHECK(for AVX encoding of SSE instructions, libc_cv_cc_sse2avx, [dnl @@ -30,6 +32,7 @@ LIBC_TRY_CC_OPTION([-msse2avx], if test $libc_cv_cc_sse2avx = yes; then AC_DEFINE(HAVE_SSE2AVX_SUPPORT) fi +LIBC_CONFIG_VAR([config-cflags-sse2avx], [$libc_cv_cc_sse2avx]) dnl Check if -mfma4 works. AC_CACHE_CHECK(for FMA4 support, libc_cv_cc_fma4, [dnl @@ -38,6 +41,7 @@ LIBC_TRY_CC_OPTION([-mfma4], [libc_cv_cc_fma4=yes], [libc_cv_cc_fma4=no]) if test $libc_cv_cc_fma4 = yes; then AC_DEFINE(HAVE_FMA4_SUPPORT) fi +LIBC_CONFIG_VAR([have-mfma4], [$libc_cv_cc_fma4]) dnl Check if -mno-vzeroupper works. AC_CACHE_CHECK(for -mno-vzeroupper support, libc_cv_cc_novzeroupper, [dnl @@ -45,6 +49,7 @@ LIBC_TRY_CC_OPTION([-mno-vzeroupper], [libc_cv_cc_novzeroupper=yes], [libc_cv_cc_novzeroupper=no]) ]) +LIBC_CONFIG_VAR([config-cflags-novzeroupper], [$libc_cv_cc_novzeroupper]) dnl It is always possible to access static and hidden symbols in an dnl position independent way. diff --git a/libc/sysdeps/x86_64/fpu/libm-test-ulps b/libc/sysdeps/x86_64/fpu/libm-test-ulps index f190ed881..43b5595c5 100644 --- a/libc/sysdeps/x86_64/fpu/libm-test-ulps +++ b/libc/sysdeps/x86_64/fpu/libm-test-ulps @@ -181,29 +181,19 @@ ldouble: 1 # cacos Test "Imaginary part of: cacos (+0 + 0.5 i) == pi/2 - 0.4812118250596034474977589134243684231352 i": -double: 2 float: 1 -idouble: 2 ifloat: 1 -ildouble: 1 -ldouble: 1 Test "Imaginary part of: cacos (+0 + 1.0 i) == pi/2 - 0.8813735870195430252326093249797923090282 i": -double: 2 +double: 1 float: 1 -idouble: 2 +idouble: 1 ifloat: 1 -ildouble: 2 -ldouble: 2 Test "Imaginary part of: cacos (+0 + 1.5 i) == pi/2 - 1.194763217287109304111930828519090523536 i": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 +double: 1 +idouble: 1 Test "Imaginary part of: cacos (+0 - 0.5 i) == pi/2 + 0.4812118250596034474977589134243684231352 i": float: 1 ifloat: 1 -ildouble: 1 -ldouble: 1 Test "Imaginary part of: cacos (+0 - 1.0 i) == pi/2 + 0.8813735870195430252326093249797923090282 i": double: 1 float: 1 @@ -213,66 +203,520 @@ Test "Imaginary part of: cacos (+0 - 1.5 i) == pi/2 + 1.194763217287109304111930 double: 1 idouble: 1 Test "Imaginary part of: cacos (-0 + 0.5 i) == pi/2 - 0.4812118250596034474977589134243684231352 i": -double: 2 float: 1 -idouble: 2 ifloat: 1 +Test "Imaginary part of: cacos (-0 + 1.0 i) == pi/2 - 0.8813735870195430252326093249797923090282 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0 + 1.5 i) == pi/2 - 1.194763217287109304111930828519090523536 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0 - 0.5 i) == pi/2 + 0.4812118250596034474977589134243684231352 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0 - 1.0 i) == pi/2 + 0.8813735870195430252326093249797923090282 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0 - 1.5 i) == pi/2 + 1.194763217287109304111930828519090523536 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.0 + 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430251942769895627079569917e-1 i": ildouble: 1 ldouble: 1 -Test "Imaginary part of: cacos (-0 + 1.0 i) == pi/2 - 0.8813735870195430252326093249797923090282 i": -double: 2 +Test "Imaginary part of: cacos (-0.0 + 0x1.000002p0 i) == 1.570796326794896619231321691639751442099 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 + 0x1p-23 i) == 1.570796326794896619231321691639751442099 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 - 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 - 0x1.000002p0 i) == 1.570796326794896619231321691639751442099 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 - 0x1p-23 i) == 1.570796326794896619231321691639751442099 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.25 + 1.0 i) == 1.747098759571863549650000258275841544745 - 8.924633639033482359562124741744951972772e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.25 + 1.0 i) == 1.747098759571863549650000258275841544745 - 8.924633639033482359562124741744951972772e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.25 - 1.0 i) == 1.747098759571863549650000258275841544745 + 8.924633639033482359562124741744951972772e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.25 - 1.0 i) == 1.747098759571863549650000258275841544745 + 8.924633639033482359562124741744951972772e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1.fp-1025 i) == 2.094395102393195492308428922186335256131 - 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1.fp-129 i) == 2.094395102393195492308428922186335256131 - 3.287317402534702257036015056278368274737e-39 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1.fp-16385 i) == 2.094395102393195492308428922186335256131 - 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1p-105 i) == 2.094395102393195492308428922186335256131 - 2.846556599890768890940941645338546615370e-32 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1p-112 i) == 2.094395102393195492308428922186335256131 - 2.223872343664663196047610660420739543258e-34 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1p-23 i) == 2.094395102393190022547898764614298351924 - 1.376510308240943236356088341381173571841e-7 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1p-52 i) == 2.094395102393195492308428922186316279087 - 2.563950248511418570403591756798643804971e-16 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 + 1.0 i) == 1.920235389652109912858733517715121394831 - 9.261330313501824245501244453057873152694e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.5 + 1.0 i) == 1.920235389652109912858733517715121394831 - 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1.fp-1025 i) == 2.094395102393195492308428922186335256131 + 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1.fp-129 i) == 2.094395102393195492308428922186335256131 + 3.287317402534702257036015056278368274737e-39 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1.fp-16385 i) == 2.094395102393195492308428922186335256131 + 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1p-105 i) == 2.094395102393195492308428922186335256131 + 2.846556599890768890940941645338546615370e-32 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1p-112 i) == 2.094395102393195492308428922186335256131 + 2.223872343664663196047610660420739543258e-34 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1p-23 i) == 2.094395102393190022547898764614298351924 + 1.376510308240943236356088341381173571841e-7 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1p-52 i) == 2.094395102393195492308428922186316279087 + 2.563950248511418570403591756798643804971e-16 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 - 1.0 i) == 1.920235389652109912858733517715121394831 + 9.261330313501824245501244453057873152694e-1 i": float: 1 -idouble: 2 ifloat: 1 +Test "Imaginary part of: cacos (-0.5 - 1.0 i) == 1.920235389652109912858733517715121394831 + 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 + 0x1p-52 i) == 3.141592634635223399311902261000251614142 - 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 - 0x1p-52 i) == 3.141592634635223399311902261000251614142 + 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == 3.141592653260520984471283759942320330996 - 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 + 0x1p-63 i) == 3.141592653170952461345846619605307690007 - 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == 3.141592653260520984471283759942320330996 + 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 - 0x1p-63 i) == 3.141592653170952461345846619605307690007 + 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffp0 + 0x1p-23 i) == 3.141153467203602189751698864505105063797 - 2.714321200917194650737217746780928423385e-4 i": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (-0x0.ffffffp0 - 0x1p-23 i) == 3.141153467203602189751698864505105063797 + 2.714321200917194650737217746780928423385e-4 i": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (-0x1.0000000000000002p0 + 0x1p-63 i) == 3.141592653377875508152537040020250564229 - 5.116146586219826555037807251857670783420e-10 i": ildouble: 2 ldouble: 2 -Test "Imaginary part of: cacos (-0 + 1.5 i) == pi/2 - 1.194763217287109304111930828519090523536 i": -double: 2 +Test "Imaginary part of: cacos (-0x1.0000000000000002p0 - 0x1p-63 i) == 3.141592653377875508152537040020250564229 + 5.116146586219826555037807251857670783420e-10 i": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 + 0.0 i) == 3.141592653589793238462643383279502884197 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 + 0x1.fp-1025 i) == 3.141592653589793238462643383279502884197 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 + 0x1p-52 i) == 3.141592643999491532482601997450598791535 - 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 - 0.0 i) == 3.141592653589793238462643383279502884197 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 - 0x1.fp-1025 i) == 3.141592653589793238462643383279502884197 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 - 0x1p-52 i) == 3.141592643999491532482601997450598791535 + 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.000002p0 + 0x1p-23 i) == 3.141370441751352383825802745874586120521 - 5.364668491573609633134147164031476452679e-4 i": float: 1 -idouble: 2 ifloat: 1 -Test "Imaginary part of: cacos (-0 - 0.5 i) == pi/2 + 0.4812118250596034474977589134243684231352 i": +Test "Imaginary part of: cacos (-0x1.000002p0 - 0x1p-23 i) == 3.141370441751352383825802745874586120521 + 5.364668491573609633134147164031476452679e-4 i": float: 1 ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-10 + 1.0 i) == 1.572134236154454360143880041170803681211 - 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 ildouble: 1 ldouble: 1 -Test "Imaginary part of: cacos (-0 - 1.0 i) == pi/2 + 0.8813735870195430252326093249797923090282 i": +Test "Imaginary part of: cacos (-0x1.fp-10 - 1.0 i) == 1.572134236154454360143880041170803681211 + 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-100 + 1.0 i) == 1.570796326794896619231321691640832196834 - 8.813735870195430252326093249797923090282e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-100 + 1.0 i) == 1.570796326794896619231321691640832196834 - 8.813735870195430252326093249797923090282e-1 i": double: 1 float: 1 idouble: 1 ifloat: 1 -Test "Imaginary part of: cacos (-0 - 1.5 i) == pi/2 + 1.194763217287109304111930828519090523536 i": +Test "Real part of: cacos (-0x1.fp-100 - 1.0 i) == 1.570796326794896619231321691640832196834 + 8.813735870195430252326093249797923090282e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-100 - 1.0 i) == 1.570796326794896619231321691640832196834 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-1000 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1000 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": double: 1 idouble: 1 Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.5 i) == 1.570796326794896619231321691639751442099 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.5 i) == 1.570796326794896619231321691639751442099 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Real part of: cacos (-0x1.fp-129 + 0.5 i) == 1.570796326794896619231321691639751442101 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 0.5 i) == 1.570796326794896619231321691639751442101 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 + 0x0.ffffffp0 i) == 1.570796326794896619231321691639751442101 - 8.813735448726938863015878255140556727969e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 + 0x1.000002p0 i) == 1.570796326794896619231321691639751442101 - 8.813736713132375348727889167749389235161e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 0x1.000002p0 i) == 1.570796326794896619231321691639751442101 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-129 + 0x1.fp-129 i) == 1.570796326794896619231321691639751442101 - 2.846900380897727558361783801085126250967e-39 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 + 0x1p-23 i) == 1.570796326794896619231321691639751442101 - 1.192092895507809676556842485683592032154e-7 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 0x1p-23 i) == 1.570796326794896619231321691639751442101 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-129 + 1.0 i) == 1.570796326794896619231321691639751442101 - 8.813735870195430252326093249797923090282e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 1.0 i) == 1.570796326794896619231321691639751442101 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Real part of: cacos (-0x1.fp-129 + 1.5 i) == 1.570796326794896619231321691639751442100 - 1.194763217287109304111930828519090523536 i": float: 1 ifloat: 1 Test "Imaginary part of: cacos (-0x1.fp-129 + 1.5 i) == 1.570796326794896619231321691639751442100 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Real part of: cacos (-0x1.fp-129 - 0.5 i) == 1.570796326794896619231321691639751442101 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 0.5 i) == 1.570796326794896619231321691639751442101 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 - 0x0.ffffffp0 i) == 1.570796326794896619231321691639751442101 + 8.813735448726938863015878255140556727969e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 - 0x1.000002p0 i) == 1.570796326794896619231321691639751442101 + 8.813736713132375348727889167749389235161e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 0x1.000002p0 i) == 1.570796326794896619231321691639751442101 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-129 - 0x1.fp-129 i) == 1.570796326794896619231321691639751442101 + 2.846900380897727558361783801085126250967e-39 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 - 0x1p-23 i) == 1.570796326794896619231321691639751442101 + 1.192092895507809676556842485683592032154e-7 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 0x1p-23 i) == 1.570796326794896619231321691639751442101 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-129 - 1.0 i) == 1.570796326794896619231321691639751442101 + 8.813735870195430252326093249797923090282e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 1.0 i) == 1.570796326794896619231321691639751442101 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Real part of: cacos (-0x1.fp-129 - 1.5 i) == 1.570796326794896619231321691639751442100 + 1.194763217287109304111930828519090523536 i": float: 1 ifloat: 1 Test "Imaginary part of: cacos (-0x1.fp-129 - 1.5 i) == 1.570796326794896619231321691639751442100 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 -Test "Real part of: cacos (-1.0 + 0x1p50 i) == 1.570796326794897507409741391764983781004 - 3.535050620855721078027883819436759661753e1 i": +Test "Imaginary part of: cacos (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-30 + 1.0 i) == 1.570796328070826603447840231892468927106 - 8.813735870195430258081932989769495326854e-1 i": float: 1 ifloat: 1 -Test "Real part of: cacos (-1.0 - 0x1p50 i) == 1.570796326794897507409741391764983781004 + 3.535050620855721078027883819436759661753e1 i": +Test "Imaginary part of: cacos (-0x1.fp-30 + 1.0 i) == 1.570796328070826603447840231892468927106 - 8.813735870195430258081932989769495326854e-1 i": +double: 1 float: 1 +idouble: 1 ifloat: 1 -Test "Imaginary part of: cacos (-1.5 + +0 i) == pi - 0.9624236501192068949955178268487368462704 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-30 - 1.0 i) == 1.570796328070826603447840231892468927106 + 8.813735870195430258081932989769495326854e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-30 - 1.0 i) == 1.570796328070826603447840231892468927106 + 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-105 + 0.0 i) == 1.570796326794896619231321691639776094002 - 0.0 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-105 + 0.5 i) == 1.570796326794896619231321691639773491431 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-105 + 0.5 i) == 1.570796326794896619231321691639773491431 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-105 + 0x1p-105 i) == 1.570796326794896619231321691639776094002 - 2.465190328815661891911651766508706967729e-32 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-105 - 0.0 i) == 1.570796326794896619231321691639776094002 + 0.0 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-105 - 0.5 i) == 1.570796326794896619231321691639773491431 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-105 - 0.5 i) == 1.570796326794896619231321691639773491431 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-105 - 0x1p-105 i) == 1.570796326794896619231321691639776094002 + 2.465190328815661891911651766508706967729e-32 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 + 0.0 i) == 1.570796326794896619231321691639751634692 - 0.0 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 + 0.5 i) == 1.570796326794896619231321691639751614359 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-112 + 0.5 i) == 1.570796326794896619231321691639751614359 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 + 0x1p-112 i) == 1.570796326794896619231321691639751634692 - 1.925929944387235853055977942584927318538e-34 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 - 0.0 i) == 1.570796326794896619231321691639751634692 + 0.0 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 - 0.5 i) == 1.570796326794896619231321691639751614359 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-112 - 0.5 i) == 1.570796326794896619231321691639751614359 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 - 0x1p-112 i) == 1.570796326794896619231321691639751634692 + 1.925929944387235853055977942584927318538e-34 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-23 + 0.0 i) == 1.570796446004186170012854035955502877351 - 0.0 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-23 + 0.5 i) == 1.570796433418926613232299739606181733819 - 4.812118250596059896127318386463676808798e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-23 + 0.5 i) == 1.570796433418926613232299739606181733819 - 4.812118250596059896127318386463676808798e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-23 + 0x0.ffffffp0 i) == 1.570796411088596153167306681647360823228 - 8.813735448726963984495965873956465777250e-1 i": double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-23 + 0x1.000002p0 i) == 1.570796411088588616723617301287646121905 - 8.813736713132400470205730751186547909968e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-23 + 0x1.fp-129 i) == 1.570796446004186170012854035955502877351 - 2.846900380897747786805634596726756660388e-39 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-23 + 0x1p-23 i) == 1.570796446004186170012007003008248567984 - 1.192092895507818146886315028596704749235e-7 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-23 - 0.0 i) == 1.570796446004186170012854035955502877351 + 0.0 i": float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-23 - 0.5 i) == 1.570796433418926613232299739606181733819 + 4.812118250596059896127318386463676808798e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-23 - 0.5 i) == 1.570796433418926613232299739606181733819 + 4.812118250596059896127318386463676808798e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-23 - 0x0.ffffffp0 i) == 1.570796411088596153167306681647360823228 + 8.813735448726963984495965873956465777250e-1 i": +double: 1 idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-23 - 0x1.000002p0 i) == 1.570796411088588616723617301287646121905 + 8.813736713132400470205730751186547909968e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-23 - 0x1.fp-129 i) == 1.570796446004186170012854035955502877351 + 2.846900380897747786805634596726756660388e-39 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-23 - 0x1p-23 i) == 1.570796446004186170012007003008248567984 + 1.192092895507818146886315028596704749235e-7 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-52 + 0.0 i) == 1.570796326794896841275926616671059526825 - 0.0 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-52 + 0.5 i) == 1.570796326794896817834053951421591208280 - 4.812118250596034474977589134243772428682e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-52 + 0.5 i) == 1.570796326794896817834053951421591208280 - 4.812118250596034474977589134243772428682e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-52 + 0x1p-52 i) == 1.570796326794896841275926616671059526825 - 2.220446049250313080847263336181677117148e-16 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-52 - 0.0 i) == 1.570796326794896841275926616671059526825 + 0.0 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-52 - 0.5 i) == 1.570796326794896817834053951421591208280 + 4.812118250596034474977589134243772428682e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-52 - 0.5 i) == 1.570796326794896817834053951421591208280 + 4.812118250596034474977589134243772428682e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-52 - 0x1p-52 i) == 1.570796326794896841275926616671059526825 + 2.220446049250313080847263336181677117148e-16 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-63 + 0.0 i) == 1.570796326794896619339741908888301885499 - 0.0 i": +float: 1 ifloat: 1 +Test "Real part of: cacos (-0x1p-63 + 0.5 i) == 1.570796326794896619328295682000973043547 - 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-63 + 0.5 i) == 1.570796326794896619328295682000973043547 - 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-63 + 0x0.ffffffffffffffffp0 i) == 1.570796326794896619307986362473920146173 - 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-63 + 0x1p-63 i) == 1.570796326794896619339741908888301885499 - 1.084202172485504434007452800869941711430e-19 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-63 - 0.0 i) == 1.570796326794896619339741908888301885499 + 0.0 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-63 - 0.5 i) == 1.570796326794896619328295682000973043547 + 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-63 - 0.5 i) == 1.570796326794896619328295682000973043547 + 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-63 - 0x0.ffffffffffffffffp0 i) == 1.570796326794896619307986362473920146173 + 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-63 - 0x1p-63 i) == 1.570796326794896619339741908888301885499 + 1.084202172485504434007452800869941711430e-19 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.0 + 0.5 i) == 2.466703808003786858297978415967328452322 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 + 0x1.fp-10 i) == 3.098101355958774410750062883737683164607 - 4.350501469856803800217957402220976497152e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 + 0x1.fp-30 i) == 3.141550174918818561961484385371624132331 - 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-1.0 + 0x1p50 i) == 1.570796326794897507409741391764983781004 - 3.535050620855721078027883819436759661753e1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.0 - 0.5 i) == 2.466703808003786858297978415967328452322 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 - 0x1.fp-10 i) == 3.098101355958774410750062883737683164607 + 4.350501469856803800217957402220976497152e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 - 0x1.fp-30 i) == 3.141550174918818561961484385371624132331 + 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-1.0 - 0x1p50 i) == 1.570796326794897507409741391764983781004 + 3.535050620855721078027883819436759661753e1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.5 + +0 i) == pi - 0.9624236501192068949955178268487368462704 i": ildouble: 1 ldouble: 1 Test "Imaginary part of: cacos (-1.5 + 0x1.fp-1025 i) == 3.141592653589793238462643383279502884197 - 9.624236501192068949955178268487368462704e-1 i": @@ -299,49 +743,463 @@ ldouble: 1 Test "Real part of: cacos (-2 - 3 i) == 2.1414491111159960199416055713254211 + 1.9833870299165354323470769028940395 i": float: 1 ifloat: 1 +Test "Imaginary part of: cacos (0.0 + 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 + 0x1.000002p0 i) == 1.570796326794896619231321691639751442099 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 + 0x1p-23 i) == 1.570796326794896619231321691639751442099 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 - 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 - 0x1.000002p0 i) == 1.570796326794896619231321691639751442099 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 - 0x1p-23 i) == 1.570796326794896619231321691639751442099 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.25 + 1.0 i) == 1.394493894017929688812643125003661339452 - 8.924633639033482359562124741744951972772e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.25 - 1.0 i) == 1.394493894017929688812643125003661339452 + 8.924633639033482359562124741744951972772e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: cacos (0.5 + +0 i) == 1.047197551196597746154214461093167628066 - 0 i": double: 1 idouble: 1 +Test "Real part of: cacos (0.5 + 0x1.fp-1025 i) == 1.047197551196597746154214461093167628066 - 6.222508863508420569166420770843207333493e-309 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1.fp-1025 i) == 1.047197551196597746154214461093167628066 - 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 - 3.287317402534702257036015056278368274737e-39 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 - 3.287317402534702257036015056278368274737e-39 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1.fp-16385 i) == 1.047197551196597746154214461093167628066 - 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-105 i) == 1.047197551196597746154214461093167628066 - 2.846556599890768890940941645338546615370e-32 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1p-105 i) == 1.047197551196597746154214461093167628066 - 2.846556599890768890940941645338546615370e-32 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-112 i) == 1.047197551196597746154214461093167628066 - 2.223872343664663196047610660420739543258e-34 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1p-112 i) == 1.047197551196597746154214461093167628066 - 2.223872343664663196047610660420739543258e-34 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1p-23 i) == 1.047197551196603215914744618665204532273 - 1.376510308240943236356088341381173571841e-7 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-52 i) == 1.047197551196597746154214461093186605110 - 2.563950248511418570403591756798643804971e-16 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1p-52 i) == 1.047197551196597746154214461093186605110 - 2.563950248511418570403591756798643804971e-16 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-63 i) == 1.047197551196597746154214461093167628070 - 1.251928832280966098829878787499365228659e-19 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 1.0 i) == 1.221357263937683325603909865564381489366 - 9.261330313501824245501244453057873152694e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0.5 + 1.0 i) == 1.221357263937683325603909865564381489366 - 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 ildouble: 1 ldouble: 1 Test "Real part of: cacos (0.5 - 0 i) == 1.047197551196597746154214461093167628066 + +0 i": double: 1 idouble: 1 +Test "Real part of: cacos (0.5 - 0x1.fp-1025 i) == 1.047197551196597746154214461093167628066 + 6.222508863508420569166420770843207333493e-309 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1.fp-1025 i) == 1.047197551196597746154214461093167628066 + 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 - 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 + 3.287317402534702257036015056278368274737e-39 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 + 3.287317402534702257036015056278368274737e-39 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1.fp-16385 i) == 1.047197551196597746154214461093167628066 + 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-105 i) == 1.047197551196597746154214461093167628066 + 2.846556599890768890940941645338546615370e-32 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1p-105 i) == 1.047197551196597746154214461093167628066 + 2.846556599890768890940941645338546615370e-32 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-112 i) == 1.047197551196597746154214461093167628066 + 2.223872343664663196047610660420739543258e-34 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1p-112 i) == 1.047197551196597746154214461093167628066 + 2.223872343664663196047610660420739543258e-34 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1p-23 i) == 1.047197551196603215914744618665204532273 + 1.376510308240943236356088341381173571841e-7 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-52 i) == 1.047197551196597746154214461093186605110 + 2.563950248511418570403591756798643804971e-16 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1p-52 i) == 1.047197551196597746154214461093186605110 + 2.563950248511418570403591756798643804971e-16 i": ildouble: 1 ldouble: 1 -Test "Real part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i": +Test "Real part of: cacos (0.5 - 0x1p-63 i) == 1.047197551196597746154214461093167628070 + 1.251928832280966098829878787499365228659e-19 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 1.0 i) == 1.221357263937683325603909865564381489366 + 9.261330313501824245501244453057873152694e-1 i": float: 1 ifloat: 1 +Test "Imaginary part of: cacos (0.5 - 1.0 i) == 1.221357263937683325603909865564381489366 + 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.895456983915074112227925127005564372844e-8 - 1.171456840272878582596796205397918831268e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.895456983915074112227925127005564372844e-8 - 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.895456983915074112227925127005564372844e-8 + 1.171456840272878582596796205397918831268e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.895456983915074112227925127005564372844e-8 + 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == 3.292722539913596233371825532007990724506e-10 - 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffffffffffffp0 + 0x1p-63 i) == 4.188407771167967636741951941902992986043e-10 - 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 + 0x1p-63 i) == 4.188407771167967636741951941902992986043e-10 - 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == 3.292722539913596233371825532007990724506e-10 + 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffffffffffffp0 - 0x1p-63 i) == 4.188407771167967636741951941902992986043e-10 + 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 - 0x1p-63 i) == 4.188407771167967636741951941902992986043e-10 + 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffp0 + 0.0 i) == 3.452669847162035876032494826387364972849e-4 - 0.0 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x0.ffffffp0 + 0x1.fp-129 i) == 3.452669847162035876032494826387364972849e-4 - 8.245504387859737323891843603996428534945e-36 i": float: 1 ifloat: 1 +Test "Real part of: cacos (0x0.ffffffp0 + 0x1p-23 i) == 4.391863861910487109445187743978204002614e-4 - 2.714321200917194650737217746780928423385e-4 i": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (0x0.ffffffp0 + 0x1p-23 i) == 4.391863861910487109445187743978204002614e-4 - 2.714321200917194650737217746780928423385e-4 i": +float: 2 +ifloat: 2 +Test "Real part of: cacos (0x0.ffffffp0 - 0.0 i) == 3.452669847162035876032494826387364972849e-4 + 0.0 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x0.ffffffp0 - 0x1.fp-129 i) == 3.452669847162035876032494826387364972849e-4 + 8.245504387859737323891843603996428534945e-36 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x0.ffffffp0 - 0x1p-23 i) == 4.391863861910487109445187743978204002614e-4 + 2.714321200917194650737217746780928423385e-4 i": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (0x0.ffffffp0 - 0x1p-23 i) == 4.391863861910487109445187743978204002614e-4 + 2.714321200917194650737217746780928423385e-4 i": +float: 2 +ifloat: 2 +Test "Real part of: cacos (0x1.0000000000000002p0 + 0x1p-63 i) == 2.119177303101063432592523199680782317447e-10 - 5.116146586219826555037807251857670783420e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000000002p0 + 0x1p-63 i) == 2.119177303101063432592523199680782317447e-10 - 5.116146586219826555037807251857670783420e-10 i": ildouble: 2 ldouble: 2 +Test "Real part of: cacos (0x1.0000000000000002p0 - 0x1p-63 i) == 2.119177303101063432592523199680782317447e-10 + 5.116146586219826555037807251857670783420e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000000002p0 - 0x1p-63 i) == 2.119177303101063432592523199680782317447e-10 + 5.116146586219826555037807251857670783420e-10 i": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacos (0x1.0000000000001p0 + 0.0 i) == 0.0 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000001p0 + 0x1.fp-1025 i) == 2.557178503953494342609835913586108008322e-301 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.0000000000001p0 + 0x1p-52 i) == 9.590301705980041385828904092662391018164e-9 - 2.315303644582684770975188768022139415020e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000001p0 + 0x1p-52 i) == 9.590301705980041385828904092662391018164e-9 - 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000001p0 - 0.0 i) == 0.0 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000001p0 - 0x1.fp-1025 i) == 2.557178503953494342609835913586108008322e-301 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.0000000000001p0 - 0x1p-52 i) == 9.590301705980041385828904092662391018164e-9 + 2.315303644582684770975188768022139415020e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000001p0 - 0x1p-52 i) == 9.590301705980041385828904092662391018164e-9 + 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.000002p0 + 0x1p-23 i) == 2.222118384408546368406374049167636760903e-4 - 5.364668491573609633134147164031476452679e-4 i": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (0x1.000002p0 + 0x1p-23 i) == 2.222118384408546368406374049167636760903e-4 - 5.364668491573609633134147164031476452679e-4 i": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x1.000002p0 - 0x1p-23 i) == 2.222118384408546368406374049167636760903e-4 + 5.364668491573609633134147164031476452679e-4 i": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (0x1.000002p0 - 0x1p-23 i) == 2.222118384408546368406374049167636760903e-4 + 5.364668491573609633134147164031476452679e-4 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-10 + 1.0 i) == 1.569458417435338878318763342108699202986 - 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-10 - 1.0 i) == 1.569458417435338878318763342108699202986 + 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-100 + 1.0 i) == 1.570796326794896619231321691638670687364 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-100 - 1.0 i) == 1.570796326794896619231321691638670687364 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-1000 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1000 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 Test "Imaginary part of: cacos (0x1.fp-1025 + 1.5 i) == 1.570796326794896619231321691639751442099 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 Test "Imaginary part of: cacos (0x1.fp-1025 - 1.5 i) == 1.570796326794896619231321691639751442099 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 0.5 i) == 1.570796326794896619231321691639751442096 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 0x1.000002p0 i) == 1.570796326794896619231321691639751442097 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 0x1p-23 i) == 1.570796326794896619231321691639751442096 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 1.0 i) == 1.570796326794896619231321691639751442097 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Imaginary part of: cacos (0x1.fp-129 + 1.5 i) == 1.570796326794896619231321691639751442097 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 0.5 i) == 1.570796326794896619231321691639751442096 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 0x1.000002p0 i) == 1.570796326794896619231321691639751442097 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 0x1p-23 i) == 1.570796326794896619231321691639751442096 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 1.0 i) == 1.570796326794896619231321691639751442097 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Imaginary part of: cacos (0x1.fp-129 - 1.5 i) == 1.570796326794896619231321691639751442097 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-30 + 1.0 i) == 1.570796325518966635014803151387033957091 - 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-30 - 1.0 i) == 1.570796325518966635014803151387033957091 + 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (0x1.fp1023 + 0x1.fp1023 i) == 7.853981633974483096156608458198757210493e-1 - 7.107906849659093345062145442726115449315e2 i": double: 1 idouble: 1 Test "Imaginary part of: cacos (0x1.fp127 + 0x1.fp127 i) == 7.853981633974483096156608458198757210493e-1 - 8.973081118419833726837456344608533993585e1 i": double: 1 idouble: 1 -Test "Imaginary part of: cacos (1.5 + +0 i) == +0 - 0.9624236501192068949955178268487368462704 i": +Test "Imaginary part of: cacos (0x1.fp16383 + 0x1.fp16383 i) == 7.853981633974483096156608458198757210493e-1 - 1.135753137836666928715489992987020363057e4 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-105 + 0.5 i) == 1.570796326794896619231321691639729392766 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-105 - 0.5 i) == 1.570796326794896619231321691639729392766 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-112 + 0.5 i) == 1.570796326794896619231321691639751269838 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-112 - 0.5 i) == 1.570796326794896619231321691639751269838 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-23 + 0.5 i) == 1.570796220170866625230343643673321150378 - 4.812118250596059896127318386463676808798e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-23 + 0x0.ffffffp0 i) == 1.570796242501197085295336701632142060969 - 8.813735448726963984495965873956465777250e-1 i": double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-23 + 0x1.000002p0 i) == 1.570796242501204621739026081991856762292 - 8.813736713132400470205730751186547909968e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-23 - 0.5 i) == 1.570796220170866625230343643673321150378 + 4.812118250596059896127318386463676808798e-1 i": float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-23 - 0x0.ffffffp0 i) == 1.570796242501197085295336701632142060969 + 8.813735448726963984495965873956465777250e-1 i": +double: 1 idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-23 - 0x1.000002p0 i) == 1.570796242501204621739026081991856762292 + 8.813736713132400470205730751186547909968e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-52 + 0.5 i) == 1.570796326794896420628589431857911675917 - 4.812118250596034474977589134243772428682e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-52 - 0.5 i) == 1.570796326794896420628589431857911675917 + 4.812118250596034474977589134243772428682e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 + 0.5 i) == 1.570796326794896619134347701278529840650 - 4.812118250596034474977589134243684231373e-1 i": +float: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 + 0x0.ffffffffffffffffp0 i) == 1.570796326794896619154657020805582738025 - 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 - 0.5 i) == 1.570796326794896619134347701278529840650 + 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 - 0x0.ffffffffffffffffp0 i) == 1.570796326794896619154657020805582738025 + 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 + 0.25 i) == 4.890443302710802929202843732146540079124e-1 - 5.097911466811016354623559941115413499164e-1 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (1.0 + 0.5 i) == 6.748888455860063801646649673121744318756e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (1.0 + 0.5 i) == 6.748888455860063801646649673121744318756e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 + 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 - 4.350501469856803800217957402220976497152e-2 i": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.0 + 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 - 4.350501469856803800217957402220976497152e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.0 + 0x1.fp-30 i) == 4.247867097467650115899790787875186617316e-5 - 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 - 0.25 i) == 4.890443302710802929202843732146540079124e-1 + 5.097911466811016354623559941115413499164e-1 i": +double: 1 +idouble: 1 +Test "Real part of: cacos (1.0 - 0.5 i) == 6.748888455860063801646649673121744318756e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (1.0 - 0.5 i) == 6.748888455860063801646649673121744318756e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 - 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 + 4.350501469856803800217957402220976497152e-2 i": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.0 - 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 + 4.350501469856803800217957402220976497152e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.0 - 0x1.fp-30 i) == 4.247867097467650115899790787875186617316e-5 + 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.5 + +0 i) == +0 - 0.9624236501192068949955178268487368462704 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: cacos (1.5 + 0x1.fp-1025 i) == 4.819934639999230680322935210539402497827e-309 - 9.624236501192068949955178268487368462704e-1 i": ildouble: 1 ldouble: 1 @@ -368,8 +1226,6 @@ ldouble: 1 Test "Real part of: cacosh (+0 + 0.5 i) == 0.4812118250596034474977589134243684231352 + pi/2 i": float: 1 ifloat: 1 -ildouble: 1 -ldouble: 1 Test "Real part of: cacosh (+0 + 1.0 i) == 0.8813735870195430252326093249797923090282 + pi/2 i": double: 1 float: 1 @@ -381,8 +1237,6 @@ idouble: 1 Test "Real part of: cacosh (+0 - 0.5 i) == 0.4812118250596034474977589134243684231352 - pi/2 i": float: 1 ifloat: 1 -ildouble: 1 -ldouble: 1 Test "Real part of: cacosh (+0 - 1.0 i) == 0.8813735870195430252326093249797923090282 - pi/2 i": double: 1 float: 1 @@ -394,8 +1248,6 @@ idouble: 1 Test "Real part of: cacosh (-0 + 0.5 i) == 0.4812118250596034474977589134243684231352 + pi/2 i": float: 1 ifloat: 1 -ildouble: 1 -ldouble: 1 Test "Real part of: cacosh (-0 + 1.0 i) == 0.8813735870195430252326093249797923090282 + pi/2 i": double: 1 float: 1 @@ -407,8 +1259,6 @@ idouble: 1 Test "Real part of: cacosh (-0 - 0.5 i) == 0.4812118250596034474977589134243684231352 - pi/2 i": float: 1 ifloat: 1 -ildouble: 1 -ldouble: 1 Test "Real part of: cacosh (-0 - 1.0 i) == 0.8813735870195430252326093249797923090282 - pi/2 i": double: 1 float: 1 @@ -417,75 +1267,1019 @@ ifloat: 1 Test "Real part of: cacosh (-0 - 1.5 i) == 1.194763217287109304111930828519090523536 - pi/2 i": double: 1 idouble: 1 -Test "Imaginary part of: cacosh (-0.5 + +0 i) == +0 + 2.094395102393195492308428922186335256131 i": +Test "Real part of: cacosh (-0.0 + 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 + 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 + 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 - 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 - 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 - 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.25 + 1.0 i) == 8.924633639033482359562124741744951972772e-1 + 1.747098759571863549650000258275841544745 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.25 + 1.0 i) == 8.924633639033482359562124741744951972772e-1 + 1.747098759571863549650000258275841544745 i": double: 1 +float: 1 idouble: 1 -Test "Imaginary part of: cacosh (-0.5 - 0 i) == +0 - 2.094395102393195492308428922186335256131 i": +ifloat: 1 +Test "Real part of: cacosh (-0.25 - 1.0 i) == 8.924633639033482359562124741744951972772e-1 - 1.747098759571863549650000258275841544745 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.25 - 1.0 i) == 8.924633639033482359562124741744951972772e-1 - 1.747098759571863549650000258275841544745 i": double: 1 +float: 1 idouble: 1 -Test "Real part of: cacosh (-1.5 + +0 i) == 0.9624236501192068949955178268487368462704 + pi i": +ifloat: 1 +Test "Real part of: cacosh (-0.5 + 0x1.fp-1025 i) == 6.222508863508420569166420770843207333493e-309 + 2.094395102393195492308428922186335256131 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 + 2.094395102393195492308428922186335256131 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1.fp-16385 i) == 9.402257155670418112159334875199821342890e-4933 + 2.094395102393195492308428922186335256131 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1p-105 i) == 2.846556599890768890940941645338546615370e-32 + 2.094395102393195492308428922186335256131 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1p-112 i) == 2.223872343664663196047610660420739543258e-34 + 2.094395102393195492308428922186335256131 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1p-23 i) == 1.376510308240943236356088341381173571841e-7 + 2.094395102393190022547898764614298351924 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1p-52 i) == 2.563950248511418570403591756798643804971e-16 + 2.094395102393195492308428922186316279087 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 1.0 i) == 9.261330313501824245501244453057873152694e-1 + 1.920235389652109912858733517715121394831 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 + 1.0 i) == 9.261330313501824245501244453057873152694e-1 + 1.920235389652109912858733517715121394831 i": float: 1 ifloat: 1 +Test "Real part of: cacosh (-0.5 - 0x1.fp-1025 i) == 6.222508863508420569166420770843207333493e-309 - 2.094395102393195492308428922186335256131 i": ildouble: 1 ldouble: 1 -Test "Real part of: cacosh (-1.5 - 0 i) == 0.9624236501192068949955178268487368462704 - pi i": +Test "Real part of: cacosh (-0.5 - 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 - 2.094395102393195492308428922186335256131 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1.fp-16385 i) == 9.402257155670418112159334875199821342890e-4933 - 2.094395102393195492308428922186335256131 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1p-105 i) == 2.846556599890768890940941645338546615370e-32 - 2.094395102393195492308428922186335256131 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1p-112 i) == 2.223872343664663196047610660420739543258e-34 - 2.094395102393195492308428922186335256131 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1p-23 i) == 1.376510308240943236356088341381173571841e-7 - 2.094395102393190022547898764614298351924 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1p-52 i) == 2.563950248511418570403591756798643804971e-16 - 2.094395102393195492308428922186316279087 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 1.0 i) == 9.261330313501824245501244453057873152694e-1 - 1.920235389652109912858733517715121394831 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 - 1.0 i) == 9.261330313501824245501244453057873152694e-1 - 1.920235389652109912858733517715121394831 i": float: 1 ifloat: 1 +Test "Real part of: cacosh (-0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 + 3.141592634635223399311902261000251614142 i": +double: 1 +idouble: 1 ildouble: 1 ldouble: 1 -Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": +Test "Real part of: cacosh (-0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 - 3.141592634635223399311902261000251614142 i": double: 1 -float: 7 idouble: 1 -ifloat: 7 -ildouble: 6 -ldouble: 6 -Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == 2.472906068161537187835415298076415423459e-4923 + 3.141592653260520984471283759942320330996 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 + 0x1p-63 i) == 2.588578361325995866221775673638805081337e-10 + 3.141592653170952461345846619605307690007 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == 2.472906068161537187835415298076415423459e-4923 - 3.141592653260520984471283759942320330996 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 - 0x1p-63 i) == 2.588578361325995866221775673638805081337e-10 - 3.141592653170952461345846619605307690007 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x0.ffffffp0 + 0x1p-23 i) == 2.714321200917194650737217746780928423385e-4 + 3.141153467203602189751698864505105063797 i": +float: 2 +ifloat: 2 +Test "Real part of: cacosh (-0x0.ffffffp0 - 0x1p-23 i) == 2.714321200917194650737217746780928423385e-4 - 3.141153467203602189751698864505105063797 i": +float: 2 +ifloat: 2 +Test "Real part of: cacosh (-0x1.0000000000000002p0 + 0x1p-63 i) == 5.116146586219826555037807251857670783420e-10 + 3.141592653377875508152537040020250564229 i": +ildouble: 2 +ldouble: 2 +Test "Real part of: cacosh (-0x1.0000000000000002p0 - 0x1p-63 i) == 5.116146586219826555037807251857670783420e-10 - 3.141592653377875508152537040020250564229 i": +ildouble: 2 +ldouble: 2 +Test "Real part of: cacosh (-0x1.0000000000001p0 + 0.0 i) == 2.107342425544701550354780375182800088393e-8 + 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000001p0 + 0x1.fp-1025 i) == 2.107342425544701550354780375182800088393e-8 + 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000001p0 + 0x1p-52 i) == 2.315303644582684770975188768022139415020e-8 + 3.141592643999491532482601997450598791535 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000001p0 - 0.0 i) == 2.107342425544701550354780375182800088393e-8 - 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000001p0 - 0x1.fp-1025 i) == 2.107342425544701550354780375182800088393e-8 - 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000001p0 - 0x1p-52 i) == 2.315303644582684770975188768022139415020e-8 - 3.141592643999491532482601997450598791535 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.000002p0 + 0x1p-23 i) == 5.364668491573609633134147164031476452679e-4 + 3.141370441751352383825802745874586120521 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.000002p0 - 0x1p-23 i) == 5.364668491573609633134147164031476452679e-4 - 3.141370441751352383825802745874586120521 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-10 + 1.0 i) == 8.813742198809567991336704287826445879025e-1 + 1.572134236154454360143880041170803681211 i": double: 1 -float: 3 idouble: 1 -ifloat: 3 ildouble: 1 ldouble: 1 -Test "Real part of: cacosh (0.75 + 1.25 i) == 1.13239363160530819522266333696834467 + 1.11752014915610270578240049553777969 i": +Test "Real part of: cacosh (-0x1.fp-10 - 1.0 i) == 8.813742198809567991336704287826445879025e-1 - 1.572134236154454360143880041170803681211 i": +double: 1 +idouble: 1 ildouble: 1 ldouble: 1 -Test "Real part of: cacosh (1.5 + +0 i) == 0.9624236501192068949955178268487368462704 + +0 i": +Test "Real part of: cacosh (-0x1.fp-100 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691640832196834 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-100 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691640832196834 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-100 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691640832196834 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-100 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691640832196834 i": float: 1 ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-1000 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1000 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 + 1.5 i) == 1.194763217287109304111930828519090523536 + 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 - 1.5 i) == 1.194763217287109304111930828519090523536 - 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 0.5 i) == 4.812118250596034474977589134243684231352e-1 + 1.570796326794896619231321691639751442101 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 0.5 i) == 4.812118250596034474977589134243684231352e-1 + 1.570796326794896619231321691639751442101 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x0.ffffffp0 i) == 8.813735448726938863015878255140556727969e-1 + 1.570796326794896619231321691639751442101 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 + 1.570796326794896619231321691639751442101 i": ildouble: 1 ldouble: 1 -Test "Real part of: cacosh (1.5 - 0 i) == 0.9624236501192068949955178268487368462704 - 0 i": +Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 + 1.570796326794896619231321691639751442101 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1.fp-129 i) == 2.846900380897727558361783801085126250967e-39 + 1.570796326794896619231321691639751442101 i": float: 1 ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 + 1.570796326794896619231321691639751442101 i": ildouble: 1 ldouble: 1 - -# casin -Test "Imaginary part of: casin (+0 + 0.5 i) == +0 + 0.4812118250596034474977589134243684231352 i": -double: 2 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 + 1.570796326794896619231321691639751442101 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691639751442101 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691639751442101 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 1.5 i) == 1.194763217287109304111930828519090523536 + 1.570796326794896619231321691639751442100 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 1.5 i) == 1.194763217287109304111930828519090523536 + 1.570796326794896619231321691639751442100 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 0.5 i) == 4.812118250596034474977589134243684231352e-1 - 1.570796326794896619231321691639751442101 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 0.5 i) == 4.812118250596034474977589134243684231352e-1 - 1.570796326794896619231321691639751442101 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x0.ffffffp0 i) == 8.813735448726938863015878255140556727969e-1 - 1.570796326794896619231321691639751442101 i": float: 1 -idouble: 2 ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 - 1.570796326794896619231321691639751442101 i": ildouble: 1 ldouble: 1 -Test "Imaginary part of: casin (+0 + 1.0 i) == +0 + 0.8813735870195430252326093249797923090282 i": -double: 2 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 - 1.570796326794896619231321691639751442101 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1.fp-129 i) == 2.846900380897727558361783801085126250967e-39 - 1.570796326794896619231321691639751442101 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 - 1.570796326794896619231321691639751442101 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 - 1.570796326794896619231321691639751442101 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691639751442101 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691639751442101 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 1.5 i) == 1.194763217287109304111930828519090523536 - 1.570796326794896619231321691639751442100 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 1.5 i) == 1.194763217287109304111930828519090523536 - 1.570796326794896619231321691639751442100 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-30 + 1.0 i) == 8.813735870195430258081932989769495326854e-1 + 1.570796328070826603447840231892468927106 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-30 + 1.0 i) == 8.813735870195430258081932989769495326854e-1 + 1.570796328070826603447840231892468927106 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-30 - 1.0 i) == 8.813735870195430258081932989769495326854e-1 - 1.570796328070826603447840231892468927106 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-30 - 1.0 i) == 8.813735870195430258081932989769495326854e-1 - 1.570796328070826603447840231892468927106 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 + 0.0 i) == 0.0 + 1.570796326794896619231321691639776094002 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-105 + 0.5 i) == 4.812118250596034474977589134243684231352e-1 + 1.570796326794896619231321691639773491431 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 + 0.5 i) == 4.812118250596034474977589134243684231352e-1 + 1.570796326794896619231321691639773491431 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 + 0x1p-105 i) == 2.465190328815661891911651766508706967729e-32 + 1.570796326794896619231321691639776094002 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 - 0.0 i) == 0.0 - 1.570796326794896619231321691639776094002 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-105 - 0.5 i) == 4.812118250596034474977589134243684231352e-1 - 1.570796326794896619231321691639773491431 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 - 0.5 i) == 4.812118250596034474977589134243684231352e-1 - 1.570796326794896619231321691639773491431 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 - 0x1p-105 i) == 2.465190328815661891911651766508706967729e-32 - 1.570796326794896619231321691639776094002 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 + 0.0 i) == 0.0 + 1.570796326794896619231321691639751634692 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-112 + 0.5 i) == 4.812118250596034474977589134243684231352e-1 + 1.570796326794896619231321691639751614359 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 + 0.5 i) == 4.812118250596034474977589134243684231352e-1 + 1.570796326794896619231321691639751614359 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 + 0x1p-112 i) == 1.925929944387235853055977942584927318538e-34 + 1.570796326794896619231321691639751634692 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 - 0.0 i) == 0.0 - 1.570796326794896619231321691639751634692 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-112 - 0.5 i) == 4.812118250596034474977589134243684231352e-1 - 1.570796326794896619231321691639751614359 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 - 0.5 i) == 4.812118250596034474977589134243684231352e-1 - 1.570796326794896619231321691639751614359 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 - 0x1p-112 i) == 1.925929944387235853055977942584927318538e-34 - 1.570796326794896619231321691639751634692 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-23 + 0.0 i) == 0.0 + 1.570796446004186170012854035955502877351 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-23 + 0.5 i) == 4.812118250596059896127318386463676808798e-1 + 1.570796433418926613232299739606181733819 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-23 + 0.5 i) == 4.812118250596059896127318386463676808798e-1 + 1.570796433418926613232299739606181733819 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-23 + 0x0.ffffffp0 i) == 8.813735448726963984495965873956465777250e-1 + 1.570796411088596153167306681647360823228 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-23 + 0x1.000002p0 i) == 8.813736713132400470205730751186547909968e-1 + 1.570796411088588616723617301287646121905 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-23 + 0x1.fp-129 i) == 2.846900380897747786805634596726756660388e-39 + 1.570796446004186170012854035955502877351 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-23 + 0x1p-23 i) == 1.192092895507818146886315028596704749235e-7 + 1.570796446004186170012007003008248567984 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-23 - 0.0 i) == 0.0 - 1.570796446004186170012854035955502877351 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-23 - 0.5 i) == 4.812118250596059896127318386463676808798e-1 - 1.570796433418926613232299739606181733819 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-23 - 0.5 i) == 4.812118250596059896127318386463676808798e-1 - 1.570796433418926613232299739606181733819 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-23 - 0x0.ffffffp0 i) == 8.813735448726963984495965873956465777250e-1 - 1.570796411088596153167306681647360823228 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-23 - 0x1.000002p0 i) == 8.813736713132400470205730751186547909968e-1 - 1.570796411088588616723617301287646121905 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-23 - 0x1.fp-129 i) == 2.846900380897747786805634596726756660388e-39 - 1.570796446004186170012854035955502877351 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-23 - 0x1p-23 i) == 1.192092895507818146886315028596704749235e-7 - 1.570796446004186170012007003008248567984 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-52 + 0.0 i) == 0.0 + 1.570796326794896841275926616671059526825 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-52 + 0.5 i) == 4.812118250596034474977589134243772428682e-1 + 1.570796326794896817834053951421591208280 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-52 + 0.5 i) == 4.812118250596034474977589134243772428682e-1 + 1.570796326794896817834053951421591208280 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-52 + 0x1p-52 i) == 2.220446049250313080847263336181677117148e-16 + 1.570796326794896841275926616671059526825 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-52 - 0.0 i) == 0.0 - 1.570796326794896841275926616671059526825 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-52 - 0.5 i) == 4.812118250596034474977589134243772428682e-1 - 1.570796326794896817834053951421591208280 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-52 - 0.5 i) == 4.812118250596034474977589134243772428682e-1 - 1.570796326794896817834053951421591208280 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-52 - 0x1p-52 i) == 2.220446049250313080847263336181677117148e-16 - 1.570796326794896841275926616671059526825 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-63 + 0.0 i) == 0.0 + 1.570796326794896619339741908888301885499 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-63 + 0.5 i) == 4.812118250596034474977589134243684231373e-1 + 1.570796326794896619328295682000973043547 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-63 + 0.5 i) == 4.812118250596034474977589134243684231373e-1 + 1.570796326794896619328295682000973043547 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-63 + 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569937e-1 + 1.570796326794896619307986362473920146173 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-63 + 0x1p-63 i) == 1.084202172485504434007452800869941711430e-19 + 1.570796326794896619339741908888301885499 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-63 - 0.0 i) == 0.0 - 1.570796326794896619339741908888301885499 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-63 - 0.5 i) == 4.812118250596034474977589134243684231373e-1 - 1.570796326794896619328295682000973043547 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-63 - 0.5 i) == 4.812118250596034474977589134243684231373e-1 - 1.570796326794896619328295682000973043547 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-63 - 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569937e-1 - 1.570796326794896619307986362473920146173 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-63 - 0x1p-63 i) == 1.084202172485504434007452800869941711430e-19 - 1.570796326794896619339741908888301885499 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-1.0 + 0.5 i) == 7.328576759736452608886724437653071523305e-1 + 2.466703808003786858297978415967328452322 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.0 + 0x1.fp-10 i) == 4.350501469856803800217957402220976497152e-2 + 3.098101355958774410750062883737683164607 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.0 + 0x1.fp-30 i) == 4.247867098745151888768727039216644758847e-5 + 3.141550174918818561961484385371624132331 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-1.0 + 0x1p50 i) == 3.535050620855721078027883819436759661753e1 + 1.570796326794897507409741391764983781004 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-1.0 - 0.5 i) == 7.328576759736452608886724437653071523305e-1 - 2.466703808003786858297978415967328452322 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.0 - 0x1.fp-10 i) == 4.350501469856803800217957402220976497152e-2 - 3.098101355958774410750062883737683164607 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.0 - 0x1.fp-30 i) == 4.247867098745151888768727039216644758847e-5 - 3.141550174918818561961484385371624132331 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-1.0 - 0x1p50 i) == 3.535050620855721078027883819436759661753e1 - 1.570796326794897507409741391764983781004 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-1.5 + +0 i) == 0.9624236501192068949955178268487368462704 + pi i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 + 0x1.fp-1025 i) == 9.624236501192068949955178268487368462704e-1 + 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 + 0x1.fp-129 i) == 9.624236501192068949955178268487368462704e-1 + 3.141592653589793238462643383279502884195 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 + 0x1.fp-16385 i) == 9.624236501192068949955178268487368462704e-1 + 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 - 0 i) == 0.9624236501192068949955178268487368462704 - pi i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 - 0x1.fp-1025 i) == 9.624236501192068949955178268487368462704e-1 - 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 - 0x1.fp-129 i) == 9.624236501192068949955178268487368462704e-1 - 3.141592653589793238462643383279502884195 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 - 0x1.fp-16385 i) == 9.624236501192068949955178268487368462704e-1 - 3.141592653589793238462643383279502884197 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0.0 + 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 + 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 + 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 - 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 - 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 - 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.25 + 1.0 i) == 8.924633639033482359562124741744951972772e-1 + 1.394493894017929688812643125003661339452 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.25 - 1.0 i) == 8.924633639033482359562124741744951972772e-1 - 1.394493894017929688812643125003661339452 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + +0 i) == +0 + 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1.fp-1025 i) == 6.222508863508420569166420770843207333493e-309 + 1.047197551196597746154214461093167628066 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1.fp-1025 i) == 6.222508863508420569166420770843207333493e-309 + 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 + 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 + 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1.fp-16385 i) == 9.402257155670418112159334875199821342890e-4933 + 1.047197551196597746154214461093167628066 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 + 0x1p-105 i) == 2.846556599890768890940941645338546615370e-32 + 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-105 i) == 2.846556599890768890940941645338546615370e-32 + 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1p-112 i) == 2.223872343664663196047610660420739543258e-34 + 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-112 i) == 2.223872343664663196047610660420739543258e-34 + 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1p-23 i) == 1.376510308240943236356088341381173571841e-7 + 1.047197551196603215914744618665204532273 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1p-52 i) == 2.563950248511418570403591756798643804971e-16 + 1.047197551196597746154214461093186605110 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-52 i) == 2.563950248511418570403591756798643804971e-16 + 1.047197551196597746154214461093186605110 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-63 i) == 1.251928832280966098829878787499365228659e-19 + 1.047197551196597746154214461093167628070 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 1.0 i) == 9.261330313501824245501244453057873152694e-1 + 1.221357263937683325603909865564381489366 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 1.0 i) == 9.261330313501824245501244453057873152694e-1 + 1.221357263937683325603909865564381489366 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0.5 - 0 i) == +0 - 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1.fp-1025 i) == 6.222508863508420569166420770843207333493e-309 - 1.047197551196597746154214461093167628066 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1.fp-1025 i) == 6.222508863508420569166420770843207333493e-309 - 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 - 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 - 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1.fp-16385 i) == 9.402257155670418112159334875199821342890e-4933 - 1.047197551196597746154214461093167628066 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 - 0x1p-105 i) == 2.846556599890768890940941645338546615370e-32 - 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-105 i) == 2.846556599890768890940941645338546615370e-32 - 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1p-112 i) == 2.223872343664663196047610660420739543258e-34 - 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-112 i) == 2.223872343664663196047610660420739543258e-34 - 1.047197551196597746154214461093167628066 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1p-23 i) == 1.376510308240943236356088341381173571841e-7 - 1.047197551196603215914744618665204532273 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1p-52 i) == 2.563950248511418570403591756798643804971e-16 - 1.047197551196597746154214461093186605110 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-52 i) == 2.563950248511418570403591756798643804971e-16 - 1.047197551196597746154214461093186605110 i": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-63 i) == 1.251928832280966098829878787499365228659e-19 - 1.047197551196597746154214461093167628070 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 1.0 i) == 9.261330313501824245501244453057873152694e-1 - 1.221357263937683325603909865564381489366 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 1.0 i) == 9.261330313501824245501244453057873152694e-1 - 1.221357263937683325603909865564381489366 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0.75 + 1.25 i) == 1.13239363160530819522266333696834467 + 1.11752014915610270578240049553777969 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 + 1.895456983915074112227925127005564372844e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 + 1.895456983915074112227925127005564372844e-8 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 - 1.895456983915074112227925127005564372844e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 - 1.895456983915074112227925127005564372844e-8 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == 2.472906068161537187835415298076415423459e-4923 + 3.292722539913596233371825532007990724506e-10 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffffffffffffp0 + 0x1p-63 i) == 2.588578361325995866221775673638805081337e-10 + 4.188407771167967636741951941902992986043e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffp0 + 0x1p-63 i) == 2.588578361325995866221775673638805081337e-10 + 4.188407771167967636741951941902992986043e-10 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == 2.472906068161537187835415298076415423459e-4923 - 3.292722539913596233371825532007990724506e-10 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffffffffffffp0 - 0x1p-63 i) == 2.588578361325995866221775673638805081337e-10 - 4.188407771167967636741951941902992986043e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffp0 - 0x1p-63 i) == 2.588578361325995866221775673638805081337e-10 - 4.188407771167967636741951941902992986043e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0.0 i) == 0.0 + 3.452669847162035876032494826387364972849e-4 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1.fp-129 i) == 8.245504387859737323891843603996428534945e-36 + 3.452669847162035876032494826387364972849e-4 i": float: 1 -idouble: 2 ifloat: 1 +Test "Real part of: cacosh (0x0.ffffffp0 + 0x1p-23 i) == 2.714321200917194650737217746780928423385e-4 + 4.391863861910487109445187743978204002614e-4 i": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1p-23 i) == 2.714321200917194650737217746780928423385e-4 + 4.391863861910487109445187743978204002614e-4 i": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0.0 i) == 0.0 - 3.452669847162035876032494826387364972849e-4 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1.fp-129 i) == 8.245504387859737323891843603996428534945e-36 - 3.452669847162035876032494826387364972849e-4 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x0.ffffffp0 - 0x1p-23 i) == 2.714321200917194650737217746780928423385e-4 - 4.391863861910487109445187743978204002614e-4 i": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1p-23 i) == 2.714321200917194650737217746780928423385e-4 - 4.391863861910487109445187743978204002614e-4 i": +float: 2 +ifloat: 2 +Test "Real part of: cacosh (0x1.0000000000000002p0 + 0x1p-63 i) == 5.116146586219826555037807251857670783420e-10 + 2.119177303101063432592523199680782317447e-10 i": ildouble: 2 ldouble: 2 -Test "Imaginary part of: casin (+0 + 1.5 i) == +0 + 1.194763217287109304111930828519090523536 i": -double: 2 +Test "Imaginary part of: cacosh (0x1.0000000000000002p0 + 0x1p-63 i) == 5.116146586219826555037807251857670783420e-10 + 2.119177303101063432592523199680782317447e-10 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000000002p0 - 0x1p-63 i) == 5.116146586219826555037807251857670783420e-10 - 2.119177303101063432592523199680782317447e-10 i": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacosh (0x1.0000000000000002p0 - 0x1p-63 i) == 5.116146586219826555037807251857670783420e-10 - 2.119177303101063432592523199680782317447e-10 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 + 0.0 i) == 2.107342425544701550354780375182800088393e-8 + 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 + 0x1.fp-1025 i) == 2.107342425544701550354780375182800088393e-8 + 2.557178503953494342609835913586108008322e-301 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 + 0x1p-52 i) == 2.315303644582684770975188768022139415020e-8 + 9.590301705980041385828904092662391018164e-9 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.0000000000001p0 + 0x1p-52 i) == 2.315303644582684770975188768022139415020e-8 + 9.590301705980041385828904092662391018164e-9 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 - 0.0 i) == 2.107342425544701550354780375182800088393e-8 - 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 - 0x1.fp-1025 i) == 2.107342425544701550354780375182800088393e-8 - 2.557178503953494342609835913586108008322e-301 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 - 0x1p-52 i) == 2.315303644582684770975188768022139415020e-8 - 9.590301705980041385828904092662391018164e-9 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.0000000000001p0 - 0x1p-52 i) == 2.315303644582684770975188768022139415020e-8 - 9.590301705980041385828904092662391018164e-9 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.000002p0 + 0x1p-23 i) == 5.364668491573609633134147164031476452679e-4 + 2.222118384408546368406374049167636760903e-4 i": float: 1 -idouble: 2 ifloat: 1 -Test "Imaginary part of: casin (+0 - 0.5 i) == +0 - 0.4812118250596034474977589134243684231352 i": +Test "Imaginary part of: cacosh (0x1.000002p0 + 0x1p-23 i) == 5.364668491573609633134147164031476452679e-4 + 2.222118384408546368406374049167636760903e-4 i": +float: 2 +ifloat: 2 +Test "Real part of: cacosh (0x1.000002p0 - 0x1p-23 i) == 5.364668491573609633134147164031476452679e-4 - 2.222118384408546368406374049167636760903e-4 i": float: 1 ifloat: 1 +Test "Imaginary part of: cacosh (0x1.000002p0 - 0x1p-23 i) == 5.364668491573609633134147164031476452679e-4 - 2.222118384408546368406374049167636760903e-4 i": +float: 2 +ifloat: 2 +Test "Real part of: cacosh (0x1.fp-10 + 1.0 i) == 8.813742198809567991336704287826445879025e-1 + 1.569458417435338878318763342108699202986 i": +double: 1 +idouble: 1 ildouble: 1 ldouble: 1 +Test "Real part of: cacosh (0x1.fp-10 - 1.0 i) == 8.813742198809567991336704287826445879025e-1 - 1.569458417435338878318763342108699202986 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-100 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691638670687364 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-100 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691638670687364 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-1000 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1000 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 + 1.5 i) == 1.194763217287109304111930828519090523536 + 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 - 1.5 i) == 1.194763217287109304111930828519090523536 - 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-129 + 0.5 i) == 4.812118250596034474977589134243684231352e-1 + 1.570796326794896619231321691639751442096 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 + 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 + 1.570796326794896619231321691639751442097 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 + 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 + 1.570796326794896619231321691639751442096 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 + 1.0 i) == 8.813735870195430252326093249797923090282e-1 + 1.570796326794896619231321691639751442097 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 + 1.5 i) == 1.194763217287109304111930828519090523536 + 1.570796326794896619231321691639751442097 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-129 - 0.5 i) == 4.812118250596034474977589134243684231352e-1 - 1.570796326794896619231321691639751442096 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 - 0x1.000002p0 i) == 8.813736713132375348727889167749389235161e-1 - 1.570796326794896619231321691639751442097 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 - 0x1p-23 i) == 1.192092895507809676556842485683592032154e-7 - 1.570796326794896619231321691639751442096 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 - 1.0 i) == 8.813735870195430252326093249797923090282e-1 - 1.570796326794896619231321691639751442097 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 - 1.5 i) == 1.194763217287109304111930828519090523536 - 1.570796326794896619231321691639751442097 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569917e-1 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-30 + 1.0 i) == 8.813735870195430258081932989769495326854e-1 + 1.570796325518966635014803151387033957091 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-30 - 1.0 i) == 8.813735870195430258081932989769495326854e-1 - 1.570796325518966635014803151387033957091 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp1023 + 0x1.fp1023 i) == 7.107906849659093345062145442726115449315e2 + 7.853981633974483096156608458198757210493e-1 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp127 + 0x1.fp127 i) == 8.973081118419833726837456344608533993585e1 + 7.853981633974483096156608458198757210493e-1 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp16383 + 0x1.fp16383 i) == 1.135753137836666928715489992987020363057e4 + 7.853981633974483096156608458198757210493e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-105 + 0.5 i) == 4.812118250596034474977589134243684231352e-1 + 1.570796326794896619231321691639729392766 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-105 - 0.5 i) == 4.812118250596034474977589134243684231352e-1 - 1.570796326794896619231321691639729392766 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-112 + 0.5 i) == 4.812118250596034474977589134243684231352e-1 + 1.570796326794896619231321691639751269838 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-112 - 0.5 i) == 4.812118250596034474977589134243684231352e-1 - 1.570796326794896619231321691639751269838 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-23 + 0.5 i) == 4.812118250596059896127318386463676808798e-1 + 1.570796220170866625230343643673321150378 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-23 + 0x0.ffffffp0 i) == 8.813735448726963984495965873956465777250e-1 + 1.570796242501197085295336701632142060969 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-23 + 0x1.000002p0 i) == 8.813736713132400470205730751186547909968e-1 + 1.570796242501204621739026081991856762292 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-23 - 0.5 i) == 4.812118250596059896127318386463676808798e-1 - 1.570796220170866625230343643673321150378 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-23 - 0x0.ffffffp0 i) == 8.813735448726963984495965873956465777250e-1 - 1.570796242501197085295336701632142060969 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-23 - 0x1.000002p0 i) == 8.813736713132400470205730751186547909968e-1 - 1.570796242501204621739026081991856762292 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-52 + 0.5 i) == 4.812118250596034474977589134243772428682e-1 + 1.570796326794896420628589431857911675917 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-52 - 0.5 i) == 4.812118250596034474977589134243772428682e-1 - 1.570796326794896420628589431857911675917 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-63 + 0.5 i) == 4.812118250596034474977589134243684231373e-1 + 1.570796326794896619134347701278529840650 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-63 + 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569937e-1 + 1.570796326794896619154657020805582738025 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-63 - 0.5 i) == 4.812118250596034474977589134243684231373e-1 - 1.570796326794896619134347701278529840650 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-63 - 0x0.ffffffffffffffffp0 i) == 8.813735870195430251942769895627079569937e-1 - 1.570796326794896619154657020805582738025 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 + 0.25 i) == 5.097911466811016354623559941115413499164e-1 + 4.890443302710802929202843732146540079124e-1 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (1.0 + 0.5 i) == 7.328576759736452608886724437653071523305e-1 + 6.748888455860063801646649673121744318756e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 + 0.5 i) == 7.328576759736452608886724437653071523305e-1 + 6.748888455860063801646649673121744318756e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (1.0 + 0x1.fp-10 i) == 4.350501469856803800217957402220976497152e-2 + 4.349129763101882771258049954181971959031e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 + 0x1.fp-10 i) == 4.350501469856803800217957402220976497152e-2 + 4.349129763101882771258049954181971959031e-2 i": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.0 + 0x1.fp-30 i) == 4.247867098745151888768727039216644758847e-5 + 4.247867097467650115899790787875186617316e-5 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 - 0.25 i) == 5.097911466811016354623559941115413499164e-1 - 4.890443302710802929202843732146540079124e-1 i": +double: 1 +idouble: 1 +Test "Real part of: cacosh (1.0 - 0.5 i) == 7.328576759736452608886724437653071523305e-1 - 6.748888455860063801646649673121744318756e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 - 0.5 i) == 7.328576759736452608886724437653071523305e-1 - 6.748888455860063801646649673121744318756e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (1.0 - 0x1.fp-10 i) == 4.350501469856803800217957402220976497152e-2 - 4.349129763101882771258049954181971959031e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 - 0x1.fp-10 i) == 4.350501469856803800217957402220976497152e-2 - 4.349129763101882771258049954181971959031e-2 i": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.0 - 0x1.fp-30 i) == 4.247867098745151888768727039216644758847e-5 - 4.247867097467650115899790787875186617316e-5 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 + +0 i) == 0.9624236501192068949955178268487368462704 + +0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 + 0x1.fp-1025 i) == 9.624236501192068949955178268487368462704e-1 + 4.819934639999230680322935210539402497827e-309 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 + 0x1.fp-129 i) == 9.624236501192068949955178268487368462704e-1 + 2.546345110742945032959687790021055102355e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 + 0x1.fp-16385 i) == 9.624236501192068949955178268487368462704e-1 + 7.282957076134209141226696333885150260319e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 - 0 i) == 0.9624236501192068949955178268487368462704 - 0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 - 0x1.fp-1025 i) == 9.624236501192068949955178268487368462704e-1 - 4.819934639999230680322935210539402497827e-309 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 - 0x1.fp-129 i) == 9.624236501192068949955178268487368462704e-1 - 2.546345110742945032959687790021055102355e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 - 0x1.fp-16385 i) == 9.624236501192068949955178268487368462704e-1 - 7.282957076134209141226696333885150260319e-4933 i": +ildouble: 1 +ldouble: 1 + +# casin +Test "Imaginary part of: casin (+0 + 0.5 i) == +0 + 0.4812118250596034474977589134243684231352 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (+0 + 1.0 i) == +0 + 0.8813735870195430252326093249797923090282 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (+0 + 1.5 i) == +0 + 1.194763217287109304111930828519090523536 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (+0 - 0.5 i) == +0 - 0.4812118250596034474977589134243684231352 i": +float: 1 +ifloat: 1 Test "Imaginary part of: casin (+0 - 1.0 i) == +0 - 0.8813735870195430252326093249797923090282 i": double: 1 float: 1 @@ -495,56 +2289,458 @@ Test "Imaginary part of: casin (+0 - 1.5 i) == +0 - 1.19476321728710930411193082 double: 1 idouble: 1 Test "Imaginary part of: casin (-0 + 0.5 i) == -0 + 0.4812118250596034474977589134243684231352 i": -double: 2 float: 1 -idouble: 2 ifloat: 1 +Test "Imaginary part of: casin (-0 + 1.0 i) == -0 + 0.8813735870195430252326093249797923090282 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0 + 1.5 i) == -0 + 1.194763217287109304111930828519090523536 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0 - 0.5 i) == -0 - 0.4812118250596034474977589134243684231352 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0 - 1.0 i) == -0 - 0.8813735870195430252326093249797923090282 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0 - 1.5 i) == -0 - 1.194763217287109304111930828519090523536 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.0 + 0x0.ffffffffffffffffp0 i) == -0.0 + 8.813735870195430251942769895627079569917e-1 i": ildouble: 1 ldouble: 1 -Test "Imaginary part of: casin (-0 + 1.0 i) == -0 + 0.8813735870195430252326093249797923090282 i": -double: 2 +Test "Imaginary part of: casin (-0.0 + 0x1.000002p0 i) == -0.0 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 + 0x1p-23 i) == -0.0 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 - 0x0.ffffffffffffffffp0 i) == -0.0 - 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 - 0x1.000002p0 i) == -0.0 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 - 0x1p-23 i) == -0.0 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.25 + 1.0 i) == -1.763024327769669304186785666360901026468e-1 + 8.924633639033482359562124741744951972772e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.25 - 1.0 i) == -1.763024327769669304186785666360901026468e-1 - 8.924633639033482359562124741744951972772e-1 i": float: 1 -idouble: 2 ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1.fp-1025 i) == -5.235987755982988730771072305465838140329e-1 + 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1.fp-129 i) == -5.235987755982988730771072305465838140329e-1 + 3.287317402534702257036015056278368274737e-39 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1.fp-16385 i) == -5.235987755982988730771072305465838140329e-1 + 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1p-105 i) == -5.235987755982988730771072305465838140329e-1 + 2.846556599890768890940941645338546615370e-32 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1p-112 i) == -5.235987755982988730771072305465838140329e-1 + 2.223872343664663196047610660420739543258e-34 i": +double: 1 +idouble: 1 +Test "Real part of: casin (-0.5 + 0x1p-23 i) == -5.235987755982934033165770729745469098254e-1 + 1.376510308240943236356088341381173571841e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1p-23 i) == -5.235987755982934033165770729745469098254e-1 + 1.376510308240943236356088341381173571841e-7 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1p-52 i) == -5.235987755982988730771072305465648369889e-1 + 2.563950248511418570403591756798643804971e-16 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 + 1.0 i) == -3.494390628572132936274118260753699527325e-1 + 9.261330313501824245501244453057873152694e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 1.0 i) == -3.494390628572132936274118260753699527325e-1 + 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1.fp-1025 i) == -5.235987755982988730771072305465838140329e-1 - 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1.fp-129 i) == -5.235987755982988730771072305465838140329e-1 - 3.287317402534702257036015056278368274737e-39 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1.fp-16385 i) == -5.235987755982988730771072305465838140329e-1 - 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1p-105 i) == -5.235987755982988730771072305465838140329e-1 - 2.846556599890768890940941645338546615370e-32 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1p-112 i) == -5.235987755982988730771072305465838140329e-1 - 2.223872343664663196047610660420739543258e-34 i": +double: 1 +idouble: 1 +Test "Real part of: casin (-0.5 - 0x1p-23 i) == -5.235987755982934033165770729745469098254e-1 - 1.376510308240943236356088341381173571841e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1p-23 i) == -5.235987755982934033165770729745469098254e-1 - 1.376510308240943236356088341381173571841e-7 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1p-52 i) == -5.235987755982988730771072305465648369889e-1 - 2.563950248511418570403591756798643804971e-16 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 - 1.0 i) == -3.494390628572132936274118260753699527325e-1 - 9.261330313501824245501244453057873152694e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 1.0 i) == -3.494390628572132936274118260753699527325e-1 - 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 + 0x1p-52 i) == -1.570796307840326780080580569360500172043 + 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 - 0x1p-52 i) == -1.570796307840326780080580569360500172043 - 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == -1.570796326465624365239962068302568888898 + 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 + 0x1p-63 i) == -1.570796326376055842114524927965556247908 + 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == -1.570796326465624365239962068302568888898 - 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 - 0x1p-63 i) == -1.570796326376055842114524927965556247908 - 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffp0 + 0x1p-23 i) == -1.570357140408705570520377172865353621698 + 2.714321200917194650737217746780928423385e-4 i": +float: 2 +ifloat: 2 +Test "Imaginary part of: casin (-0x0.ffffffp0 - 0x1p-23 i) == -1.570357140408705570520377172865353621698 - 2.714321200917194650737217746780928423385e-4 i": +float: 2 +ifloat: 2 +Test "Imaginary part of: casin (-0x1.0000000000000002p0 + 0x1p-63 i) == -1.570796326582978888921215348380499122131 + 5.116146586219826555037807251857670783420e-10 i": ildouble: 2 ldouble: 2 -Test "Imaginary part of: casin (-0 + 1.5 i) == -0 + 1.194763217287109304111930828519090523536 i": -double: 2 +Test "Imaginary part of: casin (-0x1.0000000000000002p0 - 0x1p-63 i) == -1.570796326582978888921215348380499122131 - 5.116146586219826555037807251857670783420e-10 i": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (-0x1.0000000000001p0 + 0.0 i) == -1.570796326794896619231321691639751442099 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000001p0 + 0x1.fp-1025 i) == -1.570796326794896619231321691639751442099 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000001p0 + 0x1p-52 i) == -1.570796317204594913251280305810847349436 + 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000001p0 - 0.0 i) == -1.570796326794896619231321691639751442099 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000001p0 - 0x1.fp-1025 i) == -1.570796326794896619231321691639751442099 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000001p0 - 0x1p-52 i) == -1.570796317204594913251280305810847349436 - 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.000002p0 + 0x1p-23 i) == -1.570574114956455764594481054234834678422 + 5.364668491573609633134147164031476452679e-4 i": float: 1 -idouble: 2 ifloat: 1 -Test "Imaginary part of: casin (-0 - 0.5 i) == -0 - 0.4812118250596034474977589134243684231352 i": +Test "Imaginary part of: casin (-0x1.000002p0 - 0x1p-23 i) == -1.570574114956455764594481054234834678422 - 5.364668491573609633134147164031476452679e-4 i": +float: 1 +ifloat: 1 +Test "Real part of: casin (-0x1.fp-10 + 1.0 i) == -1.337909359557740912558349531052239112857e-3 + 8.813742198809567991336704287826445879025e-1 i": float: 1 ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-10 + 1.0 i) == -1.337909359557740912558349531052239112857e-3 + 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 ildouble: 1 ldouble: 1 -Test "Imaginary part of: casin (-0 - 1.0 i) == -0 - 0.8813735870195430252326093249797923090282 i": +Test "Real part of: casin (-0x1.fp-10 - 1.0 i) == -1.337909359557740912558349531052239112857e-3 - 8.813742198809567991336704287826445879025e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-10 - 1.0 i) == -1.337909359557740912558349531052239112857e-3 - 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-100 + 1.0 i) == -1.080754735021050612990719608916167354321e-30 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-100 + 1.0 i) == -1.080754735021050612990719608916167354321e-30 + 8.813735870195430252326093249797923090282e-1 i": double: 1 float: 1 idouble: 1 ifloat: 1 -Test "Imaginary part of: casin (-0 - 1.5 i) == -0 - 1.194763217287109304111930828519090523536 i": +Test "Real part of: casin (-0x1.fp-100 - 1.0 i) == -1.080754735021050612990719608916167354321e-30 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-100 - 1.0 i) == -1.080754735021050612990719608916167354321e-30 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (-0x1.fp-1000 + 1.0 i) == -1.278589251976747242280879285935084814093e-301 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1000 + 1.0 i) == -1.278589251976747242280879285935084814093e-301 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Real part of: casin (-0x1.fp-1000 - 1.0 i) == -1.278589251976747242280879285935084814093e-301 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1000 - 1.0 i) == -1.278589251976747242280879285935084814093e-301 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Real part of: casin (-0x1.fp-10000 + 1.0 i) == -6.867047849047171855399183659351043150871e-3011 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-10000 - 1.0 i) == -6.867047849047171855399183659351043150871e-3011 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-1025 + 1.0 i) == -3.810492908885321743133304375216617626230e-309 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 + 1.0 i) == -3.810492908885321743133304375216617626230e-309 + 8.813735870195430252326093249797923090282e-1 i": double: 1 idouble: 1 Test "Imaginary part of: casin (-0x1.fp-1025 + 1.5 i) == -2.989196569048182929051881765490354365918e-309 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Real part of: casin (-0x1.fp-1025 - 1.0 i) == -3.810492908885321743133304375216617626230e-309 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 - 1.0 i) == -3.810492908885321743133304375216617626230e-309 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 Test "Imaginary part of: casin (-0x1.fp-1025 - 1.5 i) == -2.989196569048182929051881765490354365918e-309 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 0.5 i) == -2.546345110742945032959687790021055102355e-39 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: casin (-0x1.fp-129 + 0x1.000002p0 i) == -2.013062444707472738895109955455676357057e-39 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 0x1.000002p0 i) == -2.013062444707472738895109955455676357057e-39 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 0x1p-23 i) == -2.846900380897707329917933005874691056564e-39 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-129 + 1.0 i) == -2.013062564695348242280482517399205554874e-39 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 1.0 i) == -2.013062564695348242280482517399205554874e-39 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Imaginary part of: casin (-0x1.fp-129 + 1.5 i) == -1.579176199917649005841160751101628985741e-39 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 0.5 i) == -2.546345110742945032959687790021055102355e-39 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: casin (-0x1.fp-129 - 0x1.000002p0 i) == -2.013062444707472738895109955455676357057e-39 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 0x1.000002p0 i) == -2.013062444707472738895109955455676357057e-39 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 0x1p-23 i) == -2.846900380897707329917933005874691056564e-39 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-129 - 1.0 i) == -2.013062564695348242280482517399205554874e-39 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 1.0 i) == -2.013062564695348242280482517399205554874e-39 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Imaginary part of: casin (-0x1.fp-129 - 1.5 i) == -1.579176199917649005841160751101628985741e-39 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 -Test "Imaginary part of: casin (-1.5 + +0 i) == -pi/2 + 0.9624236501192068949955178268487368462704 i": +Test "Imaginary part of: casin (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == -5.757683115456107044287327268904964422212e-4933 + 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == -5.757683115456107044287327268904964422212e-4933 - 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-30 + 1.0 i) == -1.275929984216518540252717485007112529021e-9 + 8.813735870195430258081932989769495326854e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-30 + 1.0 i) == -1.275929984216518540252717485007112529021e-9 + 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-30 - 1.0 i) == -1.275929984216518540252717485007112529021e-9 - 8.813735870195430258081932989769495326854e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-30 - 1.0 i) == -1.275929984216518540252717485007112529021e-9 - 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-105 + 0.5 i) == -2.204933261082751447436996198490110245167e-32 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-105 - 0.5 i) == -2.204933261082751447436996198490110245167e-32 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-112 + 0.5 i) == -1.722604110220899568310153280070398629037e-34 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-112 - 0.5 i) == -1.722604110220899568310153280070398629037e-34 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: casin (-0x1p-23 + 0.5 i) == -1.066240299940009780479664302917201696886e-7 + 4.812118250596059896127318386463676808798e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 + 0.5 i) == -1.066240299940009780479664302917201696886e-7 + 4.812118250596059896127318386463676808798e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 + 0x0.ffffffp0 i) == -8.429369953393598499000760938112968755257e-8 + 8.813735448726963984495965873956465777250e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-23 + 0x1.000002p0 i) == -8.429369199749229560964789467980644296420e-8 + 8.813736713132400470205730751186547909968e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 + 0x1.000002p0 i) == -8.429369199749229560964789467980644296420e-8 + 8.813736713132400470205730751186547909968e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-23 - 0.5 i) == -1.066240299940009780479664302917201696886e-7 - 4.812118250596059896127318386463676808798e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 - 0.5 i) == -1.066240299940009780479664302917201696886e-7 - 4.812118250596059896127318386463676808798e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 - 0x0.ffffffp0 i) == -8.429369953393598499000760938112968755257e-8 - 8.813735448726963984495965873956465777250e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-23 - 0x1.000002p0 i) == -8.429369199749229560964789467980644296420e-8 - 8.813736713132400470205730751186547909968e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 - 0x1.000002p0 i) == -8.429369199749229560964789467980644296420e-8 - 8.813736713132400470205730751186547909968e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-52 + 0.5 i) == -1.986027322597818397661816253158024383707e-16 + 4.812118250596034474977589134243772428682e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-52 - 0.5 i) == -1.986027322597818397661816253158024383707e-16 - 4.812118250596034474977589134243772428682e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-63 + 0.5 i) == -9.697399036122160144833087173623140436413e-20 + 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-63 + 0x0.ffffffffffffffffp0 i) == -7.666467083416870407402049869781566856442e-20 + 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-63 + 0x0.ffffffffffffffffp0 i) == -7.666467083416870407402049869781566856442e-20 + 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-63 + 0x1.0000000000000002p0 i) == -7.666467083416870406778649849746878368519e-20 + 8.813735870195430253092739958139610131001e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-63 - 0.5 i) == -9.697399036122160144833087173623140436413e-20 - 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-63 - 0x0.ffffffffffffffffp0 i) == -7.666467083416870407402049869781566856442e-20 - 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-63 - 0x0.ffffffffffffffffp0 i) == -7.666467083416870407402049869781566856442e-20 - 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-63 - 0x1.0000000000000002p0 i) == -7.666467083416870406778649849746878368519e-20 - 8.813735870195430253092739958139610131001e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-1.0 + 0.25 i) == -1.081751996523816326311037318425097434186 + 5.097911466811016354623559941115413499164e-1 i": double: 1 +idouble: 1 +Test "Real part of: casin (-1.0 + 0.5 i) == -8.959074812088902390666567243275770102229e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 + 0.5 i) == -8.959074812088902390666567243275770102229e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 + 0x1.fp-10 i) == -1.527305029163877791518741192097931722508 + 4.350501469856803800217957402220976497152e-2 i": float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 + 0x1.fp-30 i) == -1.570753848123921942730162693731872690232 + 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-1.0 - 0.25 i) == -1.081751996523816326311037318425097434186 - 5.097911466811016354623559941115413499164e-1 i": +double: 1 idouble: 1 +Test "Real part of: casin (-1.0 - 0.5 i) == -8.959074812088902390666567243275770102229e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 - 0.5 i) == -8.959074812088902390666567243275770102229e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 - 0x1.fp-10 i) == -1.527305029163877791518741192097931722508 - 4.350501469856803800217957402220976497152e-2 i": +float: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: casin (-1.0 - 0x1.fp-30 i) == -1.570753848123921942730162693731872690232 - 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.5 + +0 i) == -pi/2 + 0.9624236501192068949955178268487368462704 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (-1.5 + 0x1.fp-1025 i) == -1.570796326794896619231321691639751442099 + 9.624236501192068949955178268487368462704e-1 i": ildouble: 1 ldouble: 1 @@ -566,43 +2762,454 @@ ldouble: 1 Test "Imaginary part of: casin (-1.5 - 0x1.fp-16385 i) == -1.570796326794896619231321691639751442099 - 9.624236501192068949955178268487368462704e-1 i": ildouble: 1 ldouble: 1 +Test "Imaginary part of: casin (0.0 + 0x0.ffffffffffffffffp0 i) == 0.0 + 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 + 0x1.000002p0 i) == 0.0 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 + 0x1p-23 i) == 0.0 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 - 0x0.ffffffffffffffffp0 i) == 0.0 - 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 - 0x1.000002p0 i) == 0.0 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 - 0x1p-23 i) == 0.0 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.25 + 1.0 i) == 1.763024327769669304186785666360901026468e-1 + 8.924633639033482359562124741744951972772e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.25 - 1.0 i) == 1.763024327769669304186785666360901026468e-1 - 8.924633639033482359562124741744951972772e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1.fp-1025 i) == 5.235987755982988730771072305465838140329e-1 + 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1.fp-129 i) == 5.235987755982988730771072305465838140329e-1 + 3.287317402534702257036015056278368274737e-39 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1.fp-16385 i) == 5.235987755982988730771072305465838140329e-1 + 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1p-105 i) == 5.235987755982988730771072305465838140329e-1 + 2.846556599890768890940941645338546615370e-32 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1p-112 i) == 5.235987755982988730771072305465838140329e-1 + 2.223872343664663196047610660420739543258e-34 i": +double: 1 +idouble: 1 +Test "Real part of: casin (0.5 + 0x1p-23 i) == 5.235987755982934033165770729745469098254e-1 + 1.376510308240943236356088341381173571841e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1p-23 i) == 5.235987755982934033165770729745469098254e-1 + 1.376510308240943236356088341381173571841e-7 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1p-52 i) == 5.235987755982988730771072305465648369889e-1 + 2.563950248511418570403591756798643804971e-16 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 + 1.0 i) == 3.494390628572132936274118260753699527325e-1 + 9.261330313501824245501244453057873152694e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 1.0 i) == 3.494390628572132936274118260753699527325e-1 + 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1.fp-1025 i) == 5.235987755982988730771072305465838140329e-1 - 6.222508863508420569166420770843207333493e-309 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1.fp-129 i) == 5.235987755982988730771072305465838140329e-1 - 3.287317402534702257036015056278368274737e-39 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1.fp-16385 i) == 5.235987755982988730771072305465838140329e-1 - 9.402257155670418112159334875199821342890e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1p-105 i) == 5.235987755982988730771072305465838140329e-1 - 2.846556599890768890940941645338546615370e-32 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1p-112 i) == 5.235987755982988730771072305465838140329e-1 - 2.223872343664663196047610660420739543258e-34 i": +double: 1 +idouble: 1 +Test "Real part of: casin (0.5 - 0x1p-23 i) == 5.235987755982934033165770729745469098254e-1 - 1.376510308240943236356088341381173571841e-7 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1p-23 i) == 5.235987755982934033165770729745469098254e-1 - 1.376510308240943236356088341381173571841e-7 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1p-52 i) == 5.235987755982988730771072305465648369889e-1 - 2.563950248511418570403591756798643804971e-16 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 - 1.0 i) == 3.494390628572132936274118260753699527325e-1 - 9.261330313501824245501244453057873152694e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 1.0 i) == 3.494390628572132936274118260753699527325e-1 - 9.261330313501824245501244453057873152694e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.570796307840326780080580569360500172043 + 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.570796307840326780080580569360500172043 - 1.171456840272878582596796205397918831268e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == 1.570796326465624365239962068302568888898 + 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 + 0x1p-63 i) == 1.570796326376055842114524927965556247908 + 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == 1.570796326465624365239962068302568888898 - 2.472906068161537187835415298076415423459e-4923 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 - 0x1p-63 i) == 1.570796326376055842114524927965556247908 - 2.588578361325995866221775673638805081337e-10 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffp0 + 0x1p-23 i) == 1.570357140408705570520377172865353621698 + 2.714321200917194650737217746780928423385e-4 i": +float: 2 +ifloat: 2 +Test "Imaginary part of: casin (0x0.ffffffp0 - 0x1p-23 i) == 1.570357140408705570520377172865353621698 - 2.714321200917194650737217746780928423385e-4 i": +float: 2 +ifloat: 2 +Test "Imaginary part of: casin (0x1.0000000000000002p0 + 0x1p-63 i) == 1.570796326582978888921215348380499122131 + 5.116146586219826555037807251857670783420e-10 i": ildouble: 2 ldouble: 2 -Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": -float: 1 -ifloat: 1 +Test "Imaginary part of: casin (0x1.0000000000000002p0 - 0x1p-63 i) == 1.570796326582978888921215348380499122131 - 5.116146586219826555037807251857670783420e-10 i": ildouble: 2 ldouble: 2 +Test "Imaginary part of: casin (0x1.0000000000001p0 + 0.0 i) == 1.570796326794896619231321691639751442099 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000001p0 + 0x1.fp-1025 i) == 1.570796326794896619231321691639751442099 + 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000001p0 + 0x1p-52 i) == 1.570796317204594913251280305810847349436 + 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000001p0 - 0.0 i) == 1.570796326794896619231321691639751442099 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000001p0 - 0x1.fp-1025 i) == 1.570796326794896619231321691639751442099 - 2.107342425544701550354780375182800088393e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000001p0 - 0x1p-52 i) == 1.570796317204594913251280305810847349436 - 2.315303644582684770975188768022139415020e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.000002p0 + 0x1p-23 i) == 1.570574114956455764594481054234834678422 + 5.364668491573609633134147164031476452679e-4 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.000002p0 - 0x1p-23 i) == 1.570574114956455764594481054234834678422 - 5.364668491573609633134147164031476452679e-4 i": +float: 1 +ifloat: 1 +Test "Real part of: casin (0x1.fp-10 + 1.0 i) == 1.337909359557740912558349531052239112857e-3 + 8.813742198809567991336704287826445879025e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-10 + 1.0 i) == 1.337909359557740912558349531052239112857e-3 + 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-10 - 1.0 i) == 1.337909359557740912558349531052239112857e-3 - 8.813742198809567991336704287826445879025e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-10 - 1.0 i) == 1.337909359557740912558349531052239112857e-3 - 8.813742198809567991336704287826445879025e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-100 + 1.0 i) == 1.080754735021050612990719608916167354321e-30 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-100 + 1.0 i) == 1.080754735021050612990719608916167354321e-30 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (0x1.fp-100 - 1.0 i) == 1.080754735021050612990719608916167354321e-30 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-100 - 1.0 i) == 1.080754735021050612990719608916167354321e-30 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (0x1.fp-1000 + 1.0 i) == 1.278589251976747242280879285935084814093e-301 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1000 + 1.0 i) == 1.278589251976747242280879285935084814093e-301 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Real part of: casin (0x1.fp-1000 - 1.0 i) == 1.278589251976747242280879285935084814093e-301 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1000 - 1.0 i) == 1.278589251976747242280879285935084814093e-301 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 +Test "Real part of: casin (0x1.fp-10000 + 1.0 i) == 6.867047849047171855399183659351043150871e-3011 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-10000 - 1.0 i) == 6.867047849047171855399183659351043150871e-3011 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-1025 + 1.0 i) == 3.810492908885321743133304375216617626230e-309 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 + 1.0 i) == 3.810492908885321743133304375216617626230e-309 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 Test "Imaginary part of: casin (0x1.fp-1025 + 1.5 i) == 2.989196569048182929051881765490354365918e-309 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Real part of: casin (0x1.fp-1025 - 1.0 i) == 3.810492908885321743133304375216617626230e-309 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 - 1.0 i) == 3.810492908885321743133304375216617626230e-309 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +idouble: 1 Test "Imaginary part of: casin (0x1.fp-1025 - 1.5 i) == 2.989196569048182929051881765490354365918e-309 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 0.5 i) == 2.546345110742945032959687790021055102355e-39 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: casin (0x1.fp-129 + 0x1.000002p0 i) == 2.013062444707472738895109955455676357057e-39 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 0x1.000002p0 i) == 2.013062444707472738895109955455676357057e-39 + 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 0x1p-23 i) == 2.846900380897707329917933005874691056564e-39 + 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-129 + 1.0 i) == 2.013062564695348242280482517399205554874e-39 + 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 1.0 i) == 2.013062564695348242280482517399205554874e-39 + 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Imaginary part of: casin (0x1.fp-129 + 1.5 i) == 1.579176199917649005841160751101628985741e-39 + 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 0.5 i) == 2.546345110742945032959687790021055102355e-39 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: casin (0x1.fp-129 - 0x1.000002p0 i) == 2.013062444707472738895109955455676357057e-39 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 0x1.000002p0 i) == 2.013062444707472738895109955455676357057e-39 - 8.813736713132375348727889167749389235161e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 0x1p-23 i) == 2.846900380897707329917933005874691056564e-39 - 1.192092895507809676556842485683592032154e-7 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-129 - 1.0 i) == 2.013062564695348242280482517399205554874e-39 - 8.813735870195430252326093249797923090282e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 1.0 i) == 2.013062564695348242280482517399205554874e-39 - 8.813735870195430252326093249797923090282e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 Test "Imaginary part of: casin (0x1.fp-129 - 1.5 i) == 1.579176199917649005841160751101628985741e-39 - 1.194763217287109304111930828519090523536 i": double: 1 idouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == 5.757683115456107044287327268904964422212e-4933 + 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == 5.757683115456107044287327268904964422212e-4933 - 8.813735870195430251942769895627079569917e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-30 + 1.0 i) == 1.275929984216518540252717485007112529021e-9 + 8.813735870195430258081932989769495326854e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-30 + 1.0 i) == 1.275929984216518540252717485007112529021e-9 + 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-30 - 1.0 i) == 1.275929984216518540252717485007112529021e-9 - 8.813735870195430258081932989769495326854e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-30 - 1.0 i) == 1.275929984216518540252717485007112529021e-9 - 8.813735870195430258081932989769495326854e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (0x1.fp1023 + 0x1.fp1023 i) == 7.853981633974483096156608458198757210493e-1 + 7.107906849659093345062145442726115449315e2 i": double: 1 idouble: 1 Test "Imaginary part of: casin (0x1.fp127 + 0x1.fp127 i) == 7.853981633974483096156608458198757210493e-1 + 8.973081118419833726837456344608533993585e1 i": double: 1 idouble: 1 -Test "Imaginary part of: casin (1.5 + +0 i) == pi/2 + 0.9624236501192068949955178268487368462704 i": +Test "Imaginary part of: casin (0x1.fp16383 + 0x1.fp16383 i) == 7.853981633974483096156608458198757210493e-1 + 1.135753137836666928715489992987020363057e4 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-105 + 0.5 i) == 2.204933261082751447436996198490110245167e-32 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-105 - 0.5 i) == 2.204933261082751447436996198490110245167e-32 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-112 + 0.5 i) == 1.722604110220899568310153280070398629037e-34 + 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-112 - 0.5 i) == 1.722604110220899568310153280070398629037e-34 - 4.812118250596034474977589134243684231352e-1 i": +float: 1 +ifloat: 1 +Test "Real part of: casin (0x1p-23 + 0.5 i) == 1.066240299940009780479664302917201696886e-7 + 4.812118250596059896127318386463676808798e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 + 0.5 i) == 1.066240299940009780479664302917201696886e-7 + 4.812118250596059896127318386463676808798e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 + 0x0.ffffffp0 i) == 8.429369953393598499000760938112968755257e-8 + 8.813735448726963984495965873956465777250e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-23 + 0x1.000002p0 i) == 8.429369199749229560964789467980644296420e-8 + 8.813736713132400470205730751186547909968e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 + 0x1.000002p0 i) == 8.429369199749229560964789467980644296420e-8 + 8.813736713132400470205730751186547909968e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-23 - 0.5 i) == 1.066240299940009780479664302917201696886e-7 - 4.812118250596059896127318386463676808798e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 - 0.5 i) == 1.066240299940009780479664302917201696886e-7 - 4.812118250596059896127318386463676808798e-1 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 - 0x0.ffffffp0 i) == 8.429369953393598499000760938112968755257e-8 - 8.813735448726963984495965873956465777250e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-23 - 0x1.000002p0 i) == 8.429369199749229560964789467980644296420e-8 - 8.813736713132400470205730751186547909968e-1 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 - 0x1.000002p0 i) == 8.429369199749229560964789467980644296420e-8 - 8.813736713132400470205730751186547909968e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-52 + 0.5 i) == 1.986027322597818397661816253158024383707e-16 + 4.812118250596034474977589134243772428682e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-52 - 0.5 i) == 1.986027322597818397661816253158024383707e-16 - 4.812118250596034474977589134243772428682e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-63 + 0.5 i) == 9.697399036122160144833087173623140436413e-20 + 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-63 + 0x0.ffffffffffffffffp0 i) == 7.666467083416870407402049869781566856442e-20 + 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-63 + 0x0.ffffffffffffffffp0 i) == 7.666467083416870407402049869781566856442e-20 + 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-63 + 0x1.0000000000000002p0 i) == 7.666467083416870406778649849746878368519e-20 + 8.813735870195430253092739958139610131001e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-63 - 0.5 i) == 9.697399036122160144833087173623140436413e-20 - 4.812118250596034474977589134243684231373e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-63 - 0x0.ffffffffffffffffp0 i) == 7.666467083416870407402049869781566856442e-20 - 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-63 - 0x0.ffffffffffffffffp0 i) == 7.666467083416870407402049869781566856442e-20 - 8.813735870195430251942769895627079569937e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-63 - 0x1.0000000000000002p0 i) == 7.666467083416870406778649849746878368519e-20 - 8.813735870195430253092739958139610131001e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (1.0 + 0.25 i) == 1.081751996523816326311037318425097434186 + 5.097911466811016354623559941115413499164e-1 i": double: 1 +idouble: 1 +Test "Real part of: casin (1.0 + 0.5 i) == 8.959074812088902390666567243275770102229e-1 + 7.328576759736452608886724437653071523305e-1 i": float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 + 0.5 i) == 8.959074812088902390666567243275770102229e-1 + 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 + 0x1.fp-10 i) == 1.527305029163877791518741192097931722508 + 4.350501469856803800217957402220976497152e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 + 0x1.fp-30 i) == 1.570753848123921942730162693731872690232 + 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (1.0 - 0.25 i) == 1.081751996523816326311037318425097434186 - 5.097911466811016354623559941115413499164e-1 i": +double: 1 idouble: 1 +Test "Real part of: casin (1.0 - 0.5 i) == 8.959074812088902390666567243275770102229e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: casin (1.0 - 0.5 i) == 8.959074812088902390666567243275770102229e-1 - 7.328576759736452608886724437653071523305e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 - 0x1.fp-10 i) == 1.527305029163877791518741192097931722508 - 4.350501469856803800217957402220976497152e-2 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 - 0x1.fp-30 i) == 1.570753848123921942730162693731872690232 - 4.247867098745151888768727039216644758847e-5 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.5 + +0 i) == pi/2 + 0.9624236501192068949955178268487368462704 i": +ildouble: 1 +ldouble: 1 Test "Imaginary part of: casin (1.5 + 0x1.fp-1025 i) == 1.570796326794896619231321691639751442099 + 9.624236501192068949955178268487368462704e-1 i": ildouble: 1 ldouble: 1 @@ -633,70 +3240,464 @@ Test "Real part of: casinh (+0 - 1.5 i) == 0.96242365011920689499551782684873684 ildouble: 1 ldouble: 1 Test "Real part of: casinh (-0 + 1.5 i) == -0.9624236501192068949955178268487368462704 + pi/2 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0 - 1.5 i) == -0.9624236501192068949955178268487368462704 - pi/2 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.0 + 0x1.0000000000001p0 i) == -2.107342425544701550354780375182800088393e-8 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.0 - 0x1.0000000000001p0 i) == -2.107342425544701550354780375182800088393e-8 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.25 + 1.0 i) == -5.097911466811016354623559941115413499164e-1 + 1.081751996523816326311037318425097434186 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-0.25 - 1.0 i) == -5.097911466811016354623559941115413499164e-1 - 1.081751996523816326311037318425097434186 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0.5 + +0 i) == -0.4812118250596034474977589134243684231352 + +0 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1.fp-129 i) == -4.812118250596034474977589134243684231352e-1 + 2.546345110742945032959687790021055102355e-39 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-105 i) == -4.812118250596034474977589134243684231352e-1 + 2.204933261082751447436996198490110245167e-32 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-112 i) == -4.812118250596034474977589134243684231352e-1 + 1.722604110220899568310153280070398629037e-34 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-23 i) == -4.812118250596059896127318386463676808798e-1 + 1.066240299940009780479664302917201696886e-7 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-0.5 + 0x1p-23 i) == -4.812118250596059896127318386463676808798e-1 + 1.066240299940009780479664302917201696886e-7 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-52 i) == -4.812118250596034474977589134243772428682e-1 + 1.986027322597818397661816253158024383707e-16 i": +float: 1 +ifloat: 1 ildouble: 1 ldouble: 1 -Test "Real part of: casinh (-0 - 1.5 i) == -0.9624236501192068949955178268487368462704 - pi/2 i": +Test "Real part of: casinh (-0.5 + 0x1p-63 i) == -4.812118250596034474977589134243684231373e-1 + 9.697399036122160144833087173623140436413e-20 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 + 1.0 i) == -7.328576759736452608886724437653071523305e-1 + 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.5 + 1.0 i) == -7.328576759736452608886724437653071523305e-1 + 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 - 0 i) == -0.4812118250596034474977589134243684231352 - 0 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1.fp-129 i) == -4.812118250596034474977589134243684231352e-1 - 2.546345110742945032959687790021055102355e-39 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-105 i) == -4.812118250596034474977589134243684231352e-1 - 2.204933261082751447436996198490110245167e-32 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-112 i) == -4.812118250596034474977589134243684231352e-1 - 1.722604110220899568310153280070398629037e-34 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-23 i) == -4.812118250596059896127318386463676808798e-1 - 1.066240299940009780479664302917201696886e-7 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-0.5 - 0x1p-23 i) == -4.812118250596059896127318386463676808798e-1 - 1.066240299940009780479664302917201696886e-7 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-52 i) == -4.812118250596034474977589134243772428682e-1 - 1.986027322597818397661816253158024383707e-16 i": +float: 1 +ifloat: 1 ildouble: 1 ldouble: 1 -Test "Real part of: casinh (-0.5 + +0 i) == -0.4812118250596034474977589134243684231352 + +0 i": -double: 2 +Test "Real part of: casinh (-0.5 - 0x1p-63 i) == -4.812118250596034474977589134243684231373e-1 - 9.697399036122160144833087173623140436413e-20 i": float: 1 -idouble: 2 ifloat: 1 ildouble: 1 ldouble: 1 -Test "Real part of: casinh (-0.5 - 0 i) == -0.4812118250596034474977589134243684231352 - 0 i": -double: 2 +Test "Real part of: casinh (-0.5 - 1.0 i) == -7.328576759736452608886724437653071523305e-1 - 8.959074812088902390666567243275770102229e-1 i": float: 1 -idouble: 2 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Imaginary part of: casinh (-0.5 - 1.0 i) == -7.328576759736452608886724437653071523305e-1 - 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 + 0.0 i) == -8.813735870195430251942769895627079569917e-1 + 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == -8.813735870195430251942769895627079569917e-1 + 5.757683115456107044287327268904964422212e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 + 0x1p-63 i) == -8.813735870195430251942769895627079569937e-1 + 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x0.ffffffffffffffffp0 + 0x1p-63 i) == -8.813735870195430251942769895627079569937e-1 + 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 - 0.0 i) == -8.813735870195430251942769895627079569917e-1 - 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == -8.813735870195430251942769895627079569917e-1 - 5.757683115456107044287327268904964422212e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 - 0x1p-63 i) == -8.813735870195430251942769895627079569937e-1 - 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x0.ffffffffffffffffp0 - 0x1p-63 i) == -8.813735870195430251942769895627079569937e-1 - 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffp0 + 0x1p-23 i) == -8.813735448726963984495965873956465777250e-1 + 8.429369953393598499000760938112968755257e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffp0 - 0x1p-23 i) == -8.813735448726963984495965873956465777250e-1 - 8.429369953393598499000760938112968755257e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.0000000000000002p0 + 0x1p-63 i) == -8.813735870195430253092739958139610131001e-1 + 7.666467083416870406778649849746878368519e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.0000000000000002p0 - 0x1p-63 i) == -8.813735870195430253092739958139610131001e-1 - 7.666467083416870406778649849746878368519e-20 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.000002p0 + 0.0 i) == -8.813736713132375348727889167749389235161e-1 + 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.000002p0 + 0x1.fp-129 i) == -8.813736713132375348727889167749389235161e-1 + 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 + 0x1.fp-129 i) == -8.813736713132375348727889167749389235161e-1 + 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.000002p0 + 0x1p-23 i) == -8.813736713132400470205730751186547909968e-1 + 8.429369199749229560964789467980644296420e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 + 0x1p-23 i) == -8.813736713132400470205730751186547909968e-1 + 8.429369199749229560964789467980644296420e-8 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1.000002p0 - 0.0 i) == -8.813736713132375348727889167749389235161e-1 - 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.000002p0 - 0x1.fp-129 i) == -8.813736713132375348727889167749389235161e-1 - 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 - 0x1.fp-129 i) == -8.813736713132375348727889167749389235161e-1 - 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.000002p0 - 0x1p-23 i) == -8.813736713132400470205730751186547909968e-1 - 8.429369199749229560964789467980644296420e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 - 0x1p-23 i) == -8.813736713132400470205730751186547909968e-1 - 8.429369199749229560964789467980644296420e-8 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1.fp-10 + 1.0 i) == -4.350501469856803800217957402220976497152e-2 + 1.527305029163877791518741192097931722508 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-10 - 1.0 i) == -4.350501469856803800217957402220976497152e-2 - 1.527305029163877791518741192097931722508 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-1025 + 0.5 i) == -6.222508863508420569166420770843207333493e-309 + 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-1025 + 0x1.0000000000001p0 i) == -2.107342425544701550354780375182800088393e-8 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-0x1.fp-1025 + 1.5 i) == -9.624236501192068949955178268487368462704e-1 + 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (-0x1.fp-1025 - 0.5 i) == -6.222508863508420569166420770843207333493e-309 - 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-1025 - 0x1.0000000000001p0 i) == -2.107342425544701550354780375182800088393e-8 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-0x1.fp-1025 - 1.5 i) == -9.624236501192068949955178268487368462704e-1 - 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (-0x1.fp-129 + 0.5 i) == -3.287317402534702257036015056278368274737e-39 + 5.235987755982988730771072305465838140329e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-0x1.fp-129 + 1.5 i) == -9.624236501192068949955178268487368462704e-1 + 1.570796326794896619231321691639751442096 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (-0x1.fp-129 - 0.5 i) == -3.287317402534702257036015056278368274737e-39 - 5.235987755982988730771072305465838140329e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-0x1.fp-129 - 1.5 i) == -9.624236501192068949955178268487368462704e-1 - 1.570796326794896619231321691639751442096 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 + 0.5 i) == -9.402257155670418112159334875199821342890e-4933 + 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == -2.472906068161537187835415298076415423459e-4923 + 1.570796326465624365239962068302568888898 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-0x1.fp-16385 + 1.5 i) == -9.624236501192068949955178268487368462704e-1 + 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 - 0.5 i) == -9.402257155670418112159334875199821342890e-4933 - 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == -2.472906068161537187835415298076415423459e-4923 - 1.570796326465624365239962068302568888898 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-0x1.fp-16385 - 1.5 i) == -9.624236501192068949955178268487368462704e-1 - 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 -Test "Real part of: casinh (-1.0 + +0 i) == -0.8813735870195430252326093249797923090282 + +0 i": -double: 2 +Test "Real part of: casinh (-0x1.fp-30 + 1.0 i) == -4.247867098745151888768727039216644758847e-5 + 1.570753848123921942730162693731872690232 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-30 - 1.0 i) == -4.247867098745151888768727039216644758847e-5 - 1.570753848123921942730162693731872690232 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-105 + 0.5 i) == -2.846556599890768890940941645338546615370e-32 + 5.235987755982988730771072305465838140329e-1 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-105 - 0.5 i) == -2.846556599890768890940941645338546615370e-32 - 5.235987755982988730771072305465838140329e-1 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-112 + 0.5 i) == -2.223872343664663196047610660420739543258e-34 + 5.235987755982988730771072305465838140329e-1 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-112 - 0.5 i) == -2.223872343664663196047610660420739543258e-34 - 5.235987755982988730771072305465838140329e-1 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-23 + 0.0 i) == -1.192092895507809676556842485683592032154e-7 + 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 + 0.5 i) == -1.376510308240943236356088341381173571841e-7 + 5.235987755982934033165770729745469098254e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-0x1p-23 + 0.5 i) == -1.376510308240943236356088341381173571841e-7 + 5.235987755982934033165770729745469098254e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 + 0x0.ffffffp0 i) == -2.714321200917194650737217746780928423385e-4 + 1.570357140408705570520377172865353621698 i": +float: 2 +ifloat: 2 +Test "Real part of: casinh (-0x1p-23 + 0x1.000002p0 i) == -5.364668491573609633134147164031476452679e-4 + 1.570574114956455764594481054234834678422 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1p-23 + 0x1.fp-129 i) == -1.192092895507809676556842485683592032154e-7 + 2.846900380897707329917933005874691056564e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 - 0.0 i) == -1.192092895507809676556842485683592032154e-7 - 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 - 0.5 i) == -1.376510308240943236356088341381173571841e-7 - 5.235987755982934033165770729745469098254e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-0x1p-23 - 0.5 i) == -1.376510308240943236356088341381173571841e-7 - 5.235987755982934033165770729745469098254e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 - 0x0.ffffffp0 i) == -2.714321200917194650737217746780928423385e-4 - 1.570357140408705570520377172865353621698 i": +float: 2 +ifloat: 2 +Test "Real part of: casinh (-0x1p-23 - 0x1.000002p0 i) == -5.364668491573609633134147164031476452679e-4 - 1.570574114956455764594481054234834678422 i": float: 1 -idouble: 2 ifloat: 1 +Test "Real part of: casinh (-0x1p-23 - 0x1.fp-129 i) == -1.192092895507809676556842485683592032154e-7 - 2.846900380897707329917933005874691056564e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-52 + 0.5 i) == -2.563950248511418570403591756798643804971e-16 + 5.235987755982988730771072305465648369889e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-52 + 0x0.fffffffffffff8p0 i) == -1.171456840272878582596796205397918831268e-8 + 1.570796307840326780080580569360500172043 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-52 + 0x1.0000000000001p0 i) == -2.315303644582684770975188768022139415020e-8 + 1.570796317204594913251280305810847349436 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-52 - 0.5 i) == -2.563950248511418570403591756798643804971e-16 - 5.235987755982988730771072305465648369889e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-52 - 0x0.fffffffffffff8p0 i) == -1.171456840272878582596796205397918831268e-8 - 1.570796307840326780080580569360500172043 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-52 - 0x1.0000000000001p0 i) == -2.315303644582684770975188768022139415020e-8 - 1.570796317204594913251280305810847349436 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-63 + 0x0.ffffffffffffffffp0 i) == -2.588578361325995866221775673638805081337e-10 + 1.570796326376055842114524927965556247908 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-63 + 0x1.0000000000000002p0 i) == -5.116146586219826555037807251857670783420e-10 + 1.570796326582978888921215348380499122131 i": +ildouble: 2 +ldouble: 2 +Test "Real part of: casinh (-0x1p-63 - 0x0.ffffffffffffffffp0 i) == -2.588578361325995866221775673638805081337e-10 - 1.570796326376055842114524927965556247908 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-63 - 0x1.0000000000000002p0 i) == -5.116146586219826555037807251857670783420e-10 - 1.570796326582978888921215348380499122131 i": ildouble: 2 ldouble: 2 +Test "Real part of: casinh (-1.0 + +0 i) == -0.8813735870195430252326093249797923090282 + +0 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 + 0.25 i) == -8.924633639033482359562124741744951972772e-1 + 1.763024327769669304186785666360901026468e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0.5 i) == -9.261330313501824245501244453057873152694e-1 + 3.494390628572132936274118260753699527325e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0.5 i) == -9.261330313501824245501244453057873152694e-1 + 3.494390628572132936274118260753699527325e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-10 i) == -8.813742198809567991336704287826445879025e-1 + 1.337909359557740912558349531052239112857e-3 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-10 i) == -8.813742198809567991336704287826445879025e-1 + 1.337909359557740912558349531052239112857e-3 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-100 i) == -8.813735870195430252326093249797923090282e-1 + 1.080754735021050612990719608916167354321e-30 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-100 i) == -8.813735870195430252326093249797923090282e-1 + 1.080754735021050612990719608916167354321e-30 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-1000 i) == -8.813735870195430252326093249797923090282e-1 + 1.278589251976747242280879285935084814093e-301 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-1000 i) == -8.813735870195430252326093249797923090282e-1 + 1.278589251976747242280879285935084814093e-301 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-10000 i) == -8.813735870195430252326093249797923090282e-1 + 6.867047849047171855399183659351043150871e-3011 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-1025 i) == -8.813735870195430252326093249797923090282e-1 + 3.810492908885321743133304375216617626230e-309 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-1025 i) == -8.813735870195430252326093249797923090282e-1 + 3.810492908885321743133304375216617626230e-309 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-129 i) == -8.813735870195430252326093249797923090282e-1 + 2.013062564695348242280482517399205554874e-39 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-129 i) == -8.813735870195430252326093249797923090282e-1 + 2.013062564695348242280482517399205554874e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-30 i) == -8.813735870195430258081932989769495326854e-1 + 1.275929984216518540252717485007112529021e-9 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-30 i) == -8.813735870195430258081932989769495326854e-1 + 1.275929984216518540252717485007112529021e-9 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (-1.0 - 0 i) == -0.8813735870195430252326093249797923090282 - 0 i": -double: 2 +double: 1 float: 1 -idouble: 2 +idouble: 1 ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Real part of: casinh (-1.5 + +0 i) == -1.194763217287109304111930828519090523536 + +0 i": -double: 2 +Test "Real part of: casinh (-1.0 - 0.25 i) == -8.924633639033482359562124741744951972772e-1 - 1.763024327769669304186785666360901026468e-1 i": float: 1 -idouble: 2 ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0.5 i) == -9.261330313501824245501244453057873152694e-1 - 3.494390628572132936274118260753699527325e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0.5 i) == -9.261330313501824245501244453057873152694e-1 - 3.494390628572132936274118260753699527325e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-10 i) == -8.813742198809567991336704287826445879025e-1 - 1.337909359557740912558349531052239112857e-3 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-10 i) == -8.813742198809567991336704287826445879025e-1 - 1.337909359557740912558349531052239112857e-3 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-100 i) == -8.813735870195430252326093249797923090282e-1 - 1.080754735021050612990719608916167354321e-30 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-100 i) == -8.813735870195430252326093249797923090282e-1 - 1.080754735021050612990719608916167354321e-30 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-1000 i) == -8.813735870195430252326093249797923090282e-1 - 1.278589251976747242280879285935084814093e-301 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-1000 i) == -8.813735870195430252326093249797923090282e-1 - 1.278589251976747242280879285935084814093e-301 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-10000 i) == -8.813735870195430252326093249797923090282e-1 - 6.867047849047171855399183659351043150871e-3011 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-1025 i) == -8.813735870195430252326093249797923090282e-1 - 3.810492908885321743133304375216617626230e-309 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-1025 i) == -8.813735870195430252326093249797923090282e-1 - 3.810492908885321743133304375216617626230e-309 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-129 i) == -8.813735870195430252326093249797923090282e-1 - 2.013062564695348242280482517399205554874e-39 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-129 i) == -8.813735870195430252326093249797923090282e-1 - 2.013062564695348242280482517399205554874e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-30 i) == -8.813735870195430258081932989769495326854e-1 - 1.275929984216518540252717485007112529021e-9 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-30 i) == -8.813735870195430258081932989769495326854e-1 - 1.275929984216518540252717485007112529021e-9 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.5 + +0 i) == -1.194763217287109304111930828519090523536 + +0 i": +double: 1 +idouble: 1 Test "Real part of: casinh (-1.5 + 0x1.fp-1025 i) == -1.194763217287109304111930828519090523536 + 2.989196569048182929051881765490354365918e-309 i": double: 1 idouble: 1 @@ -704,10 +3705,8 @@ Test "Real part of: casinh (-1.5 + 0x1.fp-129 i) == -1.1947632172871093041119308 double: 1 idouble: 1 Test "Real part of: casinh (-1.5 - 0 i) == -1.194763217287109304111930828519090523536 - 0 i": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 +double: 1 +idouble: 1 Test "Real part of: casinh (-1.5 - 0x1.fp-1025 i) == -1.194763217287109304111930828519090523536 - 2.989196569048182929051881765490354365918e-309 i": double: 1 idouble: 1 @@ -715,20 +3714,56 @@ Test "Real part of: casinh (-1.5 - 0x1.fp-129 i) == -1.1947632172871093041119308 double: 1 idouble: 1 Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 5 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.0 + 0x1.0000000000001p0 i) == 2.107342425544701550354780375182800088393e-8 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.0 - 0x1.0000000000001p0 i) == 2.107342425544701550354780375182800088393e-8 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.25 + 1.0 i) == 5.097911466811016354623559941115413499164e-1 + 1.081751996523816326311037318425097434186 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (0.25 - 1.0 i) == 5.097911466811016354623559941115413499164e-1 - 1.081751996523816326311037318425097434186 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (0.5 + +0 i) == 0.4812118250596034474977589134243684231352 + +0 i": float: 1 -idouble: 5 ifloat: 1 -ildouble: 5 -ldouble: 5 -Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 -ildouble: 5 -ldouble: 5 -Test "Real part of: casinh (0.5 + +0 i) == 0.4812118250596034474977589134243684231352 + +0 i": +Test "Real part of: casinh (0.5 + 0x1.fp-129 i) == 4.812118250596034474977589134243684231352e-1 + 2.546345110742945032959687790021055102355e-39 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-105 i) == 4.812118250596034474977589134243684231352e-1 + 2.204933261082751447436996198490110245167e-32 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-112 i) == 4.812118250596034474977589134243684231352e-1 + 1.722604110220899568310153280070398629037e-34 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-23 i) == 4.812118250596059896127318386463676808798e-1 + 1.066240299940009780479664302917201696886e-7 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (0.5 + 0x1p-23 i) == 4.812118250596059896127318386463676808798e-1 + 1.066240299940009780479664302917201696886e-7 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-52 i) == 4.812118250596034474977589134243772428682e-1 + 1.986027322597818397661816253158024383707e-16 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 + 0x1p-63 i) == 4.812118250596034474977589134243684231373e-1 + 9.697399036122160144833087173623140436413e-20 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 + 1.0 i) == 7.328576759736452608886724437653071523305e-1 + 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.5 + 1.0 i) == 7.328576759736452608886724437653071523305e-1 + 8.959074812088902390666567243275770102229e-1 i": float: 1 ifloat: 1 ildouble: 1 @@ -736,6 +3771,41 @@ ldouble: 1 Test "Real part of: casinh (0.5 - 0 i) == 0.4812118250596034474977589134243684231352 - 0 i": float: 1 ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1.fp-129 i) == 4.812118250596034474977589134243684231352e-1 - 2.546345110742945032959687790021055102355e-39 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-105 i) == 4.812118250596034474977589134243684231352e-1 - 2.204933261082751447436996198490110245167e-32 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-112 i) == 4.812118250596034474977589134243684231352e-1 - 1.722604110220899568310153280070398629037e-34 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-23 i) == 4.812118250596059896127318386463676808798e-1 - 1.066240299940009780479664302917201696886e-7 i": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (0.5 - 0x1p-23 i) == 4.812118250596059896127318386463676808798e-1 - 1.066240299940009780479664302917201696886e-7 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-52 i) == 4.812118250596034474977589134243772428682e-1 - 1.986027322597818397661816253158024383707e-16 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 - 0x1p-63 i) == 4.812118250596034474977589134243684231373e-1 - 9.697399036122160144833087173623140436413e-20 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 - 1.0 i) == 7.328576759736452608886724437653071523305e-1 - 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.5 - 1.0 i) == 7.328576759736452608886724437653071523305e-1 - 8.959074812088902390666567243275770102229e-1 i": +float: 1 +ifloat: 1 ildouble: 1 ldouble: 1 Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i": @@ -748,40 +3818,373 @@ idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 + 0.0 i) == 8.813735870195430251942769895627079569917e-1 + 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i) == 8.813735870195430251942769895627079569917e-1 + 5.757683115456107044287327268904964422212e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 + 0x1p-63 i) == 8.813735870195430251942769895627079569937e-1 + 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x0.ffffffffffffffffp0 + 0x1p-63 i) == 8.813735870195430251942769895627079569937e-1 + 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 - 0.0 i) == 8.813735870195430251942769895627079569917e-1 - 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i) == 8.813735870195430251942769895627079569917e-1 - 5.757683115456107044287327268904964422212e-4933 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 - 0x1p-63 i) == 8.813735870195430251942769895627079569937e-1 - 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x0.ffffffffffffffffp0 - 0x1p-63 i) == 8.813735870195430251942769895627079569937e-1 - 7.666467083416870407402049869781566856442e-20 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffp0 + 0x1p-23 i) == 8.813735448726963984495965873956465777250e-1 + 8.429369953393598499000760938112968755257e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffp0 - 0x1p-23 i) == 8.813735448726963984495965873956465777250e-1 - 8.429369953393598499000760938112968755257e-8 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.0000000000000002p0 + 0x1p-63 i) == 8.813735870195430253092739958139610131001e-1 + 7.666467083416870406778649849746878368519e-20 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.0000000000000002p0 - 0x1p-63 i) == 8.813735870195430253092739958139610131001e-1 - 7.666467083416870406778649849746878368519e-20 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.000002p0 + 0.0 i) == 8.813736713132375348727889167749389235161e-1 + 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.000002p0 + 0x1.fp-129 i) == 8.813736713132375348727889167749389235161e-1 + 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.000002p0 + 0x1.fp-129 i) == 8.813736713132375348727889167749389235161e-1 + 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.000002p0 + 0x1p-23 i) == 8.813736713132400470205730751186547909968e-1 + 8.429369199749229560964789467980644296420e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.000002p0 + 0x1p-23 i) == 8.813736713132400470205730751186547909968e-1 + 8.429369199749229560964789467980644296420e-8 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0x1.000002p0 - 0.0 i) == 8.813736713132375348727889167749389235161e-1 - 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.000002p0 - 0x1.fp-129 i) == 8.813736713132375348727889167749389235161e-1 - 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.000002p0 - 0x1.fp-129 i) == 8.813736713132375348727889167749389235161e-1 - 2.013062444707472738895109955455676357057e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.000002p0 - 0x1p-23 i) == 8.813736713132400470205730751186547909968e-1 - 8.429369199749229560964789467980644296420e-8 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.000002p0 - 0x1p-23 i) == 8.813736713132400470205730751186547909968e-1 - 8.429369199749229560964789467980644296420e-8 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0x1.fp-10 + 1.0 i) == 4.350501469856803800217957402220976497152e-2 + 1.527305029163877791518741192097931722508 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-10 - 1.0 i) == 4.350501469856803800217957402220976497152e-2 - 1.527305029163877791518741192097931722508 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-1025 + 0.5 i) == 6.222508863508420569166420770843207333493e-309 + 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-1025 + 0x1.0000000000001p0 i) == 2.107342425544701550354780375182800088393e-8 + 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0x1.fp-1025 + 1.5 i) == 9.624236501192068949955178268487368462704e-1 + 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0x1.fp-1025 - 0.5 i) == 6.222508863508420569166420770843207333493e-309 - 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-1025 - 0x1.0000000000001p0 i) == 2.107342425544701550354780375182800088393e-8 - 1.570796326794896619231321691639751442099 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0x1.fp-1025 - 1.5 i) == 9.624236501192068949955178268487368462704e-1 - 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0x1.fp-129 + 0.5 i) == 3.287317402534702257036015056278368274737e-39 + 5.235987755982988730771072305465838140329e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0x1.fp-129 + 1.5 i) == 9.624236501192068949955178268487368462704e-1 + 1.570796326794896619231321691639751442096 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0x1.fp-129 - 0.5 i) == 3.287317402534702257036015056278368274737e-39 - 5.235987755982988730771072305465838140329e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0x1.fp-129 - 1.5 i) == 9.624236501192068949955178268487368462704e-1 - 1.570796326794896619231321691639751442096 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 + 0.5 i) == 9.402257155670418112159334875199821342890e-4933 + 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i) == 2.472906068161537187835415298076415423459e-4923 + 1.570796326465624365239962068302568888898 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0x1.fp-16385 + 1.5 i) == 9.624236501192068949955178268487368462704e-1 + 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 - 0.5 i) == 9.402257155670418112159334875199821342890e-4933 - 5.235987755982988730771072305465838140329e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i) == 2.472906068161537187835415298076415423459e-4923 - 1.570796326465624365239962068302568888898 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0x1.fp-16385 - 1.5 i) == 9.624236501192068949955178268487368462704e-1 - 1.570796326794896619231321691639751442099 i": ildouble: 1 ldouble: 1 +Test "Real part of: casinh (0x1.fp-30 + 1.0 i) == 4.247867098745151888768727039216644758847e-5 + 1.570753848123921942730162693731872690232 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-30 - 1.0 i) == 4.247867098745151888768727039216644758847e-5 - 1.570753848123921942730162693731872690232 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (0x1.fp1023 + 0x1.fp1023 i) == 7.107906849659093345062145442726115449315e2 + 7.853981633974483096156608458198757210493e-1 i": double: 1 idouble: 1 Test "Real part of: casinh (0x1.fp127 + 0x1.fp127 i) == 8.973081118419833726837456344608533993585e1 + 7.853981633974483096156608458198757210493e-1 i": double: 1 idouble: 1 +Test "Real part of: casinh (0x1.fp16383 + 0x1.fp16383 i) == 1.135753137836666928715489992987020363057e4 + 7.853981633974483096156608458198757210493e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-105 + 0.5 i) == 2.846556599890768890940941645338546615370e-32 + 5.235987755982988730771072305465838140329e-1 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-105 - 0.5 i) == 2.846556599890768890940941645338546615370e-32 - 5.235987755982988730771072305465838140329e-1 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-112 + 0.5 i) == 2.223872343664663196047610660420739543258e-34 + 5.235987755982988730771072305465838140329e-1 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-112 - 0.5 i) == 2.223872343664663196047610660420739543258e-34 - 5.235987755982988730771072305465838140329e-1 i": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-23 + 0.0 i) == 1.192092895507809676556842485683592032154e-7 + 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 + 0.5 i) == 1.376510308240943236356088341381173571841e-7 + 5.235987755982934033165770729745469098254e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (0x1p-23 + 0.5 i) == 1.376510308240943236356088341381173571841e-7 + 5.235987755982934033165770729745469098254e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 + 0x0.ffffffp0 i) == 2.714321200917194650737217746780928423385e-4 + 1.570357140408705570520377172865353621698 i": +float: 2 +ifloat: 2 +Test "Real part of: casinh (0x1p-23 + 0x1.000002p0 i) == 5.364668491573609633134147164031476452679e-4 + 1.570574114956455764594481054234834678422 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0x1p-23 + 0x1.fp-129 i) == 1.192092895507809676556842485683592032154e-7 + 2.846900380897707329917933005874691056564e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 - 0.0 i) == 1.192092895507809676556842485683592032154e-7 - 0.0 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 - 0.5 i) == 1.376510308240943236356088341381173571841e-7 - 5.235987755982934033165770729745469098254e-1 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (0x1p-23 - 0.5 i) == 1.376510308240943236356088341381173571841e-7 - 5.235987755982934033165770729745469098254e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 - 0x0.ffffffp0 i) == 2.714321200917194650737217746780928423385e-4 - 1.570357140408705570520377172865353621698 i": +float: 2 +ifloat: 2 +Test "Real part of: casinh (0x1p-23 - 0x1.000002p0 i) == 5.364668491573609633134147164031476452679e-4 - 1.570574114956455764594481054234834678422 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0x1p-23 - 0x1.fp-129 i) == 1.192092895507809676556842485683592032154e-7 - 2.846900380897707329917933005874691056564e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-52 + 0.5 i) == 2.563950248511418570403591756798643804971e-16 + 5.235987755982988730771072305465648369889e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-52 + 0x0.fffffffffffff8p0 i) == 1.171456840272878582596796205397918831268e-8 + 1.570796307840326780080580569360500172043 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-52 + 0x1.0000000000001p0 i) == 2.315303644582684770975188768022139415020e-8 + 1.570796317204594913251280305810847349436 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-52 - 0.5 i) == 2.563950248511418570403591756798643804971e-16 - 5.235987755982988730771072305465648369889e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-52 - 0x0.fffffffffffff8p0 i) == 1.171456840272878582596796205397918831268e-8 - 1.570796307840326780080580569360500172043 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-52 - 0x1.0000000000001p0 i) == 2.315303644582684770975188768022139415020e-8 - 1.570796317204594913251280305810847349436 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-63 + 0x0.ffffffffffffffffp0 i) == 2.588578361325995866221775673638805081337e-10 + 1.570796326376055842114524927965556247908 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-63 + 0x1.0000000000000002p0 i) == 5.116146586219826555037807251857670783420e-10 + 1.570796326582978888921215348380499122131 i": +ildouble: 2 +ldouble: 2 +Test "Real part of: casinh (0x1p-63 - 0x0.ffffffffffffffffp0 i) == 2.588578361325995866221775673638805081337e-10 - 1.570796326376055842114524927965556247908 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-63 - 0x1.0000000000000002p0 i) == 5.116146586219826555037807251857670783420e-10 - 1.570796326582978888921215348380499122131 i": +ildouble: 2 +ldouble: 2 Test "Real part of: casinh (1.0 + +0 i) == 0.8813735870195430252326093249797923090282 + +0 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Real part of: casinh (1.0 + 0.25 i) == 8.924633639033482359562124741744951972772e-1 + 1.763024327769669304186785666360901026468e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0.5 i) == 9.261330313501824245501244453057873152694e-1 + 3.494390628572132936274118260753699527325e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 + 0.5 i) == 9.261330313501824245501244453057873152694e-1 + 3.494390628572132936274118260753699527325e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-10 i) == 8.813742198809567991336704287826445879025e-1 + 1.337909359557740912558349531052239112857e-3 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-10 i) == 8.813742198809567991336704287826445879025e-1 + 1.337909359557740912558349531052239112857e-3 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-100 i) == 8.813735870195430252326093249797923090282e-1 + 1.080754735021050612990719608916167354321e-30 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-100 i) == 8.813735870195430252326093249797923090282e-1 + 1.080754735021050612990719608916167354321e-30 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-1000 i) == 8.813735870195430252326093249797923090282e-1 + 1.278589251976747242280879285935084814093e-301 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-1000 i) == 8.813735870195430252326093249797923090282e-1 + 1.278589251976747242280879285935084814093e-301 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-10000 i) == 8.813735870195430252326093249797923090282e-1 + 6.867047849047171855399183659351043150871e-3011 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-1025 i) == 8.813735870195430252326093249797923090282e-1 + 3.810492908885321743133304375216617626230e-309 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-1025 i) == 8.813735870195430252326093249797923090282e-1 + 3.810492908885321743133304375216617626230e-309 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-129 i) == 8.813735870195430252326093249797923090282e-1 + 2.013062564695348242280482517399205554874e-39 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-129 i) == 8.813735870195430252326093249797923090282e-1 + 2.013062564695348242280482517399205554874e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-30 i) == 8.813735870195430258081932989769495326854e-1 + 1.275929984216518540252717485007112529021e-9 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-30 i) == 8.813735870195430258081932989769495326854e-1 + 1.275929984216518540252717485007112529021e-9 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (1.0 - 0 i) == 0.8813735870195430252326093249797923090282 - 0 i": double: 1 float: 1 idouble: 1 ifloat: 1 +Test "Real part of: casinh (1.0 - 0.25 i) == 8.924633639033482359562124741744951972772e-1 - 1.763024327769669304186785666360901026468e-1 i": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0.5 i) == 9.261330313501824245501244453057873152694e-1 - 3.494390628572132936274118260753699527325e-1 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 - 0.5 i) == 9.261330313501824245501244453057873152694e-1 - 3.494390628572132936274118260753699527325e-1 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-10 i) == 8.813742198809567991336704287826445879025e-1 - 1.337909359557740912558349531052239112857e-3 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-10 i) == 8.813742198809567991336704287826445879025e-1 - 1.337909359557740912558349531052239112857e-3 i": +float: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-100 i) == 8.813735870195430252326093249797923090282e-1 - 1.080754735021050612990719608916167354321e-30 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-100 i) == 8.813735870195430252326093249797923090282e-1 - 1.080754735021050612990719608916167354321e-30 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-1000 i) == 8.813735870195430252326093249797923090282e-1 - 1.278589251976747242280879285935084814093e-301 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-1000 i) == 8.813735870195430252326093249797923090282e-1 - 1.278589251976747242280879285935084814093e-301 i": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-10000 i) == 8.813735870195430252326093249797923090282e-1 - 6.867047849047171855399183659351043150871e-3011 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-1025 i) == 8.813735870195430252326093249797923090282e-1 - 3.810492908885321743133304375216617626230e-309 i": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-1025 i) == 8.813735870195430252326093249797923090282e-1 - 3.810492908885321743133304375216617626230e-309 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-129 i) == 8.813735870195430252326093249797923090282e-1 - 2.013062564695348242280482517399205554874e-39 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-129 i) == 8.813735870195430252326093249797923090282e-1 - 2.013062564695348242280482517399205554874e-39 i": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-30 i) == 8.813735870195430258081932989769495326854e-1 - 1.275929984216518540252717485007112529021e-9 i": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-30 i) == 8.813735870195430258081932989769495326854e-1 - 1.275929984216518540252717485007112529021e-9 i": +ildouble: 1 +ldouble: 1 Test "Real part of: casinh (1.5 + +0 i) == 1.194763217287109304111930828519090523536 + +0 i": double: 1 idouble: 1 @@ -802,6 +4205,26 @@ double: 1 idouble: 1 # catan +Test "Imaginary part of: catan (-0x1.fp1023 + 0x1.fp1023 i) == -1.570796326794896619231321691639751442099 + 2.871063043235098558826106732041811695767e-309 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1.fp1023 - 0x1.fp1023 i) == -1.570796326794896619231321691639751442099 - 2.871063043235098558826106732041811695767e-309 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1.fp127 + 0x1.fp127 i) == -1.570796326794896619231321691639751442097 + 1.516766904286822590927401983512575068153e-39 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1.fp127 - 0x1.fp127 i) == -1.570796326794896619231321691639751442097 - 1.516766904286822590927401983512575068153e-39 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": float: 3 ifloat: 3 @@ -813,8 +4236,48 @@ ifloat: 1 Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i": float: 4 ifloat: 4 +Test "Imaginary part of: catan (0x1.fp1023 + 0x1.fp1023 i) == 1.570796326794896619231321691639751442099 + 2.871063043235098558826106732041811695767e-309 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1.fp1023 - 0x1.fp1023 i) == 1.570796326794896619231321691639751442099 - 2.871063043235098558826106732041811695767e-309 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1.fp127 + 0x1.fp127 i) == 1.570796326794896619231321691639751442097 + 1.516766904286822590927401983512575068153e-39 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1.fp127 - 0x1.fp127 i) == 1.570796326794896619231321691639751442097 - 1.516766904286822590927401983512575068153e-39 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 # catanh +Test "Real part of: catanh (-0x1.fp1023 + 0x1.fp1023 i) == -2.871063043235098558826106732041811695767e-309 + 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1.fp1023 - 0x1.fp1023 i) == -2.871063043235098558826106732041811695767e-309 - 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1.fp127 + 0x1.fp127 i) == -1.516766904286822590927401983512575068153e-39 + 1.570796326794896619231321691639751442097 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1.fp127 - 0x1.fp127 i) == -1.516766904286822590927401983512575068153e-39 - 1.570796326794896619231321691639751442097 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": double: 4 idouble: 4 @@ -826,9 +4289,31 @@ ifloat: 4 Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": double: 1 idouble: 1 +ildouble: 1 +ldouble: 1 Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": float: 6 ifloat: 6 +Test "Real part of: catanh (0x1.fp1023 + 0x1.fp1023 i) == 2.871063043235098558826106732041811695767e-309 + 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1.fp1023 - 0x1.fp1023 i) == 2.871063043235098558826106732041811695767e-309 - 1.570796326794896619231321691639751442099 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1.fp127 + 0x1.fp127 i) == 1.516766904286822590927401983512575068153e-39 + 1.570796326794896619231321691639751442097 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1.fp127 - 0x1.fp127 i) == 1.516766904286822590927401983512575068153e-39 - 1.570796326794896619231321691639751442097 i": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 # cbrt Test "cbrt (-0.001) == -0.1": @@ -1558,13 +5043,6 @@ idouble: 2 ifloat: 1 ildouble: 1 ldouble: 1 -Test "cos (pi/2) == 0": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 # cos_downward Test "cos_downward (1) == 0.5403023058681397174009366074429766037323": @@ -2825,13 +6303,6 @@ idouble: 1 ifloat: 1 ildouble: 1 ldouble: 1 -Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": float: 1 ifloat: 1 @@ -3318,33 +6789,33 @@ ldouble: 1 Function: Real part of "cacos": double: 1 -float: 1 +float: 2 idouble: 1 -ifloat: 1 +ifloat: 2 ildouble: 1 ldouble: 1 Function: Imaginary part of "cacos": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 +double: 1 +float: 2 +idouble: 1 +ifloat: 2 ildouble: 2 ldouble: 2 Function: Real part of "cacosh": double: 1 -float: 7 +float: 2 idouble: 1 -ifloat: 7 -ildouble: 6 -ldouble: 6 +ifloat: 2 +ildouble: 2 +ldouble: 2 Function: Imaginary part of "cacosh": double: 1 -float: 3 +float: 2 idouble: 1 -ifloat: 3 +ifloat: 2 ildouble: 1 ldouble: 1 @@ -3353,32 +6824,32 @@ double: 1 float: 1 idouble: 1 ifloat: 1 -ildouble: 2 -ldouble: 2 +ildouble: 1 +ldouble: 1 Function: Imaginary part of "casin": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 +double: 1 +float: 2 +idouble: 1 +ifloat: 2 ildouble: 2 ldouble: 2 Function: Real part of "casinh": -double: 5 -float: 1 -idouble: 5 -ifloat: 1 -ildouble: 5 -ldouble: 5 +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 Function: Imaginary part of "casinh": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 -ildouble: 5 -ldouble: 5 +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 Function: Real part of "catan": float: 4 @@ -3389,6 +6860,8 @@ double: 1 float: 1 idouble: 1 ifloat: 1 +ildouble: 1 +ldouble: 1 Function: Real part of "catanh": double: 4 diff --git a/libc/sysdeps/x86_64/strcmp.S b/libc/sysdeps/x86_64/strcmp.S index de9ecc909..76809373e 100644 --- a/libc/sysdeps/x86_64/strcmp.S +++ b/libc/sysdeps/x86_64/strcmp.S @@ -32,7 +32,7 @@ /* The simplified code below is not set up to handle strncmp() so far. Should this become necessary it has to be implemented. For now just report the problem. */ -# ifdef NOT_IN_lib +# ifdef NOT_IN_libc # error "strncmp not implemented so far" # endif @@ -51,7 +51,7 @@ # include "locale-defines.h" /* No support for strcasecmp outside libc so far since it is not needed. */ -# ifdef NOT_IN_lib +# ifdef NOT_IN_libc # error "strcasecmp_l not implemented so far" # endif @@ -60,7 +60,7 @@ # include "locale-defines.h" /* No support for strncasecmp outside libc so far since it is not needed. */ -# ifdef NOT_IN_lib +# ifdef NOT_IN_libc # error "strncasecmp_l not implemented so far" # endif diff --git a/libc/sysdeps/x86_64/tst-audit3.c b/libc/sysdeps/x86_64/tst-audit3.c new file mode 100644 index 000000000..d00db9972 --- /dev/null +++ b/libc/sysdeps/x86_64/tst-audit3.c @@ -0,0 +1,20 @@ +/* Test case for x86-64 preserved registers in dynamic linker. */ + +#include <stdlib.h> +#include <string.h> + +#include <emmintrin.h> + +extern __m128i audit_test (__m128i, __m128i, __m128i, __m128i, + __m128i, __m128i, __m128i, __m128i); +int +main (void) +{ + __m128i xmm = _mm_setzero_si128 (); + __m128i ret = audit_test (xmm, xmm, xmm, xmm, xmm, xmm, xmm, xmm); + + if (memcmp (&xmm, &ret, sizeof (ret))) + abort (); + + return 0; +} diff --git a/libc/sysdeps/x86_64/tst-audit4.c b/libc/sysdeps/x86_64/tst-audit4.c new file mode 100644 index 000000000..c4f1d5bdb --- /dev/null +++ b/libc/sysdeps/x86_64/tst-audit4.c @@ -0,0 +1,49 @@ +/* Test case for x86-64 preserved registers in dynamic linker. */ + +#ifdef __AVX__ +#include <stdlib.h> +#include <string.h> +#include <cpuid.h> +#include <immintrin.h> + + +static int +avx_enabled (void) +{ + unsigned int eax, ebx, ecx, edx; + + if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) == 0 + || (ecx & (bit_AVX | bit_OSXSAVE)) != (bit_AVX | bit_OSXSAVE)) + return 0; + + /* Check the OS has AVX and SSE saving enabled. */ + asm ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0)); + + return (eax & 6) == 6; +} + + +extern __m256i audit_test (__m256i, __m256i, __m256i, __m256i, + __m256i, __m256i, __m256i, __m256i); +int +main (void) +{ + /* Run AVX test only if AVX is supported. */ + if (avx_enabled ()) + { + __m256i ymm = _mm256_setzero_si256 (); + __m256i ret = audit_test (ymm, ymm, ymm, ymm, ymm, ymm, ymm, ymm); + + ymm = _mm256_set1_epi32 (0x12349876); + if (memcmp (&ymm, &ret, sizeof (ret))) + abort (); + } + return 0; +} +#else +int +main (void) +{ + return 0; +} +#endif diff --git a/libc/sysdeps/x86_64/tst-audit5.c b/libc/sysdeps/x86_64/tst-audit5.c new file mode 100644 index 000000000..0094fee61 --- /dev/null +++ b/libc/sysdeps/x86_64/tst-audit5.c @@ -0,0 +1,21 @@ +/* Test case for x86-64 preserved registers in dynamic linker. */ + +#include <stdlib.h> +#include <string.h> + +#include <emmintrin.h> + +extern __m128i audit_test (__m128i, __m128i, __m128i, __m128i, + __m128i, __m128i, __m128i, __m128i); +int +main (void) +{ + __m128i xmm = _mm_setzero_si128 (); + __m128i ret = audit_test (xmm, xmm, xmm, xmm, xmm, xmm, xmm, xmm); + + xmm = _mm_set1_epi32 (0x12349876); + if (memcmp (&xmm, &ret, sizeof (ret))) + abort (); + + return 0; +} diff --git a/libc/sysdeps/x86_64/tst-audit6.c b/libc/sysdeps/x86_64/tst-audit6.c new file mode 100644 index 000000000..64209a152 --- /dev/null +++ b/libc/sysdeps/x86_64/tst-audit6.c @@ -0,0 +1,42 @@ +/* Test case for x86-64 preserved registers in dynamic linker. */ + +#include <stdlib.h> +#include <string.h> +#include <cpuid.h> +#include <emmintrin.h> + +extern __m128i audit_test (__m128i, __m128i, __m128i, __m128i, + __m128i, __m128i, __m128i, __m128i); + + +static int +avx_enabled (void) +{ + unsigned int eax, ebx, ecx, edx; + + if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) == 0 + || (ecx & (bit_AVX | bit_OSXSAVE)) != (bit_AVX | bit_OSXSAVE)) + return 0; + + /* Check the OS has AVX and SSE saving enabled. */ + asm ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0)); + + return (eax & 6) == 6; +} + + +int +main (void) +{ + /* Run AVX test only if AVX is supported. */ + if (avx_enabled ()) + { + __m128i xmm = _mm_setzero_si128 (); + __m128i ret = audit_test (xmm, xmm, xmm, xmm, xmm, xmm, xmm, xmm); + + xmm = _mm_set1_epi32 (0x98abcdef); + if (memcmp (&xmm, &ret, sizeof (ret))) + abort (); + } + return 0; +} diff --git a/libc/sysdeps/x86_64/tst-audit7.c b/libc/sysdeps/x86_64/tst-audit7.c new file mode 100644 index 000000000..1d2a7de43 --- /dev/null +++ b/libc/sysdeps/x86_64/tst-audit7.c @@ -0,0 +1 @@ +#include "tst-audit6.c" diff --git a/libc/sysdeps/x86_64/tst-auditmod3a.c b/libc/sysdeps/x86_64/tst-auditmod3a.c new file mode 100644 index 000000000..9514aba50 --- /dev/null +++ b/libc/sysdeps/x86_64/tst-auditmod3a.c @@ -0,0 +1,24 @@ +/* Test case for x86-64 preserved registers in dynamic linker. */ + +#include <stdlib.h> +#include <string.h> +#include <emmintrin.h> + +__m128i +audit_test (__m128i x0, __m128i x1, __m128i x2, __m128i x3, + __m128i x4, __m128i x5, __m128i x6, __m128i x7) +{ + __m128i xmm = _mm_setzero_si128 (); + + if (memcmp (&xmm, &x0, sizeof (xmm)) + || memcmp (&xmm, &x1, sizeof (xmm)) + || memcmp (&xmm, &x2, sizeof (xmm)) + || memcmp (&xmm, &x3, sizeof (xmm)) + || memcmp (&xmm, &x4, sizeof (xmm)) + || memcmp (&xmm, &x5, sizeof (xmm)) + || memcmp (&xmm, &x6, sizeof (xmm)) + || memcmp (&xmm, &x7, sizeof (xmm))) + abort (); + + return xmm; +} diff --git a/libc/sysdeps/x86_64/tst-auditmod3b.c b/libc/sysdeps/x86_64/tst-auditmod3b.c new file mode 100644 index 000000000..1a41ca80c --- /dev/null +++ b/libc/sysdeps/x86_64/tst-auditmod3b.c @@ -0,0 +1,151 @@ +/* Verify that changing xmm registers in audit library won't affect + function parameter passing/return. */ + +#include <dlfcn.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <bits/wordsize.h> +#include <gnu/lib-names.h> +#include <emmintrin.h> + +unsigned int +la_version (unsigned int v) +{ + setlinebuf (stdout); + + printf ("version: %u\n", v); + + char buf[20]; + sprintf (buf, "%u", v); + + return v; +} + +void +la_activity (uintptr_t *cookie, unsigned int flag) +{ + if (flag == LA_ACT_CONSISTENT) + printf ("activity: consistent\n"); + else if (flag == LA_ACT_ADD) + printf ("activity: add\n"); + else if (flag == LA_ACT_DELETE) + printf ("activity: delete\n"); + else + printf ("activity: unknown activity %u\n", flag); +} + +char * +la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag) +{ + char buf[100]; + const char *flagstr; + if (flag == LA_SER_ORIG) + flagstr = "LA_SET_ORIG"; + else if (flag == LA_SER_LIBPATH) + flagstr = "LA_SER_LIBPATH"; + else if (flag == LA_SER_RUNPATH) + flagstr = "LA_SER_RUNPATH"; + else if (flag == LA_SER_CONFIG) + flagstr = "LA_SER_CONFIG"; + else if (flag == LA_SER_DEFAULT) + flagstr = "LA_SER_DEFAULT"; + else if (flag == LA_SER_SECURE) + flagstr = "LA_SER_SECURE"; + else + { + sprintf (buf, "unknown flag %d", flag); + flagstr = buf; + } + printf ("objsearch: %s, %s\n", name, flagstr); + + return (char *) name; +} + +unsigned int +la_objopen (struct link_map *l, Lmid_t lmid, uintptr_t *cookie) +{ + printf ("objopen: %ld, %s\n", lmid, l->l_name); + + return 3; +} + +void +la_preinit (uintptr_t *cookie) +{ + printf ("preinit\n"); +} + +unsigned int +la_objclose (uintptr_t *cookie) +{ + printf ("objclose\n"); + return 0; +} + +uintptr_t +la_symbind32 (Elf32_Sym *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, unsigned int *flags, const char *symname) +{ + printf ("symbind32: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n", + symname, (long int) sym->st_value, ndx, *flags); + + return sym->st_value; +} + +uintptr_t +la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, unsigned int *flags, const char *symname) +{ + printf ("symbind64: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n", + symname, (long int) sym->st_value, ndx, *flags); + + return sym->st_value; +} + +#include <tst-audit.h> + +ElfW(Addr) +pltenter (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, La_regs *regs, unsigned int *flags, + const char *symname, long int *framesizep) +{ + printf ("pltenter: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n", + symname, (long int) sym->st_value, ndx, *flags); + + __m128i xmm = _mm_set1_epi32 (-1); + asm volatile ("movdqa %0, %%xmm0" : : "x" (xmm) : "xmm0" ); + asm volatile ("movdqa %0, %%xmm1" : : "x" (xmm) : "xmm1" ); + asm volatile ("movdqa %0, %%xmm2" : : "x" (xmm) : "xmm2" ); + asm volatile ("movdqa %0, %%xmm3" : : "x" (xmm) : "xmm3" ); + asm volatile ("movdqa %0, %%xmm4" : : "x" (xmm) : "xmm4" ); + asm volatile ("movdqa %0, %%xmm5" : : "x" (xmm) : "xmm5" ); + asm volatile ("movdqa %0, %%xmm6" : : "x" (xmm) : "xmm6" ); + asm volatile ("movdqa %0, %%xmm7" : : "x" (xmm) : "xmm7" ); + + return sym->st_value; +} + +unsigned int +pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, const La_regs *inregs, La_retval *outregs, + const char *symname) +{ + printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n", + symname, (long int) sym->st_value, ndx, + (ptrdiff_t) outregs->int_retval); + + __m128i xmm = _mm_set1_epi32 (-1); + asm volatile ("movdqa %0, %%xmm0" : : "x" (xmm) : "xmm0" ); + asm volatile ("movdqa %0, %%xmm1" : : "x" (xmm) : "xmm1" ); + asm volatile ("movdqa %0, %%xmm2" : : "x" (xmm) : "xmm2" ); + asm volatile ("movdqa %0, %%xmm3" : : "x" (xmm) : "xmm3" ); + asm volatile ("movdqa %0, %%xmm4" : : "x" (xmm) : "xmm4" ); + asm volatile ("movdqa %0, %%xmm5" : : "x" (xmm) : "xmm5" ); + asm volatile ("movdqa %0, %%xmm6" : : "x" (xmm) : "xmm6" ); + asm volatile ("movdqa %0, %%xmm7" : : "x" (xmm) : "xmm7" ); + + return 0; +} diff --git a/libc/sysdeps/x86_64/tst-auditmod4a.c b/libc/sysdeps/x86_64/tst-auditmod4a.c new file mode 100644 index 000000000..c9c24c04a --- /dev/null +++ b/libc/sysdeps/x86_64/tst-auditmod4a.c @@ -0,0 +1,48 @@ +/* Test case for x86-64 preserved registers in dynamic linker. */ + +#ifdef __AVX__ +#include <stdlib.h> +#include <string.h> +#include <immintrin.h> + +__m256i +audit_test (__m256i x0, __m256i x1, __m256i x2, __m256i x3, + __m256i x4, __m256i x5, __m256i x6, __m256i x7) +{ + __m256i ymm; + + ymm = _mm256_set1_epi32 (1); + if (memcmp (&ymm, &x0, sizeof (ymm))) + abort (); + + ymm = _mm256_set1_epi32 (2); + if (memcmp (&ymm, &x1, sizeof (ymm))) + abort (); + + ymm = _mm256_set1_epi32 (3); + if (memcmp (&ymm, &x2, sizeof (ymm))) + abort (); + + ymm = _mm256_set1_epi32 (4); + if (memcmp (&ymm, &x3, sizeof (ymm))) + abort (); + + ymm = _mm256_set1_epi32 (5); + if (memcmp (&ymm, &x4, sizeof (ymm))) + abort (); + + ymm = _mm256_set1_epi32 (6); + if (memcmp (&ymm, &x5, sizeof (ymm))) + abort (); + + ymm = _mm256_set1_epi32 (7); + if (memcmp (&ymm, &x6, sizeof (ymm))) + abort (); + + ymm = _mm256_set1_epi32 (8); + if (memcmp (&ymm, &x7, sizeof (ymm))) + abort (); + + return _mm256_setzero_si256 (); +} +#endif diff --git a/libc/sysdeps/x86_64/tst-auditmod4b.c b/libc/sysdeps/x86_64/tst-auditmod4b.c new file mode 100644 index 000000000..80aaedcd3 --- /dev/null +++ b/libc/sysdeps/x86_64/tst-auditmod4b.c @@ -0,0 +1,201 @@ +/* Verify that changing AVX registers in audit library won't affect + function parameter passing/return. */ + +#include <dlfcn.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <bits/wordsize.h> +#include <gnu/lib-names.h> + +unsigned int +la_version (unsigned int v) +{ + setlinebuf (stdout); + + printf ("version: %u\n", v); + + char buf[20]; + sprintf (buf, "%u", v); + + return v; +} + +void +la_activity (uintptr_t *cookie, unsigned int flag) +{ + if (flag == LA_ACT_CONSISTENT) + printf ("activity: consistent\n"); + else if (flag == LA_ACT_ADD) + printf ("activity: add\n"); + else if (flag == LA_ACT_DELETE) + printf ("activity: delete\n"); + else + printf ("activity: unknown activity %u\n", flag); +} + +char * +la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag) +{ + char buf[100]; + const char *flagstr; + if (flag == LA_SER_ORIG) + flagstr = "LA_SET_ORIG"; + else if (flag == LA_SER_LIBPATH) + flagstr = "LA_SER_LIBPATH"; + else if (flag == LA_SER_RUNPATH) + flagstr = "LA_SER_RUNPATH"; + else if (flag == LA_SER_CONFIG) + flagstr = "LA_SER_CONFIG"; + else if (flag == LA_SER_DEFAULT) + flagstr = "LA_SER_DEFAULT"; + else if (flag == LA_SER_SECURE) + flagstr = "LA_SER_SECURE"; + else + { + sprintf (buf, "unknown flag %d", flag); + flagstr = buf; + } + printf ("objsearch: %s, %s\n", name, flagstr); + + return (char *) name; +} + +unsigned int +la_objopen (struct link_map *l, Lmid_t lmid, uintptr_t *cookie) +{ + printf ("objopen: %ld, %s\n", lmid, l->l_name); + + return 3; +} + +void +la_preinit (uintptr_t *cookie) +{ + printf ("preinit\n"); +} + +unsigned int +la_objclose (uintptr_t *cookie) +{ + printf ("objclose\n"); + return 0; +} + +uintptr_t +la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, unsigned int *flags, const char *symname) +{ + printf ("symbind64: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n", + symname, (long int) sym->st_value, ndx, *flags); + + return sym->st_value; +} + +#include <tst-audit.h> + +#ifdef __AVX__ +#include <immintrin.h> +#include <cpuid.h> + +static int avx = -1; + +static inline int +__attribute ((always_inline)) +check_avx (void) +{ + if (avx == -1) + { + unsigned int eax, ebx, ecx, edx; + + if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) + && (ecx & bit_AVX)) + avx = 1; + else + avx = 0; + } + return avx; +} +#else +#include <emmintrin.h> +#endif + +ElfW(Addr) +pltenter (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, La_regs *regs, unsigned int *flags, + const char *symname, long int *framesizep) +{ + printf ("pltenter: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n", + symname, (long int) sym->st_value, ndx, *flags); + +#ifdef __AVX__ + if (check_avx () && strcmp (symname, "audit_test") == 0) + { + __m256i zero = _mm256_setzero_si256 (); + if (memcmp (®s->lr_vector[0], &zero, sizeof (zero)) + || memcmp (®s->lr_vector[1], &zero, sizeof (zero)) + || memcmp (®s->lr_vector[2], &zero, sizeof (zero)) + || memcmp (®s->lr_vector[3], &zero, sizeof (zero)) + || memcmp (®s->lr_vector[4], &zero, sizeof (zero)) + || memcmp (®s->lr_vector[5], &zero, sizeof (zero)) + || memcmp (®s->lr_vector[6], &zero, sizeof (zero)) + || memcmp (®s->lr_vector[7], &zero, sizeof (zero))) + abort (); + + for (int i = 0; i < 8; i++) + regs->lr_vector[i].ymm[0] + = (La_x86_64_ymm) _mm256_set1_epi32 (i + 1); + + __m256i ymm = _mm256_set1_epi32 (-1); + asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" ); + asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" ); + asm volatile ("vmovdqa %0, %%ymm2" : : "x" (ymm) : "xmm2" ); + asm volatile ("vmovdqa %0, %%ymm3" : : "x" (ymm) : "xmm3" ); + asm volatile ("vmovdqa %0, %%ymm4" : : "x" (ymm) : "xmm4" ); + asm volatile ("vmovdqa %0, %%ymm5" : : "x" (ymm) : "xmm5" ); + asm volatile ("vmovdqa %0, %%ymm6" : : "x" (ymm) : "xmm6" ); + asm volatile ("vmovdqa %0, %%ymm7" : : "x" (ymm) : "xmm7" ); + + *framesizep = 1024; + } +#endif + + return sym->st_value; +} + +unsigned int +pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, const La_regs *inregs, La_retval *outregs, + const char *symname) +{ + printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n", + symname, (long int) sym->st_value, ndx, + (ptrdiff_t) outregs->int_retval); + +#ifdef __AVX__ + if (check_avx () && strcmp (symname, "audit_test") == 0) + { + __m256i zero = _mm256_setzero_si256 (); + if (memcmp (&outregs->lrv_vector0, &zero, sizeof (zero))) + abort (); + + for (int i = 0; i < 8; i++) + { + __m256i ymm = _mm256_set1_epi32 (i + 1); + if (memcmp (&inregs->lr_vector[i], &ymm, sizeof (ymm)) != 0) + abort (); + } + + outregs->lrv_vector0.ymm[0] + = (La_x86_64_ymm) _mm256_set1_epi32 (0x12349876); + + __m256i ymm = _mm256_set1_epi32 (-1); + asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" ); + asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" ); + } +#endif + + return 0; +} diff --git a/libc/sysdeps/x86_64/tst-auditmod5a.c b/libc/sysdeps/x86_64/tst-auditmod5a.c new file mode 100644 index 000000000..8511a7074 --- /dev/null +++ b/libc/sysdeps/x86_64/tst-auditmod5a.c @@ -0,0 +1,46 @@ +/* Test case for x86-64 preserved registers in dynamic linker. */ + +#include <stdlib.h> +#include <string.h> +#include <emmintrin.h> + +__m128i +audit_test (__m128i x0, __m128i x1, __m128i x2, __m128i x3, + __m128i x4, __m128i x5, __m128i x6, __m128i x7) +{ + __m128i xmm; + + xmm = _mm_set1_epi32 (1); + if (memcmp (&xmm, &x0, sizeof (xmm))) + abort (); + + xmm = _mm_set1_epi32 (2); + if (memcmp (&xmm, &x1, sizeof (xmm))) + abort (); + + xmm = _mm_set1_epi32 (3); + if (memcmp (&xmm, &x2, sizeof (xmm))) + abort (); + + xmm = _mm_set1_epi32 (4); + if (memcmp (&xmm, &x3, sizeof (xmm))) + abort (); + + xmm = _mm_set1_epi32 (5); + if (memcmp (&xmm, &x4, sizeof (xmm))) + abort (); + + xmm = _mm_set1_epi32 (6); + if (memcmp (&xmm, &x5, sizeof (xmm))) + abort (); + + xmm = _mm_set1_epi32 (7); + if (memcmp (&xmm, &x6, sizeof (xmm))) + abort (); + + xmm = _mm_set1_epi32 (8); + if (memcmp (&xmm, &x7, sizeof (xmm))) + abort (); + + return _mm_setzero_si128 (); +} diff --git a/libc/sysdeps/x86_64/tst-auditmod5b.c b/libc/sysdeps/x86_64/tst-auditmod5b.c new file mode 100644 index 000000000..576183d72 --- /dev/null +++ b/libc/sysdeps/x86_64/tst-auditmod5b.c @@ -0,0 +1,173 @@ +/* Verify that changing xmm registers in audit library won't affect + function parameter passing/return. */ + +#include <dlfcn.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <bits/wordsize.h> +#include <gnu/lib-names.h> +#include <emmintrin.h> + +unsigned int +la_version (unsigned int v) +{ + setlinebuf (stdout); + + printf ("version: %u\n", v); + + char buf[20]; + sprintf (buf, "%u", v); + + return v; +} + +void +la_activity (uintptr_t *cookie, unsigned int flag) +{ + if (flag == LA_ACT_CONSISTENT) + printf ("activity: consistent\n"); + else if (flag == LA_ACT_ADD) + printf ("activity: add\n"); + else if (flag == LA_ACT_DELETE) + printf ("activity: delete\n"); + else + printf ("activity: unknown activity %u\n", flag); +} + +char * +la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag) +{ + char buf[100]; + const char *flagstr; + if (flag == LA_SER_ORIG) + flagstr = "LA_SET_ORIG"; + else if (flag == LA_SER_LIBPATH) + flagstr = "LA_SER_LIBPATH"; + else if (flag == LA_SER_RUNPATH) + flagstr = "LA_SER_RUNPATH"; + else if (flag == LA_SER_CONFIG) + flagstr = "LA_SER_CONFIG"; + else if (flag == LA_SER_DEFAULT) + flagstr = "LA_SER_DEFAULT"; + else if (flag == LA_SER_SECURE) + flagstr = "LA_SER_SECURE"; + else + { + sprintf (buf, "unknown flag %d", flag); + flagstr = buf; + } + printf ("objsearch: %s, %s\n", name, flagstr); + + return (char *) name; +} + +unsigned int +la_objopen (struct link_map *l, Lmid_t lmid, uintptr_t *cookie) +{ + printf ("objopen: %ld, %s\n", lmid, l->l_name); + + return 3; +} + +void +la_preinit (uintptr_t *cookie) +{ + printf ("preinit\n"); +} + +unsigned int +la_objclose (uintptr_t *cookie) +{ + printf ("objclose\n"); + return 0; +} + +uintptr_t +la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, unsigned int *flags, const char *symname) +{ + printf ("symbind64: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n", + symname, (long int) sym->st_value, ndx, *flags); + + return sym->st_value; +} + +#include <tst-audit.h> + +ElfW(Addr) +pltenter (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, La_regs *regs, unsigned int *flags, + const char *symname, long int *framesizep) +{ + printf ("pltenter: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n", + symname, (long int) sym->st_value, ndx, *flags); + + __m128i minusone = _mm_set1_epi32 (-1); + + if (strcmp (symname, "audit_test") == 0) + { + __m128i zero = _mm_setzero_si128 (); + if (memcmp (®s->lr_xmm[0], &zero, sizeof (zero)) + || memcmp (®s->lr_xmm[1], &zero, sizeof (zero)) + || memcmp (®s->lr_xmm[2], &zero, sizeof (zero)) + || memcmp (®s->lr_xmm[3], &zero, sizeof (zero)) + || memcmp (®s->lr_xmm[4], &zero, sizeof (zero)) + || memcmp (®s->lr_xmm[5], &zero, sizeof (zero)) + || memcmp (®s->lr_xmm[6], &zero, sizeof (zero)) + || memcmp (®s->lr_xmm[7], &zero, sizeof (zero))) + abort (); + + for (int i = 0; i < 8; i++) + regs->lr_xmm[i] = (La_x86_64_xmm) _mm_set1_epi32 (i + 1); + + *framesizep = 1024; + } + + asm volatile ("movdqa %0, %%xmm0" : : "x" (minusone) : "xmm0" ); + asm volatile ("movdqa %0, %%xmm1" : : "x" (minusone) : "xmm1" ); + asm volatile ("movdqa %0, %%xmm2" : : "x" (minusone) : "xmm2" ); + asm volatile ("movdqa %0, %%xmm3" : : "x" (minusone) : "xmm3" ); + asm volatile ("movdqa %0, %%xmm4" : : "x" (minusone) : "xmm4" ); + asm volatile ("movdqa %0, %%xmm5" : : "x" (minusone) : "xmm5" ); + asm volatile ("movdqa %0, %%xmm6" : : "x" (minusone) : "xmm6" ); + asm volatile ("movdqa %0, %%xmm7" : : "x" (minusone) : "xmm7" ); + + return sym->st_value; +} + +unsigned int +pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, const La_regs *inregs, La_retval *outregs, + const char *symname) +{ + printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n", + symname, (long int) sym->st_value, ndx, + (ptrdiff_t) outregs->int_retval); + + __m128i xmm; + + if (strcmp (symname, "audit_test") == 0) + { + __m128i zero = _mm_setzero_si128 (); + if (memcmp (&outregs->lrv_xmm0, &zero, sizeof (zero))) + abort (); + + for (int i = 0; i < 8; i++) + { + xmm = _mm_set1_epi32 (i + 1); + if (memcmp (&inregs->lr_xmm[i], &xmm, sizeof (xmm)) != 0) + abort (); + } + + outregs->lrv_xmm0 = (La_x86_64_xmm) _mm_set1_epi32 (0x12349876); + } + + xmm = _mm_set1_epi32 (-1); + asm volatile ("movdqa %0, %%xmm0" : : "x" (xmm) : "xmm0" ); + asm volatile ("movdqa %0, %%xmm1" : : "x" (xmm) : "xmm1" ); + + return 0; +} diff --git a/libc/sysdeps/x86_64/tst-auditmod6a.c b/libc/sysdeps/x86_64/tst-auditmod6a.c new file mode 100644 index 000000000..c3a850ce9 --- /dev/null +++ b/libc/sysdeps/x86_64/tst-auditmod6a.c @@ -0,0 +1,46 @@ +/* Test case for x86-64 preserved registers in dynamic linker. */ + +#include <stdlib.h> +#include <string.h> +#include <emmintrin.h> + +__m128i +audit_test (__m128i x0, __m128i x1, __m128i x2, __m128i x3, + __m128i x4, __m128i x5, __m128i x6, __m128i x7) +{ + __m128i xmm; + + xmm = _mm_set1_epi32 (0x100); + if (memcmp (&xmm, &x0, sizeof (xmm))) + abort (); + + xmm = _mm_set1_epi32 (0x101); + if (memcmp (&xmm, &x1, sizeof (xmm))) + abort (); + + xmm = _mm_set1_epi32 (0x102); + if (memcmp (&xmm, &x2, sizeof (xmm))) + abort (); + + xmm = _mm_set1_epi32 (0x103); + if (memcmp (&xmm, &x3, sizeof (xmm))) + abort (); + + xmm = _mm_set1_epi32 (0x104); + if (memcmp (&xmm, &x4, sizeof (xmm))) + abort (); + + xmm = _mm_set1_epi32 (0x105); + if (memcmp (&xmm, &x5, sizeof (xmm))) + abort (); + + xmm = _mm_set1_epi32 (0x106); + if (memcmp (&xmm, &x6, sizeof (xmm))) + abort (); + + xmm = _mm_set1_epi32 (0x107); + if (memcmp (&xmm, &x7, sizeof (xmm))) + abort (); + + return _mm_setzero_si128 (); +} diff --git a/libc/sysdeps/x86_64/tst-auditmod6b.c b/libc/sysdeps/x86_64/tst-auditmod6b.c new file mode 100644 index 000000000..b1c155a26 --- /dev/null +++ b/libc/sysdeps/x86_64/tst-auditmod6b.c @@ -0,0 +1,215 @@ +/* Verify that changing AVX registers in audit library won't affect + function parameter passing/return. */ + +#include <dlfcn.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <bits/wordsize.h> +#include <gnu/lib-names.h> + +unsigned int +la_version (unsigned int v) +{ + setlinebuf (stdout); + + printf ("version: %u\n", v); + + char buf[20]; + sprintf (buf, "%u", v); + + return v; +} + +void +la_activity (uintptr_t *cookie, unsigned int flag) +{ + if (flag == LA_ACT_CONSISTENT) + printf ("activity: consistent\n"); + else if (flag == LA_ACT_ADD) + printf ("activity: add\n"); + else if (flag == LA_ACT_DELETE) + printf ("activity: delete\n"); + else + printf ("activity: unknown activity %u\n", flag); +} + +char * +la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag) +{ + char buf[100]; + const char *flagstr; + if (flag == LA_SER_ORIG) + flagstr = "LA_SET_ORIG"; + else if (flag == LA_SER_LIBPATH) + flagstr = "LA_SER_LIBPATH"; + else if (flag == LA_SER_RUNPATH) + flagstr = "LA_SER_RUNPATH"; + else if (flag == LA_SER_CONFIG) + flagstr = "LA_SER_CONFIG"; + else if (flag == LA_SER_DEFAULT) + flagstr = "LA_SER_DEFAULT"; + else if (flag == LA_SER_SECURE) + flagstr = "LA_SER_SECURE"; + else + { + sprintf (buf, "unknown flag %d", flag); + flagstr = buf; + } + printf ("objsearch: %s, %s\n", name, flagstr); + + return (char *) name; +} + +unsigned int +la_objopen (struct link_map *l, Lmid_t lmid, uintptr_t *cookie) +{ + printf ("objopen: %ld, %s\n", lmid, l->l_name); + + return 3; +} + +void +la_preinit (uintptr_t *cookie) +{ + printf ("preinit\n"); +} + +unsigned int +la_objclose (uintptr_t *cookie) +{ + printf ("objclose\n"); + return 0; +} + +uintptr_t +la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, unsigned int *flags, const char *symname) +{ + printf ("symbind64: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n", + symname, (long int) sym->st_value, ndx, *flags); + + return sym->st_value; +} + +#include <tst-audit.h> + +#ifdef __AVX__ +#include <immintrin.h> +#include <cpuid.h> + +static int avx = -1; + +static inline int +__attribute ((always_inline)) +check_avx (void) +{ + if (avx == -1) + { + unsigned int eax, ebx, ecx, edx; + + if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) + && (ecx & bit_AVX)) + avx = 1; + else + avx = 0; + } + return avx; +} +#else +#include <emmintrin.h> +#endif + +ElfW(Addr) +pltenter (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, La_regs *regs, unsigned int *flags, + const char *symname, long int *framesizep) +{ + printf ("pltenter: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n", + symname, (long int) sym->st_value, ndx, *flags); + +#ifdef __AVX__ + if (check_avx () && strcmp (symname, "audit_test") == 0) + { + int i; + + __m128i xmm = _mm_setzero_si128 (); + for (i = 0; i < 8; i++) + if (memcmp (®s->lr_xmm[i], &xmm, sizeof (xmm)) + || memcmp (®s->lr_vector[i], &xmm, sizeof (xmm))) + abort (); + + for (i = 0; i < 8; i += 2) + { + regs->lr_xmm[i] = (La_x86_64_xmm) _mm_set1_epi32 (i + 1); + regs->lr_vector[i].xmm[0] = regs->lr_xmm[i]; + regs->lr_vector[i + 1].ymm[0] + = (La_x86_64_ymm) _mm256_set1_epi32 (i + 2); + regs->lr_xmm[i + 1] = regs->lr_vector[i + 1].xmm[0]; + } + + __m256i ymm = _mm256_set1_epi32 (-1); + asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" ); + asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" ); + asm volatile ("vmovdqa %0, %%ymm2" : : "x" (ymm) : "xmm2" ); + asm volatile ("vmovdqa %0, %%ymm3" : : "x" (ymm) : "xmm3" ); + asm volatile ("vmovdqa %0, %%ymm4" : : "x" (ymm) : "xmm4" ); + asm volatile ("vmovdqa %0, %%ymm5" : : "x" (ymm) : "xmm5" ); + asm volatile ("vmovdqa %0, %%ymm6" : : "x" (ymm) : "xmm6" ); + asm volatile ("vmovdqa %0, %%ymm7" : : "x" (ymm) : "xmm7" ); + + *framesizep = 1024; + } +#endif + + return sym->st_value; +} + +unsigned int +pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, const La_regs *inregs, La_retval *outregs, + const char *symname) +{ + printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n", + symname, (long int) sym->st_value, ndx, + (ptrdiff_t) outregs->int_retval); + +#ifdef __AVX__ + if (check_avx () && strcmp (symname, "audit_test") == 0) + { + int i; + + __m128i xmm = _mm_setzero_si128 (); + if (memcmp (&outregs->lrv_xmm0, &xmm, sizeof (xmm)) + || memcmp (&outregs->lrv_vector0, &xmm, sizeof (xmm))) + abort (); + + __m256i ymm; + + for (i = 0; i < 8; i += 2) + { + xmm = _mm_set1_epi32 (i + 0x100); + if (memcmp (&inregs->lr_xmm[i], &xmm, sizeof (xmm)) + || memcmp (&inregs->lr_vector[i], &xmm, sizeof (xmm))) + abort (); + + ymm = _mm256_set1_epi32 (i + 0x101); + if (memcmp (&inregs->lr_xmm[i + 1], + &inregs->lr_vector[i + 1].xmm[0], sizeof (xmm)) + || memcmp (&inregs->lr_vector[i + 1], &ymm, sizeof (ymm))) + abort (); + } + + outregs->lrv_vector0.ymm[0] + = (La_x86_64_ymm) _mm256_set1_epi32 (0x12349876); + + ymm = _mm256_set1_epi32 (-1); + asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" ); + asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" ); + } +#endif + + return 0; +} diff --git a/libc/sysdeps/x86_64/tst-auditmod6c.c b/libc/sysdeps/x86_64/tst-auditmod6c.c new file mode 100644 index 000000000..88adb21aa --- /dev/null +++ b/libc/sysdeps/x86_64/tst-auditmod6c.c @@ -0,0 +1,220 @@ +/* Verify that changing AVX registers in audit library won't affect + function parameter passing/return. */ + +#include <dlfcn.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <bits/wordsize.h> +#include <gnu/lib-names.h> + +unsigned int +la_version (unsigned int v) +{ + setlinebuf (stdout); + + printf ("version: %u\n", v); + + char buf[20]; + sprintf (buf, "%u", v); + + return v; +} + +void +la_activity (uintptr_t *cookie, unsigned int flag) +{ + if (flag == LA_ACT_CONSISTENT) + printf ("activity: consistent\n"); + else if (flag == LA_ACT_ADD) + printf ("activity: add\n"); + else if (flag == LA_ACT_DELETE) + printf ("activity: delete\n"); + else + printf ("activity: unknown activity %u\n", flag); +} + +char * +la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag) +{ + char buf[100]; + const char *flagstr; + if (flag == LA_SER_ORIG) + flagstr = "LA_SET_ORIG"; + else if (flag == LA_SER_LIBPATH) + flagstr = "LA_SER_LIBPATH"; + else if (flag == LA_SER_RUNPATH) + flagstr = "LA_SER_RUNPATH"; + else if (flag == LA_SER_CONFIG) + flagstr = "LA_SER_CONFIG"; + else if (flag == LA_SER_DEFAULT) + flagstr = "LA_SER_DEFAULT"; + else if (flag == LA_SER_SECURE) + flagstr = "LA_SER_SECURE"; + else + { + sprintf (buf, "unknown flag %d", flag); + flagstr = buf; + } + printf ("objsearch: %s, %s\n", name, flagstr); + + return (char *) name; +} + +unsigned int +la_objopen (struct link_map *l, Lmid_t lmid, uintptr_t *cookie) +{ + printf ("objopen: %ld, %s\n", lmid, l->l_name); + + return 3; +} + +void +la_preinit (uintptr_t *cookie) +{ + printf ("preinit\n"); +} + +unsigned int +la_objclose (uintptr_t *cookie) +{ + printf ("objclose\n"); + return 0; +} + +uintptr_t +la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, unsigned int *flags, const char *symname) +{ + printf ("symbind64: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n", + symname, (long int) sym->st_value, ndx, *flags); + + return sym->st_value; +} + +#include <tst-audit.h> + +#ifdef __AVX__ +#include <immintrin.h> +#include <cpuid.h> + +static int avx = -1; + +static inline int +__attribute ((always_inline)) +check_avx (void) +{ + if (avx == -1) + { + unsigned int eax, ebx, ecx, edx; + + if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) + && (ecx & bit_AVX)) + avx = 1; + else + avx = 0; + } + return avx; +} +#else +#include <emmintrin.h> +#endif + +ElfW(Addr) +pltenter (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, La_regs *regs, unsigned int *flags, + const char *symname, long int *framesizep) +{ + printf ("pltenter: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n", + symname, (long int) sym->st_value, ndx, *flags); + +#ifdef __AVX__ + if (check_avx () && strcmp (symname, "audit_test") == 0) + { + int i; + __m128i xmm; + __m256i ymm; + + for (i = 0; i < 8; i += 2) + { + xmm = _mm_set1_epi32 (i + 1); + if (memcmp (®s->lr_xmm[i], &xmm, sizeof (xmm)) + || memcmp (®s->lr_vector[i], &xmm, sizeof (xmm))) + abort (); + regs->lr_xmm[i] = (La_x86_64_xmm) _mm_set1_epi32 (i + 0x100); + regs->lr_vector[i].xmm[0] = regs->lr_xmm[i]; + + ymm = _mm256_set1_epi32 (i + 2); + if (memcmp (®s->lr_xmm[i + 1], + ®s->lr_vector[i + 1].xmm[0], sizeof (xmm)) + || memcmp (®s->lr_vector[i + 1], &ymm, sizeof (ymm))) + abort (); + regs->lr_vector[i + 1].ymm[0] + = (La_x86_64_ymm) _mm256_set1_epi32 (i + 0x101); + regs->lr_xmm[i + 1] = regs->lr_vector[i + 1].xmm[0]; + } + + ymm = _mm256_set1_epi32 (-1); + asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" ); + asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" ); + asm volatile ("vmovdqa %0, %%ymm2" : : "x" (ymm) : "xmm2" ); + asm volatile ("vmovdqa %0, %%ymm3" : : "x" (ymm) : "xmm3" ); + asm volatile ("vmovdqa %0, %%ymm4" : : "x" (ymm) : "xmm4" ); + asm volatile ("vmovdqa %0, %%ymm5" : : "x" (ymm) : "xmm5" ); + asm volatile ("vmovdqa %0, %%ymm6" : : "x" (ymm) : "xmm6" ); + asm volatile ("vmovdqa %0, %%ymm7" : : "x" (ymm) : "xmm7" ); + + *framesizep = 1024; + } +#endif + + return sym->st_value; +} + +unsigned int +pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, const La_regs *inregs, La_retval *outregs, + const char *symname) +{ + printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n", + symname, (long int) sym->st_value, ndx, + (ptrdiff_t) outregs->int_retval); + +#ifdef __AVX__ + if (check_avx () && strcmp (symname, "audit_test") == 0) + { + int i; + + __m256i ymm = _mm256_set1_epi32 (0x12349876);; + if (memcmp (&outregs->lrv_vector0, &ymm, sizeof (ymm))) + abort (); + + __m128i xmm; + + for (i = 0; i < 8; i += 2) + { + xmm = _mm_set1_epi32 (i + 0x100); + if (memcmp (&inregs->lr_xmm[i], &xmm, sizeof (xmm)) + || memcmp (&inregs->lr_vector[i], &xmm, sizeof (xmm))) + abort (); + + ymm = _mm256_set1_epi32 (i + 0x101); + if (memcmp (&inregs->lr_xmm[i + 1], + &inregs->lr_vector[i + 1].xmm[0], sizeof (xmm)) + || memcmp (&inregs->lr_vector[i + 1], &ymm, sizeof (ymm))) + abort (); + } + + outregs->lrv_vector0.ymm[0] + = (La_x86_64_ymm) _mm256_set1_epi32 (0x98abcdef); + + ymm = _mm256_set1_epi32 (-1); + asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" ); + asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" ); + } +#endif + + return 0; +} diff --git a/libc/sysdeps/x86_64/tst-auditmod7a.c b/libc/sysdeps/x86_64/tst-auditmod7a.c new file mode 100644 index 000000000..b379df75d --- /dev/null +++ b/libc/sysdeps/x86_64/tst-auditmod7a.c @@ -0,0 +1 @@ +#include "tst-auditmod6a.c" diff --git a/libc/sysdeps/x86_64/tst-auditmod7b.c b/libc/sysdeps/x86_64/tst-auditmod7b.c new file mode 100644 index 000000000..68052efe9 --- /dev/null +++ b/libc/sysdeps/x86_64/tst-auditmod7b.c @@ -0,0 +1,213 @@ +/* Verify that changing AVX registers in audit library won't affect + function parameter passing/return. */ + +#include <dlfcn.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <bits/wordsize.h> +#include <gnu/lib-names.h> + +unsigned int +la_version (unsigned int v) +{ + setlinebuf (stdout); + + printf ("version: %u\n", v); + + char buf[20]; + sprintf (buf, "%u", v); + + return v; +} + +void +la_activity (uintptr_t *cookie, unsigned int flag) +{ + if (flag == LA_ACT_CONSISTENT) + printf ("activity: consistent\n"); + else if (flag == LA_ACT_ADD) + printf ("activity: add\n"); + else if (flag == LA_ACT_DELETE) + printf ("activity: delete\n"); + else + printf ("activity: unknown activity %u\n", flag); +} + +char * +la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag) +{ + char buf[100]; + const char *flagstr; + if (flag == LA_SER_ORIG) + flagstr = "LA_SET_ORIG"; + else if (flag == LA_SER_LIBPATH) + flagstr = "LA_SER_LIBPATH"; + else if (flag == LA_SER_RUNPATH) + flagstr = "LA_SER_RUNPATH"; + else if (flag == LA_SER_CONFIG) + flagstr = "LA_SER_CONFIG"; + else if (flag == LA_SER_DEFAULT) + flagstr = "LA_SER_DEFAULT"; + else if (flag == LA_SER_SECURE) + flagstr = "LA_SER_SECURE"; + else + { + sprintf (buf, "unknown flag %d", flag); + flagstr = buf; + } + printf ("objsearch: %s, %s\n", name, flagstr); + + return (char *) name; +} + +unsigned int +la_objopen (struct link_map *l, Lmid_t lmid, uintptr_t *cookie) +{ + printf ("objopen: %ld, %s\n", lmid, l->l_name); + + return 3; +} + +void +la_preinit (uintptr_t *cookie) +{ + printf ("preinit\n"); +} + +unsigned int +la_objclose (uintptr_t *cookie) +{ + printf ("objclose\n"); + return 0; +} + +uintptr_t +la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, unsigned int *flags, const char *symname) +{ + printf ("symbind64: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n", + symname, (long int) sym->st_value, ndx, *flags); + + return sym->st_value; +} + +#include <tst-audit.h> + +#ifdef __AVX__ +#include <immintrin.h> +#include <cpuid.h> + +static int avx = -1; + +static inline int +__attribute ((always_inline)) +check_avx (void) +{ + if (avx == -1) + { + unsigned int eax, ebx, ecx, edx; + + if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) + && (ecx & bit_AVX)) + avx = 1; + else + avx = 0; + } + return avx; +} +#else +#include <emmintrin.h> +#endif + +ElfW(Addr) +pltenter (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, La_regs *regs, unsigned int *flags, + const char *symname, long int *framesizep) +{ + printf ("pltenter: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n", + symname, (long int) sym->st_value, ndx, *flags); + +#ifdef __AVX__ + if (check_avx () && strcmp (symname, "audit_test") == 0) + { + int i; + + __m128i xmm = _mm_setzero_si128 (); + for (i = 0; i < 8; i++) + if (memcmp (®s->lr_xmm[i], &xmm, sizeof (xmm)) + || memcmp (®s->lr_vector[i], &xmm, sizeof (xmm))) + abort (); + + for (i = 0; i < 8; i += 2) + { + regs->lr_xmm[i] = (La_x86_64_xmm) _mm_set1_epi32 (i + 0x100); + regs->lr_vector[i + 1].ymm[0] + = (La_x86_64_ymm) _mm256_set1_epi32 (i + 0x101); + } + + __m256i ymm = _mm256_set1_epi32 (-1); + asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" ); + asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" ); + asm volatile ("vmovdqa %0, %%ymm2" : : "x" (ymm) : "xmm2" ); + asm volatile ("vmovdqa %0, %%ymm3" : : "x" (ymm) : "xmm3" ); + asm volatile ("vmovdqa %0, %%ymm4" : : "x" (ymm) : "xmm4" ); + asm volatile ("vmovdqa %0, %%ymm5" : : "x" (ymm) : "xmm5" ); + asm volatile ("vmovdqa %0, %%ymm6" : : "x" (ymm) : "xmm6" ); + asm volatile ("vmovdqa %0, %%ymm7" : : "x" (ymm) : "xmm7" ); + + *framesizep = 1024; + } +#endif + + return sym->st_value; +} + +unsigned int +pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, const La_regs *inregs, La_retval *outregs, + const char *symname) +{ + printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n", + symname, (long int) sym->st_value, ndx, + (ptrdiff_t) outregs->int_retval); + +#ifdef __AVX__ + if (check_avx () && strcmp (symname, "audit_test") == 0) + { + int i; + + __m128i xmm = _mm_setzero_si128 (); + if (memcmp (&outregs->lrv_xmm0, &xmm, sizeof (xmm)) + || memcmp (&outregs->lrv_vector0, &xmm, sizeof (xmm))) + abort (); + + __m256i ymm; + + for (i = 0; i < 8; i += 2) + { + xmm = _mm_set1_epi32 (i + 0x100); + if (memcmp (&inregs->lr_xmm[i], &xmm, sizeof (xmm)) + || memcmp (&inregs->lr_vector[i], &xmm, sizeof (xmm))) + abort (); + + ymm = _mm256_set1_epi32 (i + 0x101); + if (memcmp (&inregs->lr_xmm[i + 1], + &inregs->lr_vector[i + 1].xmm[0], sizeof (xmm)) + || memcmp (&inregs->lr_vector[i + 1], &ymm, sizeof (ymm))) + abort (); + } + + outregs->lrv_vector0.ymm[0] + = (La_x86_64_ymm) _mm256_set1_epi32 (0x98abcdef); + + ymm = _mm256_set1_epi32 (-1); + asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" ); + asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" ); + } +#endif + + return 0; +} |