summaryrefslogtreecommitdiff
path: root/libc/sysdeps
diff options
context:
space:
mode:
authorjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2013-04-28 15:21:50 +0000
committerjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2013-04-28 15:21:50 +0000
commitc19459a92177fc8864b461e84d017a21c4006dc5 (patch)
treefcf20ad0222de01ad3a955edb3b65b06724a3a15 /libc/sysdeps
parent8751114637bcc3caaf16a4216da0afb84456558a (diff)
downloadeglibc2-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')
-rw-r--r--libc/sysdeps/generic/inttypes.h7
-rw-r--r--libc/sysdeps/generic/ldsodefs.h6
-rw-r--r--libc/sysdeps/generic/math-tests.h42
-rw-r--r--libc/sysdeps/generic/stdint.h13
-rw-r--r--libc/sysdeps/gnu/configure9
-rw-r--r--libc/sysdeps/gnu/configure.in9
-rwxr-xr-xlibc/sysdeps/i386/configure61
-rw-r--r--libc/sysdeps/i386/configure.in35
-rw-r--r--libc/sysdeps/i386/fpu/libm-test-ulps3000
-rw-r--r--libc/sysdeps/i386/fpu/math-tests.h27
-rw-r--r--libc/sysdeps/ieee754/dbl-64/branred.c6
-rw-r--r--libc/sysdeps/ieee754/dbl-64/dosincos.c6
-rw-r--r--libc/sysdeps/ieee754/dbl-64/e_asin.c9
-rw-r--r--libc/sysdeps/ieee754/dbl-64/e_atan2.c813
-rw-r--r--libc/sysdeps/ieee754/dbl-64/e_exp.c6
-rw-r--r--libc/sysdeps/ieee754/dbl-64/e_log.c231
-rw-r--r--libc/sysdeps/ieee754/dbl-64/e_pow.c37
-rw-r--r--libc/sysdeps/ieee754/dbl-64/e_remainder.c20
-rw-r--r--libc/sysdeps/ieee754/dbl-64/mpa-arch.h47
-rw-r--r--libc/sysdeps/ieee754/dbl-64/mpa.c246
-rw-r--r--libc/sysdeps/ieee754/dbl-64/mpa.h44
-rw-r--r--libc/sysdeps/ieee754/dbl-64/mpatan.c4
-rw-r--r--libc/sysdeps/ieee754/dbl-64/mpatan2.c6
-rw-r--r--libc/sysdeps/ieee754/dbl-64/mpexp.c6
-rw-r--r--libc/sysdeps/ieee754/dbl-64/mpsqrt.c4
-rw-r--r--libc/sysdeps/ieee754/dbl-64/mptan.c2
-rw-r--r--libc/sysdeps/ieee754/dbl-64/s_atan.c406
-rw-r--r--libc/sysdeps/ieee754/dbl-64/s_issignaling.c46
-rw-r--r--libc/sysdeps/ieee754/dbl-64/s_sin.c10
-rw-r--r--libc/sysdeps/ieee754/dbl-64/s_tan.c1136
-rw-r--r--libc/sysdeps/ieee754/dbl-64/sincos32.c2
-rw-r--r--libc/sysdeps/ieee754/dbl-64/upow.h2
-rw-r--r--libc/sysdeps/ieee754/dbl-64/urem.h8
-rw-r--r--libc/sysdeps/ieee754/dbl-64/usncs.h2
-rw-r--r--libc/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c43
-rw-r--r--libc/sysdeps/ieee754/flt-32/s_issignalingf.c42
-rw-r--r--libc/sysdeps/ieee754/ldbl-128/e_j0l.c27
-rw-r--r--libc/sysdeps/ieee754/ldbl-128/e_j1l.c27
-rw-r--r--libc/sysdeps/ieee754/ldbl-128/s_issignalingl.c45
-rw-r--r--libc/sysdeps/ieee754/ldbl-128ibm/e_expl.c4
-rw-r--r--libc/sysdeps/ieee754/ldbl-128ibm/e_logl.c13
-rw-r--r--libc/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c45
-rw-r--r--libc/sysdeps/ieee754/ldbl-128ibm/w_expl.c26
-rw-r--r--libc/sysdeps/ieee754/ldbl-96/s_issignalingl.c43
-rw-r--r--libc/sysdeps/mach/configure2
-rw-r--r--libc/sysdeps/mach/configure.in1
-rw-r--r--libc/sysdeps/mach/hurd/bits/ioctls.h2
-rw-r--r--libc/sysdeps/mach/hurd/i386/init-first.c26
-rw-r--r--libc/sysdeps/posix/getaddrinfo.c24
-rw-r--r--libc/sysdeps/posix/libc_fatal.c46
-rw-r--r--libc/sysdeps/posix/timespec_get.c38
-rw-r--r--libc/sysdeps/powerpc/fpu/libm-test-ulps6
-rw-r--r--libc/sysdeps/powerpc/fpu/s_llround.c4
-rw-r--r--libc/sysdeps/powerpc/fpu/w_sqrt.c4
-rw-r--r--libc/sysdeps/powerpc/math-tests.h27
-rw-r--r--libc/sysdeps/powerpc/power4/fpu/mpa-arch.h56
-rw-r--r--libc/sysdeps/powerpc/power4/fpu/mpa.c20
-rw-r--r--libc/sysdeps/powerpc/power5+/fpu/s_modf.c58
-rw-r--r--libc/sysdeps/powerpc/power5+/fpu/s_modff.c46
-rw-r--r--libc/sysdeps/powerpc/powerpc32/fpu/s_rint.S6
-rw-r--r--libc/sysdeps/powerpc/powerpc32/fpu/s_rintf.S6
-rw-r--r--libc/sysdeps/powerpc/powerpc32/power5+/Implies2
-rw-r--r--libc/sysdeps/powerpc/powerpc32/power5/Implies2
-rw-r--r--libc/sysdeps/powerpc/powerpc32/start.S7
-rw-r--r--libc/sysdeps/powerpc/powerpc64/fpu/s_rint.S6
-rw-r--r--libc/sysdeps/powerpc/powerpc64/fpu/s_rintf.S6
-rw-r--r--libc/sysdeps/powerpc/powerpc64/power5+/Implies2
-rw-r--r--libc/sysdeps/powerpc/powerpc64/power5/Implies2
-rw-r--r--libc/sysdeps/powerpc/powerpc64/start.S7
-rw-r--r--libc/sysdeps/pthread/aio_fsync.c7
-rw-r--r--libc/sysdeps/s390/s390-32/sysdep.h1
-rw-r--r--libc/sysdeps/s390/s390-64/sysdep.h1
-rw-r--r--libc/sysdeps/sparc/configure2
-rw-r--r--libc/sysdeps/sparc/configure.in1
-rw-r--r--libc/sysdeps/sparc/fpu/libm-test-ulps1006
-rw-r--r--libc/sysdeps/unix/sysv/linux/i386/nptl/libm.abilist5
-rw-r--r--libc/sysdeps/unix/sysv/linux/kernel-features.h6
-rw-r--r--libc/sysdeps/unix/sysv/linux/libc_fatal.c220
-rw-r--r--libc/sysdeps/unix/sysv/linux/pathconf.c7
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libm.abilist5
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm.abilist5
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/bits/statfs.h24
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libm.abilist5
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libm.abilist5
-rw-r--r--libc/sysdeps/unix/sysv/linux/sh/nptl/libm.abilist4
-rw-r--r--libc/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libm.abilist5
-rw-r--r--libc/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libm.abilist5
-rw-r--r--libc/sysdeps/unix/sysv/linux/sys/fsuid.h4
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86_64/64/nptl/libm.abilist5
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libm.abilist5
-rw-r--r--libc/sysdeps/x86_64/Makefile44
-rw-r--r--libc/sysdeps/x86_64/configure10
-rw-r--r--libc/sysdeps/x86_64/configure.in5
-rw-r--r--libc/sysdeps/x86_64/fpu/libm-test-ulps3789
-rw-r--r--libc/sysdeps/x86_64/strcmp.S6
-rw-r--r--libc/sysdeps/x86_64/tst-audit3.c20
-rw-r--r--libc/sysdeps/x86_64/tst-audit4.c49
-rw-r--r--libc/sysdeps/x86_64/tst-audit5.c21
-rw-r--r--libc/sysdeps/x86_64/tst-audit6.c42
-rw-r--r--libc/sysdeps/x86_64/tst-audit7.c1
-rw-r--r--libc/sysdeps/x86_64/tst-auditmod3a.c24
-rw-r--r--libc/sysdeps/x86_64/tst-auditmod3b.c151
-rw-r--r--libc/sysdeps/x86_64/tst-auditmod4a.c48
-rw-r--r--libc/sysdeps/x86_64/tst-auditmod4b.c201
-rw-r--r--libc/sysdeps/x86_64/tst-auditmod5a.c46
-rw-r--r--libc/sysdeps/x86_64/tst-auditmod5b.c173
-rw-r--r--libc/sysdeps/x86_64/tst-auditmod6a.c46
-rw-r--r--libc/sysdeps/x86_64/tst-auditmod6b.c215
-rw-r--r--libc/sysdeps/x86_64/tst-auditmod6c.c220
-rw-r--r--libc/sysdeps/x86_64/tst-auditmod7a.c1
-rw-r--r--libc/sysdeps/x86_64/tst-auditmod7b.c213
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 (&regs->lr_vector[0], &zero, sizeof (zero))
+ || memcmp (&regs->lr_vector[1], &zero, sizeof (zero))
+ || memcmp (&regs->lr_vector[2], &zero, sizeof (zero))
+ || memcmp (&regs->lr_vector[3], &zero, sizeof (zero))
+ || memcmp (&regs->lr_vector[4], &zero, sizeof (zero))
+ || memcmp (&regs->lr_vector[5], &zero, sizeof (zero))
+ || memcmp (&regs->lr_vector[6], &zero, sizeof (zero))
+ || memcmp (&regs->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 (&regs->lr_xmm[0], &zero, sizeof (zero))
+ || memcmp (&regs->lr_xmm[1], &zero, sizeof (zero))
+ || memcmp (&regs->lr_xmm[2], &zero, sizeof (zero))
+ || memcmp (&regs->lr_xmm[3], &zero, sizeof (zero))
+ || memcmp (&regs->lr_xmm[4], &zero, sizeof (zero))
+ || memcmp (&regs->lr_xmm[5], &zero, sizeof (zero))
+ || memcmp (&regs->lr_xmm[6], &zero, sizeof (zero))
+ || memcmp (&regs->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 (&regs->lr_xmm[i], &xmm, sizeof (xmm))
+ || memcmp (&regs->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 (&regs->lr_xmm[i], &xmm, sizeof (xmm))
+ || memcmp (&regs->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 (&regs->lr_xmm[i + 1],
+ &regs->lr_vector[i + 1].xmm[0], sizeof (xmm))
+ || memcmp (&regs->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 (&regs->lr_xmm[i], &xmm, sizeof (xmm))
+ || memcmp (&regs->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;
+}