diff options
Diffstat (limited to 'sysdeps/aarch64')
107 files changed, 25218 insertions, 0 deletions
diff --git a/sysdeps/aarch64/Implies b/sysdeps/aarch64/Implies new file mode 100644 index 0000000..e5adf4d --- /dev/null +++ b/sysdeps/aarch64/Implies @@ -0,0 +1,6 @@ +wordsize-64 +ieee754/ldbl-128 +ieee754/dbl-64/wordsize-64 +ieee754/dbl-64 +ieee754/flt-32 +aarch64/soft-fp diff --git a/sysdeps/aarch64/Makefile b/sysdeps/aarch64/Makefile new file mode 100644 index 0000000..5af7a16 --- /dev/null +++ b/sysdeps/aarch64/Makefile @@ -0,0 +1,16 @@ +long-double-fcts = yes + +ifeq ($(subdir),debug) +CFLAGS-backtrace.c += -funwind-tables +endif + +ifeq ($(subdir),elf) +sysdep-dl-routines += tlsdesc dl-tlsdesc +sysdep_routines += tlsdesc dl-tlsdesc +sysdep-rtld-routines += tlsdesc dl-tlsdesc +gen-as-const-headers += dl-link.sym +endif + +ifeq ($(subdir),csu) +gen-as-const-headers += tlsdesc.sym +endif diff --git a/sysdeps/aarch64/Versions b/sysdeps/aarch64/Versions new file mode 100644 index 0000000..e1aa44f --- /dev/null +++ b/sysdeps/aarch64/Versions @@ -0,0 +1,5 @@ +libc { + GLIBC_2.18 { + _mcount; + } +} diff --git a/sysdeps/aarch64/__longjmp.S b/sysdeps/aarch64/__longjmp.S new file mode 100644 index 0000000..2d38bbf --- /dev/null +++ b/sysdeps/aarch64/__longjmp.S @@ -0,0 +1,106 @@ +/* Copyright (C) 1997-2014 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 <sysdep.h> +#include <jmpbuf-offsets.h> + +/* __longjmp(jmpbuf, val) */ + +ENTRY (__longjmp) + cfi_def_cfa(x0, 0) + cfi_offset(x19, JB_X19<<3) + cfi_offset(x20, JB_X20<<3) + cfi_offset(x21, JB_X21<<3) + cfi_offset(x22, JB_X22<<3) + cfi_offset(x23, JB_X23<<3) + cfi_offset(x24, JB_X24<<3) + cfi_offset(x25, JB_X25<<3) + cfi_offset(x26, JB_X26<<3) + cfi_offset(x27, JB_X27<<3) + cfi_offset(x28, JB_X28<<3) + cfi_offset(x29, JB_X29<<3) + cfi_offset(x30, JB_LR<<3) + + cfi_offset( d8, JB_D8<<3) + cfi_offset( d9, JB_D9<<3) + cfi_offset(d10, JB_D10<<3) + cfi_offset(d11, JB_D11<<3) + cfi_offset(d12, JB_D12<<3) + cfi_offset(d13, JB_D13<<3) + cfi_offset(d14, JB_D14<<3) + cfi_offset(d15, JB_D15<<3) + + ldp x19, x20, [x0, #JB_X19<<3] + ldp x21, x22, [x0, #JB_X21<<3] + ldp x23, x24, [x0, #JB_X23<<3] + ldp x25, x26, [x0, #JB_X25<<3] + ldp x27, x28, [x0, #JB_X27<<3] +#ifdef PTR_DEMANGLE + ldp x29, x4, [x0, #JB_X29<<3] + PTR_DEMANGLE (x30, x4, x3, x2) +#else + ldp x29, x30, [x0, #JB_X29<<3] +#endif + ldp d8, d9, [x0, #JB_D8<<3] + ldp d10, d11, [x0, #JB_D10<<3] + ldp d12, d13, [x0, #JB_D12<<3] + ldp d14, d15, [x0, #JB_D14<<3] + + /* Originally this was implemented with a series of + .cfi_restore() directives. + + The theory was that cfi_restore should revert to previous + frame value is the same as the current value. In practice + this doesn't work, even after cfi_restore() gdb continues + to try to recover a previous frame value offset from x0, + which gets stuffed after a few more instructions. The + cfi_same_value() mechanism appears to work fine. */ + + cfi_same_value(x19) + cfi_same_value(x20) + cfi_same_value(x21) + cfi_same_value(x22) + cfi_same_value(x23) + cfi_same_value(x24) + cfi_same_value(x25) + cfi_same_value(x26) + cfi_same_value(x27) + cfi_same_value(x28) + cfi_same_value(x29) + cfi_same_value(x30) + cfi_same_value(d8) + cfi_same_value(d9) + cfi_same_value(d10) + cfi_same_value(d11) + cfi_same_value(d12) + cfi_same_value(d13) + cfi_same_value(d14) + cfi_same_value(d15) +#ifdef PTR_DEMANGLE + ldr x4, [x0, #JB_SP<<3] + PTR_DEMANGLE (x5, x4, x3, x2) +#else + ldr x5, [x0, #JB_SP<<3] +#endif + mov sp, x5 + cmp x1, #0 + mov x0, #1 + csel x0, x1, x0, ne + /* Use br instead of ret because ret is guaranteed to mispredict */ + br x30 +END (__longjmp) diff --git a/sysdeps/aarch64/abort-instr.h b/sysdeps/aarch64/abort-instr.h new file mode 100644 index 0000000..8b1c40b --- /dev/null +++ b/sysdeps/aarch64/abort-instr.h @@ -0,0 +1 @@ +#define ABORT_INSTRUCTION asm ("brk\t#1000") diff --git a/sysdeps/aarch64/backtrace.c b/sysdeps/aarch64/backtrace.c new file mode 100644 index 0000000..27ce597 --- /dev/null +++ b/sysdeps/aarch64/backtrace.c @@ -0,0 +1 @@ +#include <sysdeps/x86_64/backtrace.c> diff --git a/sysdeps/aarch64/bits/atomic.h b/sysdeps/aarch64/bits/atomic.h new file mode 100644 index 0000000..456e2ec --- /dev/null +++ b/sysdeps/aarch64/bits/atomic.h @@ -0,0 +1,171 @@ +/* Copyright (C) 2003-2014 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/>. */ + +#ifndef _AARCH64_BITS_ATOMIC_H +#define _AARCH64_BITS_ATOMIC_H 1 + +#include <stdint.h> + +typedef int8_t atomic8_t; +typedef int16_t atomic16_t; +typedef int32_t atomic32_t; +typedef int64_t atomic64_t; + +typedef uint8_t uatomic8_t; +typedef uint16_t uatomic16_t; +typedef uint32_t uatomic32_t; +typedef uint64_t uatomic64_t; + +typedef intptr_t atomicptr_t; +typedef uintptr_t uatomicptr_t; +typedef intmax_t atomic_max_t; +typedef uintmax_t uatomic_max_t; + + +/* Compare and exchange. + For all "bool" routines, we return FALSE if exchange succesful. */ + +# define __arch_compare_and_exchange_bool_8_int(mem, newval, oldval, model) \ + ({ \ + typeof (*mem) __oldval = (oldval); \ + !__atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \ + model, __ATOMIC_RELAXED); \ + }) + +# define __arch_compare_and_exchange_bool_16_int(mem, newval, oldval, model) \ + ({ \ + typeof (*mem) __oldval = (oldval); \ + !__atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \ + model, __ATOMIC_RELAXED); \ + }) + +# define __arch_compare_and_exchange_bool_32_int(mem, newval, oldval, model) \ + ({ \ + typeof (*mem) __oldval = (oldval); \ + !__atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \ + model, __ATOMIC_RELAXED); \ + }) + +# define __arch_compare_and_exchange_bool_64_int(mem, newval, oldval, model) \ + ({ \ + typeof (*mem) __oldval = (oldval); \ + !__atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \ + model, __ATOMIC_RELAXED); \ + }) + +# define __arch_compare_and_exchange_val_8_int(mem, newval, oldval, model) \ + ({ \ + typeof (*mem) __oldval = (oldval); \ + __atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \ + model, __ATOMIC_RELAXED); \ + __oldval; \ + }) + +# define __arch_compare_and_exchange_val_16_int(mem, newval, oldval, model) \ + ({ \ + typeof (*mem) __oldval = (oldval); \ + __atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \ + model, __ATOMIC_RELAXED); \ + __oldval; \ + }) + +# define __arch_compare_and_exchange_val_32_int(mem, newval, oldval, model) \ + ({ \ + typeof (*mem) __oldval = (oldval); \ + __atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \ + model, __ATOMIC_RELAXED); \ + __oldval; \ + }) + +# define __arch_compare_and_exchange_val_64_int(mem, newval, oldval, model) \ + ({ \ + typeof (*mem) __oldval = (oldval); \ + __atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \ + model, __ATOMIC_RELAXED); \ + __oldval; \ + }) + + +/* Compare and exchange with "acquire" semantics, ie barrier after. */ + +# define atomic_compare_and_exchange_bool_acq(mem, new, old) \ + __atomic_bool_bysize (__arch_compare_and_exchange_bool, int, \ + mem, new, old, __ATOMIC_ACQUIRE) + +# define atomic_compare_and_exchange_val_acq(mem, new, old) \ + __atomic_val_bysize (__arch_compare_and_exchange_val, int, \ + mem, new, old, __ATOMIC_ACQUIRE) + +/* Compare and exchange with "release" semantics, ie barrier before. */ + +# define atomic_compare_and_exchange_bool_rel(mem, new, old) \ + __atomic_bool_bysize (__arch_compare_and_exchange_bool, int, \ + mem, new, old, __ATOMIC_RELEASE) + +# define atomic_compare_and_exchange_val_rel(mem, new, old) \ + __atomic_val_bysize (__arch_compare_and_exchange_val, int, \ + mem, new, old, __ATOMIC_RELEASE) + + +/* Atomic exchange (without compare). */ + +# define __arch_exchange_8_int(mem, newval, model) \ + __atomic_exchange_n (mem, newval, model) + +# define __arch_exchange_16_int(mem, newval, model) \ + __atomic_exchange_n (mem, newval, model) + +# define __arch_exchange_32_int(mem, newval, model) \ + __atomic_exchange_n (mem, newval, model) + +# define __arch_exchange_64_int(mem, newval, model) \ + __atomic_exchange_n (mem, newval, model) + +# define atomic_exchange_acq(mem, value) \ + __atomic_val_bysize (__arch_exchange, int, mem, value, __ATOMIC_ACQUIRE) + +# define atomic_exchange_rel(mem, value) \ + __atomic_val_bysize (__arch_exchange, int, mem, value, __ATOMIC_RELEASE) + + +/* Atomically add value and return the previous (unincremented) value. */ + +# define __arch_exchange_and_add_8_int(mem, value, model) \ + __atomic_fetch_add (mem, value, model) + +# define __arch_exchange_and_add_16_int(mem, value, model) \ + __atomic_fetch_add (mem, value, model) + +# define __arch_exchange_and_add_32_int(mem, value, model) \ + __atomic_fetch_add (mem, value, model) + +# define __arch_exchange_and_add_64_int(mem, value, model) \ + __atomic_fetch_add (mem, value, model) + +# define atomic_exchange_and_add_acq(mem, value) \ + __atomic_val_bysize (__arch_exchange_and_add, int, mem, value, \ + __ATOMIC_ACQUIRE) + +# define atomic_exchange_and_add_rel(mem, value) \ + __atomic_val_bysize (__arch_exchange_and_add, int, mem, value, \ + __ATOMIC_RELEASE) + +/* Barrier macro. */ +#define atomic_full_barrier() __sync_synchronize() + +#endif diff --git a/sysdeps/aarch64/bits/endian.h b/sysdeps/aarch64/bits/endian.h new file mode 100644 index 0000000..bafaba7 --- /dev/null +++ b/sysdeps/aarch64/bits/endian.h @@ -0,0 +1,30 @@ +/* Copyright (C) 1997-2014 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/>. */ + +#ifndef _ENDIAN_H +# error "Never use <bits/endian.h> directly; include <endian.h> instead." +#endif + +/* AArch64 can be either big or little endian. */ +#ifdef __AARCH64EB__ +# define __BYTE_ORDER __BIG_ENDIAN +#else +# define __BYTE_ORDER __LITTLE_ENDIAN +#endif + +#define __FLOAT_WORD_ORDER __BYTE_ORDER diff --git a/sysdeps/aarch64/bits/fenv.h b/sysdeps/aarch64/bits/fenv.h new file mode 100644 index 0000000..8c884cb --- /dev/null +++ b/sysdeps/aarch64/bits/fenv.h @@ -0,0 +1,74 @@ +/* Copyright (C) 2004-2014 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/>. */ + +#ifndef _FENV_H +# error "Never use <bits/fenv.h> directly; include <fenv.h> instead." +#endif + +/* Define bits representing exceptions in the FPSR status word. */ +enum + { + FE_INVALID = +#define FE_INVALID 1 + FE_INVALID, + FE_DIVBYZERO = +#define FE_DIVBYZERO 2 + FE_DIVBYZERO, + FE_OVERFLOW = +#define FE_OVERFLOW 4 + FE_OVERFLOW, + FE_UNDERFLOW = +#define FE_UNDERFLOW 8 + FE_UNDERFLOW, + FE_INEXACT = +#define FE_INEXACT 16 + FE_INEXACT, + }; + +/* Amount to shift by to convert an exception bit in FPSR to a an + exception bit mask in FPCR. */ +#define FE_EXCEPT_SHIFT 8 + +/* All supported exceptions. */ +#define FE_ALL_EXCEPT \ + (FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT) + +/* Define bits representing rounding modes in the FPCR Rmode field. */ +#define FE_TONEAREST 0x000000 +#define FE_UPWARD 0x400000 +#define FE_DOWNWARD 0x800000 +#define FE_TOWARDZERO 0xc00000 + +/* Type representing exception flags. */ +typedef unsigned int fexcept_t; + +/* Type representing floating-point environment. */ +typedef struct + { + unsigned int __fpcr; + unsigned int __fpsr; + } +fenv_t; + +/* If the default argument is used we use this value. */ +#define FE_DFL_ENV ((const fenv_t *) -1l) + +#ifdef __USE_GNU +/* Floating-point environment where none of the exceptions are masked. */ +# define FE_NOMASK_ENV ((const fenv_t *) -2) +#endif diff --git a/sysdeps/aarch64/bits/link.h b/sysdeps/aarch64/bits/link.h new file mode 100644 index 0000000..fe06827 --- /dev/null +++ b/sysdeps/aarch64/bits/link.h @@ -0,0 +1,60 @@ +/* Copyright (C) 2005-2014 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/>. */ + +#ifndef _LINK_H +# error "Never include <bits/link.h> directly; use <link.h> instead." +#endif + +/* Registers for entry into PLT on AArch64. */ +typedef struct La_aarch64_regs +{ + uint64_t lr_xreg[8]; + uint64_t lr_dreg[8]; + uint64_t lr_sp; + uint64_t lr_lr; +} La_aarch64_regs; + +/* Return values for calls from PLT on AArch64. */ +typedef struct La_aarch64_retval +{ + /* Up to two integer registers can be used for a return value. */ + uint64_t lrv_xreg[2]; + /* Up to four D registers can be used for a return value. */ + uint64_t lrv_dreg[4]; + +} La_aarch64_retval; +__BEGIN_DECLS + +extern Elf64_Addr +la_aarch64_gnu_pltenter (Elf64_Sym *__sym, unsigned int __ndx, + uintptr_t *__refcook, + uintptr_t *__defcook, + La_aarch64_regs *__regs, + unsigned int *__flags, + const char *__symname, + long int *__framesizep); + +extern unsigned int +la_aarch64_gnu_pltexit (Elf64_Sym *__sym, unsigned int __ndx, + uintptr_t *__refcook, + uintptr_t *__defcook, + const La_aarch64_regs *__inregs, + La_aarch64_retval *__outregs, + const char *__symname); + +__END_DECLS diff --git a/sysdeps/aarch64/bits/linkmap.h b/sysdeps/aarch64/bits/linkmap.h new file mode 100644 index 0000000..96e79b1 --- /dev/null +++ b/sysdeps/aarch64/bits/linkmap.h @@ -0,0 +1,23 @@ +/* Copyright (C) 2009-2014 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/>. */ + +struct link_map_machine +{ + ElfW(Addr) plt; /* Address of .plt */ + void *tlsdesc_table; /* Address of TLS descriptor hash table. */ +}; diff --git a/sysdeps/aarch64/bits/mathdef.h b/sysdeps/aarch64/bits/mathdef.h new file mode 100644 index 0000000..eb0a825 --- /dev/null +++ b/sysdeps/aarch64/bits/mathdef.h @@ -0,0 +1,39 @@ +/* Copyright (C) 1999-2014 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/>. */ + +#if !defined _MATH_H && !defined _COMPLEX_H +# error "Never use <bits/mathdef.h> directly; include <math.h> instead" +#endif + +#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF +# define _MATH_H_MATHDEF 1 + +/* GCC does not promote `float' values to `double'. */ +typedef float float_t; /* `float' expressions are evaluated as + `float'. */ +typedef double double_t; /* `double' expressions are evaluated as + `double'. */ + +/* The values returned by `ilogb' for 0 and NaN respectively. */ +# define FP_ILOGB0 (-2147483647) +# define FP_ILOGBNAN (2147483647) + +# define FP_FAST_FMA 1 +# define FP_FAST_FMAF 1 + +#endif /* ISO C99 */ diff --git a/sysdeps/aarch64/bits/setjmp.h b/sysdeps/aarch64/bits/setjmp.h new file mode 100644 index 0000000..e0a3d60 --- /dev/null +++ b/sysdeps/aarch64/bits/setjmp.h @@ -0,0 +1,33 @@ +/* Copyright (C) 1997-2014 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/>. */ + +#ifndef _BITS_SETJMP_H +#define _BITS_SETJMP_H 1 + +#if !defined _SETJMP_H && !defined _PTHREAD_H +# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead." +#endif + +#ifndef _ASM +/* Jump buffer contains: + x19-x28, x29(fp), x30(lr), (x31)sp, d8-d15. Other registers are not + saved. */ +__extension__ typedef unsigned long long __jmp_buf [22]; + +#endif +#endif diff --git a/sysdeps/aarch64/bsd-_setjmp.S b/sysdeps/aarch64/bsd-_setjmp.S new file mode 100644 index 0000000..4e6a2da --- /dev/null +++ b/sysdeps/aarch64/bsd-_setjmp.S @@ -0,0 +1 @@ +/* _setjmp is in setjmp.S */ diff --git a/sysdeps/aarch64/bsd-setjmp.S b/sysdeps/aarch64/bsd-setjmp.S new file mode 100644 index 0000000..1da848d --- /dev/null +++ b/sysdeps/aarch64/bsd-setjmp.S @@ -0,0 +1 @@ +/* setjmp is in setjmp.S */ diff --git a/sysdeps/aarch64/bzero.S b/sysdeps/aarch64/bzero.S new file mode 100644 index 0000000..d082c15 --- /dev/null +++ b/sysdeps/aarch64/bzero.S @@ -0,0 +1,27 @@ +/* Copyright (C) 2013-2014 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 <sysdep.h> + + .text +ENTRY(__bzero) + mov x2, x1 + mov x1, xzr + b __memset +END(__bzero) +weak_alias (__bzero, bzero) diff --git a/sysdeps/aarch64/configure b/sysdeps/aarch64/configure new file mode 100644 index 0000000..af870b7 --- /dev/null +++ b/sysdeps/aarch64/configure @@ -0,0 +1,174 @@ +# This file is generated from configure.ac by Autoconf. DO NOT EDIT! + # Local configure fragment for sysdeps/aarch64. + +# We check to see if the compiler and flags are +# selecting the big endian ABI and if they are then +# we set libc_cv_aarch64_be to yes which causes +# HAVE_AARCH64_BE to be defined in config.h and +# in include/libc-symbols.h and thus available to +# shlib-versions to select the appropriate name for +# the dynamic linker via %ifdef. + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for big endian" >&5 +$as_echo_n "checking for big endian... " >&6; } +if ${libc_cv_aarch64_be+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __AARCH64EB__ + yes + #endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then : + libc_cv_aarch64_be=yes +else + libc_cv_aarch64_be=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_be" >&5 +$as_echo "$libc_cv_aarch64_be" >&6; } +if test $libc_cv_aarch64_be = yes; then + $as_echo "#define HAVE_AARCH64_BE 1" >>confdefs.h + + config_vars="$config_vars +default-abi = lp64_be" +else + config_vars="$config_vars +default-abi = lp64" +fi diff --git a/sysdeps/aarch64/configure.ac b/sysdeps/aarch64/configure.ac new file mode 100644 index 0000000..7851dd4 --- /dev/null +++ b/sysdeps/aarch64/configure.ac @@ -0,0 +1,22 @@ +GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. +# Local configure fragment for sysdeps/aarch64. + +# We check to see if the compiler and flags are +# selecting the big endian ABI and if they are then +# we set libc_cv_aarch64_be to yes which causes +# HAVE_AARCH64_BE to be defined in config.h and +# in include/libc-symbols.h and thus available to +# shlib-versions to select the appropriate name for +# the dynamic linker via %ifdef. +AC_CACHE_CHECK([for big endian], + [libc_cv_aarch64_be], + [AC_EGREP_CPP(yes,[#ifdef __AARCH64EB__ + yes + #endif + ], libc_cv_aarch64_be=yes, libc_cv_aarch64_be=no)]) +if test $libc_cv_aarch64_be = yes; then + AC_DEFINE(HAVE_AARCH64_BE) + LIBC_CONFIG_VAR([default-abi], [lp64_be]) +else + LIBC_CONFIG_VAR([default-abi], [lp64]) +fi diff --git a/sysdeps/aarch64/crti.S b/sysdeps/aarch64/crti.S new file mode 100644 index 0000000..2db7b67 --- /dev/null +++ b/sysdeps/aarch64/crti.S @@ -0,0 +1,90 @@ +/* Special .init and .fini section support for AArch64. + Copyright (C) 1995-2014 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. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file with other + programs, and to distribute those programs without any restriction + coming from the use of this file. (The GNU Lesser General Public + License restrictions do apply in other respects; for example, they + cover modification of the file, and distribution when not linked + into another program.) + + Note that people who make modified versions of this file are not + obligated to grant this special exception for their modified + versions; it is their choice whether to do so. The GNU Lesser + General Public License gives permission to release a modified + version without this exception; this exception also makes it + possible to release a modified version which carries forward this + exception. + + 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/>. */ + +/* crti.S puts a function prologue at the beginning of the .init and + .fini sections and defines global symbols for those addresses, so + they can be called as functions. The symbols _init and _fini are + magic and cause the linker to emit DT_INIT and DT_FINI. */ + +#include <libc-symbols.h> + +#ifndef PREINIT_FUNCTION +# define PREINIT_FUNCTION __gmon_start__ +#endif + +#ifndef PREINIT_FUNCTION_WEAK +# define PREINIT_FUNCTION_WEAK 1 +#endif + +#if PREINIT_FUNCTION_WEAK + weak_extern (PREINIT_FUNCTION) +#else + .hidden PREINIT_FUNCTION +#endif + +#if PREINIT_FUNCTION_WEAK + .align 2 + .type call_weak_fn, %function +call_weak_fn: + adrp x0, :got:PREINIT_FUNCTION + ldr x0, [x0, #:got_lo12:PREINIT_FUNCTION] + cbz x0, 1f + b PREINIT_FUNCTION +1: + RET + .size call_weak_fn, .-call_weak_fn +#endif + + .section .init,"ax",%progbits + .align 2 + .global _init + .type _init, %function +_init: + stp x29, x30, [sp, -16]! + mov x29, sp +#if PREINIT_FUNCTION_WEAK + bl call_weak_fn +#else + bl PREINIT_FUNCTION +#endif + + .section .fini,"ax",%progbits + .align 2 + .global _fini + .type _fini, %function +_fini: + stp x29, x30, [sp, -16]! + mov x29, sp diff --git a/sysdeps/aarch64/crtn.S b/sysdeps/aarch64/crtn.S new file mode 100644 index 0000000..3094e0d --- /dev/null +++ b/sysdeps/aarch64/crtn.S @@ -0,0 +1,46 @@ +/* Special .init and .fini section support for AArch64. + Copyright (C) 1995-2014 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. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file with other + programs, and to distribute those programs without any restriction + coming from the use of this file. (The GNU Lesser General Public + License restrictions do apply in other respects; for example, they + cover modification of the file, and distribution when not linked + into another program.) + + Note that people who make modified versions of this file are not + obligated to grant this special exception for their modified + versions; it is their choice whether to do so. The GNU Lesser + General Public License gives permission to release a modified + version without this exception; this exception also makes it + possible to release a modified version which carries forward this + exception. + + 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/>. */ + +/* crtn.S puts function epilogues in the .init and .fini sections + corresponding to the prologues in crti.S. */ + + .section .init,"ax",%progbits + ldp x29, x30, [sp], 16 + RET + + .section .fini,"ax",%progbits + ldp x29, x30, [sp], 16 + RET diff --git a/sysdeps/aarch64/dl-irel.h b/sysdeps/aarch64/dl-irel.h new file mode 100644 index 0000000..78395ca --- /dev/null +++ b/sysdeps/aarch64/dl-irel.h @@ -0,0 +1,52 @@ +/* Machine-dependent ELF indirect relocation inline functions. + AArch64 version. + Copyright (C) 2012-2014 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/>. */ + +#ifndef _DL_IREL_H +#define _DL_IREL_H + +#include <stdio.h> +#include <unistd.h> +#include <ldsodefs.h> + +#define ELF_MACHINE_IRELA 1 + +static inline ElfW(Addr) +__attribute ((always_inline)) +elf_ifunc_invoke (ElfW(Addr) addr) +{ + return ((ElfW(Addr) (*) (unsigned long int)) (addr)) (GLRO(dl_hwcap)); +} + +static inline void +__attribute ((always_inline)) +elf_irela (const ElfW(Rela) *reloc) +{ + ElfW(Addr) *const reloc_addr = (void *) reloc->r_offset; + const unsigned long int r_type = ELFW(R_TYPE) (reloc->r_info); + + if (__glibc_likely (r_type == R_AARCH64_IRELATIVE)) + { + ElfW(Addr) value = elf_ifunc_invoke (reloc->r_addend); + *reloc_addr = value; + } + else + __libc_fatal ("unexpected reloc type in static binary"); +} + +#endif diff --git a/sysdeps/aarch64/dl-link.sym b/sysdeps/aarch64/dl-link.sym new file mode 100644 index 0000000..d67d28b --- /dev/null +++ b/sysdeps/aarch64/dl-link.sym @@ -0,0 +1,15 @@ +#include <stddef.h> +#include <sysdep.h> +#include <link.h> +#include <dl-tlsdesc.h> + +DL_SIZEOF_RG sizeof(struct La_aarch64_regs) +DL_SIZEOF_RV sizeof(struct La_aarch64_retval) + +DL_OFFSET_RG_X0 offsetof(struct La_aarch64_regs, lr_xreg) +DL_OFFSET_RG_D0 offsetof(struct La_aarch64_regs, lr_dreg) +DL_OFFSET_RG_SP offsetof(struct La_aarch64_regs, lr_sp) +DL_OFFSET_RG_LR offsetof(struct La_aarch64_regs, lr_lr) + +DL_OFFSET_RV_X0 offsetof(struct La_aarch64_retval, lrv_xreg) +DL_OFFSET_RV_D0 offsetof(struct La_aarch64_retval, lrv_dreg) diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h new file mode 100644 index 0000000..997c860 --- /dev/null +++ b/sysdeps/aarch64/dl-machine.h @@ -0,0 +1,401 @@ +/* Copyright (C) 1995-2014 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/>. */ + +#ifndef dl_machine_h +#define dl_machine_h + +#define ELF_MACHINE_NAME "aarch64" + +#include <tls.h> +#include <dl-tlsdesc.h> +#include <dl-irel.h> + +/* Return nonzero iff ELF header is compatible with the running host. */ +static inline int __attribute__ ((unused)) +elf_machine_matches_host (const ElfW(Ehdr) *ehdr) +{ + return ehdr->e_machine == EM_AARCH64; +} + +/* Return the link-time address of _DYNAMIC. Conveniently, this is the + first element of the GOT. */ +static inline ElfW(Addr) __attribute__ ((unused)) +elf_machine_dynamic (void) +{ + extern const ElfW(Addr) _GLOBAL_OFFSET_TABLE_[] attribute_hidden; + return _GLOBAL_OFFSET_TABLE_[0]; +} + +/* Return the run-time load address of the shared object. */ + +static inline ElfW(Addr) __attribute__ ((unused)) +elf_machine_load_address (void) +{ + /* To figure out the load address we use the definition that for any symbol: + dynamic_addr(symbol) = static_addr(symbol) + load_addr + + The choice of symbol is arbitrary. The static address we obtain + by constructing a non GOT reference to the symbol, the dynamic + address of the symbol we compute using adrp/add to compute the + symbol's address relative to the PC. */ + + ElfW(Addr) static_addr; + ElfW(Addr) dynamic_addr; + + asm (" \n\ + adrp %1, _dl_start; \n\ + add %1, %1, #:lo12:_dl_start \n\ + ldr %w0, 1f \n\ + b 2f \n\ +1: .word _dl_start \n\ +2: \n\ + " : "=r" (static_addr), "=r" (dynamic_addr)); + return dynamic_addr - static_addr; +} + +/* Set up the loaded object described by L so its unrelocated PLT + entries will jump to the on-demand fixup code in dl-runtime.c. */ + +static inline int __attribute__ ((unused)) +elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) +{ + if (l->l_info[DT_JMPREL] && lazy) + { + ElfW(Addr) *got; + extern void _dl_runtime_resolve (ElfW(Word)); + extern void _dl_runtime_profile (ElfW(Word)); + + got = (ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]); + if (got[1]) + { + l->l_mach.plt = got[1] + l->l_addr; + } + got[1] = (ElfW(Addr)) l; + + /* The got[2] entry contains the address of a function which gets + called to get the address of a so far unresolved function and + jump to it. The profiling extension of the dynamic linker allows + to intercept the calls to collect information. In this case we + don't store the address in the GOT so that all future calls also + end in this function. */ + if ( profile) + { + got[2] = (ElfW(Addr)) &_dl_runtime_profile; + + if (GLRO(dl_profile) != NULL + && _dl_name_match_p (GLRO(dl_profile), l)) + /* Say that we really want profiling and the timers are + started. */ + GL(dl_profile_map) = l; + } + else + { + /* This function will get called to fix up the GOT entry + indicated by the offset on the stack, and then jump to + the resolved address. */ + got[2] = (ElfW(Addr)) &_dl_runtime_resolve; + } + } + + if (l->l_info[ADDRIDX (DT_TLSDESC_GOT)] && lazy) + *(Elf64_Addr*)(D_PTR (l, l_info[ADDRIDX (DT_TLSDESC_GOT)]) + l->l_addr) + = (Elf64_Addr) &_dl_tlsdesc_resolve_rela; + + return lazy; +} + +/* Initial entry point for the dynamic linker. The C function + _dl_start is the real entry point, its return value is the user + program's entry point */ + +#define RTLD_START asm ("\ +.text \n\ +.globl _start \n\ +.type _start, %function \n\ +.globl _dl_start_user \n\ +.type _dl_start_user, %function \n\ +_start: \n\ + mov x0, sp \n\ + bl _dl_start \n\ + // returns user entry point in x0 \n\ + mov x21, x0 \n\ +_dl_start_user: \n\ + // get the original arg count \n\ + ldr x1, [sp] \n\ + // get the argv address \n\ + add x2, sp, #8 \n\ + // get _dl_skip_args to see if we were \n\ + // invoked as an executable \n\ + adrp x4, _dl_skip_args \n\ + ldr w4, [x4, #:lo12:_dl_skip_args] \n\ + // do we need to adjust argc/argv \n\ + cmp w4, 0 \n\ + beq .L_done_stack_adjust \n\ + // subtract _dl_skip_args from original arg count \n\ + sub x1, x1, x4 \n\ + // store adjusted argc back to stack \n\ + str x1, [sp] \n\ + // find the first unskipped argument \n\ + mov x3, x2 \n\ + add x4, x2, x4, lsl #3 \n\ + // shuffle argv down \n\ +1: ldr x5, [x4], #8 \n\ + str x5, [x3], #8 \n\ + cmp x5, #0 \n\ + bne 1b \n\ + // shuffle envp down \n\ +1: ldr x5, [x4], #8 \n\ + str x5, [x3], #8 \n\ + cmp x5, #0 \n\ + bne 1b \n\ + // shuffle auxv down \n\ +1: ldp x0, x5, [x4, #16]! \n\ + stp x0, x5, [x3], #16 \n\ + cmp x0, #0 \n\ + bne 1b \n\ + // Update _dl_argv \n\ + adrp x3, _dl_argv \n\ + str x2, [x3, #:lo12:_dl_argv] \n\ +.L_done_stack_adjust: \n\ + // compute envp \n\ + add x3, x2, x1, lsl #3 \n\ + add x3, x3, #8 \n\ + adrp x16, _rtld_local \n\ + add x16, x16, #:lo12:_rtld_local \n\ + ldr x0, [x16] \n\ + bl _dl_init_internal \n\ + // load the finalizer function \n\ + adrp x0, _dl_fini \n\ + add x0, x0, #:lo12:_dl_fini \n\ + // jump to the user_s entry point \n\ + br x21 \n\ +"); + +#define elf_machine_type_class(type) \ + ((((type) == R_AARCH64_JUMP_SLOT || \ + (type) == R_AARCH64_TLS_DTPMOD64 || \ + (type) == R_AARCH64_TLS_DTPREL64 || \ + (type) == R_AARCH64_TLS_TPREL64 || \ + (type) == R_AARCH64_TLSDESC) * ELF_RTYPE_CLASS_PLT) \ + | (((type) == R_AARCH64_COPY) * ELF_RTYPE_CLASS_COPY)) + +#define ELF_MACHINE_JMP_SLOT R_AARCH64_JUMP_SLOT + +/* AArch64 uses RELA not REL */ +#define ELF_MACHINE_NO_REL 1 + +static inline ElfW(Addr) +elf_machine_fixup_plt (struct link_map *map, lookup_t t, + const ElfW(Rela) *reloc, + ElfW(Addr) *reloc_addr, + ElfW(Addr) value) +{ + return *reloc_addr = value; +} + +/* Return the final value of a plt relocation. */ +static inline ElfW(Addr) +elf_machine_plt_value (struct link_map *map, + const ElfW(Rela) *reloc, + ElfW(Addr) value) +{ + return value; +} + +#endif + +/* Names of the architecture-specific auditing callback functions. */ +#define ARCH_LA_PLTENTER aarch64_gnu_pltenter +#define ARCH_LA_PLTEXIT aarch64_gnu_pltexit + +#ifdef RESOLVE_MAP + +auto inline void +__attribute__ ((always_inline)) +elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, + const ElfW(Sym) *sym, const struct r_found_version *version, + void *const reloc_addr_arg, int skip_ifunc) +{ + ElfW(Addr) *const reloc_addr = reloc_addr_arg; + const unsigned int r_type = ELF64_R_TYPE (reloc->r_info); + + if (__builtin_expect (r_type == R_AARCH64_RELATIVE, 0)) + *reloc_addr = map->l_addr + reloc->r_addend; + else if (__builtin_expect (r_type == R_AARCH64_NONE, 0)) + return; + else + { + const ElfW(Sym) *const refsym = sym; + struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type); + ElfW(Addr) value = sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value; + + if (sym != NULL + && __glibc_unlikely (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC) + && __glibc_likely (sym->st_shndx != SHN_UNDEF) + && __glibc_likely (!skip_ifunc)) + value = elf_ifunc_invoke (value); + + switch (r_type) + { + case R_AARCH64_COPY: + if (sym == NULL) + break; + + if (sym->st_size > refsym->st_size + || (GLRO(dl_verbose) && sym->st_size < refsym->st_size)) + { + const char *strtab; + + strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]); + _dl_error_printf ("\ +%s: Symbol `%s' has different size in shared object, consider re-linking\n", + RTLD_PROGNAME, strtab + refsym->st_name); + } + memcpy (reloc_addr_arg, (void *) value, + MIN (sym->st_size, refsym->st_size)); + break; + + case R_AARCH64_RELATIVE: + case R_AARCH64_GLOB_DAT: + case R_AARCH64_JUMP_SLOT: + case R_AARCH64_ABS32: + case R_AARCH64_ABS64: + *reloc_addr = value + reloc->r_addend; + break; + + case R_AARCH64_TLSDESC: + { + struct tlsdesc volatile *td = + (struct tlsdesc volatile *)reloc_addr; +#ifndef RTLD_BOOTSTRAP + if (! sym) + { + td->arg = (void*)reloc->r_addend; + td->entry = _dl_tlsdesc_undefweak; + } + else +#endif + { +#ifndef RTLD_BOOTSTRAP +# ifndef SHARED + CHECK_STATIC_TLS (map, sym_map); +# else + if (!TRY_STATIC_TLS (map, sym_map)) + { + td->arg = _dl_make_tlsdesc_dynamic + (sym_map, sym->st_value + reloc->r_addend); + td->entry = _dl_tlsdesc_dynamic; + } + else +# endif +#endif + { + td->arg = (void*)(sym->st_value + sym_map->l_tls_offset + + reloc->r_addend); + td->entry = _dl_tlsdesc_return; + } + } + break; + } + + case R_AARCH64_TLS_DTPMOD64: +#ifdef RTLD_BOOTSTRAP + *reloc_addr = 1; +#else + if (sym_map != NULL) + { + *reloc_addr = sym_map->l_tls_modid; + } +#endif + break; + + case R_AARCH64_TLS_DTPREL64: + if (sym) + *reloc_addr = sym->st_value + reloc->r_addend; + break; + + case R_AARCH64_TLS_TPREL64: + if (sym) + { + CHECK_STATIC_TLS (map, sym_map); + *reloc_addr = + sym->st_value + reloc->r_addend + sym_map->l_tls_offset; + } + break; + + case R_AARCH64_IRELATIVE: + value = map->l_addr + reloc->r_addend; + value = elf_ifunc_invoke (value); + *reloc_addr = value; + break; + + default: + _dl_reloc_bad_type (map, r_type, 0); + break; + } + } +} + +inline void +__attribute__ ((always_inline)) +elf_machine_rela_relative (ElfW(Addr) l_addr, + const ElfW(Rela) *reloc, + void *const reloc_addr_arg) +{ + ElfW(Addr) *const reloc_addr = reloc_addr_arg; + *reloc_addr = l_addr + reloc->r_addend; +} + +inline void +__attribute__ ((always_inline)) +elf_machine_lazy_rel (struct link_map *map, + ElfW(Addr) l_addr, + const ElfW(Rela) *reloc, + int skip_ifunc) +{ + ElfW(Addr) *const reloc_addr = (void *) (l_addr + reloc->r_offset); + const unsigned int r_type = ELF64_R_TYPE (reloc->r_info); + /* Check for unexpected PLT reloc type. */ + if (__builtin_expect (r_type == R_AARCH64_JUMP_SLOT, 1)) + { + if (__builtin_expect (map->l_mach.plt, 0) == 0) + *reloc_addr += l_addr; + else + *reloc_addr = map->l_mach.plt; + } + else if (__builtin_expect (r_type == R_AARCH64_TLSDESC, 1)) + { + struct tlsdesc volatile *td = + (struct tlsdesc volatile *)reloc_addr; + + td->arg = (void*)reloc; + td->entry = (void*)(D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_PLT)]) + + map->l_addr); + } + else if (__glibc_unlikely (r_type == R_AARCH64_IRELATIVE)) + { + ElfW(Addr) value = map->l_addr + reloc->r_addend; + if (__glibc_likely (!skip_ifunc)) + value = elf_ifunc_invoke (value); + *reloc_addr = value; + } + else + _dl_reloc_bad_type (map, r_type, 1); +} + +#endif diff --git a/sysdeps/aarch64/dl-sysdep.h b/sysdeps/aarch64/dl-sysdep.h new file mode 100644 index 0000000..4a452f5 --- /dev/null +++ b/sysdeps/aarch64/dl-sysdep.h @@ -0,0 +1,23 @@ +/* Copyright (C) 2002-2014 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_next <dl-sysdep.h> + +/* _dl_argv cannot be attribute_relro, because _dl_start_user + might write into it after _dl_start returns. */ +#define DL_ARGV_NOT_RELRO 1 diff --git a/sysdeps/aarch64/dl-tls.h b/sysdeps/aarch64/dl-tls.h new file mode 100644 index 0000000..1eb8c97 --- /dev/null +++ b/sysdeps/aarch64/dl-tls.h @@ -0,0 +1,30 @@ +/* Copyright (C) 2005-2014 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/>. */ + +/* Type used for the representation of TLS information in the GOT. */ +typedef struct +{ + unsigned long int ti_module; + unsigned long int ti_offset; +} tls_index; + + +extern void *__tls_get_addr (tls_index *ti); + +/* Value used for dtv entries for which the allocation is delayed. */ +#define TLS_DTV_UNALLOCATED ((void *) -1l) diff --git a/sysdeps/aarch64/dl-tlsdesc.S b/sysdeps/aarch64/dl-tlsdesc.S new file mode 100644 index 0000000..ded5471 --- /dev/null +++ b/sysdeps/aarch64/dl-tlsdesc.S @@ -0,0 +1,329 @@ +/* Thread-local storage handling in the ELF dynamic linker. + AArch64 version. + Copyright (C) 2011-2014 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 <sysdep.h> +#include <tls.h> +#include "tlsdesc.h" + +#define NSAVEDQREGPAIRS 16 +#define SAVE_Q_REGISTERS \ + stp q0, q1, [sp, #-32*NSAVEDQREGPAIRS]!; \ + cfi_adjust_cfa_offset (32*NSAVEDQREGPAIRS); \ + stp q2, q3, [sp, #32*1]; \ + stp q4, q5, [sp, #32*2]; \ + stp q6, q7, [sp, #32*3]; \ + stp q8, q9, [sp, #32*4]; \ + stp q10, q11, [sp, #32*5]; \ + stp q12, q13, [sp, #32*6]; \ + stp q14, q15, [sp, #32*7]; \ + stp q16, q17, [sp, #32*8]; \ + stp q18, q19, [sp, #32*9]; \ + stp q20, q21, [sp, #32*10]; \ + stp q22, q23, [sp, #32*11]; \ + stp q24, q25, [sp, #32*12]; \ + stp q26, q27, [sp, #32*13]; \ + stp q28, q29, [sp, #32*14]; \ + stp q30, q31, [sp, #32*15]; + +#define RESTORE_Q_REGISTERS \ + ldp q2, q3, [sp, #32*1]; \ + ldp q4, q5, [sp, #32*2]; \ + ldp q6, q7, [sp, #32*3]; \ + ldp q8, q9, [sp, #32*4]; \ + ldp q10, q11, [sp, #32*5]; \ + ldp q12, q13, [sp, #32*6]; \ + ldp q14, q15, [sp, #32*7]; \ + ldp q16, q17, [sp, #32*8]; \ + ldp q18, q19, [sp, #32*9]; \ + ldp q20, q21, [sp, #32*10]; \ + ldp q22, q23, [sp, #32*11]; \ + ldp q24, q25, [sp, #32*12]; \ + ldp q26, q27, [sp, #32*13]; \ + ldp q28, q29, [sp, #32*14]; \ + ldp q30, q31, [sp, #32*15]; \ + ldp q0, q1, [sp], #32*NSAVEDQREGPAIRS; \ + cfi_adjust_cfa_offset (-32*NSAVEDQREGPAIRS); + + .text + + /* Compute the thread pointer offset for symbols in the static + TLS block. The offset is the same for all threads. + Prototype: + _dl_tlsdesc_return (tlsdesc *) ; + */ + .hidden _dl_tlsdesc_return + .global _dl_tlsdesc_return + .type _dl_tlsdesc_return,%function + cfi_startproc + .align 2 +_dl_tlsdesc_return: + ldr x0, [x0, #8] + RET + cfi_endproc + .size _dl_tlsdesc_return, .-_dl_tlsdesc_return + + /* Handler for undefined weak TLS symbols. + Prototype: + _dl_tlsdesc_undefweak (tlsdesc *); + + The second word of the descriptor contains the addend. + Return the addend minus the thread pointer. This ensures + that when the caller adds on the thread pointer it gets back + the addend. */ + + .hidden _dl_tlsdesc_undefweak + .global _dl_tlsdesc_undefweak + .type _dl_tlsdesc_undefweak,%function + cfi_startproc + .align 2 +_dl_tlsdesc_undefweak: + str x1, [sp, #-16]! + cfi_adjust_cfa_offset(16) + ldr x0, [x0, #8] + mrs x1, tpidr_el0 + sub x0, x0, x1 + ldr x1, [sp], #16 + cfi_adjust_cfa_offset(16) + RET + cfi_endproc + .size _dl_tlsdesc_undefweak, .-_dl_tlsdesc_undefweak + +#ifdef SHARED + /* Handler for dynamic TLS symbols. + Prototype: + _dl_tlsdesc_dynamic (tlsdesc *) ; + + The second word of the descriptor points to a + tlsdesc_dynamic_arg structure. + + Returns the offset between the thread pointer and the + object referenced by the argument. + + ptrdiff_t + __attribute__ ((__regparm__ (1))) + _dl_tlsdesc_dynamic (struct tlsdesc *tdp) + { + struct tlsdesc_dynamic_arg *td = tdp->arg; + dtv_t *dtv = *(dtv_t **)((char *)__thread_pointer + DTV_OFFSET); + if (__builtin_expect (td->gen_count <= dtv[0].counter + && (dtv[td->tlsinfo.ti_module].pointer.val + != TLS_DTV_UNALLOCATED), + 1)) + return dtv[td->tlsinfo.ti_module].pointer.val + + td->tlsinfo.ti_offset + - __thread_pointer; + + return ___tls_get_addr (&td->tlsinfo) - __thread_pointer; + } + */ + + .hidden _dl_tlsdesc_dynamic + .global _dl_tlsdesc_dynamic + .type _dl_tlsdesc_dynamic,%function + cfi_startproc + .align 2 +_dl_tlsdesc_dynamic: +# define NSAVEXREGPAIRS 2 + stp x29, x30, [sp,#-(32+16*NSAVEXREGPAIRS)]! + cfi_adjust_cfa_offset (32+16*NSAVEXREGPAIRS) + mov x29, sp + + /* Save just enough registers to support fast path, if we fall + into slow path we will save additional registers. */ + + stp x1, x2, [sp, #32+16*0] + stp x3, x4, [sp, #32+16*1] + + mrs x4, tpidr_el0 + ldr x1, [x0,#8] + ldr x0, [x4] + ldr x3, [x1,#16] + ldr x2, [x0] + cmp x3, x2 + b.hi 2f + ldr x2, [x1] + add x0, x0, x2, lsl #4 + ldr x0, [x0] + cmn x0, #0x1 + b.eq 2f + ldr x1, [x1,#8] + add x0, x0, x1 + sub x0, x0, x4 +1: + ldp x1, x2, [sp, #32+16*0] + ldp x3, x4, [sp, #32+16*1] + + ldp x29, x30, [sp], #(32+16*NSAVEXREGPAIRS) + cfi_adjust_cfa_offset (32+16*NSAVEXREGPAIRS) +# undef NSAVEXREGPAIRS + RET +2: + /* This is the slow path. We need to call __tls_get_addr() which + means we need to save and restore all the register that the + callee will trash. */ + + /* Save the remaining registers that we must treat as caller save. */ +# define NSAVEXREGPAIRS 7 + stp x5, x6, [sp, #-16*NSAVEXREGPAIRS]! + cfi_adjust_cfa_offset (16*NSAVEXREGPAIRS) + stp x7, x8, [sp, #16*1] + stp x9, x10, [sp, #16*2] + stp x11, x12, [sp, #16*3] + stp x13, x14, [sp, #16*4] + stp x15, x16, [sp, #16*5] + stp x17, x18, [sp, #16*6] + + SAVE_Q_REGISTERS + + mov x0, x1 + bl __tls_get_addr + + mrs x1, tpidr_el0 + sub x0, x0, x1 + + RESTORE_Q_REGISTERS + + ldp x7, x8, [sp, #16*1] + ldp x9, x10, [sp, #16*2] + ldp x11, x12, [sp, #16*3] + ldp x13, x14, [sp, #16*4] + ldp x15, x16, [sp, #16*5] + ldp x17, x18, [sp, #16*6] + ldp x5, x6, [sp], #16*NSAVEXREGPAIRS + cfi_adjust_cfa_offset (-16*NSAVEXREGPAIRS) + b 1b + cfi_endproc + .size _dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic +# undef NSAVEXREGPAIRS +#endif + + /* This function is a wrapper for a lazy resolver for TLS_DESC + RELA relocations. + When the actual resolver returns, it will have adjusted the + TLS descriptor such that we can tail-call it for it to return + the TP offset of the symbol. */ + + .hidden _dl_tlsdesc_resolve_rela + .global _dl_tlsdesc_resolve_rela + .type _dl_tlsdesc_resolve_rela,%function + cfi_startproc + .align 2 +_dl_tlsdesc_resolve_rela: +#define NSAVEXREGPAIRS 9 + stp x29, x30, [sp, #-(32+16*NSAVEXREGPAIRS)]! + cfi_adjust_cfa_offset (32+16*NSAVEXREGPAIRS) + mov x29, sp + stp x1, x4, [sp, #32+16*0] + stp x5, x6, [sp, #32+16*1] + stp x7, x8, [sp, #32+16*2] + stp x9, x10, [sp, #32+16*3] + stp x11, x12, [sp, #32+16*4] + stp x13, x14, [sp, #32+16*5] + stp x15, x16, [sp, #32+16*6] + stp x17, x18, [sp, #32+16*7] + str x0, [sp, #32+16*8] + + SAVE_Q_REGISTERS + + ldr x1, [x3, #8] + bl _dl_tlsdesc_resolve_rela_fixup + + RESTORE_Q_REGISTERS + + ldr x0, [sp, #32+16*8] + ldr x1, [x0] + blr x1 + + ldp x1, x4, [sp, #32+16*0] + ldp x5, x6, [sp, #32+16*1] + ldp x7, x8, [sp, #32+16*2] + ldp x9, x10, [sp, #32+16*3] + ldp x11, x12, [sp, #32+16*4] + ldp x13, x14, [sp, #32+16*5] + ldp x15, x16, [sp, #32+16*6] + ldp x17, x18, [sp, #32+16*7] + ldp x29, x30, [sp], #(32+16*NSAVEXREGPAIRS) + cfi_adjust_cfa_offset (-32+16*NSAVEXREGPAIRS) + ldp x2, x3, [sp], #16 + cfi_adjust_cfa_offset (-16) + RET +#undef NSAVEXREGPAIRS + cfi_endproc + .size _dl_tlsdesc_resolve_rela, .-_dl_tlsdesc_resolve_rela + + /* This function is a placeholder for lazy resolving of TLS + relocations. Once some thread starts resolving a TLS + relocation, it sets up the TLS descriptor to use this + resolver, such that other threads that would attempt to + resolve it concurrently may skip the call to the original lazy + resolver and go straight to a condition wait. + + When the actual resolver returns, it will have adjusted the + TLS descriptor such that we can tail-call it for it to return + the TP offset of the symbol. */ + + .hidden _dl_tlsdesc_resolve_hold + .global _dl_tlsdesc_resolve_hold + .type _dl_tlsdesc_resolve_hold,%function + cfi_startproc + .align 2 +_dl_tlsdesc_resolve_hold: +#define NSAVEXREGPAIRS 10 +1: + stp x29, x30, [sp, #-(32+16*NSAVEXREGPAIRS)]! + cfi_adjust_cfa_offset (32+16*NSAVEXREGPAIRS) + mov x29, sp + stp x1, x2, [sp, #32+16*0] + stp x3, x4, [sp, #32+16*1] + stp x5, x6, [sp, #32+16*2] + stp x7, x8, [sp, #32+16*3] + stp x9, x10, [sp, #32+16*4] + stp x11, x12, [sp, #32+16*5] + stp x13, x14, [sp, #32+16*6] + stp x15, x16, [sp, #32+16*7] + stp x17, x18, [sp, #32+16*8] + str x0, [sp, #32+16*9] + + SAVE_Q_REGISTERS + + adr x1, 1b + bl _dl_tlsdesc_resolve_hold_fixup + + RESTORE_Q_REGISTERS + + ldr x0, [sp, #32+16*9] + ldr x1, [x0] + blr x1 + + ldp x1, x2, [sp, #32+16*0] + ldp x3, x4, [sp, #32+16*1] + ldp x5, x6, [sp, #32+16*2] + ldp x7, x8, [sp, #32+16*3] + ldp x9, x10, [sp, #32+16*4] + ldp x11, x12, [sp, #32+16*5] + ldp x13, x14, [sp, #32+16*6] + ldp x15, x16, [sp, #32+16*7] + ldp x17, x18, [sp, #32+16*8] + ldp x29, x30, [sp], #(32+16*NSAVEXREGPAIRS) + cfi_adjust_cfa_offset (-32+16*NSAVEXREGPAIRS) + RET + cfi_endproc + .size _dl_tlsdesc_resolve_hold, .-_dl_tlsdesc_resolve_hold +#undef NSAVEXREGPAIRS diff --git a/sysdeps/aarch64/dl-tlsdesc.h b/sysdeps/aarch64/dl-tlsdesc.h new file mode 100644 index 0000000..5ff1f74 --- /dev/null +++ b/sysdeps/aarch64/dl-tlsdesc.h @@ -0,0 +1,65 @@ +/* Thread-local storage descriptor handling in the ELF dynamic linker. + AArch64 version. + Copyright (C) 2011-2014 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/>. */ + +#ifndef _AARCH64_DL_TLSDESC_H +#define _AARCH64_DL_TLSDESC_H 1 + +/* Type used to represent a TLS descriptor in the GOT. */ +struct tlsdesc +{ + ptrdiff_t (*entry) (struct tlsdesc *); + void *arg; +}; + +typedef struct dl_tls_index +{ + unsigned long int ti_module; + unsigned long int ti_offset; +} tls_index; + +/* Type used as the argument in a TLS descriptor for a symbol that + needs dynamic TLS offsets. */ +struct tlsdesc_dynamic_arg +{ + tls_index tlsinfo; + size_t gen_count; +}; + +extern ptrdiff_t attribute_hidden +_dl_tlsdesc_return (struct tlsdesc *); + +extern ptrdiff_t attribute_hidden +_dl_tlsdesc_undefweak (struct tlsdesc *); + +extern ptrdiff_t attribute_hidden +_dl_tlsdesc_resolve_rela (struct tlsdesc *); + +extern ptrdiff_t attribute_hidden +_dl_tlsdesc_resolve_hold (struct tlsdesc *); + +# ifdef SHARED +extern void *internal_function _dl_make_tlsdesc_dynamic (struct link_map *, + size_t); + +extern ptrdiff_t attribute_hidden +_dl_tlsdesc_dynamic (struct tlsdesc *); +#endif + +#endif diff --git a/sysdeps/aarch64/dl-trampoline.S b/sysdeps/aarch64/dl-trampoline.S new file mode 100644 index 0000000..2037f18 --- /dev/null +++ b/sysdeps/aarch64/dl-trampoline.S @@ -0,0 +1,296 @@ +/* Copyright (C) 2005-2014 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 <sysdep.h> +#include <libc-symbols.h> + +#include "dl-link.h" + +#define ip0 x16 +#define ip1 x17 +#define lr x30 + + .text + .globl _dl_runtime_resolve + .type _dl_runtime_resolve, #function + cfi_startproc + .align 2 +_dl_runtime_resolve: + /* AArch64 we get called with: + ip0 &PLTGOT[2] + ip1 temp(dl resolver entry point) + [sp, #8] lr + [sp, #0] &PLTGOT[n] + */ + + cfi_rel_offset (lr, 8) + + /* Save arguments. */ + stp x8, x9, [sp, #-(80+8*16)]! + cfi_adjust_cfa_offset (80+8*16) + cfi_rel_offset (x8, 0) + cfi_rel_offset (x9, 8) + + stp x6, x7, [sp, #16] + cfi_rel_offset (x6, 16) + cfi_rel_offset (x7, 24) + + stp x4, x5, [sp, #32] + cfi_rel_offset (x4, 32) + cfi_rel_offset (x5, 40) + + stp x2, x3, [sp, #48] + cfi_rel_offset (x2, 48) + cfi_rel_offset (x3, 56) + + stp x0, x1, [sp, #64] + cfi_rel_offset (x0, 64) + cfi_rel_offset (x1, 72) + + stp q0, q1, [sp, #(80+0*16)] + cfi_rel_offset (q0, 80+0*16) + cfi_rel_offset (q1, 80+1*16) + + stp q2, q3, [sp, #(80+2*16)] + cfi_rel_offset (q0, 80+2*16) + cfi_rel_offset (q1, 80+3*16) + + stp q4, q5, [sp, #(80+4*16)] + cfi_rel_offset (q0, 80+4*16) + cfi_rel_offset (q1, 80+5*16) + + stp q6, q7, [sp, #(80+6*16)] + cfi_rel_offset (q0, 80+6*16) + cfi_rel_offset (q1, 80+7*16) + + /* Get pointer to linker struct. */ + ldr x0, [ip0, #-8] + + /* Prepare to call _dl_fixup(). */ + ldr x1, [sp, 80+8*16] /* Recover &PLTGOT[n] */ + + sub x1, x1, ip0 + add x1, x1, x1, lsl #1 + lsl x1, x1, #3 + sub x1, x1, #192 + lsr x1, x1, #3 + + /* Call fixup routine. */ + bl _dl_fixup + + /* Save the return. */ + mov ip0, x0 + + /* Get arguments and return address back. */ + ldp q0, q1, [sp, #(80+0*16)] + ldp q2, q3, [sp, #(80+2*16)] + ldp q4, q5, [sp, #(80+4*16)] + ldp q6, q7, [sp, #(80+6*16)] + ldp x0, x1, [sp, #64] + ldp x2, x3, [sp, #48] + ldp x4, x5, [sp, #32] + ldp x6, x7, [sp, #16] + ldp x8, x9, [sp], #(80+8*16) + cfi_adjust_cfa_offset (-(80+8*16)) + + ldp ip1, lr, [sp], #16 + cfi_adjust_cfa_offset (-16) + + /* Jump to the newly found address. */ + br ip0 + + cfi_endproc + .size _dl_runtime_resolve, .-_dl_runtime_resolve +#ifndef PROF + .globl _dl_runtime_profile + .type _dl_runtime_profile, #function + cfi_startproc + .align 2 +_dl_runtime_profile: + /* AArch64 we get called with: + ip0 &PLTGOT[2] + ip1 temp(dl resolver entry point) + [sp, #8] lr + [sp, #0] &PLTGOT[n] + + Stack frame layout: + [sp, #...] lr + [sp, #...] &PLTGOT[n] + [sp, #96] La_aarch64_regs + [sp, #48] La_aarch64_retval + [sp, #40] frame size return from pltenter + [sp, #32] dl_profile_call saved x1 + [sp, #24] dl_profile_call saved x0 + [sp, #16] t1 + [sp, #0] x29, lr <- x29 + */ + +# define OFFSET_T1 16 +# define OFFSET_SAVED_CALL_X0 OFFSET_T1 + 8 +# define OFFSET_FS OFFSET_SAVED_CALL_X0 + 16 +# define OFFSET_RV OFFSET_FS + 8 +# define OFFSET_RG OFFSET_RV + DL_SIZEOF_RV + +# define SF_SIZE OFFSET_RG + DL_SIZEOF_RG + +# define OFFSET_PLTGOTN SF_SIZE +# define OFFSET_LR OFFSET_PLTGOTN + 8 + + /* Save arguments. */ + sub sp, sp, #SF_SIZE + cfi_adjust_cfa_offset (SF_SIZE) + stp x29, x30, [SP, #0] + mov x29, sp + cfi_def_cfa_register (x29) + cfi_rel_offset (x29, 0) + cfi_rel_offset (lr, 8) + + stp x0, x1, [x29, #OFFSET_RG + DL_OFFSET_RG_X0 + 16*0] + cfi_rel_offset (x0, OFFSET_RG + DL_OFFSET_RG_X0 + 16*0 + 0) + cfi_rel_offset (x1, OFFSET_RG + DL_OFFSET_RG_X0 + 16*0 + 8) + stp x2, x3, [x29, #OFFSET_RG + DL_OFFSET_RG_X0 + 16*1] + cfi_rel_offset (x2, OFFSET_RG + DL_OFFSET_RG_X0 + 16*1 + 0) + cfi_rel_offset (x3, OFFSET_RG + DL_OFFSET_RG_X0 + 16*1 + 8) + stp x4, x5, [x29, #OFFSET_RG + DL_OFFSET_RG_X0 + 16*2] + cfi_rel_offset (x4, OFFSET_RG + DL_OFFSET_RG_X0 + 16*2 + 0) + cfi_rel_offset (x5, OFFSET_RG + DL_OFFSET_RG_X0 + 16*2 + 8) + stp x6, x7, [x29, #OFFSET_RG + DL_OFFSET_RG_X0 + 16*3] + cfi_rel_offset (x6, OFFSET_RG + DL_OFFSET_RG_X0 + 16*3 + 0) + cfi_rel_offset (x7, OFFSET_RG + DL_OFFSET_RG_X0 + 16*3 + 8) + + stp d0, d1, [X29, #OFFSET_RG + DL_OFFSET_RG_D0 + 16*0] + cfi_rel_offset (d0, OFFSET_RG + DL_OFFSET_RG_D0 + 16*0) + cfi_rel_offset (d1, OFFSET_RG + DL_OFFSET_RG_D0 + 16*0 + 8) + stp d2, d3, [X29, #OFFSET_RG+ DL_OFFSET_RG_D0 + 16*1] + cfi_rel_offset (d2, OFFSET_RG + DL_OFFSET_RG_D0 + 16*1 + 0) + cfi_rel_offset (d3, OFFSET_RG + DL_OFFSET_RG_D0 + 16*1 + 8) + stp d4, d5, [X29, #OFFSET_RG + DL_OFFSET_RG_D0 + 16*2] + cfi_rel_offset (d4, OFFSET_RG + DL_OFFSET_RG_D0 + 16*2 + 0) + cfi_rel_offset (d5, OFFSET_RG + DL_OFFSET_RG_D0 + 16*2 + 8) + stp d6, d7, [X29, #OFFSET_RG + DL_OFFSET_RG_D0 + 16*3] + cfi_rel_offset (d6, OFFSET_RG + DL_OFFSET_RG_D0 + 16*3 + 0) + cfi_rel_offset (d7, OFFSET_RG + DL_OFFSET_RG_D0 + 16*3 + 8) + + add x0, x29, #SF_SIZE + 16 + ldr x1, [x29, #OFFSET_LR] + stp x0, x1, [x29, #OFFSET_RG + DL_OFFSET_RG_SP] + + /* Get pointer to linker struct. */ + ldr x0, [ip0, #-8] + + /* Prepare to call _dl_profile_fixup(). */ + ldr x1, [x29, OFFSET_PLTGOTN] /* Recover &PLTGOT[n] */ + + sub x1, x1, ip0 + add x1, x1, x1, lsl #1 + lsl x1, x1, #3 + sub x1, x1, #192 + lsr x1, x1, #3 + + stp x0, x1, [x29, #OFFSET_SAVED_CALL_X0] + + /* Set up extra args for _dl_profile_fixup */ + ldr x2, [x29, #OFFSET_LR] /* load saved LR */ + add x3, x29, #OFFSET_RG /* address of La_aarch64_reg */ + add x4, x29, #OFFSET_FS /* address of framesize */ + bl _dl_profile_fixup + + ldr ip0, [x29, #OFFSET_FS] /* framesize == 0 */ + cmp ip0, #0 + bge 1f + cfi_remember_state + + /* Save the return. */ + mov ip0, x0 + + /* Get arguments and return address back. */ + ldp x0, x1, [x29, #OFFSET_RG + DL_OFFSET_RG_X0 + 16*0] + ldp x2, x3, [x29, #OFFSET_RG + DL_OFFSET_RG_X0 + 16*1] + ldp x4, x5, [x29, #OFFSET_RG + DL_OFFSET_RG_X0 + 16*2] + ldp x6, x7, [x29, #OFFSET_RG + DL_OFFSET_RG_X0 + 16*3] + ldp d0, d1, [x29, #OFFSET_RG + DL_OFFSET_RG_D0 + 16*0] + ldp d2, d3, [x29, #OFFSET_RG + DL_OFFSET_RG_D0 + 16*1] + ldp d4, d5, [x29, #OFFSET_RG + DL_OFFSET_RG_D0 + 16*2] + ldp d6, d7, [x29, #OFFSET_RG + DL_OFFSET_RG_D0 + 16*3] + + cfi_def_cfa_register (sp) + ldp x29, x30, [x29, #0] + cfi_restore(x29) + cfi_restore(x30) + + add sp, sp, SF_SIZE + 16 + cfi_adjust_cfa_offset (- SF_SIZE - 16) + + /* Jump to the newly found address. */ + br ip0 + + cfi_restore_state +1: + /* The new frame size is in ip0. */ + + sub x1, x29, ip0 + and sp, x1, #0xfffffffffffffff0 + + str x0, [x29, #OFFSET_T1] + + mov x0, sp + add x1, x29, #SF_SIZE + 16 + mov x2, ip0 + bl memcpy + + ldr ip0, [x29, #OFFSET_T1] + + /* Call the function. */ + ldp x0, x1, [x29, #OFFSET_RG + DL_OFFSET_RG_X0 + 16*0] + ldp x2, x3, [x29, #OFFSET_RG + DL_OFFSET_RG_X0 + 16*1] + ldp x4, x5, [x29, #OFFSET_RG + DL_OFFSET_RG_X0 + 16*2] + ldp x6, x7, [x29, #OFFSET_RG + DL_OFFSET_RG_X0 + 16*3] + ldp d0, d1, [x29, #OFFSET_RG + DL_OFFSET_RG_D0 + 16*0] + ldp d2, d3, [x29, #OFFSET_RG + DL_OFFSET_RG_D0 + 16*1] + ldp d4, d5, [x29, #OFFSET_RG + DL_OFFSET_RG_D0 + 16*2] + ldp d6, d7, [x29, #OFFSET_RG + DL_OFFSET_RG_D0 + 16*3] + blr ip0 + stp x0, x1, [x29, #OFFSET_RV + DL_OFFSET_RV_X0] + stp d0, d1, [x29, #OFFSET_RV + DL_OFFSET_RV_D0 + 16*0] + stp d2, d3, [x29, #OFFSET_RV + DL_OFFSET_RV_D0 + 16*1] + + /* Setup call to pltexit */ + ldp x0, x1, [x29, #OFFSET_SAVED_CALL_X0] + add x2, x29, #OFFSET_RG + add x3, x29, #OFFSET_RV + bl _dl_call_pltexit + + ldp x0, x1, [x29, #OFFSET_RV + DL_OFFSET_RV_X0] + ldp d0, d1, [x29, #OFFSET_RV + DL_OFFSET_RV_D0 + 16*0] + ldp d2, d3, [x29, #OFFSET_RV + DL_OFFSET_RV_D0 + 16*1] + /* LR from within La_aarch64_reg */ + ldr lr, [x29, #OFFSET_RG + DL_OFFSET_RG_LR] + cfi_restore(lr) + mov sp, x29 + cfi_def_cfa_register (sp) + ldr x29, [x29, #0] + cfi_restore(x29) + add sp, sp, SF_SIZE + 16 + cfi_adjust_cfa_offset (- SF_SIZE - 16) + + br lr + + cfi_endproc + .size _dl_runtime_profile, .-_dl_runtime_profile +#endif + .previous diff --git a/sysdeps/aarch64/fpu/fclrexcpt.c b/sysdeps/aarch64/fpu/fclrexcpt.c new file mode 100644 index 0000000..531269f --- /dev/null +++ b/sysdeps/aarch64/fpu/fclrexcpt.c @@ -0,0 +1,36 @@ +/* Copyright (C) 1997-2014 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 <fenv.h> +#include <fpu_control.h> + +int +feclearexcept (int excepts) +{ + fpu_fpsr_t fpsr; + + excepts &= FE_ALL_EXCEPT; + + _FPU_GETFPSR (fpsr); + fpsr = (fpsr & ~FE_ALL_EXCEPT) | (fpsr & FE_ALL_EXCEPT & ~excepts); + + _FPU_SETFPSR (fpsr); + + return 0; +} +libm_hidden_def (feclearexcept) diff --git a/sysdeps/aarch64/fpu/fedisblxcpt.c b/sysdeps/aarch64/fpu/fedisblxcpt.c new file mode 100644 index 0000000..719d52f --- /dev/null +++ b/sysdeps/aarch64/fpu/fedisblxcpt.c @@ -0,0 +1,39 @@ +/* Copyright (C) 2001-2014 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 <fenv.h> +#include <fpu_control.h> + +int +fedisableexcept (int excepts) +{ + fpu_control_t fpcr; + int original_excepts; + + _FPU_GETCW (fpcr); + + original_excepts = (fpcr >> FE_EXCEPT_SHIFT) & FE_ALL_EXCEPT; + + excepts &= FE_ALL_EXCEPT; + + fpcr &= ~(excepts << FE_EXCEPT_SHIFT); + + _FPU_SETCW (fpcr); + + return original_excepts; +} diff --git a/sysdeps/aarch64/fpu/feenablxcpt.c b/sysdeps/aarch64/fpu/feenablxcpt.c new file mode 100644 index 0000000..d976999 --- /dev/null +++ b/sysdeps/aarch64/fpu/feenablxcpt.c @@ -0,0 +1,39 @@ +/* Copyright (C) 2001-2014 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 <fenv.h> +#include <fpu_control.h> + +int +feenableexcept (int excepts) +{ + fpu_control_t fpcr; + int original_excepts; + + _FPU_GETCW (fpcr); + + original_excepts = (fpcr >> FE_EXCEPT_SHIFT) & FE_ALL_EXCEPT; + + excepts &= FE_ALL_EXCEPT; + + fpcr |= (excepts << FE_EXCEPT_SHIFT); + + _FPU_SETCW (fpcr); + + return original_excepts; +} diff --git a/sysdeps/aarch64/fpu/fegetenv.c b/sysdeps/aarch64/fpu/fegetenv.c new file mode 100644 index 0000000..4c88fbf --- /dev/null +++ b/sysdeps/aarch64/fpu/fegetenv.c @@ -0,0 +1,33 @@ +/* Copyright (C) 1997-2014 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 <fenv.h> +#include <fpu_control.h> + +int +fegetenv (fenv_t *envp) +{ + fpu_control_t fpcr; + fpu_fpsr_t fpsr; + _FPU_GETCW (fpcr); + _FPU_GETFPSR (fpsr); + envp->__fpcr = fpcr; + envp->__fpsr = fpsr; + return 0; +} +libm_hidden_def (fegetenv) diff --git a/sysdeps/aarch64/fpu/fegetexcept.c b/sysdeps/aarch64/fpu/fegetexcept.c new file mode 100644 index 0000000..dbcd92a --- /dev/null +++ b/sysdeps/aarch64/fpu/fegetexcept.c @@ -0,0 +1,28 @@ +/* Copyright (C) 2001-2014 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 <fenv.h> +#include <fpu_control.h> + +int +fegetexcept (void) +{ + fpu_control_t fpcr; + _FPU_GETCW (fpcr); + return (fpcr >> FE_EXCEPT_SHIFT) & FE_ALL_EXCEPT; +} diff --git a/sysdeps/aarch64/fpu/fegetround.c b/sysdeps/aarch64/fpu/fegetround.c new file mode 100644 index 0000000..a970ce3 --- /dev/null +++ b/sysdeps/aarch64/fpu/fegetround.c @@ -0,0 +1,29 @@ +/* Copyright (C) 1997-2014 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 <fenv.h> +#include <fpu_control.h> + +int +fegetround (void) +{ + fpu_control_t fpcr; + _FPU_GETCW (fpcr); + return fpcr & FE_TOWARDZERO; +} +libm_hidden_def (fegetround) diff --git a/sysdeps/aarch64/fpu/feholdexcpt.c b/sysdeps/aarch64/fpu/feholdexcpt.c new file mode 100644 index 0000000..0514ac1 --- /dev/null +++ b/sysdeps/aarch64/fpu/feholdexcpt.c @@ -0,0 +1,47 @@ +/* Copyright (C) 1997-2014 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 <fenv.h> +#include <fpu_control.h> + +int +feholdexcept (fenv_t *envp) +{ + fpu_fpsr_t fpsr; + fpu_control_t fpcr; + + _FPU_GETCW (fpcr); + envp->__fpcr = fpcr; + + _FPU_GETFPSR (fpsr); + envp->__fpsr = fpsr; + + /* Now set all exceptions to non-stop. */ + fpcr &= ~(FE_ALL_EXCEPT << FE_EXCEPT_SHIFT); + + /* And clear all exception flags. */ + fpsr &= ~FE_ALL_EXCEPT; + + _FPU_SETFPSR (fpsr); + + _FPU_SETCW (fpcr); + + return 0; +} + +libm_hidden_def (feholdexcept) diff --git a/sysdeps/aarch64/fpu/fesetenv.c b/sysdeps/aarch64/fpu/fesetenv.c new file mode 100644 index 0000000..443c705 --- /dev/null +++ b/sysdeps/aarch64/fpu/fesetenv.c @@ -0,0 +1,57 @@ +/* Copyright (C) 1997-2014 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 <fenv.h> +#include <fpu_control.h> + +int +fesetenv (const fenv_t *envp) +{ + fpu_control_t fpcr; + fpu_fpsr_t fpsr; + + _FPU_GETCW (fpcr); + _FPU_GETFPSR (fpsr); + + fpcr &= _FPU_RESERVED; + fpsr &= _FPU_FPSR_RESERVED; + + if (envp == FE_DFL_ENV) + { + fpcr |= _FPU_DEFAULT; + fpsr |= _FPU_FPSR_DEFAULT; + } + else if (envp == FE_NOMASK_ENV) + { + fpcr |= _FPU_FPCR_IEEE; + fpsr |= _FPU_FPSR_IEEE; + } + else + { + fpcr |= envp->__fpcr & ~_FPU_RESERVED; + fpsr |= envp->__fpsr & ~_FPU_FPSR_RESERVED; + } + + _FPU_SETFPSR (fpsr); + + _FPU_SETCW (fpcr); + + return 0; +} + +libm_hidden_def (fesetenv) diff --git a/sysdeps/aarch64/fpu/fesetround.c b/sysdeps/aarch64/fpu/fesetround.c new file mode 100644 index 0000000..40a05f6 --- /dev/null +++ b/sysdeps/aarch64/fpu/fesetround.c @@ -0,0 +1,46 @@ +/* Copyright (C) 1997-2014 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 <fenv.h> +#include <fpu_control.h> + +int +fesetround (int round) +{ + fpu_control_t fpcr; + + switch (round) + { + case FE_TONEAREST: + case FE_UPWARD: + case FE_DOWNWARD: + case FE_TOWARDZERO: + _FPU_GETCW (fpcr); + fpcr = (fpcr & ~FE_TOWARDZERO) | round; + + _FPU_SETCW (fpcr); + return 0; + + default: + return 1; + } + + return 1; +} + +libm_hidden_def (fesetround) diff --git a/sysdeps/aarch64/fpu/feupdateenv.c b/sysdeps/aarch64/fpu/feupdateenv.c new file mode 100644 index 0000000..6d64a9b --- /dev/null +++ b/sysdeps/aarch64/fpu/feupdateenv.c @@ -0,0 +1,38 @@ +/* Copyright (C) 2009-2014 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 <fenv.h> +#include <fpu_control.h> + +int +feupdateenv (const fenv_t *envp) +{ + fpu_fpsr_t fpsr; + + /* Get the current exception state. */ + _FPU_GETFPSR (fpsr); + + /* Install new environment. */ + fesetenv (envp); + + /* Raise the saved exceptions. */ + feraiseexcept (fpsr & FE_ALL_EXCEPT); + + return 0; +} +libm_hidden_def (feupdateenv) diff --git a/sysdeps/aarch64/fpu/fgetexcptflg.c b/sysdeps/aarch64/fpu/fgetexcptflg.c new file mode 100644 index 0000000..d25da1ca --- /dev/null +++ b/sysdeps/aarch64/fpu/fgetexcptflg.c @@ -0,0 +1,33 @@ +/* Copyright (C) 2001-2014 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 <fenv.h> +#include <fpu_control.h> + +int +fegetexceptflag (fexcept_t *flagp, int excepts) +{ + fpu_fpsr_t fpsr; + + /* Get the current exceptions. */ + _FPU_GETFPSR (fpsr); + + *flagp = fpsr & excepts & FE_ALL_EXCEPT; + + return 0; +} diff --git a/sysdeps/aarch64/fpu/fpu_control.h b/sysdeps/aarch64/fpu/fpu_control.h new file mode 100644 index 0000000..6a265e8 --- /dev/null +++ b/sysdeps/aarch64/fpu/fpu_control.h @@ -0,0 +1,84 @@ +/* Copyright (C) 1996-2014 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/>. */ + +#ifndef _AARCH64_FPU_CONTROL_H +#define _AARCH64_FPU_CONTROL_H + +/* Macros for accessing the FPCR and FPSR. */ + +#define _FPU_GETCW(fpcr) \ + __asm__ __volatile__ ("mrs %0, fpcr" : "=r" (fpcr)) + +#define _FPU_SETCW(fpcr) \ + { \ + __asm__ __volatile__ ("msr fpcr, %0" : : "r" (fpcr)); \ + __asm__ __volatile__ ("isb"); \ + } + +#define _FPU_GETFPSR(fpsr) \ + __asm__ __volatile__ ("mrs %0, fpsr" : "=r" (fpsr)) + +#define _FPU_SETFPSR(fpsr) \ + __asm__ __volatile__ ("msr fpsr, %0" : : "r" (fpsr)) + +/* Reserved bits should be preserved when modifying register + contents. These two masks indicate which bits in each of FPCR and + FPSR should not be changed. */ + +#define _FPU_RESERVED 0xfe0fe0ff +#define _FPU_FPSR_RESERVED 0x0fffffe0 + +#define _FPU_DEFAULT 0x00000000 +#define _FPU_FPSR_DEFAULT 0x00000000 + +/* Layout of FPCR and FPSR: + + | | | | | | | | + 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 + s s s s s s s s s s s + c c c c c c c c c c c c + N Z C V Q A D F R R S S S L L L I U U I U O D I I U U I U O D I + C H N Z M M T T B E E E D N N X F F Z O D N N X F F Z O + P O O R R Z N N N E K K E E E E E C K K C C C C C + D D I I P + E E D D + E E + */ + +#define _FPU_FPCR_RM_MASK 0xc00000 + +#define _FPU_FPCR_MASK_IXE 0x1000 +#define _FPU_FPCR_MASK_UFE 0x0800 +#define _FPU_FPCR_MASK_OFE 0x0400 +#define _FPU_FPCR_MASK_DZE 0x0200 +#define _FPU_FPCR_MASK_IOE 0x0100 + +#define _FPU_FPCR_IEEE \ + (_FPU_DEFAULT | _FPU_FPCR_MASK_IXE | \ + _FPU_FPCR_MASK_UFE | _FPU_FPCR_MASK_OFE | \ + _FPU_FPCR_MASK_DZE | _FPU_FPCR_MASK_IOE) + +#define _FPU_FPSR_IEEE 0 + +typedef unsigned int fpu_control_t; +typedef unsigned int fpu_fpsr_t; + +/* Default control word set at startup. */ +extern fpu_control_t __fpu_control; + +#endif diff --git a/sysdeps/aarch64/fpu/fraiseexcpt.c b/sysdeps/aarch64/fpu/fraiseexcpt.c new file mode 100644 index 0000000..3e5c118 --- /dev/null +++ b/sysdeps/aarch64/fpu/fraiseexcpt.c @@ -0,0 +1,92 @@ +/* Copyright (C) 1997-2014 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 <fenv.h> +#include <fpu_control.h> +#include <float.h> + +int +feraiseexcept (int excepts) +{ + int fpsr; + const float fp_zero = 0.0; + const float fp_one = 1.0; + const float fp_max = FLT_MAX; + const float fp_min = FLT_MIN; + const float fp_1e32 = 1.0e32f; + const float fp_two = 2.0; + const float fp_three = 3.0; + + /* Raise exceptions represented by EXCEPTS. But we must raise only + one signal at a time. It is important that if the OVERFLOW or + UNDERFLOW exception and the inexact exception are given at the + same time, the OVERFLOW or UNDERFLOW exception precedes the + INEXACT exception. + + After each exception we read from the FPSR, to force the + exception to be raised immediately. */ + + if (FE_INVALID & excepts) + __asm__ __volatile__ ( + "ldr s0, %1\n\t" + "fdiv s0, s0, s0\n\t" + "mrs %0, fpsr" : "=r" (fpsr) + : "m" (fp_zero) + : "d0"); + + if (FE_DIVBYZERO & excepts) + __asm__ __volatile__ ( + "ldr s0, %1\n\t" + "ldr s1, %2\n\t" + "fdiv s0, s0, s1\n\t" + "mrs %0, fpsr" : "=r" (fpsr) + : "m" (fp_one), "m" (fp_zero) + : "d0", "d1"); + + if (FE_OVERFLOW & excepts) + /* There's no way to raise overflow without also raising inexact. */ + __asm__ __volatile__ ( + "ldr s0, %1\n\t" + "ldr s1, %2\n\t" + "fadd s0, s0, s1\n\t" + "mrs %0, fpsr" : "=r" (fpsr) + : "m" (fp_max), "m" (fp_1e32) + : "d0", "d1"); + + if (FE_UNDERFLOW & excepts) + __asm__ __volatile__ ( + "ldr s0, %1\n\t" + "ldr s1, %2\n\t" + "fdiv s0, s0, s1\n\t" + "mrs %0, fpsr" : "=r" (fpsr) + : "m" (fp_min), "m" (fp_three) + : "d0", "d1"); + + if (FE_INEXACT & excepts) + __asm__ __volatile__ ( + "ldr s0, %1\n\t" + "ldr s1, %2\n\t" + "fdiv s0, s0, s1\n\t" + "mrs %0, fpsr" : "=r" (fpsr) + : "m" (fp_two), "m" (fp_three) + : "d0", "d1"); + + return 0; +} + +libm_hidden_def (feraiseexcept) diff --git a/sysdeps/aarch64/fpu/fsetexcptflg.c b/sysdeps/aarch64/fpu/fsetexcptflg.c new file mode 100644 index 0000000..49cd1e4 --- /dev/null +++ b/sysdeps/aarch64/fpu/fsetexcptflg.c @@ -0,0 +1,39 @@ +/* Copyright (C) 1997-2014 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 <fenv.h> +#include <math.h> +#include <fpu_control.h> + +int +fesetexceptflag (const fexcept_t *flagp, int excepts) +{ + fpu_fpsr_t fpsr; + + /* Get the current environment. */ + _FPU_GETFPSR (fpsr); + + /* Set the desired exception mask. */ + fpsr &= ~(excepts & FE_ALL_EXCEPT); + fpsr |= (*flagp & excepts & FE_ALL_EXCEPT); + + /* Save state back to the FPU. */ + _FPU_SETFPSR (fpsr); + + return 0; +} diff --git a/sysdeps/aarch64/fpu/ftestexcept.c b/sysdeps/aarch64/fpu/ftestexcept.c new file mode 100644 index 0000000..73e01d4 --- /dev/null +++ b/sysdeps/aarch64/fpu/ftestexcept.c @@ -0,0 +1,32 @@ +/* Copyright (C) 1997-2014 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 <fenv.h> +#include <fpu_control.h> + +int +fetestexcept (int excepts) +{ + fpu_fpsr_t fpsr; + + /* Get current exceptions. */ + _FPU_GETFPSR (fpsr); + + return fpsr & excepts & FE_ALL_EXCEPT; +} +libm_hidden_def (fetestexcept) diff --git a/sysdeps/aarch64/fpu/get-rounding-mode.h b/sysdeps/aarch64/fpu/get-rounding-mode.h new file mode 100644 index 0000000..5c1615d --- /dev/null +++ b/sysdeps/aarch64/fpu/get-rounding-mode.h @@ -0,0 +1,38 @@ +/* Determine floating-point rounding mode within libc. AArch64 version. + + Copyright (C) 2012-2014 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/>. */ + +#ifndef _AARCH64_GET_ROUNDING_MODE_H +#define _AARCH64_GET_ROUNDING_MODE_H 1 + +#include <fenv.h> +#include <fpu_control.h> + +/* Return the floating-point rounding mode. */ + +static inline int +get_rounding_mode (void) +{ + fpu_control_t fpcr; + + _FPU_GETCW (fpcr); + return fpcr & FE_TOWARDZERO; +} + +#endif /* get-rounding-mode.h */ diff --git a/sysdeps/aarch64/fpu/s_ceil.c b/sysdeps/aarch64/fpu/s_ceil.c new file mode 100644 index 0000000..5a85b51 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_ceil.c @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC ceil +#define INSN "frintp" +#include <s_frint.c> diff --git a/sysdeps/aarch64/fpu/s_ceilf.c b/sysdeps/aarch64/fpu/s_ceilf.c new file mode 100644 index 0000000..70be606 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_ceilf.c @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC ceilf +#define INSN "frintp" +#include <s_frintf.c> diff --git a/sysdeps/aarch64/fpu/s_floor.c b/sysdeps/aarch64/fpu/s_floor.c new file mode 100644 index 0000000..d7a2f48 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_floor.c @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC floor +#define INSN "frintm" +#include <s_frint.c> diff --git a/sysdeps/aarch64/fpu/s_floorf.c b/sysdeps/aarch64/fpu/s_floorf.c new file mode 100644 index 0000000..b2dc9be --- /dev/null +++ b/sysdeps/aarch64/fpu/s_floorf.c @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC floorf +#define INSN "frintm" +#include <s_frintf.c> diff --git a/sysdeps/aarch64/fpu/s_fma.c b/sysdeps/aarch64/fpu/s_fma.c new file mode 100644 index 0000000..adbcfc1 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_fma.c @@ -0,0 +1,45 @@ +/* Copyright (C) 1996-2014 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> + +#ifndef FUNC +# define FUNC fma +#endif + +#ifndef TYPE +# define TYPE double +# define REGS "d" +#else +# ifndef REGS +# error REGS not defined +# endif +#endif + +#define __CONCATX(a,b) __CONCAT(a,b) + +TYPE +__CONCATX(__,FUNC) (TYPE x, TYPE y, TYPE z) +{ + TYPE result; + asm ( "fmadd" "\t%" REGS "0, %" REGS "1, %" REGS "2, %" REGS "3" + : "=w" (result) : "w" (x), "w" (y), "w" (z) ); + return result; +} + +weak_alias (__CONCATX(__,FUNC), FUNC) diff --git a/sysdeps/aarch64/fpu/s_fmaf.c b/sysdeps/aarch64/fpu/s_fmaf.c new file mode 100644 index 0000000..38c5888 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_fmaf.c @@ -0,0 +1,22 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC fmaf +#define TYPE float +#define REGS "s" +#include <s_fma.c> diff --git a/sysdeps/aarch64/fpu/s_fmax.c b/sysdeps/aarch64/fpu/s_fmax.c new file mode 100644 index 0000000..37dc970 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_fmax.c @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC fmax +#define INSN "fmaxnm" +#include <s_fmin.c> diff --git a/sysdeps/aarch64/fpu/s_fmaxf.c b/sysdeps/aarch64/fpu/s_fmaxf.c new file mode 100644 index 0000000..748ac0f --- /dev/null +++ b/sysdeps/aarch64/fpu/s_fmaxf.c @@ -0,0 +1,23 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC fmaxf +#define INSN "fmaxnm" +#define TYPE float +#define REGS "s" +#include <s_fmin.c> diff --git a/sysdeps/aarch64/fpu/s_fmin.c b/sysdeps/aarch64/fpu/s_fmin.c new file mode 100644 index 0000000..63875d5 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_fmin.c @@ -0,0 +1,49 @@ +/* Copyright (C) 1996-2014 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> + +#ifndef FUNC +# define FUNC fmin +#endif + +#ifndef INSN +# define INSN "fminnm" +#endif + +#ifndef TYPE +# define TYPE double +# define REGS "d" +#else +# ifndef REGS +# error REGS not defined +# endif +#endif + +#define __CONCATX(a,b) __CONCAT(a,b) + +TYPE +__CONCATX(__,FUNC) (TYPE x, TYPE y) +{ + TYPE result; + asm ( INSN "\t%" REGS "0, %" REGS "1, %" REGS "2" + : "=w" (result) : "w" (x), "w" (y) ); + return result; +} + +weak_alias (__CONCATX(__,FUNC), FUNC) diff --git a/sysdeps/aarch64/fpu/s_fminf.c b/sysdeps/aarch64/fpu/s_fminf.c new file mode 100644 index 0000000..86c6be2 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_fminf.c @@ -0,0 +1,22 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC fminf +#define TYPE float +#define REGS "s" +#include <s_fmin.c> diff --git a/sysdeps/aarch64/fpu/s_frint.c b/sysdeps/aarch64/fpu/s_frint.c new file mode 100644 index 0000000..2e8195c --- /dev/null +++ b/sysdeps/aarch64/fpu/s_frint.c @@ -0,0 +1,49 @@ +/* Copyright (C) 1996-2014 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> + +#ifndef FUNC +# error FUNC not defined +#endif + +#ifndef TYPE +# define TYPE double +# define REGS "d" +#else +# ifndef REGS +# error REGS not defined +# endif +#endif + +#ifndef INSN +# error INSN not defined +#endif + +#define __CONCATX(a,b) __CONCAT(a,b) + +TYPE +__CONCATX(__,FUNC) (TYPE x) +{ + TYPE result; + asm ( INSN "\t%" REGS "0, %" REGS "1" : + "=w" (result) : "w" (x) ); + return result; +} + +weak_alias (__CONCATX(__,FUNC), FUNC) diff --git a/sysdeps/aarch64/fpu/s_frintf.c b/sysdeps/aarch64/fpu/s_frintf.c new file mode 100644 index 0000000..817d2d1 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_frintf.c @@ -0,0 +1,24 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#ifndef FUNC +# error FUNC not defined +#endif +#define TYPE float +#define REGS "s" +#include <s_frint.c> diff --git a/sysdeps/aarch64/fpu/s_llrint.c b/sysdeps/aarch64/fpu/s_llrint.c new file mode 100644 index 0000000..487452f --- /dev/null +++ b/sysdeps/aarch64/fpu/s_llrint.c @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC llrint +#define OTYPE long long int +#include <s_lrint.c> diff --git a/sysdeps/aarch64/fpu/s_llrintf.c b/sysdeps/aarch64/fpu/s_llrintf.c new file mode 100644 index 0000000..1a0009d --- /dev/null +++ b/sysdeps/aarch64/fpu/s_llrintf.c @@ -0,0 +1,23 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC llrintf +#define ITYPE float +#define IREGS "s" +#define OTYPE long long int +#include <s_lrint.c> diff --git a/sysdeps/aarch64/fpu/s_llround.c b/sysdeps/aarch64/fpu/s_llround.c new file mode 100644 index 0000000..9061535 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_llround.c @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC llround +#define OTYPE long long int +#include <s_lround.c> diff --git a/sysdeps/aarch64/fpu/s_llroundf.c b/sysdeps/aarch64/fpu/s_llroundf.c new file mode 100644 index 0000000..c4c7149 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_llroundf.c @@ -0,0 +1,23 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC llroundf +#define ITYPE float +#define IREGS "s" +#define OTYPE long long int +#include <s_lround.c> diff --git a/sysdeps/aarch64/fpu/s_lrint.c b/sysdeps/aarch64/fpu/s_lrint.c new file mode 100644 index 0000000..8ff9520 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_lrint.c @@ -0,0 +1,53 @@ +/* Copyright (C) 1996-2014 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> + +#ifndef FUNC +# define FUNC lrint +#endif + +#ifndef ITYPE +# define ITYPE double +# define IREGS "d" +#else +# ifndef IREGS +# error IREGS not defined +# endif +#endif + +#ifndef OTYPE +# define OTYPE long int +#endif + +#define OREGS "x" + +#define __CONCATX(a,b) __CONCAT(a,b) + +OTYPE +__CONCATX(__,FUNC) (ITYPE x) +{ + OTYPE result; + ITYPE temp; + asm ( "frintx" "\t%" IREGS "1, %" IREGS "2\n\t" + "fcvtzs" "\t%" OREGS "0, %" IREGS "1" + : "=r" (result), "=w" (temp) : "w" (x) ); + return result; +} + +weak_alias (__CONCATX(__,FUNC), FUNC) diff --git a/sysdeps/aarch64/fpu/s_lrintf.c b/sysdeps/aarch64/fpu/s_lrintf.c new file mode 100644 index 0000000..8ed38fe --- /dev/null +++ b/sysdeps/aarch64/fpu/s_lrintf.c @@ -0,0 +1,22 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC lrintf +#define ITYPE float +#define IREGS "s" +#include <s_lrint.c> diff --git a/sysdeps/aarch64/fpu/s_lround.c b/sysdeps/aarch64/fpu/s_lround.c new file mode 100644 index 0000000..e1f4a20 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_lround.c @@ -0,0 +1,51 @@ +/* Copyright (C) 1996-2014 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> + +#ifndef FUNC +# define FUNC lround +#endif + +#ifndef ITYPE +# define ITYPE double +# define IREGS "d" +#else +# ifndef IREGS +# error IREGS not defined +# endif +#endif + +#ifndef OTYPE +# define OTYPE long int +#endif + +#define OREGS "x" + +#define __CONCATX(a,b) __CONCAT(a,b) + +OTYPE +__CONCATX(__,FUNC) (ITYPE x) +{ + OTYPE result; + asm ( "fcvtas" "\t%" OREGS "0, %" IREGS "1" + : "=r" (result) : "w" (x) ); + return result; +} + +weak_alias (__CONCATX(__,FUNC), FUNC) diff --git a/sysdeps/aarch64/fpu/s_lroundf.c b/sysdeps/aarch64/fpu/s_lroundf.c new file mode 100644 index 0000000..4970954 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_lroundf.c @@ -0,0 +1,22 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC lroundf +#define ITYPE float +#define IREGS "s" +#include <s_lround.c> diff --git a/sysdeps/aarch64/fpu/s_nearbyint.c b/sysdeps/aarch64/fpu/s_nearbyint.c new file mode 100644 index 0000000..c130b83 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_nearbyint.c @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC nearbyint +#define INSN "frinti" +#include <s_frint.c> diff --git a/sysdeps/aarch64/fpu/s_nearbyintf.c b/sysdeps/aarch64/fpu/s_nearbyintf.c new file mode 100644 index 0000000..e09f162 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_nearbyintf.c @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC nearbyintf +#define INSN "frinti" +#include <s_frintf.c> diff --git a/sysdeps/aarch64/fpu/s_rint.c b/sysdeps/aarch64/fpu/s_rint.c new file mode 100644 index 0000000..f1ded8e --- /dev/null +++ b/sysdeps/aarch64/fpu/s_rint.c @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC rint +#define INSN "frintx" +#include <s_frint.c> diff --git a/sysdeps/aarch64/fpu/s_rintf.c b/sysdeps/aarch64/fpu/s_rintf.c new file mode 100644 index 0000000..a950c76 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_rintf.c @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC rintf +#define INSN "frintx" +#include <s_frintf.c> diff --git a/sysdeps/aarch64/fpu/s_round.c b/sysdeps/aarch64/fpu/s_round.c new file mode 100644 index 0000000..40411a5 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_round.c @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC round +#define INSN "frinta" +#include <s_frint.c> diff --git a/sysdeps/aarch64/fpu/s_roundf.c b/sysdeps/aarch64/fpu/s_roundf.c new file mode 100644 index 0000000..05f0e96 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_roundf.c @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC roundf +#define INSN "frinta" +#include <s_frintf.c> diff --git a/sysdeps/aarch64/fpu/s_trunc.c b/sysdeps/aarch64/fpu/s_trunc.c new file mode 100644 index 0000000..2ffd899 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_trunc.c @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC trunc +#define INSN "frintz" +#include <s_frint.c> diff --git a/sysdeps/aarch64/fpu/s_truncf.c b/sysdeps/aarch64/fpu/s_truncf.c new file mode 100644 index 0000000..10e69ca --- /dev/null +++ b/sysdeps/aarch64/fpu/s_truncf.c @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 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/>. */ + +#define FUNC truncf +#define INSN "frintz" +#include <s_frintf.c> diff --git a/sysdeps/aarch64/jmpbuf-offsets.h b/sysdeps/aarch64/jmpbuf-offsets.h new file mode 100644 index 0000000..bcf2afa --- /dev/null +++ b/sysdeps/aarch64/jmpbuf-offsets.h @@ -0,0 +1,60 @@ +/* Copyright (C) 2006-2014 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/>. */ + +#define JB_X19 0 +#define JB_X20 1 +#define JB_X21 2 +#define JB_X22 3 +#define JB_X23 4 +#define JB_X24 5 +#define JB_X25 6 +#define JB_X26 7 +#define JB_X27 8 +#define JB_X28 9 +#define JB_X29 10 +#define JB_LR 11 +#define JB_SP 13 + +#define JB_D8 14 +#define JB_D9 15 +#define JB_D10 16 +#define JB_D11 17 +#define JB_D12 18 +#define JB_D13 19 +#define JB_D14 20 +#define JB_D15 21 + +#ifndef __ASSEMBLER__ +#include <setjmp.h> +#include <stdint.h> +#include <sysdep.h> + +static inline uintptr_t __attribute__ ((unused)) +_jmpbuf_sp (__jmp_buf jmpbuf) +{ + uintptr_t sp = jmpbuf[JB_SP]; +#ifdef PTR_DEMANGLE + PTR_DEMANGLE (sp); +#endif + return sp; +} +#endif + +/* Helper for generic ____longjmp_chk(). */ +#define JB_FRAME_ADDRESS(buf) \ + ((void *) _jmpbuf_sp (buf)) diff --git a/sysdeps/aarch64/jmpbuf-unwind.h b/sysdeps/aarch64/jmpbuf-unwind.h new file mode 100644 index 0000000..39a5dc2 --- /dev/null +++ b/sysdeps/aarch64/jmpbuf-unwind.h @@ -0,0 +1,36 @@ +/* Copyright (C) 2005-2014 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 <setjmp.h> +#include <jmpbuf-offsets.h> +#include <stdint.h> +#include <unwind.h> + +/* Test if longjmp to JMPBUF would unwind the frame + containing a local variable at ADDRESS. */ +#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \ + ((void *) (address) < (void *) demangle (jmpbuf[JB_SP])) + +#define _JMPBUF_CFA_UNWINDS_ADJ(jmpbuf, context, adj) \ + _JMPBUF_UNWINDS_ADJ (jmpbuf, (void *) _Unwind_GetCFA (context), adj) + +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ + ((uintptr_t) (_address) - (_adj) < _jmpbuf_sp (_jmpbuf) - (_adj)) + +/* We use the normal longjmp for unwinding. */ +#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) diff --git a/sysdeps/aarch64/ldsodefs.h b/sysdeps/aarch64/ldsodefs.h new file mode 100644 index 0000000..f55608c --- /dev/null +++ b/sysdeps/aarch64/ldsodefs.h @@ -0,0 +1,48 @@ +/* Copyright (C) 2005-2014 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/>. */ + +#ifndef _AARCH64_LDSODEFS_H +#define _AARCH64_LDSODEFS_H 1 + +#include <elf.h> + +struct La_aarch64_regs; +struct La_aarch64_retval; + +#define ARCH_PLTENTER_MEMBERS \ + ElfW(Addr) (*aarch64_gnu_pltenter) (ElfW(Sym) *, \ + unsigned int, \ + uintptr_t *, \ + uintptr_t *, \ + struct La_aarch64_regs *, \ + unsigned int *, \ + const char *, \ + long int *) + +#define ARCH_PLTEXIT_MEMBERS \ + ElfW(Addr) (*aarch64_gnu_pltexit) (ElfW(Sym) *, \ + unsigned int, \ + uintptr_t *, \ + uintptr_t *, \ + const struct La_aarch64_regs *, \ + struct La_aarch64_retval *, \ + const char *) + +#include_next <ldsodefs.h> + +#endif diff --git a/sysdeps/aarch64/libc-tls.c b/sysdeps/aarch64/libc-tls.c new file mode 100644 index 0000000..c67ef27 --- /dev/null +++ b/sysdeps/aarch64/libc-tls.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2005-2014 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 <csu/libc-tls.c> +#include <dl-tls.h> + +/* On AArch64, linker optimizations are not required, so __tls_get_addr + can be called even in statically linked binaries. In this case module + must be always 1 and PT_TLS segment exist in the binary, otherwise it + would not link. */ + +void * +__tls_get_addr (tls_index *ti) +{ + dtv_t *dtv = THREAD_DTV (); + return (char *) dtv[1].pointer.val + ti->ti_offset; +} diff --git a/sysdeps/aarch64/libm-test-ulps b/sysdeps/aarch64/libm-test-ulps new file mode 100644 index 0000000..786720d --- /dev/null +++ b/sysdeps/aarch64/libm-test-ulps @@ -0,0 +1,18858 @@ +# Begin of automatic generation + +# acos_downward +Test "acos_downward (-0x8p-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# acos_towardzero +Test "acos_towardzero (-0x8p-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# acos_upward +Test "acos_upward (+0)": +double: 1 +idouble: 1 +Test "acos_upward (-0)": +double: 1 +idouble: 1 +Test "acos_upward (-0x1p+0)": +double: 1 +idouble: 1 +Test "acos_upward (-0x4p-1024)": +double: 1 +idouble: 1 +Test "acos_upward (-0x4p-1076)": +double: 1 +idouble: 1 +Test "acos_upward (-0x4p-128)": +double: 1 +idouble: 1 +Test "acos_upward (-0x8p-152)": +double: 1 +idouble: 1 +Test "acos_upward (-0x8p-972)": +double: 1 +idouble: 1 +Test "acos_upward (0x1.70ef54646d496p-56)": +double: 1 +idouble: 1 +Test "acos_upward (0x1.70ef54646d497p-56)": +double: 1 +idouble: 1 +Test "acos_upward (0x1.70ef54p-56)": +double: 1 +idouble: 1 +Test "acos_upward (0x1.70ef56p-56)": +double: 1 +idouble: 1 +Test "acos_upward (0x4p-1024)": +double: 1 +idouble: 1 +Test "acos_upward (0x4p-1076)": +double: 1 +idouble: 1 +Test "acos_upward (0x4p-128)": +double: 1 +idouble: 1 +Test "acos_upward (0x8p-152)": +double: 1 +idouble: 1 +Test "acos_upward (0x8p-972)": +double: 1 +idouble: 1 + +# acosh +Test "acosh (0x6.4p+4)": +double: 1 +idouble: 1 +Test "acosh (0xf.ffffffffffff8p+1020)": +double: 1 +Test "acosh (0xf.fffffp+124)": +ldouble: 1 + +# asin +Test "asin (-0xf.ffffffffffff8p-4)": +ildouble: 1 +ldouble: 1 +Test "asin (-0xf.fffffffffffffffp-4)": +ildouble: 1 +ldouble: 1 + +# asin_downward +Test "asin_downward (-0x1p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_downward (-0x8p-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_downward (-0xf.fffffff8p-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_downward (-0xf.ffffffffffff8p-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_downward (-0xf.fffffffffffffffp-4)": +ildouble: 1 +ldouble: 1 +Test "asin_downward (-0xf.fffffffffffp-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_downward (-0xf.fffffp-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "asin_downward (0x8p-4)": +float: 1 +ifloat: 1 +Test "asin_downward (0xcp-4)": +ildouble: 1 +ldouble: 1 + +# asin_tonearest +Test "asin_tonearest (-0xf.ffffffffffff8p-4)": +ildouble: 1 +ldouble: 1 +Test "asin_tonearest (-0xf.fffffffffffffffp-4)": +ildouble: 1 +ldouble: 1 + +# asin_towardzero +Test "asin_towardzero (-0x1p+0)": +ildouble: 1 +ldouble: 1 +Test "asin_towardzero (-0x2p-16384)": +ildouble: 1 +ldouble: 1 +Test "asin_towardzero (-0x4p-1024)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_towardzero (-0x4p-1076)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_towardzero (-0x4p-128)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "asin_towardzero (-0x4p-16384)": +ildouble: 1 +ldouble: 1 +Test "asin_towardzero (-0x4p-16448)": +ildouble: 1 +ldouble: 1 +Test "asin_towardzero (-0x4p-16496)": +ildouble: 1 +ldouble: 1 +Test "asin_towardzero (-0x8p-152)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "asin_towardzero (-0x8p-16448)": +ildouble: 1 +ldouble: 1 +Test "asin_towardzero (-0x8p-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "asin_towardzero (-0x8p-972)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_towardzero (-0xf.fffffp-4)": +ildouble: 1 +ldouble: 1 +Test "asin_towardzero (0x8p-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "asin_towardzero (0xcp-4)": +ildouble: 1 +ldouble: 1 + +# asin_upward +Test "asin_upward (-0x1p+0)": +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0x2p-16384)": +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0x4p-1024)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0x4p-1076)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0x4p-128)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0x4p-16384)": +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0x4p-16448)": +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0x4p-16496)": +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0x8p-152)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0x8p-16448)": +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0x8p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0x8p-972)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0xf.fffffff8p-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0xf.ffffffffffff8p-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0xf.fffffffffffffffp-4)": +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0xf.fffffffffffp-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_upward (-0xf.fffffp-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "asin_upward (0x1p+0)": +double: 1 +idouble: 1 +Test "asin_upward (0x2p-16384)": +ildouble: 1 +ldouble: 1 +Test "asin_upward (0x4p-1024)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_upward (0x4p-1076)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_upward (0x4p-128)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "asin_upward (0x4p-16384)": +ildouble: 1 +ldouble: 1 +Test "asin_upward (0x4p-16448)": +ildouble: 1 +ldouble: 1 +Test "asin_upward (0x4p-16496)": +ildouble: 1 +ldouble: 1 +Test "asin_upward (0x8p-152)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "asin_upward (0x8p-16448)": +ildouble: 1 +ldouble: 1 +Test "asin_upward (0x8p-972)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +# asinh +Test "asinh (-0xf.ffffffffffff8p+1020)": +double: 1 +Test "asinh (-0xf.fffffp+124)": +ldouble: 1 +Test "asinh (0x1p+0)": +ildouble: 1 +ldouble: 1 +Test "asinh (0x1p+100)": +ildouble: 1 +ldouble: 1 +Test "asinh (0xap+0)": +float: 1 +ifloat: 1 +Test "asinh (0xf.ffffffffffff8p+1020)": +double: 1 +Test "asinh (0xf.fffffp+124)": +ldouble: 1 + +# atan +Test "atan (0xap+0)": +double: 1 +idouble: 1 + +# atan2 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac28p-8, -0x7.57d1de0e51244p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac28p-8, -0x7.57d1de0e51246640cc2340ca48p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac28p-8, -0x7.57d1de0e51246648p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac28p-8, -0x7.57d1de0e5124664p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac291p-8, -0x7.57d1de0e51246640cc2340ca48p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac291p-8, -0x7.57d1de0e5124664p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac292p-8, -0x7.57d1de0e51244p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac292p-8, -0x7.57d1de0e51246640cc2340ca48p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac292p-8, -0x7.57d1de0e51246648p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac292p-8, -0x7.57d1de0e5124664p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac3p-8, -0x7.57d1d8p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac3p-8, -0x7.57d1de0e51246640cc2340ca4838p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac3p-8, -0x7.57d1de0e51246640cc2340ca483cp-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac3p-8, -0x7.57d1de0e51246640cc2340ca48p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac3p-8, -0x7.57d1de0e51248p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffc0f3eeb1ac3p-8, -0x7.57d1ep-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffcp-8, -0x7.57d1de0e51244p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffcp-8, -0x7.57d1de0e51246640cc2340ca48p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffcp-8, -0x7.57d1de0e51246648p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffcp-8, -0x7.57d1de0e5124664p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffcp-8, -0x7.57d1ep-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffep-8, -0x7.57d1d8p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffep-8, -0x7.57d1de0e51246640cc2340ca4838p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffep-8, -0x7.57d1de0e51246640cc2340ca483cp-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffep-8, -0x7.57d1de0e51246640cc2340ca4ap-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716ffep-8, -0x7.57d1de0e51248p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716p-8, -0x7.57d1d8p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716p-8, -0x7.57d1de0e51246648p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716p-8, -0x7.57d1de0e5124664p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716p-8, -0x7.57d1de0e51248p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852717p-8, -0x7.57d1de0e51244p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852717p-8, -0x7.57d1de0e51246648p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852717p-8, -0x7.57d1de0e5124664p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe82p-8, -0x7.57d1d8p-12)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe82p-8, -0x7.57d1de0e51244p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe82p-8, -0x7.57d1de0e51246640cc2340ca48p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe82p-8, -0x7.57d1de0e51246648p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe82p-8, -0x7.57d1de0e51248p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe8p-8, -0x7.57d1de0e51244p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe8p-8, -0x7.57d1de0e51248p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x2p-16384, -0x4p-16384)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x4p-16384, -0x2p-16384)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x4p-16448, -0x8p-16448)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x8p-16448, -0x4p-16448)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0xcp-4, -0x1p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "atan2 (-0xf.fffffffffffffffffffffffffff8p+16380, 0xf.fffffffffffffffp+16380)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0xf.fffffp+124, -0x4p-128)": +float: 1 +ifloat: 1 +Test "atan2 (-0xf.fffffp+124, -0x8p-152)": +float: 1 +ifloat: 1 +Test "atan2 (0x1.000002p+0, 0x1.0000000000001p+0)": +ildouble: 1 +ldouble: 1 +Test "atan2 (0x1.000002p+0, 0x1p+0)": +ildouble: 1 +ldouble: 1 +Test "atan2 (0x1.64p+0, 0xe.ep-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "atan2 (0x4p-16384, -0x2p-16384)": +ildouble: 1 +ldouble: 1 +Test "atan2 (0x6.4p-4, 0x1.301648p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (0x6.4p-4, 0x1.30164ap-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (0x8p-16448, -0x4p-16448)": +ildouble: 1 +ldouble: 1 +Test "atan2 (0xcp-4, -0x1p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "atan2 (0xf.fffffffffffffffp+16380, 0xf.fffffffffffffffffffffffffff8p+16380)": +ildouble: 1 +ldouble: 1 +Test "atan2 (0xf.fffffp+124, -0x4p-128)": +float: 1 +ifloat: 1 +Test "atan2 (0xf.fffffp+124, -0x8p-152)": +float: 1 +ifloat: 1 + +# atanh +Test "atanh (-0xcp-4)": +float: 1 +ifloat: 1 +Test "atanh (0x1.2345p-20)": +ildouble: 1 +ldouble: 1 +Test "atanh (0x4p-4)": +ildouble: 1 +ldouble: 1 +Test "atanh (0xcp-4)": +float: 1 +ifloat: 1 + +# cacos +Test "Imaginary part of: cacos (+0 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (+0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (+0 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (+0 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (+0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (+0 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.25 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.25 + 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.25 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.25 - 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 + 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 + 0x1p-112 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 + 0x1p-52 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.5 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 - 0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 - 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 - 0x1p-112 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 - 0x1p-52 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.5 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (-0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (-0x1.0000000000000000000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000000000000000000001p0 + 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000000000000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000000000000000000001p0 - 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.000002p0 + 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.000002p0 - 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0x1.fp-100 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-100 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-10000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-10000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-129 + 0x0.ffffffp0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-129 + 1.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-129 - 0x0.ffffffp0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-129 - 1.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 + 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 - 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-30 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-30 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1.fp-30 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-30 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-105 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-105 + 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-105 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-105 - 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 + 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 - 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-113 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-113 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-113 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-113 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-23 + 0.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacos (-0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0x1p-23 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-23 + 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-23 - 0.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacos (-0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0x1p-23 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-23 - 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-52 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-52 + 0x1p-52 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-52 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-52 - 0x1p-52 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-63 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-63 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-63 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-63 + 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-63 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-63 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-63 - 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p500 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p500 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p5000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p5000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 + 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-1.0 + 0x1p50 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.0 + 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 + 0x1p5000 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 - 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-1.0 - 0x1p50 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.0 - 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 - 0x1p5000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-2 - 3 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.25 + 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.25 - 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-63 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0.5 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 - 0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-63 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0.5 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.fffffffffffff8p0 + 0.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0x0.fffffffffffff8p0 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0x0.fffffffffffff8p0 - 0.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0x0.fffffffffffff8p0 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffcp0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffcp0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffcp0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffcp0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffff8p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffff8p0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffff8p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffff8p0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffp0 + 0.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffp0 + 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Real part of: cacos (0x0.ffffffp0 - 0.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffp0 - 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (0x1.0000000000000000000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000000000000000000001p0 + 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000000000000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000000000000000000001p0 - 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.0000000000000002p0 + 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: cacos (0x1.0000000000000002p0 - 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: cacos (0x1.0000000000001p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.0000000000001p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.000002p0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.000002p0 + 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.000002p0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.000002p0 - 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0x1.fp-100 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.fp-100 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-10000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-10000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 + 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 - 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-30 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-30 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp16383 + 0x1.fp16383 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x1p-112 + 0x0.ffffffffffffffffffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x1p-112 - 0x0.ffffffffffffffffffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-113 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-113 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacos (0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0x1p-23 + 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacos (0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0x1p-23 - 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1p-52 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1p-52 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1p-52 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1p-52 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1p-63 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-63 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1p-63 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p500 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p500 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p5000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p5000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 + 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (1.0 + 0x1.fp-10 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 + 0x1.fp-100 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 + 0x1.fp-30 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (1.0 + 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.0 + 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.0 + 0x1p5000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 - 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (1.0 - 0x1.fp-10 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 - 0x1.fp-100 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 - 0x1.fp-30 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (1.0 - 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.0 - 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.0 - 0x1p5000 i)": +ildouble: 1 +ldouble: 1 + +# cacosh +Test "Real part of: cacosh (+0 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (+0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (+0 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (+0 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (+0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (+0 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.25 + 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.25 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0.25 - 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.25 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0.5 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (-0.5 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 + 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 + 0x1p-112 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 + 0x1p-52 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0.5 - 0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (-0.5 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 - 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 - 0x1p-112 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 - 0x1p-52 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Real part of: cacosh (-0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Real part of: cacosh (-0x1.0000000000000000000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000000000000000000001p0 + 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000000000000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000000000000000000001p0 - 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.000002p0 + 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.000002p0 - 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-100 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-100 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-10000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-10000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x0.ffffffp0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 1.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x0.ffffffp0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 1.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-16385 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-16385 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-16385 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-16385 + 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-16385 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-16385 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-16385 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-16385 - 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-30 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-30 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-30 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-30 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-105 + 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-105 - 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 + 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 - 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-113 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-113 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-113 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-113 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-23 + 0.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacosh (-0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (-0x1p-23 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-23 + 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-23 - 0.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacosh (-0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (-0x1p-23 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-23 - 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-52 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-52 + 0x1p-52 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-52 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-52 - 0x1p-52 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-63 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-63 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-63 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-63 + 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-63 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-63 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-63 - 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p500 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p500 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p5000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p5000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.0 + 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-1.0 + 0x1p50 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-1.0 + 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.0 + 0x1p5000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.0 - 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-1.0 - 0x1p50 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-1.0 - 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.0 - 0x1p5000 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-2 - 3 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.25 + 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.25 - 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + +0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-63 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0.5 - 0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-63 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x0.fffffffffffff8p0 + 0.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0x0.fffffffffffff8p0 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0x0.fffffffffffff8p0 - 0.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0x0.fffffffffffff8p0 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffcp0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffcp0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffcp0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffcp0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffff8p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffff8p0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffff8p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffff8p0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffffffffffffp0 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffffffffffffp0 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000000000000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000000000000000000001p0 + 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000000000000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000000000000000000001p0 - 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.0000000000000002p0 + 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacosh (0x1.0000000000000002p0 - 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacosh (0x1.0000000000001p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.0000000000001p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.000002p0 + 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.000002p0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.000002p0 - 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.000002p0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.fp-100 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.fp-100 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-10000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-10000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 + 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 - 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-30 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-30 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp16383 + 0x1.fp16383 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x1p-112 + 0x0.ffffffffffffffffffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x1p-112 - 0x0.ffffffffffffffffffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-113 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-113 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: cacosh (0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0x1p-23 + 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: cacosh (0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0x1p-23 - 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1p-52 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1p-52 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1p-52 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1p-52 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x1p-63 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-63 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-63 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x1p-63 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-63 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p500 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p500 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p5000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p5000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 + 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 + 0x1.fp-10 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacosh (1.0 + 0x1.fp-100 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.0 + 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 + 0x1.fp-30 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (1.0 + 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.0 + 0x1p5000 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 - 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 - 0x1.fp-10 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacosh (1.0 - 0x1.fp-100 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.0 - 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 - 0x1.fp-30 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (1.0 - 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.0 - 0x1p5000 i)": +ildouble: 1 +ldouble: 1 + +# casin +Test "Imaginary part of: casin (+0 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (+0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (+0 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (+0 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (+0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (+0 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.25 + 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.25 - 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 + 0x1p-112 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 + 0x1p-23 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 - 0x1p-112 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 - 0x1p-23 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.5 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x0.fffffffffffff8p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x0.fffffffffffff8p0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (-0x0.fffffffffffff8p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x0.fffffffffffff8p0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (-0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x0.ffffffffffffffffffffffffffff8p0 + 0x1p-112 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x0.ffffffffffffffffffffffffffff8p0 - 0x1p-112 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x0.ffffffffffffffffp0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x0.ffffffffffffffffp0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x0.ffffffp0 + 0x1p-23 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Real part of: casin (-0x0.ffffffp0 - 0x1p-23 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: casin (-0x1.0000000000000000000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000000000000000000001p0 + 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000000000000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000000000000000000001p0 - 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.000002p0 + 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.000002p0 - 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-10 + 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (-0x1.fp-10 - 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-10000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-10000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-1025 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-1025 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 + 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 - 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-30 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-30 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-30 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-30 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: casin (-0x1p-113 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-113 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-113 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-113 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (-0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (-0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (-0x1p-23 + 0x1.000002p0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (-0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (-0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (-0x1p-23 - 0x1.000002p0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-52 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-52 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-52 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-52 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-63 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-63 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-63 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-63 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-63 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p500 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p500 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p5000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p5000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-1.0 + 0.25 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-1.0 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 + 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 + 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 + 0x1p5000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-1.0 - 0.25 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-1.0 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 - 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 - 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 - 0x1p5000 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.25 + 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.25 - 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 + 0x1p-112 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 + 0x1p-23 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 - 0x1p-112 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 - 0x1p-23 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.5 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.75 + 1.25 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (0x0.fffffffffffff8p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x0.fffffffffffff8p0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (0x0.fffffffffffff8p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x0.fffffffffffff8p0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x0.ffffffffffffffffffffffffffff8p0 + 0x1p-112 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x0.ffffffffffffffffffffffffffff8p0 - 0x1p-112 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x0.ffffffffffffffffp0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x0.ffffffffffffffffp0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x0.ffffffp0 + 0x1p-23 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Real part of: casin (0x0.ffffffp0 - 0x1p-23 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: casin (0x1.0000000000000000000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000000000000000000001p0 + 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000000000000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000000000000000000001p0 - 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.000002p0 + 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.000002p0 - 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-10 + 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (0x1.fp-10 - 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-10000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-10000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-1025 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-1025 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 + 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 - 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-30 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-30 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-30 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-30 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp16383 + 0x1.fp16383 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: casin (0x1p-113 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-113 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-113 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-113 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (0x1p-23 + 0x1.000002p0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (0x1p-23 - 0x1.000002p0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-52 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-52 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-52 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-52 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-63 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-63 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-63 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-63 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-63 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p500 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p500 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p5000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p5000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (1.0 + 0.25 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (1.0 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 + 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 + 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 + 0x1p5000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (1.0 - 0.25 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (1.0 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 - 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 - 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 - 0x1p5000 i)": +ildouble: 1 +ldouble: 1 + +# casinh +Test "Imaginary part of: casinh (-0.0 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.0 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.0 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.0 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.0 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.0 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.25 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.25 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 + +0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 + 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casinh (-0.5 + 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: casinh (-0.5 + 0x1p-52 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.5 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 + 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 - 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casinh (-0.5 - 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: casinh (-0.5 - 0x1p-52 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.5 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 - 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-0x0.fffffffffffff8p0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x0.fffffffffffff8p0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffffffffffffcp0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffffffffffffcp0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffffffffffffcp0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffffffffffffcp0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffffffffffffp0 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffp0 + 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x0.ffffffp0 - 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1.0000000000000000000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.0000000000000000000000000001p0 + 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.0000000000000000000000000001p0 + 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.0000000000000000000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.0000000000000000000000000001p0 - 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.0000000000000000000000000001p0 - 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.0000000000000002p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.0000000000000002p0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.0000000000000002p0 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.0000000000000002p0 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.0000000000000002p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.0000000000000002p0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.0000000000000002p0 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.0000000000000002p0 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.0000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.0000000000001p0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.0000000000001p0 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.0000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.0000000000001p0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.0000000000001p0 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-10 + 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-10 - 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.fp-1025 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.fp-1025 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-129 + 0.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-0x1.fp-129 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-129 - 0.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-0x1.fp-129 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-30 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-30 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-105 + 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-105 - 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-112 + 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1p-112 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1p-112 + 0x0.ffffffffffffffffffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-112 - 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1p-112 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1p-112 - 0x0.ffffffffffffffffffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-113 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-113 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 + 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1p-23 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 + 0x0.ffffffp0 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: casinh (-0x1p-23 + 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 - 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1p-23 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 - 0x0.ffffffp0 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: casinh (-0x1p-23 - 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-23 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1p-52 + 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-52 + 0x0.fffffffffffff8p0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-0x1p-52 - 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-52 - 0x0.fffffffffffff8p0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-63 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-63 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-63 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p500 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p500 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p5000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p5000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + +0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0.25 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-10 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-100 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-1000 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-10000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-30 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-30 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1p5000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0.25 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-10 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-100 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-1000 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-10000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-30 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-30 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1p5000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.5 + +0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.5 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.5 - 0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.5 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.0 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.0 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.0 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.0 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.0 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.0 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.25 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.25 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 + +0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 + 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casinh (0.5 + 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: casinh (0.5 + 0x1p-52 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.5 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 + 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 - 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casinh (0.5 - 0x1p-23 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: casinh (0.5 - 0x1p-52 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.5 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 - 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.75 + 1.25 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.75 + 1.25 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x0.fffffffffffff8p0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x0.fffffffffffff8p0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffffffffffffcp0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffffffffffffcp0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffffffffffffcp0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffffffffffffcp0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffffffffffffp0 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffp0 + 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x0.ffffffp0 - 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1.0000000000000000000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.0000000000000000000000000001p0 + 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.0000000000000000000000000001p0 + 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.0000000000000000000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.0000000000000000000000000001p0 - 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.0000000000000000000000000001p0 - 0x1p-113 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.0000000000000002p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.0000000000000002p0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.0000000000000002p0 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.0000000000000002p0 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.0000000000000002p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.0000000000000002p0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.0000000000000002p0 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.0000000000000002p0 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.0000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.0000000000001p0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.0000000000001p0 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.0000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.0000000000001p0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.0000000000001p0 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.000002p0 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.000002p0 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-10 + 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-10 - 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.fp-1025 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.fp-1025 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-129 + 0.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (0x1.fp-129 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-129 - 0.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (0x1.fp-129 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-30 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-30 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1.fp16383 + 0x1.fp16383 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-105 + 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-105 - 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-112 + 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1p-112 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1p-112 + 0x0.ffffffffffffffffffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-112 - 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1p-112 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1p-112 - 0x0.ffffffffffffffffffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-113 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-113 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 + 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1p-23 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 + 0x0.ffffffp0 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: casinh (0x1p-23 + 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 - 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1p-23 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 - 0x0.ffffffp0 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: casinh (0x1p-23 - 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-23 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1p-52 + 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-52 + 0x0.fffffffffffff8p0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (0x1p-52 - 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-52 - 0x0.fffffffffffff8p0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-63 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-63 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-63 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p500 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p500 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p5000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p5000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + +0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0.25 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-10 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-100 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-1000 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-10000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-30 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-30 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1p5000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0.25 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-10 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-100 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-1000 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-10000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-30 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-30 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1p500 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1p5000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.5 + +0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.5 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.5 - 0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.5 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 + +# catan +Test "Imaginary part of: catan (-0x0.fffffffffffff8p0 + 0x1p-27 i)": +double: 1 +idouble: 1 +Test "Real part of: catan (-0x0.ffffffffffffffffffffffffffff8p0 + 0x1p-16382 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x0.ffffffffffffffffffffffffffff8p0 + 0x1p-57 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (-0x0.ffffffffffffffffffffffffffff8p0 - 0x1p-16382 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (-0x0.ffffffp0 + 0x1p-126 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x0.ffffffp0 + 0x1p-13 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (-0x0.ffffffp0 - 0x1p-126 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1.0000000000000000000000000001p0 + 0x1p-16382 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1.0000000000000000000000000001p0 - 0x1p-16382 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1.0000000000000000000000000001p0 - 0x1p-57 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1.0000000000001p0 - 0x1p-27 i)": +double: 1 +idouble: 1 +Test "Real part of: catan (-0x1.000002p0 + 0x1p-126 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (-0x1.000002p0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (-0x1.000002p0 - 0x1p-126 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (-0x1.000002p0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (-0x1.000002p0 - 0x1p-13 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (-0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (-0x1.fp1023 - 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (-0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (-0x1.fp127 - 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (-0x1.fp16383 + 0x1.fp16383 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1.fp16383 - 0x1.fp16383 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1p-1020 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (-0x1p-1020 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: catan (-0x1p-13 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (-0x1p-13 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (-0x1p-13 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (-0x1p-13 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (-0x1p-13 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (-0x1p-16380 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1p-16380 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (-0x1p-33 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (-0x1p-33 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (-0x1p-33 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (-0x1p-33 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1p-54 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (-0x1p-54 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (-0x1p-57 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (-0x1p-57 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (-1.0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (-1.0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-2 - 3 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: catan (0.75 + 1.25 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x0.fffffffffffff8p0 + 0x1p-27 i)": +double: 1 +idouble: 1 +Test "Real part of: catan (0x0.ffffffffffffffffffffffffffff8p0 + 0x1p-16382 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x0.ffffffffffffffffffffffffffff8p0 + 0x1p-57 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (0x0.ffffffffffffffffffffffffffff8p0 - 0x1p-16382 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (0x0.ffffffp0 + 0x1p-126 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x0.ffffffp0 + 0x1p-13 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (0x0.ffffffp0 - 0x1p-126 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1.0000000000000000000000000001p0 + 0x1p-16382 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1.0000000000000000000000000001p0 - 0x1p-16382 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1.0000000000000000000000000001p0 - 0x1p-57 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1.0000000000001p0 - 0x1p-27 i)": +double: 1 +idouble: 1 +Test "Real part of: catan (0x1.000002p0 + 0x1p-126 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (0x1.000002p0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (0x1.000002p0 - 0x1p-126 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (0x1.000002p0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (0x1.000002p0 - 0x1p-13 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (0x1.fp1023 - 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (0x1.fp127 - 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (0x1.fp16383 + 0x1.fp16383 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1.fp16383 - 0x1.fp16383 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1p-1020 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (0x1p-1020 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: catan (0x1p-13 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (0x1p-13 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (0x1p-13 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (0x1p-13 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (0x1p-13 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (0x1p-16380 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1p-16380 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (0x1p-33 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (0x1p-33 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (0x1p-33 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (0x1p-33 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1p-54 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (0x1p-54 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (0x1p-57 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (0x1p-57 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (1.0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (1.0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# catanh +Test "Imaginary part of: catanh (-0x0.ffffffffffffffffp0 + 0x1p-33 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (-0x0.ffffffffffffffffp0 - 0x1p-33 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (-0x1.0000000000000002p0 + 0x1p-33 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (-0x1.0000000000000002p0 - 0x1p-33 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1.000002p0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (-0x1.000002p0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-0x1.000002p0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (-0x1.000002p0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (-0x1.fp1023 - 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (-0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (-0x1.fp127 - 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (-0x1.fp16383 + 0x1.fp16383 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1.fp16383 - 0x1.fp16383 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (-0x1p-126 + 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (-0x1p-126 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (-0x1p-126 - 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (-0x1p-126 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1p-13 + 0x1.000002p0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catanh (-0x1p-13 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (-0x1p-13 + 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1p-13 - 0x1.000002p0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catanh (-0x1p-13 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (-0x1p-13 - 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (-0x1p-16382 + 0x0.ffffffffffffffffffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1p-16382 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (-0x1p-16382 - 0x0.ffffffffffffffffffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1p-16382 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1p-27 + 0x1.0000000000001p0 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (-0x1p-27 - 0x1.0000000000001p0 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (-0x1p-57 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1p-57 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-1.0 + 0x1p-1020 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catanh (-1.0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-1.0 + 0x1p-16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-1.0 + 0x1p-54 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-1.0 + 0x1p-57 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-1.0 - 0x1p-1020 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catanh (-1.0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-1.0 - 0x1p-16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-1.0 - 0x1p-54 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-1.0 - 0x1p-57 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-2 - 3 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0.75 + 1.25 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0.75 + 1.25 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0x0.ffffffffffffffffp0 + 0x1p-33 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0x0.ffffffffffffffffp0 - 0x1p-33 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0x1.0000000000000002p0 + 0x1p-33 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0x1.0000000000000002p0 - 0x1p-33 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0x1.000002p0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (0x1.000002p0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (0x1.fp1023 - 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (0x1.fp127 - 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (0x1.fp16383 + 0x1.fp16383 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1.fp16383 - 0x1.fp16383 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0x1p-126 + 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0x1p-126 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0x1p-126 - 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0x1p-126 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1p-13 + 0x0.ffffffp0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0x1p-13 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (0x1p-13 + 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1p-13 - 0x0.ffffffp0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0x1p-13 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (0x1p-13 - 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0x1p-16382 + 0x0.ffffffffffffffffffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1p-16382 + 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0x1p-16382 - 0x0.ffffffffffffffffffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1p-16382 - 0x1.0000000000000000000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1p-27 + 0x0.fffffffffffff8p0 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (0x1p-27 - 0x0.fffffffffffff8p0 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (0x1p-57 + 0x0.ffffffffffffffffffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1p-57 - 0x0.ffffffffffffffffffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (1.0 + 0x1p-1020 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catanh (1.0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (1.0 + 0x1p-16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (1.0 + 0x1p-54 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (1.0 + 0x1p-57 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (1.0 - 0x1p-1020 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catanh (1.0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (1.0 - 0x1p-16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (1.0 - 0x1p-54 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (1.0 - 0x1p-57 i)": +float: 1 +ifloat: 1 + +# cbrt +Test "cbrt (-0x1.bp+4)": +double: 1 +idouble: 1 +Test "cbrt (-0x4.189374bc6a7ecp-12)": +ildouble: 1 +ldouble: 1 +Test "cbrt (-0x4.189374bc6a7ef9ep-12)": +ildouble: 1 +ldouble: 1 +Test "cbrt (-0x4.18937p-12)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cbrt (0xf.ep-4)": +double: 1 +idouble: 1 + +# ccos +Test "Real part of: ccos (-0x2p+0 - 0x3p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccos (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccos (-0xcp-4 + 0x2.c5d4p+12 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccos (-0xcp-4 + 0x2.c68p+8 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ccos (-0xcp-4 + 0x5.98p+4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccos (-0xcp-4 + 0x5.98p+4 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccos (-0xcp-4 - 0x2.c5d4p+12 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccos (-0xcp-4 - 0x2.c68p+8 i)": +double: 1 +idouble: 1 +Test "Real part of: ccos (-0xcp-4 - 0x5.98p+4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccos (-0xcp-4 - 0x5.98p+4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ccos (0x1p-120 + 0x8p-32 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccos (0x4p-1076 + 0x5.ap+8 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ccos (0x4p-16436 + 0x5.8cap+12 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccos (0x8p-32 + 0x1p-120 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ccos (0xcp-4 + 0x1.4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ccos (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ccos (0xcp-4 + 0x2.c5d4p+12 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccos (0xcp-4 + 0x2.c68p+8 i)": +double: 1 +idouble: 1 +Test "Real part of: ccos (0xcp-4 + 0x5.98p+4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccos (0xcp-4 + 0x5.98p+4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ccos (0xcp-4 - 0x2.c5d4p+12 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccos (0xcp-4 - 0x2.c68p+8 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ccos (0xcp-4 - 0x5.98p+4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccos (0xcp-4 - 0x5.98p+4 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# ccosh +Test "Imaginary part of: ccosh (-0x2.c5d4p+12 + 0xcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccosh (-0x2.c5d4p+12 - 0xcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccosh (-0x2.c68p+8 + 0xcp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ccosh (-0x2.c68p+8 - 0xcp-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ccosh (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccosh (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ccosh (-0x5.98p+4 + 0xcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccosh (-0x5.98p+4 + 0xcp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: ccosh (-0x5.98p+4 - 0xcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccosh (-0x5.98p+4 - 0xcp-4 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccosh (0x2.c5d4p+12 + 0xcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccosh (0x2.c5d4p+12 - 0xcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccosh (0x2.c68p+8 + 0xcp-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccosh (0x2.c68p+8 - 0xcp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ccosh (0x5.8cap+12 + 0x4p-16436 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ccosh (0x5.98p+4 + 0xcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccosh (0x5.98p+4 + 0xcp-4 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ccosh (0x5.98p+4 - 0xcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccosh (0x5.98p+4 - 0xcp-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ccosh (0x5.ap+8 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Real part of: ccosh (0xcp-4 + 0x1.4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ccosh (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 + +# cexp +Test "Imaginary part of: cexp (+0 + 0x2.1e19e0c9bab24p+72 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (+0 + 0x2p+64 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cexp (+0 + 0xf.ffffffffffff8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cexp (+0 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (-0x2.71p+12 + 0x8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (-0x2.71p+12 + 0xf.ffffffffffff8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (-0x2.71p+12 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cexp (-0x2.71p+12 + 0xf.fffffp+124 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (-0x2.71p+12 + 0xf.fffffp+124 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (-0x2.dp+8 + 0xcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (-0x5.fp+4 + 0xcp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: cexp (0x1.f4p+8 + 0x8p+1020 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cexp (0x1.f4p+8 + 0xf.fffffp+124 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cexp (0x2.c5dp+8 + 0xcp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cexp (0x2.c5dp+8 + 0xcp-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cexp (0x3.2p+4 + 0x8p+124 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (0x3.2p+4 + 0x8p+124 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cexp (0x5.8cap+12 + 0x4p-16436 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cexp (0x5.8cp+4 + 0xcp-4 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (0x5.8cp+4 + 0xcp-4 i)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (0x5.ap+8 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Real part of: cexp (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cexp (0xcp-4 + 0x1.4p+0 i)": +ildouble: 1 +ldouble: 1 + +# clog +Test "Real part of: clog (+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (+0 + 0x8p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (+0 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (+0 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (+0 - 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0 - 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0x1.0000000123456p+0 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (-0x1.0000000123456p+0 + 0x1.2345678p-1000 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (-0x1.0000000123456p+0 + 0x4.8d1598p-32 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (-0x1.0000000123456p+0 + 0x4.8d159ep-32 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (-0x1.0000000123456p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (-0x1.000002p+0 + +0 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d1598p-32 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d159ep-32 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d15ap-32 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: clog (-0x1.000002p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (-0x1.234566p-40 - 0x1p+0 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (-0x4p-1076 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0x4p-1076 - 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0x4p-16448 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0x4p-16448 - 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0x4p-16496 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0x4p-16496 - 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0x8p-152 + 0xf.8p+124 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (-0x8p-152 + 0xf.8p+124 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (-0x8p-152 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (-0x8p-152 + 0xf.fffffp+124 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (-0x8p-152 - 0xf.8p+124 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (-0x8p-152 - 0xf.8p+124 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (-0x8p-152 - 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (-0x8p-152 - 0xf.fffffp+124 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (-0x8p-16448 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0x8p-16448 - 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0xf.8p+124 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (-0xf.8p+124 - 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (-0xf.8p+16380 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0xf.8p+16380 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0xf.8p+16380 + 0x4p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0xf.8p+16380 + 0x4p-16496 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0xf.8p+16380 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0xf.8p+16380 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0xf.8p+16380 - 0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0xf.8p+16380 - 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0xf.8p+16380 - 0x4p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0xf.8p+16380 - 0x4p-16496 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0xf.8p+16380 - 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0xf.8p+16380 - 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.0000000000001p+0 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.234566p-60 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.23456789p-1000 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.23456789p-60 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.234568p-60 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.0000000000001p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.000002p+0 + +0 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1.000002p+0 + 0x1.234566p-60 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.000002p+0 + 0x1.23456789p-60 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.000002p+0 + 0x1.234568p-60 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.000002p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1.000566p+0 + 0x4.8dp-12 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x1.000566p+0 + 0x4.8dp-12 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.48e45e3268d8p-4 + 0xf.f2c63p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.48e45e3268d8p-4 + 0xf.f2c64p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.48e45ep-4 + 0xf.f2c63p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1.48e45ep-4 + 0xf.f2c64p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd4e7c0beb59f6acp-4 + 0xf.ed1990460bep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd4e7c0beb59f6acp-4 + 0xf.ed199p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.8907bc3694fd4e7c0beb59f6acp-4 + 0xf.ed19ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd4e7c0beb59f6acp-4 + 0xf.ed19ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd4e7cp-4 + 0xf.ed1990460bdfbf672a9da76bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd4e7cp-4 + 0xf.ed1990460bdfbf7p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd4e7ep-4 + 0xf.ed1990460bdf8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.8907bc3694fd4e7ep-4 + 0xf.ed1990460bdfbf6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd4e7ep-4 + 0xf.ed1990460bep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.8907bc3694fd4p-4 + 0xf.ed1990460bdf8p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd4p-4 + 0xf.ed1990460bdf8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd4p-4 + 0xf.ed1990460bdfbf672a9da76bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd4p-4 + 0xf.ed1990460bdfbf7p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd4p-4 + 0xf.ed1990460bep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.8907bc3694fd5p-4 + 0xf.ed1990460bdf8p-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd5p-4 + 0xf.ed1990460bdf8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd5p-4 + 0xf.ed1990460bdfbf672a9da76bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd5p-4 + 0xf.ed1990460bdfbf7p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd5p-4 + 0xf.ed1990460bep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd5p-4 + 0xf.ed199p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bcp-4 + 0xf.ed1990460bdf8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.8907bcp-4 + 0xf.ed1990460bdfbf7p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bcp-4 + 0xf.ed1990460bep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.8907bcp-4 + 0xf.ed199p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bep-4 + 0xf.ed1990460bdfbf7p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4d1d7a6e08p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4d1d7a6e0948788cb0c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67eccp-4 + 0xf.e6b4d1d7a6e0949p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4d1d7a6e1p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x1.c67eccp-4 + 0xf.e6b4dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4ep-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1.c67ecd92a85944b8p-4 + 0xf.e6b4d1d7a6e0948p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecd92a85944b8p-4 + 0xf.e6b4d1d7a6e0949p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecd92a85944b8p-4 + 0xf.e6b4d1d7a6e1p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecd92a85944b988790cep-4 + 0xf.e6b4d1d7a6e08p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecd92a85944b988790cep-4 + 0xf.e6b4d1d7a6e0948p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.c67ecd92a85944b988790cep-4 + 0xf.e6b4dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecd92a85944bap-4 + 0xf.e6b4d1d7a6e0948788cb0c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecd92a85944bap-4 + 0xf.e6b4d1d7a6e1p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.c67ecd92a85944bap-4 + 0xf.e6b4dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecd92a8594p-4 + 0xf.e6b4d1d7a6e0949p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.c67ecd92a8594p-4 + 0xf.e6b4dp-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecd92a8594p-4 + 0xf.e6b4dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.c67ecd92a8594p-4 + 0xf.e6b4ep-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.c67ecd92a8595p-4 + 0xf.e6b4d1d7a6e08p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecd92a8595p-4 + 0xf.e6b4d1d7a6e08p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecd92a8595p-4 + 0xf.e6b4d1d7a6e0948p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecd92a8595p-4 + 0xf.e6b4d1d7a6e1p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecd92a8595p-4 + 0xf.e6b4dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecep-4 + 0xf.e6b4d1d7a6e08p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.c67ecep-4 + 0xf.e6b4d1d7a6e0948788cb0c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecep-4 + 0xf.e6b4d1d7a6e0949p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.c67ecep-4 + 0xf.e6b4d1d7a6e1p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x1.c67ecep-4 + 0xf.e6b4d1d7a6e1p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1p+0 + 0x4.8d1598p-12 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1p-16440 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1p-16440 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.0ce7b8p-4 + 0xf.de3a2f9df7a4p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.0ce7b8p-4 + 0xf.de3a3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.0ce7ba1e4902p-4 + 0xf.de3a2f9df7a4p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.0ce7ba1e4902p-4 + 0xf.de3a3p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x2.0ce7ba1e4902p-4 + 0xf.de3a3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.0ce7bcp-4 + 0xf.de3a2f9df7a4p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.0ce7bcp-4 + 0xf.de3a3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a361243a89663e84p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a361243a89663e84p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a361243a89663e8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a3612p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a3613p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a38p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b794p-4 + 0xf.cd42ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b281a8p-4 + 0xf.cd42a15bf9a361243a89663e84p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b281a8p-4 + 0xf.cd42a15bf9a361243a89663e8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b281a8p-4 + 0xf.cd42a15bf9a3612p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b281a8p-4 + 0xf.cd42a15bf9a3613p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b281a8p-4 + 0xf.cd42a15bf9a3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b281a8p-4 + 0xf.cd42ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b281a934c6dd315cb2p-4 + 0xf.cd42a15bf9a361243a89663e84p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b281a934c6dd315cb2p-4 + 0xf.cd42a15bf9a361243a89663e8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b281a934c6dd315cb2p-4 + 0xf.cd42a15bf9a3613p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b281a934c6dd315cb2p-4 + 0xf.cd42ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b281a934c6dd315cp-4 + 0xf.cd42a15bf9a3613p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b281a934c6dd315cp-4 + 0xf.cd42a15bf9a38p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b281a934c6dd315cp-4 + 0xf.cd42a15bf9a3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b281a934c6dd315cp-4 + 0xf.cd42ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b281a934c6dd315dp-4 + 0xf.cd42a15bf9a3612p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b281a934c6dd315dp-4 + 0xf.cd42a15bf9a3613p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b281a934c6dd315dp-4 + 0xf.cd42bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b281acp-4 + 0xf.cd42a15bf9a361243a89663e81e8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b281acp-4 + 0xf.cd42a15bf9a361243a89663e81e8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b281acp-4 + 0xf.cd42a15bf9a3612p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b281acp-4 + 0xf.cd42ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42a15bf9a361243a89663e81e8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42a15bf9a361243a89663e84p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42a15bf9a361243a89663e8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42a15bf9a3613p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42a15bf9a38p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42a15bf9a3p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42a15bf9a3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42bp-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b2ap-4 + 0xf.cd42a15bf9a361243a89663e84p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b2ap-4 + 0xf.cd42a15bf9a361243a89663e8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b2ap-4 + 0xf.cd42a15bf9a3612p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b2ap-4 + 0xf.cd42a15bf9a3613p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b2ap-4 + 0xf.cd42a15bf9a3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b2ap-4 + 0xf.cd42ap-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x2.82b798p-4 + 0xf.cd42a15bf9a361243a89663e84p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b798p-4 + 0xf.cd42a15bf9a361243a89663e8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b798p-4 + 0xf.cd42a15bf9a3612p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b798p-4 + 0xf.cd42bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2p-148 + 0x2p-148 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x3.2cdb84p-4 + 0xf.ae888f0455f6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.2cdb855bcb8d8p-4 + 0xf.ae888p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.2cdb855bcb8d8p-4 + 0xf.ae889p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9163276aa8dc2be0945a6p-4 + 0xf.ab873d09e61e797a27ebc9f508p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.3b8f9163276aa8dc2be0945a6p-4 + 0xf.ab873d09e61e797p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.3b8f9163276aa8dc2be0945a6p-4 + 0xf.ab873d09e61ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.3b8f9163276aa8dc2be0945a6p-4 + 0xf.ab874p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9163276aa8dc2be0945a6p-4 + 0xf.ab874p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.3b8f9163276aa8dcp-4 + 0xf.ab873d09e61e797a27ebc9f508p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9163276aa8dcp-4 + 0xf.ab873d09e61e797p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9163276aa8dcp-4 + 0xf.ab873d09e61e8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9163276aa8dcp-4 + 0xf.ab873d09e61ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.3b8f9163276aa8dcp-4 + 0xf.ab873p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9163276aa8ep-4 + 0xf.ab873d09e61e798p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9163276aa8ep-4 + 0xf.ab874p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9163276aap-4 + 0xf.ab873d09e61e797p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9163276aap-4 + 0xf.ab873d09e61ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9163276aap-4 + 0xf.ab873p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.3b8f9163276acp-4 + 0xf.ab873d09e61e797a27ebc9f508p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9163276acp-4 + 0xf.ab873d09e61e798p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f94p-4 + 0xf.ab873d09e61e798p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f94p-4 + 0xf.ab873d09e61e8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.3b8f94p-4 + 0xf.ab873p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x3.3b8f9p-4 + 0xf.ab873d09e61e797p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9p-4 + 0xf.ab873d09e61ep-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aaap-4 + 0xf.a0c58a83e57c772fe5f777d043a8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aaap-4 + 0xf.a0c58a83e57c772fe5f777d044p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aaap-4 + 0xf.a0c58a83e57c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aaap-4 + 0xf.a0c58p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab754p-4 + 0xf.a0c58a83e57c772fe5f777d043a8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab754p-4 + 0xf.a0c58a83e57c772fe5f777d043a8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab754p-4 + 0xf.a0c58a83e57c772fe5f777d044p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab754p-4 + 0xf.a0c58a83e57c772fe5f777d04p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab754p-4 + 0xf.a0c58a83e57c773p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab754p-4 + 0xf.a0c58p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab757d097f83d2e34p-4 + 0xf.a0c58a83e57c772fe5f777d043a8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab757d097f83d2e34p-4 + 0xf.a0c58a83e57c772fe5f777d044p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab757d097f83d2e34p-4 + 0xf.a0c58a83e57c772p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab757d097f83d2e34p-4 + 0xf.a0c58p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab757d097f83d2ep-4 + 0xf.a0c58a83e57c772fe5f777d043a8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab757d097f83d2ep-4 + 0xf.a0c58a83e57c772fe5f777d043a8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab757d097f83d2ep-4 + 0xf.a0c58a83e57c772fe5f777d044p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab757d097f83d2ep-4 + 0xf.a0c58a83e57c772fe5f777d04p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab757d097f83d2ep-4 + 0xf.a0c58a83e57c772p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab757d097f83d2ep-4 + 0xf.a0c58a83e57c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab757d097f83d2ep-4 + 0xf.a0c58a83e57c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab757d097f83d2ep-4 + 0xf.a0c58p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab757d097f83d2ep-4 + 0xf.a0c58p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab757d097f83d2ep-4 + 0xf.a0c59p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab757d097f83d2fp-4 + 0xf.a0c58a83e57c772fe5f777d04p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab757d097f83d2fp-4 + 0xf.a0c58a83e57c772fe5f777d04p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab757d097f83d2fp-4 + 0xf.a0c58a83e57c772p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab757d097f83d2fp-4 + 0xf.a0c58a83e57c773p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab757d097f83d2fp-4 + 0xf.a0c58a83e57c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab757d097f83d2fp-4 + 0xf.a0c58a83e57cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab757d097f83d2fp-4 + 0xf.a0c58a83e57cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab757d097f83d2fp-4 + 0xf.a0c59p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab757d097f83d2fp-4 + 0xf.a0c59p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab758p-4 + 0xf.a0c58a83e57c772fe5f777d043a8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab758p-4 + 0xf.a0c58a83e57c772fe5f777d044p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab758p-4 + 0xf.a0c58a83e57c772p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab758p-4 + 0xf.a0c58a83e57c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aacp-4 + 0xf.a0c58a83e57c772fe5f777d044p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aacp-4 + 0xf.a0c58a83e57c772fe5f777d04p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aacp-4 + 0xf.a0c58a83e57c773p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aacp-4 + 0xf.a0c58p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aacp-4 + 0xf.a0c58p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c58a83e57c772fe5f777d043a8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c58a83e57cp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x3.6e1714p-4 + 0xf.a0c58a83e57cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c58p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x3.6e1714p-4 + 0xf.a0c58p-4 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c59p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x3.6e1714p-4 + 0xf.a0c59p-4 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e171p-4 + 0xf.a0c58a83e57c772fe5f777d043a8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e171p-4 + 0xf.a0c58a83e57c772fe5f777d044p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e171p-4 + 0xf.a0c58a83e57c773p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e171p-4 + 0xf.a0c58a83e57cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e171p-4 + 0xf.a0c58p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e171p-4 + 0xf.a0c58p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.bea2bcp-4 + 0xf.8e3d619a8d118p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x3.bea2bcp-4 + 0xf.8e3d619a8d118p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x3.bea2bcp-4 + 0xf.8e3d619a8d11bfdp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.bea2bcp-4 + 0xf.8e3d619a8d11bfep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bcp-4 + 0xf.8e3d6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bcp-4 + 0xf.8e3d7p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x3.bea2bd62e3501173c8004ccp-4 + 0xf.8e3d6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e3501174p-4 + 0xf.8e3d619a8d118p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.bea2bd62e3501174p-4 + 0xf.8e3d619a8d11bfd30b038eep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e3501174p-4 + 0xf.8e3d619a8d11bfep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e3501174p-4 + 0xf.8e3d6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e3501174p-4 + 0xf.8e3d7p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e350117p-4 + 0xf.8e3d619a8d118p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e350117p-4 + 0xf.8e3d6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e350117p-4 + 0xf.8e3d7p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.bea2bd62e3502p-4 + 0xf.8e3d619a8d11bfd30b038eep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e3502p-4 + 0xf.8e3d619a8d11bfd30b038eep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e3502p-4 + 0xf.8e3d7p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e35p-4 + 0xf.8e3d619a8d11bfdp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e35p-4 + 0xf.8e3d619a8d11bfep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.bea2bd62e35p-4 + 0xf.8e3d6p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x3.bea2cp-4 + 0xf.8e3d619a8d12p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.bea2cp-4 + 0xf.8e3d6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2cp-4 + 0xf.8e3d6p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x3.bea2cp-4 + 0xf.8e3d7p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x3.bea2cp-4 + 0xf.8e3d7p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4eap-4 + 0xf.859b3d1b06d005dcbb5516d544p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4eap-4 + 0xf.859b3d1b06d005dcbb5516d5479p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4eap-4 + 0xf.859b3d1b06d08p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4eap-4 + 0xf.859b3d1b06dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4eap-4 + 0xf.859b3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4ebeacd9c6952d34cp-4 + 0xf.859b3d1b06d005dcbb5516d544p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebeacd9c6952d34cp-4 + 0xf.859b3d1b06d005dcbb5516d548p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4ebeacd9c6952d34cp-4 + 0xf.859b3d1b06d005dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4ebeacd9c6952d34cp-4 + 0xf.859b3d1b06dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebeacd9c6952d34cp-4 + 0xf.859b3d1b06dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4ebeacd9c6952d34cp-4 + 0xf.859b3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebeacd9c6952d34cp-4 + 0xf.859b3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4ebeacd9c6952d34cp-4 + 0xf.859b4p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebeacd9c6952d34p-4 + 0xf.859b3d1b06d005dcbb5516d544p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebeacd9c6952d34p-4 + 0xf.859b3d1b06d005dcbb5516d5479p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4ebeacd9c6952d34p-4 + 0xf.859b4p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebeacd9c6952d35p-4 + 0xf.859b3d1b06d005dcbb5516d548p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4ebeacd9c6952d35p-4 + 0xf.859b3d1b06d005ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebeacd9c6952d35p-4 + 0xf.859b3d1b06dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebeacd9c6952d35p-4 + 0xf.859b3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4ebeacd9c6952d35p-4 + 0xf.859b4p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebeacp-4 + 0xf.859b3d1b06d005dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebeacp-4 + 0xf.859b3d1b06d005ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4ebeacp-4 + 0xf.859b3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebeacp-4 + 0xf.859b4p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebebp-4 + 0xf.859b3d1b06d005dcbb5516d548p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebebp-4 + 0xf.859b3d1b06dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4ebebp-4 + 0xf.859b3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebebp-4 + 0xf.859b4p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ecp-4 + 0xf.859b3d1b06d005dcbb5516d548p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ecp-4 + 0xf.859b3d1b06d08p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ecp-4 + 0xf.859b3d1b06dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ecp-4 + 0xf.859b3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a4p-4 + 0xf.859b3d1b06d005dcbb5516d548p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a4p-4 + 0xf.859b3d1b06d005ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a4p-4 + 0xf.859b3d1b06d08p-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a4p-4 + 0xf.859b3d1b06dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a4p-4 + 0xf.859b3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a4p-4 + 0xf.859b4p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0ap-4 + 0xf.859b3d1b06d005dcbb5516d544p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0ap-4 + 0xf.859b3d1b06d005dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0ap-4 + 0xf.859b3d1b06d08p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x3.e1d0ap-4 + 0xf.859b3p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x3.e1d0ap-4 + 0xf.859b4p-4 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.0dbf78p-4 + 0xf.7a5c1af8e3ce8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.0dbf78p-4 + 0xf.7a5c1af8e3cfp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.0dbf78p-4 + 0xf.7a5c1p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.0dbf7d40fe1acp-4 + 0xf.7a5c1af8e3ce8p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x4.0dbf7d40fe1acp-4 + 0xf.7a5c1af8e3cec09p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.0dbf7d40fe1acp-4 + 0xf.7a5c1p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x4.0dbf7d40fe1acp-4 + 0xf.7a5c2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.0dbf7d40fe1bp-4 + 0xf.7a5c1af8e3cec09p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.0dbf8p-4 + 0xf.7a5c1af8e3cfp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.0dbf8p-4 + 0xf.7a5c2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e368078p-4 + 0xf.5f4a550c9d75e3bb1839d865f0dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.7017a2e368078p-4 + 0xf.5f4a550c9d75e3bb1839d865f0dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e368078p-4 + 0xf.5f4a550c9d75e3cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807acb1e5214b209cp-4 + 0xf.5f4a550c9d75e3bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807acb1e5214b209cp-4 + 0xf.5f4a6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.7017a2e36807acb1e5214b209cp-4 + 0xf.5f4a6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.7017a2e36807acb1e5214b209dep-4 + 0xf.5f4a550c9d75e3cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.7017a2e36807acb1e5214b209dep-4 + 0xf.5f4a550c9d76p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807acb1e5214b209ep-4 + 0xf.5f4a550c9d75e3bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807acb1e5214b209ep-4 + 0xf.5f4a550c9d75e3cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807acb1e5214b209ep-4 + 0xf.5f4a5p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807acb1e5214b209ep-4 + 0xf.5f4a6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807acb8p-4 + 0xf.5f4a550c9d75e3bb1839d865f4p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807acb8p-4 + 0xf.5f4a5p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807acbp-4 + 0xf.5f4a550c9d758p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807acbp-4 + 0xf.5f4a550c9d75e3bb1839d865f0dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807acbp-4 + 0xf.5f4a550c9d75e3bb1839d865fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807acbp-4 + 0xf.5f4a550c9d75e3bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.7017a2e36807acbp-4 + 0xf.5f4a550c9d76p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807cp-4 + 0xf.5f4a550c9d758p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x4.7017a2e36807cp-4 + 0xf.5f4a550c9d75e3bb1839d865f0dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807cp-4 + 0xf.5f4a550c9d75e3bb1839d865f4p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.7017a2e36807cp-4 + 0xf.5f4a5p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a8p-4 + 0xf.5f4a550c9d75e3bb1839d865f4p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.7017a8p-4 + 0xf.5f4a550c9d75e3bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a8p-4 + 0xf.5f4a550c9d76p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x4.7017a8p-4 + 0xf.5f4a6p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x4.7017ap-4 + 0xf.5f4a550c9d758p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017ap-4 + 0xf.5f4a550c9d75e3bb1839d865f0dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017ap-4 + 0xf.5f4a550c9d75e3bb1839d865f4p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017ap-4 + 0xf.5f4a550c9d75e3bb1839d865fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017ap-4 + 0xf.5f4a550c9d75e3bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.d9e8c8p-4 + 0xf.3f30281507d8p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x4.d9e8c8p-4 + 0xf.3f303p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x4.d9e8cp-4 + 0xf.3f30281507d8p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x4.d9e8cp-4 + 0xf.3f303p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x4p-1076 + +0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4p-1076 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4p-1076 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4p-1076 + 0x8p-16444 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4p-1076 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4p-1076 - 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4p-16448 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4p-16448 - 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4p-16496 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4p-16496 - 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.03p-4 + 0xf.31ep-4 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x5.318c58p-4 + 0xf.22363bf989d98p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.318c58p-4 + 0xf.22363bf989d98p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.318c58p-4 + 0xf.22363bf989dap-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x5.318c58p-4 + 0xf.22363p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.318c58p-4 + 0xf.22364p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.318c596a8cb114ep-4 + 0xf.22363bf989d9b5cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x5.318c596a8cb114ep-4 + 0xf.22363p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.318c596a8cb14p-4 + 0xf.22363bf989dap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.318c596a8cb14p-4 + 0xf.22364p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.318c596a8cb1p-4 + 0xf.22363bf989d98p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.318c596a8cb1p-4 + 0xf.22363bf989d9b5cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.318c596a8cb1p-4 + 0xf.22363bf989dap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.318c596a8cb1p-4 + 0xf.22363p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x5.318c596a8cb1p-4 + 0xf.22364p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x5.318c6p-4 + 0xf.22363bf989d98p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.318c6p-4 + 0xf.22363bf989dap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.318c6p-4 + 0xf.22363p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.b06b680ea2ccp-4 + 0xe.f452b965da9fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.b06b680ea2ccp-4 + 0xe.f452bp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x5.b06b68p-4 + 0xe.f452b965da9fp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x5.b06b68p-4 + 0xe.f452bp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x5.b06b7p-4 + 0xe.f452b965da9fp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x5.b06b7p-4 + 0xe.f452bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.b06b7p-4 + 0xe.f452bp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x5.ba8cep-4 + 0xe.f0742p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.dbd1p-4 + 0xe.e387ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.02fd5037c4792efp-4 + 0xe.d3e21p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.02fd5037c4794p-4 + 0xe.d3e2086dcca8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e21p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e2p-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.02fd58p-4 + 0xe.d3e2086dcca8p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.02fd58p-4 + 0xe.d3e21p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x6.02fd58p-4 + 0xe.d3e2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.02fd5p-4 + 0xe.d3e21p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x6.02fd5p-4 + 0xe.d3e2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.02fd5p-4 + 0xe.d3e2p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x6.1c643068cd124p-4 + 0xe.c97c2018b4288p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x6.1c643068cd124p-4 + 0xe.c97c2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.1c643068cd124p-4 + 0xe.c97c3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.1c643068cd125ef6f796a57d2p-4 + 0xe.c97c2018b428p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.1c643068cd125ef6f796a57d2p-4 + 0xe.c97c3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.1c643068cd125ef8p-4 + 0xe.c97c2018b428p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.1c643068cd125ef8p-4 + 0xe.c97c2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.1c643068cd128p-4 + 0xe.c97c2p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x6.1c6438p-4 + 0xe.c97c2018b428257p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c2018b4288p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c2018b428p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c3p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x6.1c643p-4 + 0xe.c97c2018b4288p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.2aff83ae6467cb019p-4 + 0xe.c36a6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.2aff83ae6467cb08p-4 + 0xe.c36a599a86ba8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.2aff83ae6467cb08p-4 + 0xe.c36a599a86bbp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.2aff83ae6467cbp-4 + 0xe.c36a599a86ba8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.2aff83ae6467cbp-4 + 0xe.c36a599a86ba8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.2aff83ae6467cbp-4 + 0xe.c36a599a86baf8febep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.2aff83ae6467cp-4 + 0xe.c36a599a86ba8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.2aff83ae6467cp-4 + 0xe.c36a599a86baf8fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.2aff83ae6467cp-4 + 0xe.c36a599a86baf9p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.2aff83ae6467cp-4 + 0xe.c36a6p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x6.2aff83ae6467cp-4 + 0xe.c36a6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.2aff83ae6468p-4 + 0xe.c36a599a86ba8p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.2aff83ae6468p-4 + 0xe.c36a5p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.2aff88p-4 + 0xe.c36a599a86ba8p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x6.2aff88p-4 + 0xe.c36a599a86baf9p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.59feap-4 + 0xe.af6f9p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.b10b48p-4 + 0xe.8893cbb44925p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x6.b10b48p-4 + 0xe.8893cbb44925p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.b10b48p-4 + 0xe.8893dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.b10b4f3520214p-4 + 0xe.8893cbb44925p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.b10b4f3520214p-4 + 0xe.8893cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.b10b4f3520217b6p-4 + 0xe.8893cbb449253a1p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.b10b4f3520218p-4 + 0xe.8893cbb449253a1p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.b10b4f3520218p-4 + 0xe.8893cbb44925p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.b10b4f3520218p-4 + 0xe.8893cbb44925p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.b10b4f3520218p-4 + 0xe.8893cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.b10b4f3520218p-4 + 0xe.8893dp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x6.b10b4f3520218p-4 + 0xe.8893dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.b10b5p-4 + 0xe.8893cbb449258p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x6.b10b5p-4 + 0xe.8893cbb449258p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.b10b5p-4 + 0xe.8893cbb44925p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e028p-4 + 0xd.e655e694e510a94307614f1a77b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e028p-4 + 0xd.e655e694e510a94p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca921b40e028p-4 + 0xd.e655e694e510a95p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e028p-4 + 0xd.e655e694e511p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca921b40e028p-4 + 0xd.e655fp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x7.eca921b40e02ae1319143490849p-4 + 0xd.e655e694e5108p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae1319143490849p-4 + 0xd.e655e694e510a94307614f1a77b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca921b40e02ae1319143490849p-4 + 0xd.e655e694e510a94307614f1a78p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae1319143490849p-4 + 0xd.e655e694e510a94p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae1319143490849p-4 + 0xd.e655e694e511p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca921b40e02ae1319143490849p-4 + 0xd.e655fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca921b40e02ae131914349084p-4 + 0xd.e655e694e5108p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca921b40e02ae131914349084p-4 + 0xd.e655e694e510a94307614f1a74p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae131914349084p-4 + 0xd.e655e694e510a94307614f1a77b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca921b40e02ae131914349084p-4 + 0xd.e655e694e510a94307614f1a78p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae131914349084p-4 + 0xd.e655e694e510a94307614f1a78p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae131914349084p-4 + 0xd.e655e694e510a94p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae131914349084p-4 + 0xd.e655e694e510a95p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae131914349084p-4 + 0xd.e655e694e511p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca921b40e02ae131914349084p-4 + 0xd.e655fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae131914349086p-4 + 0xd.e655e694e5108p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca921b40e02ae131914349086p-4 + 0xd.e655e694e510a94307614f1a74p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae131914349086p-4 + 0xd.e655e694e510a94307614f1a77b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca921b40e02ae131914349086p-4 + 0xd.e655e694e510a94p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae131914349086p-4 + 0xd.e655e694e511p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae18p-4 + 0xd.e655e694e5108p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae18p-4 + 0xd.e655e694e510a94307614f1a74p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca921b40e02ae18p-4 + 0xd.e655e694e510a94307614f1a77b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae18p-4 + 0xd.e655ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae18p-4 + 0xd.e655fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae1p-4 + 0xd.e655e694e510a94307614f1a77b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca921b40e02ae1p-4 + 0xd.e655e694e510a94307614f1a78p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae1p-4 + 0xd.e655e694e510a94p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae1p-4 + 0xd.e655e694e511p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02cp-4 + 0xd.e655e694e5108p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02cp-4 + 0xd.e655e694e510a94307614f1a78p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02cp-4 + 0xd.e655e694e510a94p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02cp-4 + 0xd.e655e694e510a95p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02cp-4 + 0xd.e655fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca928p-4 + 0xd.e655e694e5108p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x7.eca928p-4 + 0xd.e655e694e510a94307614f1a77b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca928p-4 + 0xd.e655e694e510a94307614f1a78p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca928p-4 + 0xd.e655e694e510a94p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca928p-4 + 0xd.e655ep-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x7.eca928p-4 + 0xd.e655fp-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x7.eca928p-4 + 0xd.e655fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca92p-4 + 0xd.e655e694e5108p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca92p-4 + 0xd.e655e694e510a94307614f1a77b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca92p-4 + 0xd.e655e694e510a94307614f1a78p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca92p-4 + 0xd.e655ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca92p-4 + 0xd.e655fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca10d384p-4 + 0xd.e2d65939160b31066ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8d20a1eca10d384p-4 + 0xd.e2d65p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca10d8p-4 + 0xd.e2d65p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca10d8p-4 + 0xd.e2d66p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca10dp-4 + 0xd.e2d65939160b311p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8d20a1eca10dp-4 + 0xd.e2d65939160b31p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca10dp-4 + 0xd.e2d65939160b31p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca10dp-4 + 0xd.e2d65939160bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca10dp-4 + 0xd.e2d65p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d65939160b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d65939160bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d65p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d65p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d66p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d66p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8d20a1ecap-4 + 0xd.e2d65939160b31p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1ecap-4 + 0xd.e2d65939160b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1ecap-4 + 0xd.e2d65939160bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8d20a1ecap-4 + 0xd.e2d65p-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1ecap-4 + 0xd.e2d65p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8d8p-4 + 0xd.e2d65939160b31066ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d8p-4 + 0xd.e2d65939160b31066ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8d8p-4 + 0xd.e2d65939160b8p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d8p-4 + 0xd.e2d66p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8dp-4 + 0xd.e2d65939160b311p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8dp-4 + 0xd.e2d65939160b311p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8dp-4 + 0xd.e2d65939160b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8dp-4 + 0xd.e2d65939160bp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x7.f2c8dp-4 + 0xd.e2d65p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f4b083cb0bp-4 + 0xd.e1bf04f3688p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f4b088p-4 + 0xd.e1bf04f3688p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x7.f4b088p-4 + 0xd.e1bfp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f4b08p-4 + 0xd.e1bf04f3688p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x8.88faep-4 + 0xd.888bcp-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x8.88faep-4 + 0xd.888bdp-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x8.88faep-4 + 0xd.888bdp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x8.88fafp-4 + 0xd.888bdp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x8.ecbf810c4ae6p-4 + 0xd.479468b09a37p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x8.ecbf810c4ae6p-4 + 0xd.47946p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x8.ecbf810c4ae6p-4 + 0xd.47946p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x8.ecbf8p-4 + 0xd.479468b09a37p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x8.ecbf8p-4 + 0xd.479468b09a37p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x8.ecbf8p-4 + 0xd.47946p-4 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x8.ecbf9p-4 + 0xd.479468b09a37p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x8.ecbf9p-4 + 0xd.479468b09a37p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x8p-1076 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x8p-1076 + 0x8p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x8p-1076 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x8p-152 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x8p-152 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x8p-152 + 0x8p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x8p-152 + 0x8p-16444 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x8p-152 + 0xf.8p+124 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x8p-152 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x8p-152 - 0xf.8p+124 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x8p-152 - 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x8p-16448 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x8p-16448 - 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.a9cp-4 + 0xc.c0ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.a9cp-4 + 0xc.c0ap-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x9.b386fc56b9688p-4 + 0xc.b9317c470b4085cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.b386fc56b9688p-4 + 0xc.b9317c470b408p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.b386fc56b9688p-4 + 0xc.b9317c470b41p-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.b386fc56b9688p-4 + 0xc.b9317p-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.b386fc56b968a66p-4 + 0xc.b9317c470b41p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.b386fc56b968a66p-4 + 0xc.b9317p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.b386fc56b969p-4 + 0xc.b9317p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.b386fp-4 + 0xc.b9317c470b41p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.b386fp-4 + 0xc.b9317p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x9.b386fp-4 + 0xc.b9317p-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.b387p-4 + 0xc.b9317c470b408p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x9.b57bp-4 + 0xc.b7b4p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a246ba85a5c8p-4 + 0xc.ae53de1d5a7c8bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a246ba85a5c8p-4 + 0xc.ae53de1d5a7c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a246ba85a5c8p-4 + 0xc.ae53de1d5a7c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a246ba85a5c8p-4 + 0xc.ae53dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a246ba85a5c8p-4 + 0xc.ae53ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a246bap-4 + 0xc.ae53de1d5a7c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a246bap-4 + 0xc.ae53ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a246bbp-4 + 0xc.ae53de1d5a7c8bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a246bbp-4 + 0xc.ae53de1d5a7c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a246bbp-4 + 0xc.ae53dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53de1d5a7c8bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53de1d5a7c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53de1d5a7dp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53dp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53ep-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53de1d5a7c8b1p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53de1d5a7c8p-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53dp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53ep-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x9.c1b6ap-4 + 0xc.ae53de1d5a7c8b0f6df3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ap-4 + 0xc.ae53de1d5a7c8b0f6df3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ap-4 + 0xc.ae53de1d5a7c8bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ap-4 + 0xc.ae53de1d5a7c8bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ap-4 + 0xc.ae53de1d5a7dp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x9.c1b6ap-4 + 0xc.ae53dp-4 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ap-4 + 0xc.ae53ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ap-4 + 0xc.ae53ep-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x9.c1b6bp-4 + 0xc.ae53de1d5a7c8bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6bp-4 + 0xc.ae53dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd4928p-4 + 0xc.42a51a3c05c18p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd4928p-4 + 0xc.42a51a3c05c199f62998856b84p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd4928p-4 + 0xc.42a51a3c05c199fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd4928p-4 + 0xc.42a51p-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7e54a156f1504p-4 + 0xc.42a51a3c05c199f62998856b8008p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7e54a156f1504p-4 + 0xc.42a51a3c05c2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7e54a156f1504p-4 + 0xc.42a52p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7e54a156f15065p-4 + 0xc.42a51a3c05c199f62998856b84p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd492c7e54a156f15065p-4 + 0xc.42a51a3c05c199f62998856b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd492c7e54a156f15065p-4 + 0xc.42a51a3c05c199fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7e54a156f15065p-4 + 0xc.42a51a3c05c19ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7e54a156f15065p-4 + 0xc.42a51a3c05c2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd492c7e54a156f15065p-4 + 0xc.42a51p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd492c7e54a156f15065p-4 + 0xc.42a52p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7e54a156f15065p-4 + 0xc.42a52p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7e54a156f1508p-4 + 0xc.42a51a3c05c199f62998856b84p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7e54a156f1508p-4 + 0xc.42a51a3c05c199fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd492c7e54a156f1508p-4 + 0xc.42a51a3c05c19ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7e54a156f1508p-4 + 0xc.42a51a3c05c2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd492c7e54a156f1508p-4 + 0xc.42a51p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd492c7e54a156f1508p-4 + 0xc.42a52p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7e54a156f1508p-4 + 0xc.42a52p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd492c7ep-4 + 0xc.42a51a3c05c18p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd492c7ep-4 + 0xc.42a51a3c05c199f62998856b8008p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7ep-4 + 0xc.42a51a3c05c199f62998856b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7ep-4 + 0xc.42a51a3c05c199fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7ep-4 + 0xc.42a51a3c05c19ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7fp-4 + 0xc.42a51a3c05c18p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7fp-4 + 0xc.42a51a3c05c199f62998856b84p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd492c7fp-4 + 0xc.42a51a3c05c199f62998856b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7fp-4 + 0xc.42a51a3c05c199f62998856b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7fp-4 + 0xc.42a51a3c05c19ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7fp-4 + 0xc.42a51p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd493p-4 + 0xc.42a51a3c05c199f62998856b8008p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd493p-4 + 0xc.42a51a3c05c199f62998856b8008p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd493p-4 + 0xc.42a51a3c05c199f62998856b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd493p-4 + 0xc.42a51a3c05c199f62998856b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd493p-4 + 0xc.42a51a3c05c2p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd493p-4 + 0xc.42a52p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0cp-4 + 0xc.42a51a3c05c18p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0cp-4 + 0xc.42a51a3c05c199f62998856b84p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0cp-4 + 0xc.42a51a3c05c199f62998856b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0cp-4 + 0xc.42a51a3c05c2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0cp-4 + 0xc.42a51p-4 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0cp-4 + 0xc.42a51p-4 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0dp-4 + 0xc.42a51a3c05c199f62998856b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0dp-4 + 0xc.42a51a3c05c199f62998856b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0dp-4 + 0xc.42a51a3c05c199fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624342dfb1b08p-4 + 0xb.e867932966df58ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc57e2624342dfb1b08p-4 + 0xb.e8679p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc57e2624342dfb1b08p-4 + 0xb.e867ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc57e2624342dfp-4 + 0xb.e867932966df5894a70c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624342dfp-4 + 0xb.e867932966df589p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc57e2624342dfp-4 + 0xb.e867932966dfp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc57e2624342dfp-4 + 0xb.e8679p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624342ep-4 + 0xb.e867932966df589p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc57e2624342ep-4 + 0xb.e8679p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624342ep-4 + 0xb.e867ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624348p-4 + 0xb.e867932966df5894a70c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624348p-4 + 0xb.e867932966df58ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624348p-4 + 0xb.e867932966df8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc57e2624348p-4 + 0xb.e8679p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624348p-4 + 0xb.e867ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc57e262434p-4 + 0xb.e867932966df5894a70c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc57e262434p-4 + 0xb.e867932966df8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e262434p-4 + 0xb.e867932966dfp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc57p-4 + 0xb.e867932966df8p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xa.afc57p-4 + 0xb.e867932966df8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc58p-4 + 0xb.e867932966df5894a70c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc58p-4 + 0xb.e867932966dfp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc58p-4 + 0xb.e8679p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xa.afc58p-4 + 0xb.e867ap-4 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog (0xa.b96da19075eap-8 + 0xf.fc67818f89d2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.b96da19075eap-8 + 0xf.fc679p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xa.b96da19075eap-8 + 0xf.fc679p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc67818f89d2p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc678p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0xa.b96dap-8 + 0xf.fc678p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc679p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0xa.b96dbp-8 + 0xf.fc67818f89d2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.e7de8cc868ff8p-4 + 0xb.b51cbp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xa.e7de8cc868ff8p-4 + 0xb.b51ccp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xa.e7de8p-4 + 0xb.b51cb9f04d4dp-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.e7de8p-4 + 0xb.b51cbp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xa.e7de9p-4 + 0xb.b51cb9f04d4dp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0xa.e7de9p-4 + 0xb.b51cbp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.e7de9p-4 + 0xb.b51cbp-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0xa.e7de9p-4 + 0xb.b51ccp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e528a043561d0f42p-4 + 0xb.b0f2405504a68p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.ec55b7682e528a1p-4 + 0xb.b0f2405504a6058859a584e748p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e528a1p-4 + 0xb.b0f2405504a6059p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e528a1p-4 + 0xb.b0f2405504a68p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.ec55b7682e528a1p-4 + 0xb.b0f2405504a6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e528a1p-4 + 0xb.b0f24p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e528ap-4 + 0xb.b0f2405504a68p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e528ap-4 + 0xb.b0f25p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.ec55b7682e528p-4 + 0xb.b0f2405504a6059p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e528p-4 + 0xb.b0f2405504a68p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e528p-4 + 0xb.b0f2405504a6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.ec55b7682e528p-4 + 0xb.b0f24p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e53p-4 + 0xb.b0f2405504a6058859a584e748p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.ec55bp-4 + 0xb.b0f2405504a6059p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55bp-4 + 0xb.b0f2405504a6059p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55bp-4 + 0xb.b0f2405504a68p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55bp-4 + 0xb.b0f24p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.ec55cp-4 + 0xb.b0f2405504a6058859a584e748p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55cp-4 + 0xb.b0f2405504a6058859a584e748p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55cp-4 + 0xb.b0f2405504a6059p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.ec55cp-4 + 0xb.b0f2405504a68p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xa.ec55cp-4 + 0xb.b0f2405504a6p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xa.ec55cp-4 + 0xb.b0f24p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.ec55cp-4 + 0xb.b0f25p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0xa.ec55cp-4 + 0xb.b0f25p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xb.263a77543bp-4 + 0xb.79c9ap-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xb.263a77543bp-4 + 0xb.79c9ap-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xb.263a7p-4 + 0xb.79c9ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xb.263a7p-4 + 0xb.79c9bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xb.263a8p-4 + 0xb.79c9bp-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0xb.263a8p-4 + 0xb.79c9bp-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+124 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xf.8p+124 - 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xf.8p+16380 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 + 0x4p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 + 0x4p-16496 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 + 0xf.ffffffffffff8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 + 0xf.fffffp+124 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 - 0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 - 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 - 0x4p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 - 0x4p-16496 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 - 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 - 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xf.ffffffffffff8p+1020 + 0x8p+1020 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0xf.ffffffffffff8p+1020 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.ffffffffffffbffffffffffffcp+1020 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.fffffp+124 + 0x8p+1020 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0xf.fffffp+124 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.fffffp-4 + +0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.fffffp-4 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.fffffp-4 + 0x8p-152 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.fffffp-4 + 0xf.ffffffffffff8p-1004 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.fffffp-4 + 0xf.fffffffffffffffp-15004 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.fffffp-4 + 0xf.fffffp-104 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# clog10 +Test "Imaginary part of: clog10 (-0 + inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-0 - inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-30 i)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-30 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-0x1.fp+1023 + 0x1p-1074 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-0x1.fp+1023 - 0x1p-1074 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-0x1.fp+127 + 0x1p-149 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-0x1.fp+127 - 0x1p-149 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-0x1p-1074 + 0x1.fp+1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-0x1p-1074 - 0x1.fp+1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-0x1p-149 + 0x1.fp+127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-0x1p-149 - 0x1.fp+127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-1.0 + 0x1.234566p-20 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (-2 - 3 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (-2 - 3 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (-3 + inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-3 - inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-inf + 0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-inf + 1 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-inf + inf i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-inf - 0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-inf - 1 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0 + inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0 - inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0.75 + 1.25 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x0.fffffffffffff8p0 + 0x0.fffffffffffff8p-1000 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x0.ffffffp0 + 0x0.ffffffp-100 i)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x1.00000000000000123456789abcp0 + 0x1.23456789p-1000 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x1.00000000000000123456789abcp0 + 0x1.23456789p-1000 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x1.00000000000000123456789abcp0 + 0x1.23456789p-60 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x1.000566p0 + 0x1.234p-10 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1.000566p0 + 0x1.234p-10 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: clog10 (0x1.000566p0 + 0x1.234p-100 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1.000566p0 + 0x1.234p-100 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x1.234566p-30 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog10 (0x1.234566p-50 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x1.234566p-50 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog10 (0x1.234566p-60 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x1.234566p-60 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1.fffffep+127 + 0x1.fffffep+127 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: clog10 (0x1.fffffep+127 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1.fffffffffffffp+1023 + 0x1p+1023 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x1.fp+16383 + 0x1.fp+16383 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x1.fp+16383 + 0x1p+16383 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x10673dd0f2481p-51 + 0x7ef1d17cefbd2p-51 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x1415bcaf2105940d49a636e98ae59p-115 + 0x7e6a150adfcd1b0921d44b31f40f4p-115 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x15cfbd1990d1ffp-53 + 0x176a3973e09a9ap-53 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x164c74eea876p-45 + 0x16f393482f77p-45 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1a6p-10 + 0x3a5p-10 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x1df515eb171a808b9e400266p-95 + 0x7c71eb0cd4688dfe98581c77p-95 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x1df515eb171a808b9e400266p-95 + 0x7c71eb0cd4688dfe98581c77p-95 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x1p-1073 + 0x1p-1073 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1p-1074 + 0x1.fp+1023 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x1p-1074 + 0x1p-1074 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1p-1074 + 0x1p-1074 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1p-1074 - 0x1.fp+1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1p-147 + 0x1p-147 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1p-149 + 0x1.fp+127 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1p-149 + 0x1p-149 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1p-149 - 0x1.fp+127 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1p-509 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1p-510 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1p-511 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1p-61 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1p-62 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1p-63 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: clog10 (0x2818p-15 + 0x798fp-15 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x2818p-15 + 0x798fp-15 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x2dd46725bp-35 + 0x7783a1284p-35 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x3f96469050f650869c2p-75 + 0x6f16b2c9c8b05988335p-75 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x4447d7175p-35 + 0x6c445e00ap-35 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x4d4ep-15 + 0x6605p-15 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x4d4ep-15 + 0x6605p-15 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x4d9c37e2b5cb4533p-63 + 0x65c98be2385a042ep-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x55cb6d0c83af5p-55 + 0x7fe33c0c7c4e90p-55 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x5b06b680ea2ccp-52 + 0xef452b965da9fp-52 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x602fd5037c4792efp-64 + 0xed3e2086dcca80b8p-64 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x6241ef0da53f539f02fad67dabp-106 + 0x3fb46641182f7efd9caa769dac0p-106 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x659feap-24 + 0xeaf6f9p-24 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x659feap-24 + 0xeaf6f9p-24 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x6b10b4f3520217b6p-64 + 0xe8893cbb449253a1p-64 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x9b57bp-20 + 0xcb7b4p-20 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0xdb85c467ee2aadd5f425fe0f4b8dp-114 + 0x3e83162a0f95f1dcbf97dddf410eap-114 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0xf2p-10 + 0x3e3p-10 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0xf2p-10 + 0x3e3p-10 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0xfd95243681c055c2632286921092p-113 + 0x1bccabcd29ca2152860ec29e34ef7p-113 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: clog10 (0xfe961079616p-45 + 0x1bc37e09e6d1p-45 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (1.0 + 0x1.234566p-10 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (3 + inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (3 - inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (inf + inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (inf - inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# cos +Test "cos (-0xf.ffffffffffff8p+1020)": +ildouble: 1 +ldouble: 1 +Test "cos (-0xf.ffffffffffffbffffffffffffcp+1020)": +ildouble: 1 +ldouble: 1 +Test "cos (-0xf.fffffffffffffffffffffffffff8p+16380)": +ildouble: 1 +ldouble: 1 +Test "cos (-0xf.fffffffffffffffp+16380)": +ildouble: 1 +ldouble: 1 +Test "cos (0x1.921fb54442d1846ap+0)": +ildouble: 1 +ldouble: 1 +Test "cos (0x1.921fb54442d18p+0)": +ildouble: 1 +ldouble: 1 +Test "cos (0x1p+120)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos (0x1p+28)": +ildouble: 1 +ldouble: 1 +Test "cos (0x2.182a4705ae6cb08cb7665c1eacf6p+0)": +ildouble: 1 +ldouble: 1 +Test "cos (0x2.182a4705ae6ccp+0)": +ildouble: 1 +ldouble: 1 +Test "cos (0x3p+0)": +ildouble: 1 +ldouble: 1 +Test "cos (0x7p+0)": +float: 1 +ifloat: 1 +Test "cos (0x8p+124)": +float: 1 +ifloat: 1 +Test "cos (0xap+0)": +ildouble: 1 +ldouble: 1 +Test "cos (0xf.ffffffffffff8p+1020)": +ildouble: 1 +ldouble: 1 +Test "cos (0xf.ffffffffffffbffffffffffffcp+1020)": +ildouble: 1 +ldouble: 1 +Test "cos (0xf.fffffffffffffffffffffffffff8p+16380)": +ildouble: 1 +ldouble: 1 +Test "cos (0xf.fffffffffffffffp+16380)": +ildouble: 1 +ldouble: 1 + +# cos_downward +Test "cos_downward (-0x2p-16384)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (-0x4p-1024)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (-0x4p-1076)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (-0x4p-128)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (-0x4p-16384)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (-0x4p-16448)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (-0x4p-16496)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (-0x8p-152)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (-0x8p-16448)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (-0x8p-972)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (-0xf.ffffffffffff8p+1020)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (-0xf.ffffffffffffbffffffffffffcp+1020)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (-0xf.fffffffffffffffffffffffffff8p+16380)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (-0xf.fffffffffffffffp+16380)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (-0xf.fffffp+124)": +double: 1 +idouble: 1 +Test "cos_downward (0x1.000000cf4a2a2p+0)": +double: 1 +idouble: 1 +Test "cos_downward (0x1.0000010b239a9p+0)": +double: 1 +idouble: 1 +Test "cos_downward (0x1.00000162a932bp+0)": +double: 1 +idouble: 1 +Test "cos_downward (0x1.000002d452a1p+0)": +double: 1 +idouble: 1 +Test "cos_downward (0x1.000002p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "cos_downward (0x1.000004p+0)": +float: 1 +ifloat: 1 +Test "cos_downward (0x1.000006p+0)": +float: 1 +ifloat: 1 +Test "cos_downward (0x1.0c1522p+0)": +float: 1 +ifloat: 1 +Test "cos_downward (0x1.0c152382d7365p+0)": +double: 1 +idouble: 1 +Test "cos_downward (0x1.0c1524p+0)": +float: 1 +ifloat: 1 +Test "cos_downward (0x1.921fb4p+0)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "cos_downward (0x1.921fb54442d18468p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x1.921fb54442d18469898cc517018p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x1.921fb54442d18469898cc51701b8p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x1.921fb54442d18469898cc51702p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x1.921fb54442d1846ap+0)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x1.921fb54442d18p+0)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "cos_downward (0x1.921fb54442d19p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x1.921fb6p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "cos_downward (0x1p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "cos_downward (0x1p+120)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x1p+28)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x2.182a44p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "cos_downward (0x2.182a4705ae6cap+0)": +double: 1 +idouble: 1 +Test "cos_downward (0x2.182a4705ae6cb08cb7665c1eacf4p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x2.182a4705ae6cb08cb7665c1eacf6p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x2.182a4705ae6cb08cb7665c1eadp+0)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x2.182a4705ae6cb08cp+0)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x2.182a4705ae6cb09p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x2.182a4705ae6ccp+0)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x2.182a48p+0)": +float: 1 +ifloat: 1 +Test "cos_downward (0x2.1e19e0c9bab24p+72)": +double: 1 +idouble: 1 +Test "cos_downward (0x2.1e19e4p+72)": +double: 1 +idouble: 1 +Test "cos_downward (0x2.1e19ep+72)": +double: 1 +idouble: 1 +Test "cos_downward (0x2p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x2p-16384)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x3p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x4p+48)": +double: 1 +idouble: 1 +Test "cos_downward (0x4p-1024)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x4p-1076)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x4p-128)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x4p-16384)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x4p-16448)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x4p-16496)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x8p+0)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "cos_downward (0x8p+1020)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x8p-152)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x8p-16448)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x8p-972)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (0x9p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (0xa.217bap+12)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (0xap+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (0xc.d4966d92d1708p-4)": +double: 1 +idouble: 1 +Test "cos_downward (0xc.d4966d92d171p-4)": +double: 1 +idouble: 1 +Test "cos_downward (0xc.d4966p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "cos_downward (0xc.d4967p-4)": +float: 1 +ifloat: 1 +Test "cos_downward (0xcp-4)": +double: 1 +idouble: 1 +Test "cos_downward (0xf.ffffffffffff8p+1020)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_downward (0xf.ffffffffffffbffffffffffffcp+1020)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0xf.fffffffffffffffffffffffffff8p+16380)": +ildouble: 1 +ldouble: 1 +Test "cos_downward (0xf.fffffffffffffffp+16380)": +ildouble: 2 +ldouble: 2 +Test "cos_downward (0xf.fffffp+124)": +double: 1 +idouble: 1 + +# cos_tonearest +Test "cos_tonearest (-0xf.ffffffffffff8p+1020)": +ildouble: 1 +ldouble: 1 +Test "cos_tonearest (-0xf.ffffffffffffbffffffffffffcp+1020)": +ildouble: 1 +ldouble: 1 +Test "cos_tonearest (-0xf.fffffffffffffffffffffffffff8p+16380)": +ildouble: 1 +ldouble: 1 +Test "cos_tonearest (-0xf.fffffffffffffffp+16380)": +ildouble: 1 +ldouble: 1 +Test "cos_tonearest (0x1.921fb54442d1846ap+0)": +ildouble: 1 +ldouble: 1 +Test "cos_tonearest (0x1.921fb54442d18p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_tonearest (0x1p+120)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_tonearest (0x1p+28)": +ildouble: 1 +ldouble: 1 +Test "cos_tonearest (0x2.182a4705ae6cb08cb7665c1eacf6p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_tonearest (0x2.182a4705ae6ccp+0)": +ildouble: 1 +ldouble: 1 +Test "cos_tonearest (0x3p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_tonearest (0x7p+0)": +float: 1 +ifloat: 1 +Test "cos_tonearest (0x8p+124)": +float: 1 +ifloat: 1 +Test "cos_tonearest (0xap+0)": +ildouble: 1 +ldouble: 1 +Test "cos_tonearest (0xf.ffffffffffff8p+1020)": +ildouble: 1 +ldouble: 1 +Test "cos_tonearest (0xf.ffffffffffffbffffffffffffcp+1020)": +ildouble: 1 +ldouble: 1 +Test "cos_tonearest (0xf.fffffffffffffffffffffffffff8p+16380)": +ildouble: 1 +ldouble: 1 +Test "cos_tonearest (0xf.fffffffffffffffp+16380)": +ildouble: 1 +ldouble: 1 + +# cos_towardzero +Test "cos_towardzero (-0x2p-16384)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (-0x4p-1024)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (-0x4p-1076)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (-0x4p-128)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (-0x4p-16384)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (-0x4p-16448)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (-0x4p-16496)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (-0x8p-152)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (-0x8p-16448)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (-0x8p-972)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (-0xf.fffffffffffffffp+16380)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (-0xf.fffffp+124)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x1.000000cf4a2a2p+0)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x1.0000010b239a9p+0)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x1.00000162a932bp+0)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x1.000002d452a1p+0)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x1.000002p+0)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x1.0c152382d7365p+0)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x1.921fb54442d18469898cc51701b8p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x1.921fb54442d18469898cc51701b9p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x1.921fb54442d18p+0)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x1.921fb54442d19p+0)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x1.921fb6p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x1p+0)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x1p+120)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "cos_towardzero (0x2.182a44p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x2.182a4705ae6cap+0)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x2.182a4705ae6cb08cb7665c1eacp+0)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x2.182a4705ae6ccp+0)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x2.182a48p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x2.1e19e0c9bab24p+72)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x2.1e19e4p+72)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x2.1e19ep+72)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x2p+0)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x2p-16384)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x4p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x4p+48)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x4p-1024)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x4p-1076)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x4p-128)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x4p-16384)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x4p-16448)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x4p-16496)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x8p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x8p+1020)": +double: 1 +idouble: 1 +Test "cos_towardzero (0x8p-152)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x8p-16448)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0x8p-972)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0xa.217bap+12)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0xc.d4966d92d1708p-4)": +double: 1 +idouble: 1 +Test "cos_towardzero (0xc.d4966d92d171p-4)": +double: 1 +idouble: 1 +Test "cos_towardzero (0xc.d4966p-4)": +double: 1 +idouble: 1 +Test "cos_towardzero (0xcp-4)": +double: 1 +idouble: 1 +Test "cos_towardzero (0xf.fffffffffffffffp+16380)": +ildouble: 1 +ldouble: 1 +Test "cos_towardzero (0xf.fffffp+124)": +double: 1 +idouble: 1 + +# cos_upward +Test "cos_upward (-0x2p+64)": +double: 1 +idouble: 1 +Test "cos_upward (-0xf.ffffffffffff8p+1020)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (-0xf.ffffffffffffbffffffffffffcp+1020)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (-0xf.fffffffffffffffffffffffffff8p+16380)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x1.000002p+0)": +float: 1 +ifloat: 1 +Test "cos_upward (0x1.000004p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "cos_upward (0x1.000005bc7d86dp+0)": +double: 1 +idouble: 1 +Test "cos_upward (0x1.000006p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "cos_upward (0x1.0c1522p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "cos_upward (0x1.0c152382d7366p+0)": +double: 1 +idouble: 1 +Test "cos_upward (0x1.0c1524p+0)": +double: 1 +idouble: 1 +Test "cos_upward (0x1.921fb4p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x1.921fb54442d18468p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x1.921fb54442d18469898cc517018p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x1.921fb54442d18469898cc51701b9p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x1.921fb54442d18469898cc51702p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x1.921fb54442d1846ap+0)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x1.921fb54442d18p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x1.921fb54442d19p+0)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "cos_upward (0x1.921fb6p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x1p+0)": +float: 1 +ifloat: 1 +Test "cos_upward (0x1p+120)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x1p+28)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x2.182a44p+0)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "cos_upward (0x2.182a4705ae6cap+0)": +ildouble: 2 +ldouble: 2 +Test "cos_upward (0x2.182a4705ae6cb08cb7665c1eacf4p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x2.182a4705ae6cb08cb7665c1eacf6p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x2.182a4705ae6cb08cb7665c1eacp+0)": +ildouble: 2 +ldouble: 2 +Test "cos_upward (0x2.182a4705ae6cb08cb7665c1eadp+0)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x2.182a4705ae6cb08cp+0)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x2.182a4705ae6cb09p+0)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x2.182a4705ae6ccp+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x2.182a48p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "cos_upward (0x2.1e19e4p+72)": +float: 1 +ifloat: 1 +Test "cos_upward (0x2p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x2p+64)": +double: 1 +idouble: 1 +Test "cos_upward (0x3p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x4p+0)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "cos_upward (0x5p+0)": +double: 1 +idouble: 1 +Test "cos_upward (0x6p+0)": +double: 1 +idouble: 1 +Test "cos_upward (0x7p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "cos_upward (0x8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x8p+1020)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cos_upward (0x8p+124)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "cos_upward (0x9p+0)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "cos_upward (0xa.217bap+12)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "cos_upward (0xap+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cos_upward (0xc.d4966p-4)": +float: 1 +ifloat: 1 +Test "cos_upward (0xc.d4967p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "cos_upward (0xf.ffffcp+124)": +double: 1 +idouble: 1 +Test "cos_upward (0xf.ffffffffffff8p+1020)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0xf.ffffffffffffbffffffffffffcp+1020)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0xf.fffffffffffffffffffffffffff8p+16380)": +ildouble: 1 +ldouble: 1 +Test "cos_upward (0xf.fffffffffffffffp+16380)": +ildouble: 1 +ldouble: 1 + +# cosh +Test "cosh (-0x1p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cosh (-0x2.c5d374p+12)": +ldouble: 1 +Test "cosh (-0x2.c5d37700c6bb03a4p+12)": +ldouble: 1 +Test "cosh (-0x2.c5d37700c6bb03a6c24b6c9b49p+12)": +ldouble: 1 +Test "cosh (-0x2.c5d37700c6bbp+12)": +ldouble: 1 +Test "cosh (-0x2.c5e3acp+8)": +double: 1 +idouble: 1 +Test "cosh (-0x2.c679dp+8)": +double: 1 +idouble: 1 +Test "cosh (0x1.6p+4)": +ildouble: 1 +ldouble: 1 +Test "cosh (0x2.c5d374p+12)": +ldouble: 1 +Test "cosh (0x2.c5d37700c6bb03a4p+12)": +ldouble: 1 +Test "cosh (0x2.c5d37700c6bb03a6c24b6c9b49p+12)": +ldouble: 1 +Test "cosh (0x2.c5d37700c6bbp+12)": +ldouble: 1 +Test "cosh (0x2.c5e3acp+8)": +double: 1 +idouble: 1 +Test "cosh (0x2.c679dp+8)": +double: 1 +idouble: 1 + +# cosh_downward +Test "cosh_downward (-0x2.c5d37700c6bb03a4p+12)": +ldouble: 2 +Test "cosh_downward (-0x2.c5d37700c6bb03a6c24b6c9b494cp+12)": +ldouble: 1 +Test "cosh_downward (-0x2.c5d37700c6bb03a6c24b6c9b49p+12)": +ldouble: 2 +Test "cosh_downward (-0x2.c5d37700c6bbp+12)": +ldouble: 2 +Test "cosh_downward (-0x2.c5e3bp+8)": +double: 1 +idouble: 1 +Test "cosh_downward (-0x2.c679d1f73f0fap+8)": +double: 1 +idouble: 1 +Test "cosh_downward (-0x2.c679dp+8)": +double: 1 +idouble: 1 +Test "cosh_downward (-0x5.96a7ep+4)": +float: 1 +ifloat: 1 +Test "cosh_downward (0x1.6p+4)": +double: 1 +idouble: 1 +Test "cosh_downward (0x1.7p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cosh_downward (0x2.c5d37700c6bb03a4p+12)": +ldouble: 2 +Test "cosh_downward (0x2.c5d37700c6bb03a6c24b6c9b494cp+12)": +ldouble: 1 +Test "cosh_downward (0x2.c5d37700c6bb03a6c24b6c9b49p+12)": +ldouble: 2 +Test "cosh_downward (0x2.c5d37700c6bbp+12)": +ldouble: 2 +Test "cosh_downward (0x2.c5e3bp+8)": +double: 1 +idouble: 1 +Test "cosh_downward (0x2.c679d1f73f0fap+8)": +double: 1 +idouble: 1 +Test "cosh_downward (0x2.c679dp+8)": +double: 1 +idouble: 1 +Test "cosh_downward (0x5.96a7ep+4)": +float: 1 +ifloat: 1 + +# cosh_tonearest +Test "cosh_tonearest (-0x1p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cosh_tonearest (-0x2.c5d374p+12)": +ldouble: 1 +Test "cosh_tonearest (-0x2.c5d37700c6bb03a4p+12)": +ldouble: 1 +Test "cosh_tonearest (-0x2.c5d37700c6bb03a6c24b6c9b49p+12)": +ldouble: 1 +Test "cosh_tonearest (-0x2.c5d37700c6bbp+12)": +ldouble: 1 +Test "cosh_tonearest (-0x2.c5e3acp+8)": +double: 1 +idouble: 1 +Test "cosh_tonearest (-0x2.c679dp+8)": +double: 1 +idouble: 1 +Test "cosh_tonearest (0x1.6p+4)": +ildouble: 1 +ldouble: 1 +Test "cosh_tonearest (0x2.c5d374p+12)": +ldouble: 1 +Test "cosh_tonearest (0x2.c5d37700c6bb03a4p+12)": +ldouble: 1 +Test "cosh_tonearest (0x2.c5d37700c6bb03a6c24b6c9b49p+12)": +ldouble: 1 +Test "cosh_tonearest (0x2.c5d37700c6bbp+12)": +ldouble: 1 +Test "cosh_tonearest (0x2.c5e3acp+8)": +double: 1 +idouble: 1 +Test "cosh_tonearest (0x2.c679dp+8)": +double: 1 +idouble: 1 + +# cosh_towardzero +Test "cosh_towardzero (-0x2.c5d37700c6bb03a4p+12)": +ldouble: 2 +Test "cosh_towardzero (-0x2.c5d37700c6bb03a6c24b6c9b494cp+12)": +ldouble: 1 +Test "cosh_towardzero (-0x2.c5d37700c6bb03a6c24b6c9b49p+12)": +ldouble: 2 +Test "cosh_towardzero (-0x2.c5d37700c6bbp+12)": +ldouble: 2 +Test "cosh_towardzero (-0x2.c5e3bp+8)": +double: 1 +idouble: 1 +Test "cosh_towardzero (-0x2.c679d1f73f0fap+8)": +double: 1 +idouble: 1 +Test "cosh_towardzero (-0x2.c679dp+8)": +double: 1 +idouble: 1 +Test "cosh_towardzero (-0x5.96a7ep+4)": +float: 1 +ifloat: 1 +Test "cosh_towardzero (0x1.6p+4)": +double: 1 +idouble: 1 +Test "cosh_towardzero (0x1.7p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cosh_towardzero (0x2.c5d37700c6bb03a4p+12)": +ldouble: 2 +Test "cosh_towardzero (0x2.c5d37700c6bb03a6c24b6c9b494cp+12)": +ldouble: 1 +Test "cosh_towardzero (0x2.c5d37700c6bb03a6c24b6c9b49p+12)": +ldouble: 2 +Test "cosh_towardzero (0x2.c5d37700c6bbp+12)": +ldouble: 2 +Test "cosh_towardzero (0x2.c5e3bp+8)": +double: 1 +idouble: 1 +Test "cosh_towardzero (0x2.c679d1f73f0fap+8)": +double: 1 +idouble: 1 +Test "cosh_towardzero (0x2.c679dp+8)": +double: 1 +idouble: 1 +Test "cosh_towardzero (0x5.96a7ep+4)": +float: 1 +ifloat: 1 + +# cosh_upward +Test "cosh_upward (-0x1p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "cosh_upward (-0x2.c5d374p+12)": +ldouble: 3 +Test "cosh_upward (-0x2.c5d37700c6bb03a4p+12)": +ldouble: 1 +Test "cosh_upward (-0x2.c5d37700c6bb03a6c24b6c9b494cp+12)": +ldouble: 2 +Test "cosh_upward (-0x2.c5d37700c6bb03a6c24b6c9b49p+12)": +ldouble: 1 +Test "cosh_upward (-0x2.c5d37700c6bbp+12)": +ldouble: 1 +Test "cosh_upward (-0x2.c5e3bp+8)": +double: 1 +idouble: 1 +Test "cosh_upward (-0x2.c679d1f73f0fap+8)": +double: 1 +idouble: 1 +Test "cosh_upward (-0x2.c679dp+8)": +double: 1 +idouble: 1 +Test "cosh_upward (-0x5.96a7e8p+4)": +double: 1 +idouble: 1 +Test "cosh_upward (-0x5.96a7ep+4)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "cosh_upward (0x1.6p+4)": +ildouble: 1 +ldouble: 1 +Test "cosh_upward (0x1.8p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "cosh_upward (0x2.c5d374p+12)": +ldouble: 3 +Test "cosh_upward (0x2.c5d37700c6bb03a4p+12)": +ldouble: 1 +Test "cosh_upward (0x2.c5d37700c6bb03a6c24b6c9b494cp+12)": +ldouble: 2 +Test "cosh_upward (0x2.c5d37700c6bb03a6c24b6c9b49p+12)": +ldouble: 1 +Test "cosh_upward (0x2.c5d37700c6bbp+12)": +ldouble: 1 +Test "cosh_upward (0x2.c5e3bp+8)": +double: 1 +idouble: 1 +Test "cosh_upward (0x2.c679d1f73f0fap+8)": +double: 1 +idouble: 1 +Test "cosh_upward (0x2.c679dp+8)": +double: 1 +idouble: 1 +Test "cosh_upward (0x3.2p+4)": +double: 1 +idouble: 1 +Test "cosh_upward (0x5.96a7e8p+4)": +double: 1 +idouble: 1 +Test "cosh_upward (0x5.96a7ep+4)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +# cpow +Test "Real part of: cpow (0x2p+0 + +0 i, 0xap+0 + +0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: cpow (0x2p+0 + 0x3p+0 i, 0x4p+0 + +0 i)": +double: 1 +float: 5 +idouble: 1 +ifloat: 5 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cpow (0x2p+0 + 0x3p+0 i, 0x4p+0 + +0 i)": +float: 2 +ifloat: 2 +Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, +0 + 0x1p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cpow (0xcp-4 + 0x1.4p+0 i, +0 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, 0x1p+0 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, 0x1p+0 + 0x1p+0 i)": +double: 2 +float: 3 +idouble: 2 +ifloat: 3 +ildouble: 2 +ldouble: 2 +Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, 0xcp-4 + 0x1.4p+0 i)": +double: 1 +float: 4 +idouble: 1 +ifloat: 4 +ildouble: 4 +ldouble: 4 + +# csin +Test "Real part of: csin (-0.75 + 11357.25 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csin (-0.75 + 710.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: csin (-0.75 + 89.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csin (-0.75 + 89.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csin (-0.75 - 11357.25 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csin (-0.75 - 710.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: csin (-0.75 - 89.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csin (-0.75 - 89.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csin (-2 - 3 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csin (0.75 + 1.25 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csin (0.75 + 11357.25 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csin (0.75 + 710.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: csin (0.75 + 89.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csin (0.75 + 89.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csin (0.75 - 11357.25 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csin (0.75 - 710.5 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: csin (0.75 - 89.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csin (0.75 - 89.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csin (0x1p-1074 + 1440 i)": +double: 1 +idouble: 1 +Test "Real part of: csin (0x1p-16434 + 22730 i)": +ildouble: 1 +ldouble: 1 + +# csinh +Test "Imaginary part of: csinh (-11357.25 + 0.75 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csinh (-11357.25 - 0.75 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csinh (-2 - 3 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csinh (-2 - 3 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csinh (-710.5 + 0.75 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csinh (-710.5 - 0.75 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: csinh (-89.5 + 0.75 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csinh (-89.5 + 0.75 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: csinh (-89.5 - 0.75 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csinh (-89.5 - 0.75 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: csinh (0.75 + 1.25 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: csinh (0.75 + 1.25 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: csinh (11357.25 + 0.75 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csinh (11357.25 - 0.75 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csinh (1440 + 0x1p-1074 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csinh (22730 + 0x1p-16434 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csinh (710.5 + 0.75 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csinh (710.5 - 0.75 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: csinh (89.5 + 0.75 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csinh (89.5 + 0.75 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: csinh (89.5 - 0.75 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csinh (89.5 - 0.75 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# csqrt +Test "Imaginary part of: csqrt (-0 - 0x4.0000000000004p-1024 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x2p+0 + 0x3p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x4.0000000000000000000000000004p-16384 - 0x4.0000000000000000000000000004p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (-0x4.0000000000000000000000000004p-16384 - 0x4.0000000000000000000000000004p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x4.0000000000000000000000000004p-16384 - 0x4.0000000000000008p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x4.0000000000000000000000000004p-16384 - 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x4.0000000000000000000000000004p-16384 - 0x4p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (-0x4.0000000000000000000000000004p-16384 - 0x4p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x4.0000000000000008p-16384 - 0x4.0000000000000008p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (-0x4.0000000000000008p-16384 - 0x4.0000000000000008p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x4.0000000000000008p-16384 - 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x4.0000000000004p-1024 - 0x4.0000000000004p-1024 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (-0x4.0000000000004p-1024 - 0x4.0000000000004p-1024 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x4.000008p-128 - 0x4.000008p-128 i)": +double: 1 +idouble: 1 +Test "Real part of: csqrt (-0x4p-16384 - 0x4.0000000000000008p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x4p-16384 - 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x8p-152 - 0x4.0000000000000008p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x8p-152 - 0x4.0000000000004p-1024 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x8p-152 - 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x8p-152 - 0x4p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x1p-16440 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x1p-16440 + 0x8p-16444 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x1p-5000 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x4.0000000000000000000000000004p-16384 + 0x4.0000000000000000000000000004p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x4.0000000000000000000000000004p-16384 + 0x4.0000000000000008p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x4.0000000000000000000000000004p-16384 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (0x4.0000000000000000000000000004p-16384 + 0x4p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x4.0000000000000000000000000004p-16384 + 0x4p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (0x4.0000000000000008p-16384 + 0x4.0000000000000008p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x4.0000000000000008p-16384 + 0x4.0000000000000008p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x4.0000000000000008p-16384 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x4.0000000000004p-1024 + 0x4.0000000000004p-1024 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x4.000008p-128 + 0x4.000008p-128 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0x4p-1076 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x4p-1076 + 0xf.fffffp+124 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0x4p-16384 + 0x4.0000000000000008p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x4p-16384 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x4p-16448 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x4p-16496 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p+1020 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p+1020 + 0x8p-152 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p+124 + 0x8p-152 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p+16380 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p+16380 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p-152 + 0x4.0000000000000008p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p-152 + 0x4.0000000000004p-1024 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p-152 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p-152 + 0x4p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p-152 + 0x4p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p-152 + 0x8p-1076 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p-152 + 0x8p-16444 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p-152 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p-152 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p-152 + 0xf.fffffp+124 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0x8p-16448 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0xcp-4 + 0x1.4p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0xf.8p+16380 + 0x8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (0xf.8p+16380 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0xf.8p+16380 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0x8p+1020 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (0xf.ffffffffffff8p+1020 + 0xf.ffffffffffff8p+1020 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0xf.ffffffffffff8p+1020 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0xf.fffffp+124 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0xf.ffffffffffffbffffffffffffcp+1020 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (0xf.ffffffffffffbffffffffffffcp+1020 + 0xf.ffffffffffff8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0xf.ffffffffffffbffffffffffffcp+1020 + 0xf.ffffffffffff8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0xf.fffffp+124 + 0x1p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: csqrt (0xf.fffffp+124 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0xf.fffffp+124 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 1 +ldouble: 1 + +# ctan +Test "Real part of: ctan (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan (-0x2p+0 - 0x3p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x1.921fb4p+0 + +0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x1.921fb4p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0x1.921fb4p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan (0x1.921fb4p+0 + 0x8p-152 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0x1.921fb4p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan (0x1.921fb4p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0x1.921fb54442d1846ap+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0x1.921fb54442d1846ap+0 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0x1.921fb54442d1846ap+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x1.921fb54442d18p+0 + +0 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctan (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan (0x1.921fb54442d18p+0 + 0x8p-152 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctan (0x1.921fb54442d18p+0 + 0x8p-152 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan (0x1.921fb54442d18p+0 + 0x8p-16448 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctan (0x1.921fb54442d18p+0 + 0x8p-16448 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan (0x1.921fb54442d19p+0 + +0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +double: 2 +idouble: 2 +Test "Real part of: ctan (0x1.921fb54442d19p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0x1.921fb54442d19p+0 + 0x8p-152 i)": +double: 2 +idouble: 2 +Test "Real part of: ctan (0x1.921fb54442d19p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x1.921fb6p+0 + +0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x1.921fb6p+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0x1.921fb6p+0 + 0x4p-1076 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan (0x1.921fb6p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0x1.921fb6p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan (0x1.921fb6p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x1p+0 + 0x1.63p+8 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan (0x1p+0 + 0x1.6dp+8 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x1p+0 + 0x2.dp+4 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan (0x1p+0 + 0x2.fp+4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x8p+1020 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan (0x8p+1020 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan (0x8p+124 + 0x1p+0 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan (0x8p+124 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x8p+16380 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0x8p+16380 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0xcp-4 + 0x1.4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0xf.ffffffffffffbffffffffffffcp+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0xf.ffffffffffffbffffffffffffcp+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0xf.fffffp+124 + 0x1p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0xf.fffffp+124 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +# ctan_downward +Test "Real part of: ctan_downward (-0x2p+0 - 0x3p+0 i)": +double: 3 +idouble: 3 +ildouble: 4 +ldouble: 4 +Test "Imaginary part of: ctan_downward (-0x2p+0 - 0x3p+0 i)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1.921fb4p+0 + +0 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_downward (0x1.921fb4p+0 + 0x4p-1076 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_downward (0x1.921fb4p+0 + 0x4p-1076 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan_downward (0x1.921fb4p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_downward (0x1.921fb4p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan_downward (0x1.921fb4p+0 + 0x8p-16448 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_downward (0x1.921fb54442d1846ap+0 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1.921fb54442d1846ap+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d1846ap+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1.921fb54442d1846ap+0 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d1846ap+0 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1.921fb54442d1846ap+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d1846ap+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + +0 i)": +double: 1 +idouble: 1 +ildouble: 4 +ldouble: 4 +Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 4 +ldouble: 4 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +ildouble: 4 +ldouble: 4 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d18p+0 + 0x8p-152 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + 0x8p-16448 i)": +ildouble: 4 +ldouble: 4 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d18p+0 + 0x8p-16448 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan_downward (0x1.921fb54442d19p+0 + +0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_downward (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +ildouble: 4 +ldouble: 4 +Test "Real part of: ctan_downward (0x1.921fb54442d19p+0 + 0x8p-152 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d19p+0 + 0x8p-152 i)": +ildouble: 4 +ldouble: 4 +Test "Real part of: ctan_downward (0x1.921fb54442d19p+0 + 0x8p-16448 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d19p+0 + 0x8p-16448 i)": +ildouble: 4 +ldouble: 4 +Test "Real part of: ctan_downward (0x1.921fb6p+0 + +0 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_downward (0x1.921fb6p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_downward (0x1.921fb6p+0 + 0x4p-1076 i)": +ildouble: 5 +ldouble: 5 +Test "Real part of: ctan_downward (0x1.921fb6p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_downward (0x1.921fb6p+0 + 0x8p-152 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 5 +ldouble: 5 +Test "Real part of: ctan_downward (0x1.921fb6p+0 + 0x8p-16448 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_downward (0x1p+0 + 0x1.6dp+8 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_downward (0x1p+0 + 0x2.dp+4 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x8p+1020 + 0x1p+0 i)": +double: 6 +idouble: 6 +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctan_downward (0x8p+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x8p+124 + 0x1p+0 i)": +double: 4 +float: 3 +idouble: 4 +ifloat: 3 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_downward (0x8p+124 + 0x1p+0 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x8p+16380 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_downward (0x8p+16380 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_downward (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": +double: 3 +idouble: 3 +ildouble: 4 +ldouble: 4 +Test "Real part of: ctan_downward (0xf.ffffffffffffbffffffffffffcp+1020 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_downward (0xf.ffffffffffffbffffffffffffcp+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0xf.fffffp+124 + 0x1p+0 i)": +double: 5 +float: 5 +idouble: 5 +ifloat: 5 +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctan_downward (0xf.fffffp+124 + 0x1p+0 i)": +double: 1 +idouble: 1 + +# ctan_tonearest +Test "Real part of: ctan_tonearest (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan_tonearest (-0x2p+0 - 0x3p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + +0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb4p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + 0x8p-152 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb4p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d1846ap+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d1846ap+0 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d1846ap+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x1.921fb54442d18p+0 + +0 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x8p-152 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x8p-152 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x8p-16448 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x8p-16448 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan_tonearest (0x1.921fb54442d19p+0 + +0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +double: 2 +idouble: 2 +Test "Real part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x8p-152 i)": +double: 2 +idouble: 2 +Test "Real part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + +0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb6p+0 + 0x4p-1076 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb6p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x1p+0 + 0x1.63p+8 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_tonearest (0x1p+0 + 0x1.6dp+8 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x1p+0 + 0x2.dp+4 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_tonearest (0x1p+0 + 0x2.fp+4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x8p+1020 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_tonearest (0x8p+1020 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_tonearest (0x8p+124 + 0x1p+0 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_tonearest (0x8p+124 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x8p+16380 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0x8p+16380 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_tonearest (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0xcp-4 + 0x1.4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_tonearest (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_tonearest (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0xf.ffffffffffffbffffffffffffcp+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0xf.ffffffffffffbffffffffffffcp+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0xf.fffffp+124 + 0x1p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0xf.fffffp+124 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +# ctan_towardzero +Test "Real part of: ctan_towardzero (-0x2p+0 - 0x3p+0 i)": +double: 5 +float: 3 +idouble: 5 +ifloat: 3 +ildouble: 4 +ldouble: 4 +Test "Imaginary part of: ctan_towardzero (-0x2p+0 - 0x3p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (-0xc.35p+12 - 0xc.35p+12 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1.921fb4p+0 + +0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb4p+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1.921fb4p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb4p+0 + 0x8p-152 i)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1.921fb54442d1846ap+0 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1.921fb54442d1846ap+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d1846ap+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1.921fb54442d1846ap+0 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d1846ap+0 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1.921fb54442d1846ap+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d1846ap+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1.921fb54442d18p+0 + +0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x8p-152 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x8p-16448 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_towardzero (0x1.921fb54442d19p+0 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +ildouble: 4 +ldouble: 4 +Test "Real part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x8p-152 i)": +ildouble: 4 +ldouble: 4 +Test "Real part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x8p-16448 i)": +ildouble: 4 +ldouble: 4 +Test "Real part of: ctan_towardzero (0x1.921fb6p+0 + +0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1.921fb6p+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb6p+0 + 0x4p-1076 i)": +ildouble: 5 +ldouble: 5 +Test "Real part of: ctan_towardzero (0x1.921fb6p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb6p+0 + 0x8p-152 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 5 +ldouble: 5 +Test "Real part of: ctan_towardzero (0x1.921fb6p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1p+0 + 0x1.6dp+8 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_towardzero (0x1p+0 + 0x2.dp+4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x8p+1020 + 0x1p+0 i)": +double: 5 +idouble: 5 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_towardzero (0x8p+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x8p+124 + 0x1p+0 i)": +double: 4 +float: 3 +idouble: 4 +ifloat: 3 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_towardzero (0x8p+124 + 0x1p+0 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x8p+16380 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_towardzero (0x8p+16380 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (0xc.35p+12 - 0xc.35p+12 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_towardzero (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0xf.ffffffffffffbffffffffffffcp+1020 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_towardzero (0xf.ffffffffffffbffffffffffffcp+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0xf.fffffp+124 + 0x1p+0 i)": +double: 4 +float: 2 +idouble: 4 +ifloat: 2 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_towardzero (0xf.fffffp+124 + 0x1p+0 i)": +double: 1 +idouble: 1 + +# ctan_upward +Test "Real part of: ctan_upward (-0x2p+0 - 0x3p+0 i)": +double: 2 +float: 3 +idouble: 2 +ifloat: 3 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (-0x2p+0 - 0x3p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (-0xc.35p+12 + 0xc.35p+12 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (-0xc.35p+12 - 0xc.35p+12 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb4p+0 + +0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan_upward (0x1.921fb4p+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb4p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan_upward (0x1.921fb4p+0 + 0x8p-152 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb54442d1846ap+0 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb54442d18p+0 + +0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_upward (0x1.921fb54442d18p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0x1.921fb54442d18p+0 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb54442d18p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0x1.921fb54442d18p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb54442d19p+0 + +0 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_upward (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_upward (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb54442d19p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +ildouble: 4 +ldouble: 4 +Test "Imaginary part of: ctan_upward (0x1.921fb54442d19p+0 + 0x8p-152 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan_upward (0x1.921fb54442d19p+0 + 0x8p-16448 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_upward (0x1.921fb54442d19p+0 + 0x8p-16448 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan_upward (0x1.921fb6p+0 + +0 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb6p+0 + 0x4p-1076 i)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0x1.921fb6p+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb6p+0 + 0x8p-152 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0x1.921fb6p+0 + 0x8p-152 i)": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb6p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0x1p+0 + 0x1.63ap+12 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0x1p+0 + 0x1.63p+12 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1p+0 + 0x1.63p+8 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0x1p+0 + 0x1.63p+8 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_upward (0x1p+0 + 0x1.6dp+8 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_upward (0x1p+0 + 0x1.6dp+8 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_upward (0x1p+0 + 0x2.dp+4 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0x1p+0 + 0x2.dp+4 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_upward (0x1p+0 + 0x2.fp+4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_upward (0x1p+0 + 0x2.fp+4 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_upward (0x8p+1020 + 0x1p+0 i)": +double: 2 +idouble: 2 +ildouble: 5 +ldouble: 5 +Test "Imaginary part of: ctan_upward (0x8p+1020 + 0x1p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x8p+124 + 0x1p+0 i)": +double: 2 +idouble: 2 +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctan_upward (0x8p+124 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan_upward (0x8p+16380 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0xc.35p+12 + 0xc.35p+12 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0xc.35p+12 - 0xc.35p+12 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0xcp-4 + 0x1.4p+0 i)": +double: 2 +idouble: 2 +Test "Imaginary part of: ctan_upward (0xcp-4 + 0x1.4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": +double: 1 +idouble: 1 +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan_upward (0xf.ffffffffffffbffffffffffffcp+1020 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_upward (0xf.fffffp+124 + 0x1p+0 i)": +double: 2 +float: 3 +idouble: 2 +ifloat: 3 +ildouble: 2 +ldouble: 2 + +# ctanh +Test "Imaginary part of: ctanh (+0 + 0x1.921fb4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (+0 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh (+0 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (+0 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (+0 + 0xc.90fdaa22168c234c4c6628b80dcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (+0 + 0xc.90fdaa22168c234p-4 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh (+0 + 0xc.90fdaa22168c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (+0 + 0xc.90fdaa22168cp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh (+0 + 0xc.90fdap-4 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "Imaginary part of: ctanh (+0 + 0xc.90fdbp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: ctanh (-0x2p+0 - 0x3p+0 i)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "Imaginary part of: ctanh (-0x2p+0 - 0x3p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh (0x1.63p+8 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh (0x1.6dp+8 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0x1p+0 + 0x8p+1020 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh (0x1p+0 + 0x8p+1020 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh (0x1p+0 + 0x8p+124 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (0x1p+0 + 0x8p+124 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh (0x1p+0 + 0x8p+16380 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh (0x1p+0 + 0x8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh (0x1p+0 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (0x1p+0 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0x1p+0 + 0xf.fffffp+124 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh (0x1p+0 + 0xf.fffffp+124 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (0x2.dp+4 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh (0x2.fp+4 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb4p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh (0x4p-1076 + 0x1.921fb4p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh (0x4p-1076 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +double: 2 +idouble: 2 +Test "Imaginary part of: ctanh (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb6p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh (0x4p-1076 + 0x1.921fb6p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0x8p-152 + 0x1.921fb4p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0x8p-152 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0x8p-152 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctanh (0x8p-152 + 0x1.921fb54442d19p+0 i)": +double: 2 +idouble: 2 +Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0x8p-152 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (0x8p-16448 + 0x1.921fb4p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0x8p-16448 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0x8p-16448 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh (0x8p-16448 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh (0x8p-16448 + 0x1.921fb54442d19p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (0x8p-16448 + 0x1.921fb6p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0xcp-4 + 0x1.4p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 + +# ctanh_downward +Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb4p+0 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +ildouble: 4 +ldouble: 4 +Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb54442d19p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb6p+0 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_downward (+0 + 0xc.90fdaa22168c234c4c6628b80cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (+0 + 0xc.90fdaa22168c234c4c6628b80dc8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (+0 + 0xc.90fdaa22168c234c4c6628b80dcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (+0 + 0xc.90fdaa22168c234c4c6628b81p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (+0 + 0xc.90fdaa22168c234p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (+0 + 0xc.90fdaa22168c235p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (+0 + 0xc.90fdaa22168cp-4 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctanh_downward (-0x2p+0 - 0x3p+0 i)": +double: 4 +idouble: 4 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (-0x2p+0 - 0x3p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x1.6dp+8 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_downward (0x1p+0 + 0x8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x1p+0 + 0x8p+1020 i)": +double: 6 +idouble: 6 +ildouble: 3 +ldouble: 3 +Test "Real part of: ctanh_downward (0x1p+0 + 0x8p+124 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x1p+0 + 0x8p+124 i)": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_downward (0x1p+0 + 0x8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x1p+0 + 0x8p+16380 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_downward (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": +double: 3 +idouble: 3 +ildouble: 4 +ldouble: 4 +Test "Real part of: ctanh_downward (0x1p+0 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x1p+0 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_downward (0x1p+0 + 0xf.fffffp+124 i)": +double: 4 +float: 5 +idouble: 4 +ifloat: 5 +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_downward (0x2.dp+4 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_downward (0x4p-1076 + 0x1.921fb4p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_downward (0x4p-1076 + 0x1.921fb4p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_downward (0x4p-1076 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x4p-1076 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_downward (0x4p-1076 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_downward (0x4p-1076 + 0x1.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +ildouble: 4 +ldouble: 4 +Test "Real part of: ctanh_downward (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +ildouble: 4 +ldouble: 4 +Test "Imaginary part of: ctanh_downward (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_downward (0x4p-1076 + 0x1.921fb6p+0 i)": +ildouble: 5 +ldouble: 5 +Test "Imaginary part of: ctanh_downward (0x4p-1076 + 0x1.921fb6p+0 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_downward (0x8p-152 + 0x1.921fb4p+0 i)": +double: 1 +idouble: 1 +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb4p+0 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_downward (0x8p-152 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_downward (0x8p-152 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +ildouble: 4 +ldouble: 4 +Test "Real part of: ctanh_downward (0x8p-152 + 0x1.921fb54442d19p+0 i)": +ildouble: 4 +ldouble: 4 +Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb54442d19p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_downward (0x8p-152 + 0x1.921fb6p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 5 +ldouble: 5 +Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb6p+0 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_downward (0x8p-16448 + 0x1.921fb4p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_downward (0x8p-16448 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x8p-16448 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_downward (0x8p-16448 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_downward (0x8p-16448 + 0x1.921fb54442d18p+0 i)": +ildouble: 4 +ldouble: 4 +Test "Real part of: ctanh_downward (0x8p-16448 + 0x1.921fb54442d19p+0 i)": +ildouble: 4 +ldouble: 4 +Test "Imaginary part of: ctanh_downward (0x8p-16448 + 0x1.921fb54442d19p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_downward (0x8p-16448 + 0x1.921fb6p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_downward (0xcp-4 + 0x1.4p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0xcp-4 + 0x1.4p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +# ctanh_tonearest +Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdaa22168c234c4c6628b80dcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdaa22168c234p-4 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdaa22168c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdaa22168cp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdap-4 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdbp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: ctanh_tonearest (-0x2p+0 - 0x3p+0 i)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "Imaginary part of: ctanh_tonearest (-0x2p+0 - 0x3p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x1.63p+8 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_tonearest (0x1.6dp+8 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x1p+0 + 0x8p+1020 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0x8p+1020 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_tonearest (0x1p+0 + 0x8p+124 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0x8p+124 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_tonearest (0x1p+0 + 0x8p+16380 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0x8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_tonearest (0x1p+0 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x1p+0 + 0xf.fffffp+124 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0xf.fffffp+124 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x2.dp+4 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_tonearest (0x2.fp+4 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb4p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb4p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +double: 2 +idouble: 2 +Test "Imaginary part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb6p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb6p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb4p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb54442d19p+0 i)": +double: 2 +idouble: 2 +Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x8p-16448 + 0x1.921fb4p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x8p-16448 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x8p-16448 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_tonearest (0x8p-16448 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_tonearest (0x8p-16448 + 0x1.921fb54442d19p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x8p-16448 + 0x1.921fb6p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0xcp-4 + 0x1.4p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh_tonearest (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 + +# ctanh_towardzero +Test "Imaginary part of: ctanh_towardzero (+0 + 0x1.921fb4p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_towardzero (+0 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (+0 + 0x1.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (+0 + 0x1.921fb54442d19p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (+0 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (+0 + 0xc.90fdaa22168c234c4c6628b80cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (+0 + 0xc.90fdaa22168c234c4c6628b80dc8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (+0 + 0xc.90fdaa22168c234c4c6628b80dcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (+0 + 0xc.90fdaa22168c234c4c6628b81p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (+0 + 0xc.90fdaa22168c234p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (+0 + 0xc.90fdaa22168c235p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (+0 + 0xc.90fdaa22168cp-4 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_towardzero (+0 + 0xc.90fdap-4 i)": +float: 2 +ifloat: 2 +Test "Real part of: ctanh_towardzero (-0x2p+0 - 0x3p+0 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "Imaginary part of: ctanh_towardzero (-0x2p+0 - 0x3p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: ctanh_towardzero (-0xc.35p+12 + 0xc.35p+12 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (-0xc.35p+12 - 0xc.35p+12 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x1.6dp+8 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_towardzero (0x1p+0 + 0x8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0x8p+1020 i)": +double: 5 +idouble: 5 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_towardzero (0x1p+0 + 0x8p+124 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0x8p+124 i)": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_towardzero (0x1p+0 + 0x8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0x8p+16380 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x1p+0 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0xf.fffffp+124 i)": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_towardzero (0x2.dp+4 + 0x1p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb4p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb54442d18p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +ildouble: 4 +ldouble: 4 +Test "Imaginary part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb6p+0 i)": +ildouble: 5 +ldouble: 5 +Test "Imaginary part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb6p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x8p-152 + 0x1.921fb4p+0 i)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x8p-152 + 0x1.921fb4p+0 i)": +float: 1 +ifloat: 1 +Test "Real part of: ctanh_towardzero (0x8p-152 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x8p-152 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x8p-152 + 0x1.921fb54442d18p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_towardzero (0x8p-152 + 0x1.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x8p-152 + 0x1.921fb54442d19p+0 i)": +ildouble: 4 +ldouble: 4 +Test "Imaginary part of: ctanh_towardzero (0x8p-152 + 0x1.921fb54442d19p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x8p-152 + 0x1.921fb6p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 5 +ldouble: 5 +Test "Imaginary part of: ctanh_towardzero (0x8p-152 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x8p-16448 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x8p-16448 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x8p-16448 + 0x1.921fb54442d18p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_towardzero (0x8p-16448 + 0x1.921fb54442d18p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x8p-16448 + 0x1.921fb54442d19p+0 i)": +ildouble: 4 +ldouble: 4 +Test "Imaginary part of: ctanh_towardzero (0x8p-16448 + 0x1.921fb54442d19p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x8p-16448 + 0x1.921fb6p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0xcp-4 + 0x1.4p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0xcp-4 + 0x1.4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# ctanh_upward +Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb4p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb6p+0 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (+0 + 0xc.90fdaa22168c234c4c6628b80cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (+0 + 0xc.90fdaa22168c234c4c6628b80dc8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (+0 + 0xc.90fdaa22168c234c4c6628b81p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (+0 + 0xc.90fdaa22168c234p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (+0 + 0xc.90fdaa22168c235p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (+0 + 0xc.90fdaa22168cp-4 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_upward (+0 + 0xc.90fdap-4 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_upward (+0 + 0xc.90fdbp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: ctanh_upward (-0x2p+0 - 0x3p+0 i)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (-0x2p+0 - 0x3p+0 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "Real part of: ctanh_upward (-0xc.35p+12 + 0xc.35p+12 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (-0xc.35p+12 - 0xc.35p+12 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x1.63ap+12 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x1.63p+12 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x1.63p+8 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_upward (0x1.63p+8 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x1.6dp+8 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_upward (0x1.6dp+8 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_upward (0x1p+0 + 0x8p+1020 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (0x1p+0 + 0x8p+1020 i)": +double: 2 +idouble: 2 +ildouble: 5 +ldouble: 5 +Test "Real part of: ctanh_upward (0x1p+0 + 0x8p+124 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_upward (0x1p+0 + 0x8p+124 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_upward (0x1p+0 + 0x8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": +double: 1 +idouble: 1 +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_upward (0x1p+0 + 0xf.ffffffffffffbffffffffffffcp+1020 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_upward (0x1p+0 + 0xf.fffffp+124 i)": +double: 2 +float: 3 +idouble: 2 +ifloat: 3 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_upward (0x2.dp+4 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_upward (0x2.dp+4 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x2.fp+4 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_upward (0x4p-1076 + 0x1.921fb4p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_upward (0x4p-1076 + 0x1.921fb6p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (0x4p-1076 + 0x1.921fb6p+0 i)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x8p-152 + 0x1.921fb4p+0 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (0x8p-152 + 0x1.921fb4p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_upward (0x8p-152 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x8p-152 + 0x1.921fb54442d18p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (0x8p-152 + 0x1.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x8p-152 + 0x1.921fb54442d19p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_upward (0x8p-152 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +ildouble: 4 +ldouble: 4 +Test "Real part of: ctanh_upward (0x8p-152 + 0x1.921fb6p+0 i)": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (0x8p-152 + 0x1.921fb6p+0 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x8p-16448 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (0x8p-16448 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x8p-16448 + 0x1.921fb54442d18p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (0x8p-16448 + 0x1.921fb54442d18p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x8p-16448 + 0x1.921fb54442d19p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_upward (0x8p-16448 + 0x1.921fb54442d19p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_upward (0x8p-16448 + 0x1.921fb6p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0xc.35p+12 + 0xc.35p+12 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0xc.35p+12 - 0xc.35p+12 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_upward (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# erf +Test "erf (-0x7.ffffffffffffcp-4)": +ildouble: 1 +ldouble: 1 +Test "erf (0x1.4p+0)": +double: 1 +idouble: 1 + +# erfc +Test "erfc (-0x8p-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "erfc (0x1.ap+4)": +ildouble: 1 +ldouble: 1 +Test "erfc (0x1.bp+4)": +ildouble: 1 +ldouble: 1 +Test "erfc (0x1.cp+4)": +ildouble: 1 +ldouble: 1 +Test "erfc (0x2p+0)": +double: 1 +idouble: 1 +Test "erfc (0x3.ee6078p+0)": +double: 1 +idouble: 1 +Test "erfc (0x4.2p+0)": +double: 1 +idouble: 1 +Test "erfc (0x6.4p+4)": +ildouble: 1 +ldouble: 1 +Test "erfc (0x6.a8p+4)": +ildouble: 1 +ldouble: 1 +Test "erfc (0x7.fe8008p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "erfc (0x7.fffd6p+0)": +float: 1 +ifloat: 1 +Test "erfc (0x7.ffff2p+0)": +ildouble: 1 +ldouble: 1 +Test "erfc (0xcp-4)": +float: 1 +ifloat: 1 + +# exp10 +Test "exp10 (-0x1.31p+8)": +double: 1 +idouble: 1 +Test "exp10 (-0x1p+0)": +double: 1 +idouble: 1 +Test "exp10 (-0x2.4p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "exp10 (0x1.344p+12)": +ildouble: 1 +ldouble: 1 +Test "exp10 (0x1.348e45573a1dd72cp+8)": +ildouble: 1 +ldouble: 1 +Test "exp10 (0x1.348e46p+8)": +ildouble: 1 +ldouble: 1 +Test "exp10 (0x2.4p+4)": +double: 1 +idouble: 1 +Test "exp10 (0x3p+0)": +double: 1 +idouble: 1 + +# exp10_downward +Test "exp10_downward (-0x1.31p+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_downward (-0x1.344p+12)": +ildouble: 1 +ldouble: 1 +Test "exp10_downward (-0x1p+0)": +ildouble: 2 +ldouble: 2 +Test "exp10_downward (-0x2.4p+4)": +ildouble: 1 +ldouble: 1 +Test "exp10_downward (0x1.31p+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_downward (0x1.344p+12)": +ildouble: 1 +ldouble: 1 +Test "exp10_downward (0x1.348e44p+8)": +ildouble: 2 +ldouble: 2 +Test "exp10_downward (0x1.348e45573a1dd72cp+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_downward (0x1.348e45573a1ddp+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_downward (0x1.348e45573a1dep+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_downward (0x2.4p+4)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "exp10_downward (0x3p+0)": +ildouble: 1 +ldouble: 1 +Test "exp10_downward (0xcp-4)": +ildouble: 1 +ldouble: 1 + +# exp10_tonearest +Test "exp10_tonearest (-0x1.31p+8)": +double: 1 +idouble: 1 +Test "exp10_tonearest (-0x1p+0)": +double: 1 +idouble: 1 +Test "exp10_tonearest (-0x2.4p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "exp10_tonearest (0x1.344p+12)": +ildouble: 1 +ldouble: 1 +Test "exp10_tonearest (0x1.348e45573a1dd72cp+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_tonearest (0x1.348e46p+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_tonearest (0x2.4p+4)": +double: 1 +idouble: 1 +Test "exp10_tonearest (0x3p+0)": +double: 1 +idouble: 1 + +# exp10_towardzero +Test "exp10_towardzero (-0x1.31p+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_towardzero (-0x1.344p+12)": +ildouble: 1 +ldouble: 1 +Test "exp10_towardzero (-0x1p+0)": +ildouble: 2 +ldouble: 2 +Test "exp10_towardzero (-0x2.4p+4)": +ildouble: 1 +ldouble: 1 +Test "exp10_towardzero (0x1.31p+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_towardzero (0x1.344p+12)": +ildouble: 1 +ldouble: 1 +Test "exp10_towardzero (0x1.348e44p+8)": +ildouble: 2 +ldouble: 2 +Test "exp10_towardzero (0x1.348e45573a1dd72cp+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_towardzero (0x1.348e45573a1ddp+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_towardzero (0x1.348e45573a1dep+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_towardzero (0x2.4p+4)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "exp10_towardzero (0x3p+0)": +ildouble: 1 +ldouble: 1 +Test "exp10_towardzero (0xcp-4)": +ildouble: 1 +ldouble: 1 + +# exp10_upward +Test "exp10_upward (-0x1.31p+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_upward (-0x1.344p+12)": +float: 1 +ifloat: 1 +Test "exp10_upward (-0x1.86ap+16)": +float: 1 +ifloat: 1 +Test "exp10_upward (-0x2.4p+4)": +ildouble: 1 +ldouble: 1 +Test "exp10_upward (-0xf.424p+16)": +float: 1 +ifloat: 1 +Test "exp10_upward (-0xf.fffffp+124)": +float: 1 +ifloat: 1 +Test "exp10_upward (0x1.31p+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_upward (0x1.344p+12)": +ildouble: 2 +ldouble: 2 +Test "exp10_upward (0x1.348e44p+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_upward (0x1.348e45573a1dd72cp+8)": +ildouble: 2 +ldouble: 2 +Test "exp10_upward (0x1.348e45573a1ddp+8)": +ildouble: 2 +ldouble: 2 +Test "exp10_upward (0x1.348e45573a1dep+8)": +ildouble: 1 +ldouble: 1 +Test "exp10_upward (0x1.348e46p+8)": +ildouble: 2 +ldouble: 2 +Test "exp10_upward (0x2.4p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "exp10_upward (0x3p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "exp10_upward (0xcp-4)": +ildouble: 2 +ldouble: 2 + +# exp2 +Test "exp2 (0x6.48p+4)": +ildouble: 1 +ldouble: 1 + +# exp_downward +Test "exp_downward (0x2p+0)": +double: 1 +idouble: 1 +Test "exp_downward (0x3p+0)": +double: 1 +idouble: 1 +Test "exp_downward (0x5.8b9028p+4)": +double: 1 +idouble: 1 +Test "exp_downward (0xcp-4)": +double: 1 +idouble: 1 + +# exp_towardzero +Test "exp_towardzero (0x2p+0)": +double: 1 +idouble: 1 +Test "exp_towardzero (0x3p+0)": +double: 1 +idouble: 1 +Test "exp_towardzero (0x5.8b9028p+4)": +double: 1 +idouble: 1 +Test "exp_towardzero (0xcp-4)": +double: 1 +idouble: 1 + +# exp_upward +Test "exp_upward (-0x2.e870a4p+8)": +double: 1 +idouble: 1 +Test "exp_upward (-0x2.e870a7e5e88c2p+8)": +double: 1 +idouble: 1 +Test "exp_upward (-0x2.e870a7e5e88cp+8)": +double: 1 +idouble: 1 +Test "exp_upward (-0x2.e870a8p+8)": +double: 1 +idouble: 1 +Test "exp_upward (-0x2.ebe224p+8)": +double: 1 +idouble: 1 +Test "exp_upward (-0x2.ebe227861639p+8)": +double: 1 +idouble: 1 +Test "exp_upward (-0x2.ebe228p+8)": +double: 1 +idouble: 1 +Test "exp_upward (-0x4.d2p+8)": +double: 1 +idouble: 1 +Test "exp_upward (-0xf.ffffffffffff8p+1020)": +double: 1 +idouble: 1 +Test "exp_upward (-0xf.fffffp+124)": +double: 1 +idouble: 1 +Test "exp_upward (0x1p+0)": +double: 1 +idouble: 1 +Test "exp_upward (0x2.c5cp+8)": +double: 1 +idouble: 1 +Test "exp_upward (0x3.2p+4)": +double: 1 +idouble: 1 + +# expm1 +Test "expm1 (-0x1p+4)": +ildouble: 1 +ldouble: 1 +Test "expm1 (-0x2.6p+4)": +ildouble: 1 +ldouble: 1 +Test "expm1 (-0x2.cp+4)": +ildouble: 1 +ldouble: 1 +Test "expm1 (-0x4.ep+4)": +ildouble: 1 +ldouble: 1 +Test "expm1 (-0x4.fp+4)": +ildouble: 1 +ldouble: 1 +Test "expm1 (-0x8p-32)": +ildouble: 1 +ldouble: 1 +Test "expm1 (0x1.f4p+8)": +double: 1 +idouble: 1 +Test "expm1 (0x1p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "expm1 (0xcp-4)": +double: 1 +idouble: 1 + +# expm1_downward +Test "expm1_downward (-0x1.1p+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_downward (-0x1p-100)": +ildouble: 1 +ldouble: 1 +Test "expm1_downward (-0x1p-32)": +ildouble: 1 +ldouble: 1 +Test "expm1_downward (-0x1p-64)": +ildouble: 1 +ldouble: 1 +Test "expm1_downward (-0x2.4p+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_downward (-0x2.dp+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_downward (-0x2.ep+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_downward (-0x4.bp+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_downward (-0x4p-12)": +ildouble: 1 +ldouble: 1 +Test "expm1_downward (0x1.f4p+8)": +double: 1 +idouble: 1 +Test "expm1_downward (0x3.2p+4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "expm1_downward (0x7.fp+4)": +double: 1 +idouble: 1 + +# expm1_tonearest +Test "expm1_tonearest (-0x1p+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_tonearest (-0x2.6p+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_tonearest (-0x2.cp+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_tonearest (-0x4.ep+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_tonearest (-0x4.fp+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_tonearest (-0x8p-32)": +ildouble: 1 +ldouble: 1 +Test "expm1_tonearest (0x1.f4p+8)": +double: 1 +idouble: 1 +Test "expm1_tonearest (0x1p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "expm1_tonearest (0xcp-4)": +double: 1 +idouble: 1 + +# expm1_towardzero +Test "expm1_towardzero (-0x1.1p+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_towardzero (-0x1p-100)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "expm1_towardzero (-0x1p-32)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "expm1_towardzero (-0x1p-64)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "expm1_towardzero (-0x2.4p+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_towardzero (-0x2.dp+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_towardzero (-0x2.ep+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_towardzero (-0x4.bp+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_towardzero (-0x4.fp+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_towardzero (-0x4p-12)": +ildouble: 1 +ldouble: 1 +Test "expm1_towardzero (-0x4p-52)": +float: 1 +ifloat: 1 +Test "expm1_towardzero (-0x8p-32)": +float: 1 +ifloat: 1 +Test "expm1_towardzero (0x1.f4p+8)": +double: 1 +idouble: 1 +Test "expm1_towardzero (0x3.2p+4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "expm1_towardzero (0x7.fp+4)": +double: 1 +idouble: 1 + +# expm1_upward +Test "expm1_upward (-0x1.1p+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_upward (-0x1p-100)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "expm1_upward (-0x1p-32)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "expm1_upward (-0x1p-64)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "expm1_upward (-0x2.4p+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_upward (-0x2.dp+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_upward (-0x2.ep+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_upward (-0x4.bp+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_upward (-0x4.fp+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_upward (-0x4p-12)": +ildouble: 1 +ldouble: 1 +Test "expm1_upward (-0x4p-52)": +float: 1 +ifloat: 1 +Test "expm1_upward (-0x8p-32)": +float: 1 +ifloat: 1 +Test "expm1_upward (0x1p+0)": +ildouble: 1 +ldouble: 1 +Test "expm1_upward (0x1p-100)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "expm1_upward (0x1p-32)": +float: 1 +ifloat: 1 +Test "expm1_upward (0x1p-64)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "expm1_upward (0x4p-52)": +float: 1 +ifloat: 1 +Test "expm1_upward (0x7.fp+4)": +ildouble: 1 +ldouble: 1 +Test "expm1_upward (0x8p-32)": +float: 1 +ifloat: 1 + +# gamma +Test "gamma (-0x1p-20)": +double: 1 +idouble: 1 +Test "gamma (-0x1p-40)": +ildouble: 1 +ldouble: 1 +Test "gamma (-0x1p-64)": +ildouble: 1 +ldouble: 1 +Test "gamma (-0x2p-16)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "gamma (-0x4p-12)": +double: 1 +idouble: 1 +Test "gamma (-0x4p-32)": +ildouble: 1 +ldouble: 1 +Test "gamma (-0x8p-28)": +ildouble: 1 +ldouble: 1 +Test "gamma (-0x8p-4)": +ildouble: 1 +ldouble: 1 +Test "gamma (-0x8p-8)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "gamma (0x1.3333333333333332p+0)": +ildouble: 1 +ldouble: 1 +Test "gamma (0x1.3333333333333333333333333333p+0)": +ildouble: 1 +ldouble: 1 +Test "gamma (0x1p-60)": +ildouble: 1 +ldouble: 1 +Test "gamma (0x4p-12)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "gamma (0x4p-32)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "gamma (0x4p-72)": +ildouble: 1 +ldouble: 1 +Test "gamma (0x8p-8)": +ildouble: 1 +ldouble: 1 +Test "gamma (0xb.3333333333333333333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "gamma (0xb.333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "gamma (0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "gamma (0xb.333333333333p-4)": +double: 1 +idouble: 1 +Test "gamma (0xb.33333p-4)": +double: 1 +idouble: 1 + +# hypot +Test "hypot (-0xb.3333333333333333333333333338p-4, -0xc.66667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.3333333333333333333333333338p-4, 0xc.66667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.333333333333333333333333333p-4, -0xc.66667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.333333333333333333333333333p-4, 0xc.66667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33333333333333333333333334p-4, -0xc.66667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33333333333333333333333334p-4, 0xc.66667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.3333333333333333333333333p-4, -0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.3333333333333333333333333p-4, -0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.3333333333333333333333333p-4, 0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.3333333333333333333333333p-4, 0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.333333333333333p-4, -0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.333333333333333p-4, -0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.333333333333333p-4, -0xc.66666666666666666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.333333333333333p-4, 0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.333333333333333p-4, 0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.333333333333333p-4, 0xc.66666666666666666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.333333333333334p-4, -0xc.666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.333333333333334p-4, 0xc.666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.3333333333338p-4, -0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.3333333333338p-4, -0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.3333333333338p-4, 0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.3333333333338p-4, 0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33333p-4, -0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33333p-4, -0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33333p-4, -0xc.66666666666666666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33333p-4, -0xc.666666666666667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33333p-4, 0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33333p-4, 0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33333p-4, 0xc.66666666666666666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33333p-4, 0xc.666666666666667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33334p-4, -0xc.6666666666666666666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33334p-4, -0xc.6666666666668p+0)": +double: 1 +idouble: 1 +Test "hypot (-0xb.33334p-4, 0xc.6666666666666666666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33334p-4, 0xc.6666666666668p+0)": +double: 1 +idouble: 1 +Test "hypot (-0xc.66666666666666666666666664p+0, -0xb.3333333333333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66666666666666666666666664p+0, -0xb.333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66666666666666666666666664p+0, -0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66666666666666666666666664p+0, -0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66666666666666666666666664p+0, 0xb.3333333333333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66666666666666666666666664p+0, 0xb.333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66666666666666666666666664p+0, 0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66666666666666666666666664p+0, 0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.6666666666666666666666666668p+0, -0xb.33334p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.6666666666666666666666666668p+0, 0xb.33334p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.666666666666666666666666666p+0, -0xb.3333333333333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.666666666666666666666666666p+0, -0xb.333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.666666666666666666666666666p+0, -0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.666666666666666666666666666p+0, -0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.666666666666666666666666666p+0, 0xb.3333333333333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.666666666666666666666666666p+0, 0xb.333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.666666666666666666666666666p+0, 0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.666666666666666666666666666p+0, 0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66666666666666666666666668p+0, -0xb.333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66666666666666666666666668p+0, -0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66666666666666666666666668p+0, 0xb.333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66666666666666666666666668p+0, 0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.666666666666666p+0, -0xb.333333333333334p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.666666666666666p+0, 0xb.333333333333334p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.666666666666667p+0, -0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.666666666666667p+0, 0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.6666666666668p+0, -0xb.33334p-4)": +double: 1 +idouble: 1 +Test "hypot (-0xc.6666666666668p+0, 0xb.33334p-4)": +double: 1 +idouble: 1 +Test "hypot (-0xc.66667p+0, -0xb.3333333333333333333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66667p+0, -0xb.333333333333333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66667p+0, -0xb.33333333333333333333333334p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66667p+0, 0xb.3333333333333333333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66667p+0, 0xb.333333333333333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.66667p+0, 0xb.33333333333333333333333334p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0x1.23456789abcdef0123456789ab8p-500, 0x1.23456789abcdep-500)": +ildouble: 1 +ldouble: 1 +Test "hypot (0x1.23456789abcdef02p-500, 0x1.23456789abcdfp-500)": +ildouble: 1 +ldouble: 1 +Test "hypot (0x1.23456789abcdefp-500, 0x1.23456789abcdfp-500)": +ildouble: 1 +ldouble: 1 +Test "hypot (0x1.23456789abcdep-500, 0x1.23456789abcdef0123456789ab8p-500)": +ildouble: 1 +ldouble: 1 +Test "hypot (0x1.23456789abcdfp-500, 0x1.23456789abcdef02p-500)": +ildouble: 1 +ldouble: 1 +Test "hypot (0x1.23456789abcdfp-500, 0x1.23456789abcdefp-500)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.3333333333333333333333333338p-4, -0xc.66667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.3333333333333333333333333338p-4, 0xc.66667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.333333333333333333333333333p-4, -0xc.66667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.333333333333333333333333333p-4, 0xc.66667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33333333333333333333333334p-4, -0xc.66667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33333333333333333333333334p-4, 0xc.66667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.3333333333333333333333333p-4, -0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.3333333333333333333333333p-4, -0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.3333333333333333333333333p-4, 0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.3333333333333333333333333p-4, 0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.333333333333333p-4, -0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.333333333333333p-4, -0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.333333333333333p-4, -0xc.66666666666666666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.333333333333333p-4, 0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.333333333333333p-4, 0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.333333333333333p-4, 0xc.66666666666666666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.333333333333334p-4, -0xc.666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.333333333333334p-4, 0xc.666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.3333333333338p-4, -0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.3333333333338p-4, -0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.3333333333338p-4, 0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.3333333333338p-4, 0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33333p-4, -0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33333p-4, -0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33333p-4, -0xc.66666666666666666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33333p-4, -0xc.666666666666667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33333p-4, 0xc.66666666666666666666666664p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33333p-4, 0xc.666666666666666666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33333p-4, 0xc.66666666666666666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33333p-4, 0xc.666666666666667p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33334p-4, -0xc.6666666666666666666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33334p-4, -0xc.6666666666668p+0)": +double: 1 +idouble: 1 +Test "hypot (0xb.33334p-4, 0xc.6666666666666666666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33334p-4, 0xc.6666666666668p+0)": +double: 1 +idouble: 1 +Test "hypot (0xc.66666666666666666666666664p+0, -0xb.3333333333333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66666666666666666666666664p+0, -0xb.333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66666666666666666666666664p+0, -0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66666666666666666666666664p+0, -0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66666666666666666666666664p+0, 0xb.3333333333333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66666666666666666666666664p+0, 0xb.333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66666666666666666666666664p+0, 0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66666666666666666666666664p+0, 0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.6666666666666666666666666668p+0, -0xb.33334p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.6666666666666666666666666668p+0, 0xb.33334p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.666666666666666666666666666p+0, -0xb.3333333333333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.666666666666666666666666666p+0, -0xb.333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.666666666666666666666666666p+0, -0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.666666666666666666666666666p+0, -0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.666666666666666666666666666p+0, 0xb.3333333333333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.666666666666666666666666666p+0, 0xb.333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.666666666666666666666666666p+0, 0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.666666666666666666666666666p+0, 0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66666666666666666666666668p+0, -0xb.333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66666666666666666666666668p+0, -0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66666666666666666666666668p+0, 0xb.333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66666666666666666666666668p+0, 0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.666666666666666p+0, -0xb.333333333333334p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.666666666666666p+0, 0xb.333333333333334p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.666666666666667p+0, -0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.666666666666667p+0, 0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.6666666666668p+0, -0xb.33334p-4)": +double: 1 +idouble: 1 +Test "hypot (0xc.6666666666668p+0, 0xb.33334p-4)": +double: 1 +idouble: 1 +Test "hypot (0xc.66667p+0, -0xb.3333333333333333333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66667p+0, -0xb.333333333333333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66667p+0, -0xb.33333333333333333333333334p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66667p+0, 0xb.3333333333333333333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66667p+0, 0xb.333333333333333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.66667p+0, 0xb.33333333333333333333333334p-4)": +ildouble: 1 +ldouble: 1 + +# j0 +Test "j0 (-0x2.002000002p+592)": +ildouble: 2 +ldouble: 2 +Test "j0 (-0x4p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "j0 (-0xf.fffffp+124)": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 +Test "j0 (0x2p+0)": +ildouble: 2 +ldouble: 2 +Test "j0 (0x4p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "j0 (0x4p+16380)": +ildouble: 1 +ldouble: 1 +Test "j0 (0x8p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "j0 (0x8p+1020)": +ildouble: 1 +ldouble: 1 +Test "j0 (0x8p+16380)": +ildouble: 2 +ldouble: 2 +Test "j0 (0xap+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "j0 (0xe.be71dp+104)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "j0 (0xf.ffffffffffff8p+1020)": +ildouble: 1 +ldouble: 1 +Test "j0 (0xf.ffffffffffffbffffffffffffcp+1020)": +ildouble: 1 +ldouble: 1 +Test "j0 (0xf.fffffp+124)": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +# j1 +Test "j1 (0x1.ff00000000002p+840)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "j1 (0x1p+0)": +ildouble: 1 +ldouble: 1 +Test "j1 (0x2p+0)": +double: 1 +idouble: 1 +Test "j1 (0x4.ffcp+72)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "j1 (0x4p+16380)": +ildouble: 1 +ldouble: 1 +Test "j1 (0x8p+0)": +double: 1 +idouble: 1 +ildouble: 4 +ldouble: 4 +Test "j1 (0x8p+1020)": +ildouble: 1 +ldouble: 1 +Test "j1 (0x8p+16380)": +ildouble: 2 +ldouble: 2 +Test "j1 (0xap+0)": +float: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 +Test "j1 (0xcp-4)": +ildouble: 1 +ldouble: 1 +Test "j1 (0xf.ffffffffffff8p+1020)": +double: 1 +idouble: 1 +Test "j1 (0xf.fffffp+124)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# jn +Test "jn (0, -0x4p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "jn (0, 0x2p+0)": +ildouble: 2 +ldouble: 2 +Test "jn (0, 0x4p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "jn (0, 0x8p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "jn (0, 0xap+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "jn (1, 0x1p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (1, 0x2p+0)": +double: 1 +idouble: 1 +Test "jn (1, 0x8p+0)": +double: 1 +idouble: 1 +ildouble: 4 +ldouble: 4 +Test "jn (1, 0xap+0)": +float: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 +Test "jn (1, 0xcp-4)": +ildouble: 1 +ldouble: 1 +Test "jn (10, -0x1p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (10, 0x1p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (10, 0x2p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "jn (10, 0x2p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "jn (10, 0xap+0)": +float: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 +Test "jn (10, 0xcp-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "jn (2, 0x2.67a2a4p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "jn (2, 0x2.67a2a5d2e36800fce3e16f10ca66p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (2, 0x2.67a2a5d2e36800fce3e16f10cap+0)": +ildouble: 1 +ldouble: 1 +Test "jn (2, 0x2.67a2a5d2e36800fce3e16f10cbp+0)": +ildouble: 3 +ldouble: 3 +Test "jn (2, 0x2.67a2a5d2e36800fcp+0)": +ildouble: 4 +ldouble: 4 +Test "jn (2, 0x2.67a2a5d2e36801p+0)": +ildouble: 3 +ldouble: 3 +Test "jn (2, 0x2.67a2a5d2e3682p+0)": +double: 1 +idouble: 1 +Test "jn (2, 0x2.67a2a5d2e368p+0)": +double: 2 +idouble: 2 +ildouble: 3 +ldouble: 3 +Test "jn (2, 0x2.67a2a8p+0)": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +Test "jn (2, 0x8p+1020)": +ildouble: 1 +ldouble: 1 +Test "jn (2, 0x8p+124)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "jn (2, 0x8p+16380)": +ildouble: 2 +ldouble: 2 +Test "jn (2, 0xf.fffb1p+96)": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +Test "jn (2, 0xf.ffffffffffff8p+1020)": +ildouble: 1 +ldouble: 1 +Test "jn (2, 0xf.ffffffffffffbffffffffffffcp+1020)": +ildouble: 1 +ldouble: 1 +Test "jn (2, 0xf.fffffp+124)": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 +Test "jn (3, 0x2.67a2a4p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "jn (3, 0x2.67a2a5d2e36800fce3e16f10ca68p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (3, 0x2.67a2a5d2e36800fce3e16f10cap+0)": +ildouble: 1 +ldouble: 1 +Test "jn (3, 0x2.67a2a5d2e36800fce3e16f10cbp+0)": +ildouble: 1 +ldouble: 1 +Test "jn (3, 0x2.67a2a5d2e36800fcp+0)": +ildouble: 5 +ldouble: 5 +Test "jn (3, 0x2.67a2a5d2e36801p+0)": +ildouble: 4 +ldouble: 4 +Test "jn (3, 0x2.67a2a5d2e3682p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "jn (3, 0x2.67a2a5d2e368p+0)": +double: 3 +idouble: 3 +ildouble: 1 +ldouble: 1 +Test "jn (3, 0x2.67a2a8p+0)": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +ildouble: 1 +ldouble: 1 +Test "jn (3, 0x2p+0)": +float: 1 +ifloat: 1 +Test "jn (3, 0x2p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "jn (3, 0xap+0)": +double: 3 +idouble: 3 +ildouble: 2 +ldouble: 2 +Test "jn (3, 0xcp-4)": +double: 1 +idouble: 1 +Test "jn (4, 0x2.67a2a4p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "jn (4, 0x2.67a2a5d2e36800fce3e16f10ca68p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (4, 0x2.67a2a5d2e36800fce3e16f10cap+0)": +ildouble: 1 +ldouble: 1 +Test "jn (4, 0x2.67a2a5d2e36800fce3e16f10cbp+0)": +ildouble: 1 +ldouble: 1 +Test "jn (4, 0x2.67a2a5d2e36800fcp+0)": +ildouble: 3 +ldouble: 3 +Test "jn (4, 0x2.67a2a5d2e36801p+0)": +ildouble: 3 +ldouble: 3 +Test "jn (4, 0x2.67a2a5d2e3682p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "jn (4, 0x2.67a2a5d2e368p+0)": +double: 1 +idouble: 1 +Test "jn (4, 0x2.67a2a8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "jn (5, 0x2.67a2a4p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "jn (5, 0x2.67a2a5d2e36800fce3e16f10cap+0)": +ildouble: 3 +ldouble: 3 +Test "jn (5, 0x2.67a2a5d2e36800fce3e16f10cbp+0)": +ildouble: 2 +ldouble: 2 +Test "jn (5, 0x2.67a2a5d2e36800fcp+0)": +ildouble: 1 +ldouble: 1 +Test "jn (5, 0x2.67a2a5d2e36801p+0)": +ildouble: 2 +ldouble: 2 +Test "jn (5, 0x2.67a2a5d2e3682p+0)": +double: 1 +idouble: 1 +ildouble: 3 +ldouble: 3 +Test "jn (5, 0x2.67a2a5d2e368p+0)": +double: 2 +idouble: 2 +Test "jn (5, 0x2.67a2a8p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 +Test "jn (6, 0x2.67a2a4p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "jn (6, 0x2.67a2a5d2e36800fce3e16f10ca66p+0)": +ildouble: 2 +ldouble: 2 +Test "jn (6, 0x2.67a2a5d2e36800fce3e16f10cap+0)": +ildouble: 2 +ldouble: 2 +Test "jn (6, 0x2.67a2a5d2e36800fce3e16f10cbp+0)": +ildouble: 2 +ldouble: 2 +Test "jn (6, 0x2.67a2a5d2e36800fcp+0)": +ildouble: 5 +ldouble: 5 +Test "jn (6, 0x2.67a2a5d2e36801p+0)": +ildouble: 3 +ldouble: 3 +Test "jn (6, 0x2.67a2a5d2e3682p+0)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "jn (6, 0x2.67a2a5d2e368p+0)": +double: 4 +idouble: 4 +ildouble: 3 +ldouble: 3 +Test "jn (6, 0x2.67a2a8p+0)": +float: 3 +ifloat: 3 +ildouble: 1 +ldouble: 1 +Test "jn (7, 0x2.67a2a4p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "jn (7, 0x2.67a2a5d2e36800fce3e16f10ca68p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (7, 0x2.67a2a5d2e36800fce3e16f10cap+0)": +ildouble: 1 +ldouble: 1 +Test "jn (7, 0x2.67a2a5d2e36800fce3e16f10cbp+0)": +ildouble: 3 +ldouble: 3 +Test "jn (7, 0x2.67a2a5d2e36800fcp+0)": +ildouble: 3 +ldouble: 3 +Test "jn (7, 0x2.67a2a5d2e36801p+0)": +ildouble: 3 +ldouble: 3 +Test "jn (7, 0x2.67a2a5d2e3682p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (7, 0x2.67a2a5d2e368p+0)": +double: 3 +idouble: 3 +ildouble: 2 +ldouble: 2 +Test "jn (7, 0x2.67a2a8p+0)": +float: 3 +ifloat: 3 +Test "jn (8, 0x2.67a2a4p+0)": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 +Test "jn (8, 0x2.67a2a5d2e36800fce3e16f10ca66p+0)": +ildouble: 3 +ldouble: 3 +Test "jn (8, 0x2.67a2a5d2e36800fce3e16f10ca68p+0)": +ildouble: 4 +ldouble: 4 +Test "jn (8, 0x2.67a2a5d2e36800fce3e16f10cap+0)": +ildouble: 2 +ldouble: 2 +Test "jn (8, 0x2.67a2a5d2e36800fce3e16f10cbp+0)": +ildouble: 3 +ldouble: 3 +Test "jn (8, 0x2.67a2a5d2e36800fcp+0)": +ildouble: 3 +ldouble: 3 +Test "jn (8, 0x2.67a2a5d2e36801p+0)": +ildouble: 4 +ldouble: 4 +Test "jn (8, 0x2.67a2a5d2e3682p+0)": +double: 1 +idouble: 1 +Test "jn (8, 0x2.67a2a5d2e368p+0)": +double: 3 +idouble: 3 +Test "jn (8, 0x2.67a2a8p+0)": +double: 1 +float: 4 +idouble: 1 +ifloat: 4 +ildouble: 4 +ldouble: 4 +Test "jn (9, 0x2.67a2a4p+0)": +double: 3 +float: 3 +idouble: 3 +ifloat: 3 +Test "jn (9, 0x2.67a2a5d2e36800fce3e16f10ca66p+0)": +ildouble: 3 +ldouble: 3 +Test "jn (9, 0x2.67a2a5d2e36800fce3e16f10ca68p+0)": +ildouble: 3 +ldouble: 3 +Test "jn (9, 0x2.67a2a5d2e36800fce3e16f10cbp+0)": +ildouble: 2 +ldouble: 2 +Test "jn (9, 0x2.67a2a5d2e36800fcp+0)": +ildouble: 7 +ldouble: 7 +Test "jn (9, 0x2.67a2a5d2e36801p+0)": +ildouble: 2 +ldouble: 2 +Test "jn (9, 0x2.67a2a5d2e3682p+0)": +double: 4 +idouble: 4 +ildouble: 3 +ldouble: 3 +Test "jn (9, 0x2.67a2a5d2e368p+0)": +double: 1 +idouble: 1 +ildouble: 4 +ldouble: 4 +Test "jn (9, 0x2.67a2a8p+0)": +double: 2 +float: 3 +idouble: 2 +ifloat: 3 + +# lgamma +Test "lgamma (-0x1p-20)": +double: 1 +idouble: 1 +Test "lgamma (-0x1p-40)": +ildouble: 1 +ldouble: 1 +Test "lgamma (-0x1p-64)": +ildouble: 1 +ldouble: 1 +Test "lgamma (-0x2p-16)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "lgamma (-0x4p-12)": +double: 1 +idouble: 1 +Test "lgamma (-0x4p-32)": +ildouble: 1 +ldouble: 1 +Test "lgamma (-0x8p-28)": +ildouble: 1 +ldouble: 1 +Test "lgamma (-0x8p-4)": +ildouble: 1 +ldouble: 1 +Test "lgamma (-0x8p-8)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "lgamma (0x1.3333333333333332p+0)": +ildouble: 1 +ldouble: 1 +Test "lgamma (0x1.3333333333333333333333333333p+0)": +ildouble: 1 +ldouble: 1 +Test "lgamma (0x1p-60)": +ildouble: 1 +ldouble: 1 +Test "lgamma (0x4p-12)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "lgamma (0x4p-32)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "lgamma (0x4p-72)": +ildouble: 1 +ldouble: 1 +Test "lgamma (0x8p-8)": +ildouble: 1 +ldouble: 1 +Test "lgamma (0xb.3333333333333333333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "lgamma (0xb.333333333333333p-4)": +ildouble: 1 +ldouble: 1 +Test "lgamma (0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "lgamma (0xb.333333333333p-4)": +double: 1 +idouble: 1 +Test "lgamma (0xb.33333p-4)": +double: 1 +idouble: 1 + +# log +Test "log (0x2.b7e151628aed2a68p+0)": +ildouble: 1 +ldouble: 1 +Test "log (0x2.b7e151628aed2a6abf7158809cf4p+0)": +ildouble: 1 +ldouble: 1 +Test "log (0x2.b7e151628aed2p+0)": +ildouble: 1 +ldouble: 1 +Test "log (0x2.b7e15p+0)": +float: 1 +ifloat: 1 +Test "log (0x4p-1076)": +ildouble: 1 +ldouble: 1 +Test "log (0x4p-16384)": +ildouble: 1 +ldouble: 1 +Test "log (0x4p-16448)": +ildouble: 1 +ldouble: 1 +Test "log (0x4p-16496)": +ildouble: 1 +ldouble: 1 +Test "log (0x8p-152)": +ildouble: 1 +ldouble: 1 + +# log10 +Test "log10 (0x1.999998p-4)": +ildouble: 1 +ldouble: 1 +Test "log10 (0x1.999999999999ap-4)": +ildouble: 1 +ldouble: 1 +Test "log10 (0x1.99999ap-4)": +ildouble: 1 +ldouble: 1 +Test "log10 (0x2.b7e151628aed2a6cp+0)": +ildouble: 1 +ldouble: 1 +Test "log10 (0x2.b7e154p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "log10 (0x4p-1024)": +ildouble: 1 +ldouble: 1 +Test "log10 (0x4p-16496)": +ildouble: 1 +ldouble: 1 +Test "log10 (0xcp-4)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 + +# log1p +Test "log1p (0x1.b7e151628aed2p+0)": +ildouble: 1 +ldouble: 1 +Test "log1p (0x1.b7e15p+0)": +float: 1 +ifloat: 1 + +# log2 +Test "log2 (0x2.b7e151628aed2a6cp+0)": +ildouble: 1 +ldouble: 1 +Test "log2 (0xcp-4)": +ildouble: 1 +ldouble: 1 + +# pow +Test "pow (0x1.0000000000000000000000000001p+0, 0x2.468acf13579bde02468acf1357p+124)": +ildouble: 1 +ldouble: 1 +Test "pow (0x1.0000000000000000000000000001p+0, 0x2.468acf13579bde04p+124)": +ildouble: 1 +ldouble: 1 +Test "pow (0x1.0000000000001p+0, -0x2.468adp+60)": +ildouble: 1 +ldouble: 1 +Test "pow (0xap+0, -0x1.342p+12)": +ildouble: 1 +ldouble: 1 +Test "pow (0xap+0, 0x1.341p+12)": +ildouble: 1 +ldouble: 1 +Test "pow (0xap+0, 0x1.342p+12)": +ildouble: 1 +ldouble: 1 +Test "pow (0xap+0, 0x1.343p+12)": +ildouble: 1 +ldouble: 1 +Test "pow (0xap+0, 0x1.344p+12)": +ildouble: 1 +ldouble: 1 +Test "pow (0xd.72cb2a95c7ef6cce81bf1e825ba8p+16380, 0xcp-4)": +ildouble: 1 +ldouble: 1 +Test "pow (0xf.ffffffffffff8p-4, -0x4.8d159e26af37cp+60)": +ildouble: 1 +ldouble: 1 +Test "pow (0xf.fffffffffffffffffffffffffff8p-4, -0x4.8d1598p+124)": +ildouble: 1 +ldouble: 1 +Test "pow (0xf.fffffp-4, -0x1p+24)": +ildouble: 1 +ldouble: 1 +Test "pow (0xf.fffffp-4, 0x1p+24)": +float: 1 +ifloat: 1 + +# pow10 +Test "pow10 (-0x1.31p+8)": +double: 1 +idouble: 1 +Test "pow10 (-0x1p+0)": +double: 1 +idouble: 1 +Test "pow10 (-0x2.4p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "pow10 (0x1.344p+12)": +ildouble: 1 +ldouble: 1 +Test "pow10 (0x1.348e45573a1dd72cp+8)": +ildouble: 1 +ldouble: 1 +Test "pow10 (0x1.348e46p+8)": +ildouble: 1 +ldouble: 1 +Test "pow10 (0x2.4p+4)": +double: 1 +idouble: 1 +Test "pow10 (0x3p+0)": +double: 1 +idouble: 1 + +# pow_downward +Test "pow_downward (1.5, 1.03125)": +float: 1 +ifloat: 1 + +# pow_tonearest +Test "pow_tonearest (0x1.0000000000000000000000000001p+0, 0x2.468acf13579bde02468acf1357p+124)": +ildouble: 1 +ldouble: 1 +Test "pow_tonearest (0x1.0000000000000000000000000001p+0, 0x2.468acf13579bde04p+124)": +ildouble: 1 +ldouble: 1 +Test "pow_tonearest (0x1.0000000000001p+0, -0x2.468adp+60)": +ildouble: 1 +ldouble: 1 +Test "pow_tonearest (0xap+0, -0x1.342p+12)": +ildouble: 1 +ldouble: 1 +Test "pow_tonearest (0xap+0, 0x1.341p+12)": +ildouble: 1 +ldouble: 1 +Test "pow_tonearest (0xap+0, 0x1.342p+12)": +ildouble: 1 +ldouble: 1 +Test "pow_tonearest (0xap+0, 0x1.343p+12)": +ildouble: 1 +ldouble: 1 +Test "pow_tonearest (0xap+0, 0x1.344p+12)": +ildouble: 1 +ldouble: 1 +Test "pow_tonearest (0xd.72cb2a95c7ef6cce81bf1e825ba8p+16380, 0xcp-4)": +ildouble: 1 +ldouble: 1 +Test "pow_tonearest (0xf.ffffffffffff8p-4, -0x4.8d159e26af37cp+60)": +ildouble: 1 +ldouble: 1 +Test "pow_tonearest (0xf.fffffffffffffffffffffffffff8p-4, -0x4.8d1598p+124)": +ildouble: 1 +ldouble: 1 +Test "pow_tonearest (0xf.fffffp-4, -0x1p+24)": +ildouble: 1 +ldouble: 1 +Test "pow_tonearest (0xf.fffffp-4, 0x1p+24)": +float: 1 +ifloat: 1 + +# pow_towardzero +Test "pow_towardzero (1.5, 1.03125)": +float: 1 +ifloat: 1 + +# pow_upward +Test "pow_upward (1.0625, 1.125)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# sin +Test "sin (-0x1.921fb4p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (-0x1.921fb54442d18p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (-0x1.921fb54442d19p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (-0x8.60a91c16b9b28p-4)": +ildouble: 1 +ldouble: 1 +Test "sin (-0x8.60a91c16b9b2c232dd99707ab3dp-4)": +ildouble: 1 +ldouble: 1 +Test "sin (0x1p+0)": +float: 1 +ifloat: 1 +Test "sin (0x2.1e19e0c9bab24p+72)": +ildouble: 1 +ldouble: 1 +Test "sin (0x2p+64)": +ildouble: 1 +ldouble: 1 +Test "sin (0x3.be735c19be9fffffffffffffffe8p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0x3.be736p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0x3.ec2a0250032a00000000000001p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0x3.ec2a0250032a2p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0x3.ec2a04p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0x3.ec2ap+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0x3p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0x4.1237e153f7080000000000000004p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0x4.1237e153f7080008p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0x4.c92d08p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0x4.c92d0ffa4bf00000000000000088p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0x4.c92d0ffa4bf00008p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0x4.c92d0ffa4bf04p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0x4.c92d0ffa4bfp+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0x5.fbec7477d4a84p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0x5.fbec78p+0)": +ildouble: 1 +ldouble: 1 +Test "sin (0xc.d4967p-4)": +float: 1 +ifloat: 1 + +# sin_downward +Test "sin_downward (-0x1.921fb4p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (-0x1.921fb54442d18p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (-0x1.921fb54442d19p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (-0x1.921fb6p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (-0x2p+64)": +double: 1 +idouble: 1 +Test "sin_downward (-0x8.60a91c16b9b28p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (-0x8.60a91c16b9b2c232dd99707ab3dp-4)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (-0x8.60a91c16b9b2c232dd99707ab4p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (-0x8.60a91c16b9b2c232dd99707abp-4)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (-0x8.60a91c16b9b2c23p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (-0x8.60a91c16b9b2c24p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (-0x8.60a91c16b9b3p-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (-0x8.60a91p-4)": +double: 1 +idouble: 1 +Test "sin_downward (-0x8.60a92p-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x1.921fb54442d18468p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x1.921fb54442d18469898cc517018p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x1.921fb54442d18469898cc51701b8p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x1.921fb54442d18469898cc51701b9p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x1.921fb54442d18469898cc51702p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x1.921fb54442d1846ap+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x1.921fb54442d18p+0)": +double: 1 +idouble: 1 +Test "sin_downward (0x1.921fb54442d19p+0)": +double: 1 +idouble: 1 +Test "sin_downward (0x1p+120)": +float: 1 +ifloat: 1 +Test "sin_downward (0x1p+28)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "sin_downward (0x2.1e19e0c9bab24p+72)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x2.1e19e4p+72)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x2.1e19ep+72)": +float: 2 +ifloat: 2 +Test "sin_downward (0x2.553534p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x2.5535376715bap+0)": +double: 1 +idouble: 1 +Test "sin_downward (0x2p+0)": +double: 1 +idouble: 1 +Test "sin_downward (0x3.be735c19be9fep+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x3.be735c19be9ffffcp+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x3.be735c19be9fffffffffffffffe8p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x3.be735c19be9fffffffffffffffeap+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x3.be735c19be9fffffffffffffffp+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x3.be735cp+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x3.be736p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x3.ec2a0250032a0000000000000072p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x3.ec2a0250032a00000000000001p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x3.ec2a0250032a0004p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x3.ec2a0250032a2p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x3.ec2a0250032ap+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x3.ec2a04p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x3.ec2ap+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x3p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4.093385688a2d1508p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4.093385688a2d4p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4.093388p-4)": +double: 1 +idouble: 1 +Test "sin_downward (0x4.1237e153f7080000000000000004p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4.1237e153f70800000000000002p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4.1237e153f7080008p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4.1237e153f7084p+0)": +double: 1 +idouble: 1 +Test "sin_downward (0x4.1237e153f708p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4.1237e8p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4.1237ep+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4.c92d08p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4.c92d0ffa4bf00000000000000088p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4.c92d0ffa4bf000000000000002p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4.c92d0ffa4bf00008p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4.c92d0ffa4bf04p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4.c92d0ffa4bfp+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4.c92d1p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x4p+48)": +double: 1 +idouble: 1 +Test "sin_downward (0x5.fbec7477d4a8000000000000009cp+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x5.fbec7477d4a84p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x5.fbec7477d4a8p+0)": +double: 1 +idouble: 1 +Test "sin_downward (0x5.fbec78p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x5.fbec7p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x5p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x6p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0x8p+0)": +double: 1 +idouble: 1 +Test "sin_downward (0x8p+1020)": +double: 1 +idouble: 1 +Test "sin_downward (0x9p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "sin_downward (0xap+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "sin_downward (0xc.d4966d92d1708p-4)": +double: 1 +idouble: 1 +Test "sin_downward (0xc.d4966p-4)": +double: 1 +idouble: 1 +Test "sin_downward (0xf.ffffcp+124)": +double: 1 +idouble: 1 +Test "sin_downward (0xf.ffffffffffff8p+1020)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_downward (0xf.fffffp+124)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +# sin_tonearest +Test "sin_tonearest (-0x1.921fb4p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (-0x1.921fb54442d18p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (-0x1.921fb54442d19p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (-0x8.60a91c16b9b28p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (-0x8.60a91c16b9b2c232dd99707ab3dp-4)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x1p+0)": +float: 1 +ifloat: 1 +Test "sin_tonearest (0x2.1e19e0c9bab24p+72)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x2p+64)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x3.be735c19be9fffffffffffffffe8p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x3.be736p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x3.ec2a0250032a00000000000001p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x3.ec2a0250032a2p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x3.ec2a04p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x3.ec2ap+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x3p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x4.1237e153f7080000000000000004p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x4.1237e153f7080008p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x4.c92d08p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x4.c92d0ffa4bf00000000000000088p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x4.c92d0ffa4bf00008p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x4.c92d0ffa4bf04p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x4.c92d0ffa4bfp+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x5.fbec7477d4a84p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0x5.fbec78p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_tonearest (0xc.d4967p-4)": +float: 1 +ifloat: 1 + +# sin_towardzero +Test "sin_towardzero (-0x1.921fb54442d18468p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (-0x1.921fb54442d18469898cc517018p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (-0x1.921fb54442d18469898cc51701b8p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (-0x1.921fb54442d18469898cc51701b9p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (-0x1.921fb54442d18469898cc51702p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (-0x1.921fb54442d1846ap+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (-0x1.921fb54442d18p+0)": +double: 1 +idouble: 1 +Test "sin_towardzero (-0x1.921fb54442d19p+0)": +double: 1 +idouble: 1 +Test "sin_towardzero (-0x2p+64)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (-0x8.60a91c16b9b2c232dd99707ab3d8p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (-0x8.60a91p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x1.921fb54442d18468p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x1.921fb54442d18469898cc517018p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x1.921fb54442d18469898cc51701b8p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x1.921fb54442d18469898cc51701b9p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x1.921fb54442d18469898cc51702p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x1.921fb54442d1846ap+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x1.921fb54442d18p+0)": +double: 1 +idouble: 1 +Test "sin_towardzero (0x1.921fb54442d19p+0)": +double: 1 +idouble: 1 +Test "sin_towardzero (0x1p+0)": +float: 1 +ifloat: 1 +Test "sin_towardzero (0x1p+28)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x2.1e19e4p+72)": +double: 1 +idouble: 1 +Test "sin_towardzero (0x2.1e19ep+72)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x2.553534p+0)": +double: 1 +idouble: 1 +Test "sin_towardzero (0x2.5535376715bap+0)": +double: 1 +idouble: 1 +Test "sin_towardzero (0x2p+0)": +double: 1 +idouble: 1 +Test "sin_towardzero (0x2p+64)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x3.be735c19beap+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x3.be735cp+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "sin_towardzero (0x3.ec2a0250032a000000000000007p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x3.ec2a04p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "sin_towardzero (0x3p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x4.093385688a2d1508p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x4.093385688a2d4p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x4.093388p-4)": +double: 1 +idouble: 1 +Test "sin_towardzero (0x4.1237e153f7084p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x4.1237e8p+0)": +double: 1 +idouble: 1 +Test "sin_towardzero (0x4.1237ep+0)": +double: 1 +idouble: 1 +Test "sin_towardzero (0x4.c92d0ffa4bf0000000000000008cp+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x4.c92d0ffa4bf04p+0)": +double: 1 +idouble: 1 +Test "sin_towardzero (0x4.c92d0ffa4bfp+0)": +double: 1 +idouble: 1 +Test "sin_towardzero (0x4p+48)": +double: 1 +idouble: 1 +Test "sin_towardzero (0x5.fbec7477d4a80000000000000098p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x5.fbec7477d4a800000000000002p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x5.fbec7477d4a80008p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x5.fbec7477d4a8p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0x5.fbec7p+0)": +double: 1 +idouble: 1 +Test "sin_towardzero (0x8p+0)": +double: 1 +idouble: 1 +Test "sin_towardzero (0x8p+1020)": +double: 1 +idouble: 1 +Test "sin_towardzero (0x9p+0)": +double: 1 +idouble: 1 +Test "sin_towardzero (0xap+0)": +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0xb.fa09ap+100)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0xc.d4966d92d1708p-4)": +double: 1 +idouble: 1 +Test "sin_towardzero (0xc.d4966p-4)": +double: 1 +idouble: 1 +Test "sin_towardzero (0xc.d4967p-4)": +float: 1 +ifloat: 1 +Test "sin_towardzero (0xe.ef3afp-4)": +float: 1 +ifloat: 1 +Test "sin_towardzero (0xf.ffffcp+124)": +double: 1 +idouble: 1 +Test "sin_towardzero (0xf.ffffffffffff8p+1020)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_towardzero (0xf.ffffffffffffbffffffffffffcp+1020)": +ildouble: 1 +ldouble: 1 + +# sin_upward +Test "sin_upward (-0x1.921fb4p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x1.921fb54442d18468p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x1.921fb54442d18469898cc517018p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x1.921fb54442d18469898cc51701b8p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x1.921fb54442d18469898cc51701b9p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x1.921fb54442d18469898cc51702p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x1.921fb54442d1846ap+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x1.921fb54442d18p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x1.921fb54442d19p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x1.921fb6p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x2p+64)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x8.60a91c16b9b28p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x8.60a91c16b9b2c232dd99707ab3d8p-4)": +ildouble: 3 +ldouble: 3 +Test "sin_upward (-0x8.60a91c16b9b2c232dd99707ab3dp-4)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x8.60a91c16b9b2c232dd99707ab4p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x8.60a91c16b9b2c232dd99707abp-4)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x8.60a91c16b9b2c23p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x8.60a91c16b9b2c24p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x8.60a91c16b9b3p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (-0x8.60a91p-4)": +ildouble: 2 +ldouble: 2 +Test "sin_upward (-0x8.60a92p-4)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x1.921fb4p+0)": +double: 1 +idouble: 1 +Test "sin_upward (0x1.921fb6p+0)": +double: 1 +idouble: 1 +Test "sin_upward (0x1p+0)": +double: 1 +idouble: 1 +Test "sin_upward (0x1p+120)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "sin_upward (0x1p+28)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "sin_upward (0x2.1e19e0c9bab24p+72)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x2.1e19e4p+72)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x2.1e19ep+72)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "sin_upward (0x2.5535376715b9ep+0)": +double: 1 +idouble: 1 +Test "sin_upward (0x2.553538p+0)": +double: 1 +idouble: 1 +Test "sin_upward (0x2p+0)": +float: 1 +ifloat: 1 +Test "sin_upward (0x2p+64)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x3.be735c19be9fep+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x3.be735c19be9ffffcp+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x3.be735c19be9fffffffffffffffe8p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x3.be735c19be9fffffffffffffffeap+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x3.be735c19be9fffffffffffffffp+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x3.be735c19beap+0)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "sin_upward (0x3.be735cp+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x3.be736p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x3.ec2a0250032a0000000000000072p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x3.ec2a0250032a000000000000007p+0)": +ildouble: 2 +ldouble: 2 +Test "sin_upward (0x3.ec2a0250032a00000000000001p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x3.ec2a0250032a0004p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x3.ec2a0250032a2p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x3.ec2a0250032ap+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x3.ec2a04p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x3.ec2ap+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x3p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "sin_upward (0x4.093385688a2d4p-4)": +double: 1 +idouble: 1 +Test "sin_upward (0x4.093385688a2dp-4)": +double: 1 +idouble: 1 +Test "sin_upward (0x4.09338p-4)": +double: 1 +idouble: 1 +Test "sin_upward (0x4.1237e153f7080000000000000004p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x4.1237e153f70800000000000002p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x4.1237e153f7080008p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x4.1237e153f7084p+0)": +ildouble: 2 +ldouble: 2 +Test "sin_upward (0x4.1237e153f708p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x4.1237e8p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x4.1237ep+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x4.c92d08p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x4.c92d0ffa4bf00000000000000088p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x4.c92d0ffa4bf0000000000000008cp+0)": +ildouble: 2 +ldouble: 2 +Test "sin_upward (0x4.c92d0ffa4bf000000000000002p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x4.c92d0ffa4bf00008p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x4.c92d0ffa4bf04p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x4.c92d0ffa4bfp+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x4.c92d1p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x4p+0)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x4p+48)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x5.fbec7477d4a80000000000000098p+0)": +ildouble: 2 +ldouble: 2 +Test "sin_upward (0x5.fbec7477d4a8000000000000009cp+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x5.fbec7477d4a800000000000002p+0)": +ildouble: 2 +ldouble: 2 +Test "sin_upward (0x5.fbec7477d4a80008p+0)": +ildouble: 2 +ldouble: 2 +Test "sin_upward (0x5.fbec7477d4a84p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x5.fbec7477d4a8p+0)": +ildouble: 2 +ldouble: 2 +Test "sin_upward (0x5.fbec78p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x5.fbec7p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x5p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x6p+0)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0x7p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "sin_upward (0x8.60a91c16b9b3p-4)": +double: 1 +idouble: 1 +Test "sin_upward (0x8.60a91p-4)": +double: 1 +idouble: 1 +Test "sin_upward (0x8.60a92p-4)": +double: 1 +idouble: 1 +Test "sin_upward (0x8p+0)": +float: 1 +ifloat: 1 +Test "sin_upward (0x8p+124)": +double: 1 +idouble: 1 +Test "sin_upward (0x9p+0)": +float: 1 +ifloat: 1 +Test "sin_upward (0xap+0)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "sin_upward (0xb.fa09ap+100)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sin_upward (0xc.d4966d92d171p-4)": +double: 1 +idouble: 1 +Test "sin_upward (0xc.d4967p-4)": +double: 1 +idouble: 1 +Test "sin_upward (0xcp-4)": +double: 1 +idouble: 1 +Test "sin_upward (0xe.ef3af1b5d8008p-4)": +double: 1 +idouble: 1 +Test "sin_upward (0xe.ef3af1b5d8p-4)": +double: 1 +idouble: 1 +Test "sin_upward (0xe.ef3afp-4)": +double: 1 +idouble: 1 +Test "sin_upward (0xe.ef3bp-4)": +double: 1 +idouble: 1 +Test "sin_upward (0xf.ffffcp+124)": +ildouble: 1 +ldouble: 1 +Test "sin_upward (0xf.ffffffffffff8p+1020)": +ildouble: 2 +ldouble: 2 +Test "sin_upward (0xf.ffffffffffffbffffffffffffcp+1020)": +ildouble: 2 +ldouble: 2 +Test "sin_upward (0xf.fffffp+124)": +ildouble: 1 +ldouble: 1 + +# sincos +Test "sincos (0x1.0c1522p+0) extra output 1": +float: 1 +ifloat: 1 +Test "sincos (0x1.921fb54442d1846ap+0) extra output 2": +ildouble: 1 +ldouble: 1 +Test "sincos (0x1.921fb54442d18p+0) extra output 2": +ildouble: 1 +ldouble: 1 +Test "sincos (0x1p+120) extra output 2": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sincos (0x1p+28) extra output 2": +ildouble: 1 +ldouble: 1 +Test "sincos (0x2.1e19e0c9bab24p+72) extra output 1": +ildouble: 1 +ldouble: 1 +Test "sincos (0x2p+64) extra output 1": +ildouble: 1 +ldouble: 1 +Test "sincos (0x8.60a92p-4) extra output 2": +float: 1 +ifloat: 1 +Test "sincos (0x8p+124) extra output 2": +float: 1 +ifloat: 1 +Test "sincos (0xc.d4967p-4) extra output 1": +float: 1 +ifloat: 1 +Test "sincos (0xf.ffffffffffff8p+1020) extra output 2": +ildouble: 1 +ldouble: 1 +Test "sincos (0xf.ffffffffffffbffffffffffffcp+1020) extra output 2": +ildouble: 1 +ldouble: 1 + +# sinh_downward +Test "sinh_downward (0x1.6p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sinh_downward (0x1.7p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sinh_downward (0x1.8p+4)": +ildouble: 1 +ldouble: 1 +Test "sinh_downward (0xcp-4)": +ildouble: 1 +ldouble: 1 + +# sinh_towardzero +Test "sinh_towardzero (0x1.6p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sinh_towardzero (0x1.7p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "sinh_towardzero (0xcp-4)": +ildouble: 1 +ldouble: 1 + +# sinh_upward +Test "sinh_upward (0x1.7p+4)": +ildouble: 1 +ldouble: 1 +Test "sinh_upward (0x1.8p+4)": +double: 1 +idouble: 1 +Test "sinh_upward (0x8p-32)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "sinh_upward (0xcp-4)": +ildouble: 1 +ldouble: 1 + +# tan +Test "tan (-0xc.90fdcp-4)": +ildouble: 1 +ldouble: 1 +Test "tan (-0xc.90fdp-4)": +ildouble: 1 +ldouble: 1 +Test "tan (-0xc.90fp-4)": +ildouble: 1 +ldouble: 1 +Test "tan (0x3p+0)": +ildouble: 1 +ldouble: 1 +Test "tan (0x6p+0)": +ildouble: 1 +ldouble: 1 + +# tan_downward +Test "tan_downward (-0x2p+64)": +double: 1 +idouble: 1 +Test "tan_downward (-0xc.908p-4)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "tan_downward (-0xc.90cp-4)": +float: 1 +ifloat: 1 +Test "tan_downward (-0xc.90ep-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_downward (-0xc.90f8p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tan_downward (-0xc.90fcp-4)": +float: 1 +ifloat: 1 +Test "tan_downward (-0xc.90fd8p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tan_downward (-0xc.90fdap-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tan_downward (-0xc.90fdbp-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tan_downward (-0xc.90fdcp-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tan_downward (-0xc.90fdp-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_downward (-0xc.90fep-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tan_downward (-0xc.90fp-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_downward (-0xc.91p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_downward (-0xc.92p-4)": +double: 1 +idouble: 1 +Test "tan_downward (-0xc.98p-4)": +ildouble: 1 +ldouble: 1 +Test "tan_downward (-0xc.9p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_downward (-0xc.ap-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_downward (0x1p+0)": +double: 1 +idouble: 1 +Test "tan_downward (0x2.1e19e0c9bab24p+72)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_downward (0x2.1e19ep+72)": +ildouble: 1 +ldouble: 1 +Test "tan_downward (0x2p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_downward (0x2p+64)": +ildouble: 1 +ldouble: 1 +Test "tan_downward (0x3p+0)": +double: 1 +idouble: 1 +Test "tan_downward (0x4p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_downward (0x6p+0)": +double: 1 +idouble: 1 +Test "tan_downward (0x7p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_downward (0x8p+0)": +ildouble: 1 +ldouble: 1 +Test "tan_downward (0x8p+1020)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_downward (0x8p+16380)": +ildouble: 1 +ldouble: 1 +Test "tan_downward (0xc.908p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tan_downward (0xc.90cp-4)": +double: 1 +idouble: 1 +Test "tan_downward (0xc.90fcp-4)": +double: 1 +idouble: 1 +Test "tan_downward (0xc.90fdaa22168c8p-4)": +double: 1 +idouble: 1 +Test "tan_downward (0xc.90fdbp-4)": +ildouble: 1 +ldouble: 1 +Test "tan_downward (0xc.90fdcp-4)": +ildouble: 1 +ldouble: 1 +Test "tan_downward (0xc.90fdp-4)": +double: 1 +idouble: 1 +Test "tan_downward (0xc.90fep-4)": +ildouble: 1 +ldouble: 1 +Test "tan_downward (0xc.91p-4)": +ildouble: 1 +ldouble: 1 +Test "tan_downward (0xc.92p-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_downward (0xc.94p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_downward (0xc.98p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_downward (0xc.ap-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_downward (0xcp-4)": +double: 1 +idouble: 1 +Test "tan_downward (0xf.fffffp+124)": +ildouble: 1 +ldouble: 1 + +# tan_tonearest +Test "tan_tonearest (-0xc.90fdcp-4)": +ildouble: 1 +ldouble: 1 +Test "tan_tonearest (-0xc.90fdp-4)": +ildouble: 1 +ldouble: 1 +Test "tan_tonearest (-0xc.90fp-4)": +ildouble: 1 +ldouble: 1 +Test "tan_tonearest (0x3p+0)": +ildouble: 1 +ldouble: 1 +Test "tan_tonearest (0x6p+0)": +ildouble: 1 +ldouble: 1 + +# tan_towardzero +Test "tan_towardzero (-0x2p+64)": +double: 1 +idouble: 1 +Test "tan_towardzero (-0xc.908p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tan_towardzero (-0xc.90cp-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (-0xc.90f8p-4)": +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (-0xc.90fcp-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (-0xc.90fd8p-4)": +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (-0xc.90fdap-4)": +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (-0xc.90fdp-4)": +double: 1 +idouble: 1 +Test "tan_towardzero (-0xc.91p-4)": +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (-0xc.94p-4)": +double: 1 +idouble: 1 +Test "tan_towardzero (-0xc.98p-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (-0xc.ap-4)": +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (0x1p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (0x2.1e19e0c9bab24p+72)": +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (0x2.1e19e4p+72)": +double: 1 +idouble: 1 +Test "tan_towardzero (0x2.1e19ep+72)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (0x2p+0)": +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (0x2p+64)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (0x5p+0)": +double: 1 +idouble: 1 +Test "tan_towardzero (0x7p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (0x8p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (0x8p+16380)": +ildouble: 1 +ldouble: 1 +Test "tan_towardzero (0x9p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tan_towardzero (0xc.908p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tan_towardzero (0xc.90cp-4)": +double: 1 +idouble: 1 +Test "tan_towardzero (0xc.90fcp-4)": +double: 1 +idouble: 1 +Test "tan_towardzero (0xc.90fdaa22168c8p-4)": +double: 1 +idouble: 1 +Test "tan_towardzero (0xc.90fdp-4)": +double: 1 +idouble: 1 +Test "tan_towardzero (0xc.94p-4)": +double: 1 +idouble: 1 +Test "tan_towardzero (0xc.98p-4)": +double: 1 +idouble: 1 +Test "tan_towardzero (0xcp-4)": +double: 1 +idouble: 1 +Test "tan_towardzero (0xf.ffffffffffff8p+1020)": +double: 1 +idouble: 1 +Test "tan_towardzero (0xf.fffffp+124)": +double: 1 +idouble: 1 + +# tan_upward +Test "tan_upward (-0xc.908p-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (-0xc.90cp-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "tan_upward (-0xc.90ep-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (-0xc.90f8p-4)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "tan_upward (-0xc.90fcp-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "tan_upward (-0xc.90fd8p-4)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "tan_upward (-0xc.90fdap-4)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "tan_upward (-0xc.90fdbp-4)": +float: 1 +ifloat: 1 +Test "tan_upward (-0xc.90fdcp-4)": +float: 1 +ifloat: 1 +Test "tan_upward (-0xc.90fdp-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (-0xc.90fep-4)": +float: 1 +ifloat: 1 +Test "tan_upward (-0xc.90fp-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (-0xc.91p-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (-0xc.94p-4)": +double: 1 +idouble: 1 +Test "tan_upward (-0xc.98p-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (-0xc.9p-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (-0xc.ap-4)": +ildouble: 1 +ldouble: 1 +Test "tan_upward (0x2.1e19e4p+72)": +double: 1 +idouble: 1 +Test "tan_upward (0x2.1e19ep+72)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (0x2p+64)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (0x4p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (0x5p+0)": +double: 1 +idouble: 1 +Test "tan_upward (0x7p+0)": +float: 1 +ifloat: 1 +Test "tan_upward (0x8p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (0x9p+0)": +double: 1 +idouble: 1 +Test "tan_upward (0xap+0)": +double: 1 +idouble: 1 +Test "tan_upward (0xc.908p-4)": +float: 1 +ifloat: 1 +Test "tan_upward (0xc.90ep-4)": +double: 1 +idouble: 1 +Test "tan_upward (0xc.90f8p-4)": +double: 1 +idouble: 1 +Test "tan_upward (0xc.90fd8p-4)": +double: 1 +idouble: 1 +Test "tan_upward (0xc.90fdap-4)": +double: 1 +idouble: 1 +Test "tan_upward (0xc.90fdbp-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (0xc.90fdcp-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (0xc.90fep-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (0xc.90fp-4)": +double: 1 +idouble: 1 +Test "tan_upward (0xc.91p-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (0xc.92p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (0xc.94p-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (0xc.98p-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (0xc.9p-4)": +double: 1 +idouble: 1 +Test "tan_upward (0xc.ap-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tan_upward (0xcp-4)": +float: 1 +ifloat: 1 +Test "tan_upward (0xf.ffffffffffff8p+1020)": +double: 1 +idouble: 1 +Test "tan_upward (0xf.fffffp+124)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +# tanh +Test "tanh (-0x1p+0)": +ildouble: 1 +ldouble: 1 +Test "tanh (-0xcp-4)": +ildouble: 1 +ldouble: 1 +Test "tanh (0x1p+0)": +ildouble: 1 +ldouble: 1 +Test "tanh (0xcp-4)": +ildouble: 1 +ldouble: 1 + +# tgamma +Test "tgamma (-0x1.0000000000000002p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.0000000000001p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.000002p+0)": +double: 2 +idouble: 2 +Test "tgamma (-0x1.3ffffep+4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.3ffffffffffffffep+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.3fffffffffffffffffffffffff8p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.3ffffffffffffp+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x1.4000000000000000000000000001p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.4000000000001p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.400002p+4)": +float: 1 +ifloat: 1 +ildouble: 4 +ldouble: 4 +Test "tgamma (-0x1.dffffep+4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.dfffffffffffffffffffffffff8p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.dffffffffffffp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.e000000000000000000000000001p+4)": +ildouble: 3 +ldouble: 3 +Test "tgamma (-0x1.e00000000000000000000000008p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.e000000000000002p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.e000000000001p+4)": +double: 3 +idouble: 3 +Test "tgamma (-0x1.e00002p+4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x1.f3ffffffffffffffffffffffff8p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.f3ffffffffffffffffffffffffffp+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.f3fffffffffffp+8)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x1.f40000000000000000000000008p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.f40002p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.fffffffffffffffep+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.fffffffffffffp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.0000000000000000000000000002p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.00000000000000000000000001p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.0000000000002p+0)": +double: 1 +idouble: 1 +Test "tgamma (-0x2.000004p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.146544p+4)": +float: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x2.7fffffffffffep+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.7ffffffffffffffcp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.7ffffffffffffffffffffffffffep+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x2.7fffffffffffffffffffffffffp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.8000000000000000000000000002p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.80000000000000000000000001p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.8000000000002p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.800004p+4)": +double: 2 +idouble: 2 +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x2.8fffffffffffep+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.8ffffffffffffffcp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.8ffffffffffffffffffffffffffep+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.8p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "tgamma (-0x2.9000000000000000000000000002p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.90000000000000000000000001p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x2.900004p+4)": +double: 1 +idouble: 1 +Test "tgamma (-0x2.9ffffcp+4)": +double: 1 +idouble: 1 +Test "tgamma (-0x2.9fffffffffffep+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.9ffffffffffffffcp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.9ffffffffffffffffffffffffffep+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.9fffffffffffffffffffffffffp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.a000000000000000000000000002p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.a000000000000004p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.a000000000002p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.a00004p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.edfffcp+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.edffffffffffep+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.edfffffffffffffffffffffffffep+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.ee00000000000000000000000002p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.ee00000000000004p+8)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x2.ee00000000002p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.ee0004p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.fffffcp+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x2.ffffffffffffep+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.fffffffffffffffffffffffffffep+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x3.00000000000000000000000001p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x3.000004p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "tgamma (-0x3.1ffffcp+4)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x3.1fffffffffffep+4)": +double: 3 +idouble: 3 +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x3.1ffffffffffffffcp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x3.1ffffffffffffffffffffffffffep+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x3.1fffffffffffffffffffffffffp+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x3.2000000000000000000000000002p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x3.2000000000000004p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x3.200004p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x3.8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x3.e7fffffffffffffcp+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x3.e7fffffffffffffffffffffffffep+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x3.e7ffffffffffffffffffffffffp+8)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x3.e800000000000000000000000002p+8)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x3.e8000000000000000000000001p+8)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x3.e800000000000004p+8)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x3.e800000000002p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x3.e80004p+8)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x3.fffffcp+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x3.ffffffffffffep+0)": +double: 2 +idouble: 2 +Test "tgamma (-0x3.fffffffffffffffcp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x3.fffffffffffffffffffffffffffep+0)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x4.000008p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x4.8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x4.e1fffffffffffffffffffffffep+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x4.e2000000000000000000000002p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x4.e200000000000008p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x4.e200000000004p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x4.e20008p+8)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x4.fffff8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x4.ffffffffffffcp+0)": +double: 1 +idouble: 1 +Test "tgamma (-0x4.fffffffffffffff8p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x4.fffffffffffffffffffffffffep+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x4.fffffffffffffffffffffffffffcp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x5.0000000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x5.0000000000004p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x5.000008p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "tgamma (-0x5.8p+0)": +double: 1 +idouble: 1 +Test "tgamma (-0x5.dbfffffffffffff8p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x5.dbfffffffffffffffffffffffffcp+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x5.dc00000000000000000000000004p+8)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x5.dc000000000000000000000002p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x5.dc00000000004p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x5.dc0008p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x5.fffff8p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x5.ffffffffffffcp+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x5.fffffffffffffff8p+0)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x5.fffffffffffffffffffffffffep+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x5.fffffffffffffffffffffffffffcp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.0000000000000000000000000004p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.00000000000000000000000002p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.000008p+0)": +float: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x6.3ffff8p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.3fffffffffffcp+4)": +double: 2 +idouble: 2 +Test "tgamma (-0x6.3ffffffffffffff8p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x6.3ffffffffffffffffffffffffep+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x6.4000000000000000000000000004p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.40000000000000000000000002p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.4000000000004p+4)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x6.400008p+4)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x6.8p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.d5fff8p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.d5ffffffffffcp+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.d5fffffffffffff8p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.d5fffffffffffffffffffffffep+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.d600000000000000000000000004p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.d6000000000000000000000002p+8)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x6.d600000000000008p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.d600000000004p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.e2fffffffffffffffffffffffep+8)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x6.e300000000000000000000000004p+8)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x6.e3000000000000000000000002p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.fffff8p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "tgamma (-0x6.ffffffffffffcp+0)": +double: 4 +idouble: 4 +Test "tgamma (-0x6.fffffffffffffff8p+0)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x6.fffffffffffffffffffffffffffcp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x7.0000000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x7.0000000000004p+0)": +double: 3 +idouble: 3 +Test "tgamma (-0x7.000008p+0)": +double: 1 +idouble: 1 +Test "tgamma (-0x7.8p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "tgamma (-0x7.fffff8p+0)": +double: 3 +float: 1 +idouble: 3 +ifloat: 1 +Test "tgamma (-0x7.ffffffffffffcp+0)": +double: 3 +idouble: 3 +Test "tgamma (-0x7.fffffffffffffff8p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x7.fffffffffffffffffffffffffep+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x7.fffffffffffffffffffffffffffcp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x8.0000000000000000000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x8.00000000000000000000000004p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x8.0000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x8.00001p+0)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x8.8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x8p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x9.5ffffffffffffffp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x9.5ffffp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x9.60000000000000000000000004p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x9.600000000000001p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x9.6000000000008p+4)": +double: 1 +idouble: 1 +Test "tgamma (-0x9.60001p+4)": +double: 1 +idouble: 1 +Test "tgamma (-0x9.8p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "tgamma (-0x9.ffffffffffff8p+0)": +double: 1 +idouble: 1 +Test "tgamma (-0x9.fffffffffffffffffffffffffff8p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xa.00001p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xa.c000000400008p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xa.c0001p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.4ffffffffffffffffffffffffcp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.4ffffffffffffffffffffffffff8p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.4ffffffffffffffp+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.50000000000000000000000004p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.500000000000001p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.5000000000008p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.5ffffffffffffffffffffffffff8p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.5ffffp+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.60000000000000000000000004p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.600000000000001p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.6000000000008p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.6fffffffffff8p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.6ffffffffffffffffffffffffcp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.6ffffffffffffffffffffffffff8p+4)": +ildouble: 3 +ldouble: 3 +Test "tgamma (-0xb.7000000000000000000000000008p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.700000000000001p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.7000000000008p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.70001p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.7ffffffffffffffffffffffffcp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.7ffffffffffffffffffffffffff8p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.800000000000001p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.bfffffffffff8p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.bffffffffffffffffffffffffcp+4)": +ildouble: 3 +ldouble: 3 +Test "tgamma (-0xb.bffffffffffffffffffffffffff8p+4)": +ildouble: 4 +ldouble: 4 +Test "tgamma (-0xb.bffffp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.c000000000000000000000000008p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.c0000000000000000000000004p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.c00000000000001p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.c000000000008p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.c0001p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.cfffffffffff8p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.cffffffffffffffffffffffffcp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.cffffffffffffffffffffffffff8p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.cffffffffffffffp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.cffffp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.d000000000000000000000000008p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.d00000000000001p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.dfffffffffff8p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.dffffffffffffffp+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.dffffp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.e000000000000000000000000008p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.e000000000008p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.e0001p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.efffffffffff8p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.effffffffffffffffffffffffff8p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.effffffffffffffp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.f000000000000000000000000008p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.f0000000000000000000000004p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.f00000000000001p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.f0001p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xf.9fffffffffff8p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xf.9ffffffffffffffp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xf.9ffffp+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xf.a000000000000000000000000008p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xf.a0000000000000000000000004p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xf.a000000000008p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xf.a0001p+4)": +ildouble: 3 +ldouble: 3 +Test "tgamma (-0xf.ffffffffffff8p-4)": +double: 1 +idouble: 1 +Test "tgamma (-0xf.fffffffffffffffffffffffffff8p-4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xf.fffffp-4)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x1.28p+4)": +double: 1 +idouble: 1 +Test "tgamma (0x1.38p+4)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x1.78p+4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (0x1.d8p+4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (0x1.fffffep+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x1.fffffffffffffffep+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x1.ffffffffffffffffffffffffffffp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x1.fffffffffffffp+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x1p-24)": +float: 1 +ifloat: 1 +Test "tgamma (0x2.08p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x2.18p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x2.28p+4)": +double: 1 +idouble: 1 +Test "tgamma (0x2.30a43cp+4)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "tgamma (0x2.8p+0)": +float: 2 +ifloat: 2 +Test "tgamma (0x2.fffffcp+0)": +float: 3 +ifloat: 3 +Test "tgamma (0x2.ffffffffffffep+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x3.0000000000002p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x3.8p+0)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x3.fffffcp+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x3.ffffffffffffep+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x3.fffffffffffffffcp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x3.fffffffffffffffffffffffffffep+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x3p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x4.0000000000000000000000000004p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x4.0000000000004p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x4.000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x4.8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (0x4.fffff8p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x4.ffffffffffffcp+0)": +double: 1 +idouble: 1 +Test "tgamma (0x4.fffffffffffffffffffffffffep+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x4.fffffffffffffffffffffffffffcp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x4p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x5.0000000000000000000000000004p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x5.0000000000004p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x5.000008p+0)": +float: 3 +ifloat: 3 +Test "tgamma (0x5.fffff8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (0x5.ffffffffffffcp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x5.fffffffffffffff8p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x5.fffffffffffffffffffffffffep+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x6.0000000000000000000000000004p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x6.0000000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x6.0000000000004p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x6.000008p+0)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x6.8p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x6.db8c603359a94p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x6.fffff8p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x6.ffffffffffffcp+0)": +double: 4 +idouble: 4 +Test "tgamma (0x6.fffffffffffffff8p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x6p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x7.0000000000000000000000000004p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x7.0000000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x7.0000000000004p+0)": +double: 4 +idouble: 4 +Test "tgamma (0x7.000008p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x7.8p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "tgamma (0x7.fffff8p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "tgamma (0x7.ffffffffffffcp+0)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x7.fffffffffffffffffffffffffffcp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x7p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x8.0000000000000000000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x8.0000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x8.00001p+0)": +double: 2 +idouble: 2 +Test "tgamma (0x8.8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (0x8p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x8p-116)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x8p-4)": +float: 1 +ifloat: 1 +Test "tgamma (0x8p-56)": +double: 1 +idouble: 1 +Test "tgamma (0x9.8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x9p+0)": +double: 1 +idouble: 1 +Test "tgamma (0xa.b9fd72b0fb238p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (0xa.b9fd72b0fb23a9ddbf0d3804f8p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (0xa.b9fd72b0fb23a9dp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0xa.b9fd72b0fb23a9ep+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0xa.b9fd7p+4)": +double: 2 +idouble: 2 +Test "tgamma (0xap+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (0xb.3333333333333333333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 + +# y0 +Test "y0 (0x1.8p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "y0 (0x1.ff00000000002p+840)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "y0 (0x1p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "y0 (0x1p-100)": +ildouble: 1 +ldouble: 1 +Test "y0 (0x1p-20)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "y0 (0x1p-40)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "y0 (0x1p-60)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "y0 (0x1p-80)": +double: 1 +idouble: 1 +Test "y0 (0x2p+0)": +double: 1 +idouble: 1 +Test "y0 (0x4.ffcp+72)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "y0 (0x4p+16380)": +ildouble: 1 +ldouble: 1 +Test "y0 (0x4p-112)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "y0 (0x4p-12)": +ildouble: 1 +ldouble: 1 +Test "y0 (0x4p-32)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "y0 (0x4p-72)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "y0 (0x8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 3 +ldouble: 3 +Test "y0 (0x8p+1020)": +ildouble: 1 +ldouble: 1 +Test "y0 (0x8p+16380)": +ildouble: 2 +ldouble: 2 +Test "y0 (0xap+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 3 +ldouble: 3 +Test "y0 (0xf.ffffffffffff8p+1020)": +double: 1 +idouble: 1 +Test "y0 (0xf.fffffp+124)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# y1 +Test "y1 (0x1.8p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "y1 (0x1p-100)": +ildouble: 1 +ldouble: 1 +Test "y1 (0x1p-20)": +ildouble: 1 +ldouble: 1 +Test "y1 (0x1p-80)": +ildouble: 1 +ldouble: 1 +Test "y1 (0x2.002000002p+592)": +ildouble: 1 +ldouble: 1 +Test "y1 (0x2p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "y1 (0x2p-4)": +double: 1 +idouble: 1 +Test "y1 (0x4p-112)": +ildouble: 1 +ldouble: 1 +Test "y1 (0x4p-12)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "y1 (0x4p-32)": +ildouble: 1 +ldouble: 1 +Test "y1 (0x4p-72)": +ildouble: 1 +ldouble: 1 +Test "y1 (0x4p-92)": +ildouble: 1 +ldouble: 1 +Test "y1 (0x8p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "y1 (0x8p+1020)": +ildouble: 1 +ldouble: 1 +Test "y1 (0x8p+16380)": +ildouble: 2 +ldouble: 2 +Test "y1 (0x9.3f102p+96)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "y1 (0xap+0)": +double: 3 +float: 1 +idouble: 3 +ifloat: 1 +Test "y1 (0xf.ffffffffffff8p+1020)": +ildouble: 1 +ldouble: 1 +Test "y1 (0xf.ffffffffffffbffffffffffffcp+1020)": +ildouble: 1 +ldouble: 1 +Test "y1 (0xf.fffffp+124)": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +# yn +Test "yn (-10, 0x1p+0)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "yn (0, 0x1.8p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "yn (0, 0x1p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "yn (0, 0x2p+0)": +double: 1 +idouble: 1 +Test "yn (0, 0x8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 3 +ldouble: 3 +Test "yn (0, 0xap+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 3 +ldouble: 3 +Test "yn (1, 0x1.8p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "yn (1, 0x2p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "yn (1, 0x2p-4)": +double: 1 +idouble: 1 +Test "yn (1, 0x8p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "yn (1, 0xap+0)": +double: 3 +float: 1 +idouble: 3 +ifloat: 1 +Test "yn (10, 0x1p+0)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "yn (10, 0x2p+0)": +double: 3 +float: 1 +idouble: 3 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "yn (10, 0x2p-4)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "yn (10, 0xap+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 3 +ldouble: 3 +Test "yn (10, 0xcp-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 4 +ldouble: 4 +Test "yn (2, 0x8p+1020)": +ildouble: 1 +ldouble: 1 +Test "yn (2, 0x8p+124)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "yn (2, 0x8p+16380)": +ildouble: 2 +ldouble: 2 +Test "yn (2, 0xf.fffb1p+96)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "yn (2, 0xf.ffffffffffff8p+1020)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "yn (2, 0xf.fffffp+124)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "yn (3, 0x2p+0)": +double: 1 +idouble: 1 +Test "yn (3, 0x2p-4)": +double: 1 +idouble: 1 +Test "yn (3, 0xap+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "yn (3, 0xcp-4)": +ildouble: 2 +ldouble: 2 + +# Maximal error of functions: +Function: "acos_downward": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "acos_towardzero": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "acos_upward": +double: 1 +idouble: 1 + +Function: "acosh": +double: 1 +idouble: 1 +ldouble: 1 + +Function: "asin": +ildouble: 1 +ldouble: 1 + +Function: "asin_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "asin_tonearest": +ildouble: 1 +ldouble: 1 + +Function: "asin_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "asin_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: "asinh": +double: 1 +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "atan": +double: 1 +idouble: 1 + +Function: "atan2": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "atanh": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Real part of "cacos": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "cacos": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Real part of "cacosh": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "cacosh": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Real part of "casin": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "casin": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Real part of "casinh": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "casinh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Real part of "catan": +float: 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: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "catanh": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "cbrt": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Real part of "ccos": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "ccos": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Real part of "ccosh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "ccosh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Real part of "cexp": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "cexp": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 + +Function: Real part of "clog": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "clog": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Real part of "clog10": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "clog10": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: "cos": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "cos_downward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: "cos_tonearest": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "cos_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "cos_upward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: "cosh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "cosh_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 2 + +Function: "cosh_tonearest": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "cosh_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 2 + +Function: "cosh_upward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 3 + +Function: Real part of "cpow": +double: 2 +float: 5 +idouble: 2 +ifloat: 5 +ildouble: 4 +ldouble: 4 + +Function: Imaginary part of "cpow": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 + +Function: Real part of "csin": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "csin": +ildouble: 1 +ldouble: 1 + +Function: Real part of "csinh": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "csinh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Real part of "csqrt": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "csqrt": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Real part of "ctan": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 3 +ldouble: 3 + +Function: Imaginary part of "ctan": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 3 +ldouble: 3 + +Function: Real part of "ctan_downward": +double: 6 +float: 5 +idouble: 6 +ifloat: 5 +ildouble: 4 +ldouble: 4 + +Function: Imaginary part of "ctan_downward": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 5 +ldouble: 5 + +Function: Real part of "ctan_tonearest": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 3 +ldouble: 3 + +Function: Imaginary part of "ctan_tonearest": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 3 +ldouble: 3 + +Function: Real part of "ctan_towardzero": +double: 5 +float: 3 +idouble: 5 +ifloat: 3 +ildouble: 4 +ldouble: 4 + +Function: Imaginary part of "ctan_towardzero": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 5 +ldouble: 5 + +Function: Real part of "ctan_upward": +double: 2 +float: 3 +idouble: 2 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "ctan_upward": +double: 2 +float: 3 +idouble: 2 +ifloat: 3 +ildouble: 3 +ldouble: 3 + +Function: Real part of "ctanh": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 3 +ldouble: 3 + +Function: Imaginary part of "ctanh": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 3 +ldouble: 3 + +Function: Real part of "ctanh_downward": +double: 4 +float: 1 +idouble: 4 +ifloat: 1 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "ctanh_downward": +double: 6 +float: 5 +idouble: 6 +ifloat: 5 +ildouble: 4 +ldouble: 4 + +Function: Real part of "ctanh_tonearest": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 3 +ldouble: 3 + +Function: Imaginary part of "ctanh_tonearest": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 3 +ldouble: 3 + +Function: Real part of "ctanh_towardzero": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "ctanh_towardzero": +double: 5 +float: 2 +idouble: 5 +ifloat: 2 +ildouble: 3 +ldouble: 3 + +Function: Real part of "ctanh_upward": +double: 2 +float: 3 +idouble: 2 +ifloat: 3 +ildouble: 3 +ldouble: 3 + +Function: Imaginary part of "ctanh_upward": +double: 2 +float: 3 +idouble: 2 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: "erf": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: "erfc": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "exp10": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: "exp10_downward": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 + +Function: "exp10_tonearest": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: "exp10_towardzero": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 + +Function: "exp10_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: "exp2": +ildouble: 1 +ldouble: 1 + +Function: "exp_downward": +double: 1 +idouble: 1 + +Function: "exp_towardzero": +double: 1 +idouble: 1 + +Function: "exp_upward": +double: 1 +idouble: 1 + +Function: "expm1": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "expm1_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "expm1_tonearest": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "expm1_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "expm1_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "gamma": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "hypot": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: "j0": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: "j1": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 4 +ldouble: 4 + +Function: "jn": +double: 4 +float: 4 +idouble: 4 +ifloat: 4 +ildouble: 7 +ldouble: 7 + +Function: "lgamma": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "log": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "log10": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 + +Function: "log1p": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "log2": +ildouble: 1 +ldouble: 1 + +Function: "pow": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "pow10": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: "pow_downward": +float: 1 +ifloat: 1 + +Function: "pow_tonearest": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "pow_towardzero": +float: 1 +ifloat: 1 + +Function: "pow_upward": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "sin": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "sin_downward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 + +Function: "sin_tonearest": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "sin_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "sin_upward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 3 +ldouble: 3 + +Function: "sincos": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "sinh_downward": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: "sinh_towardzero": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: "sinh_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "tan": +ildouble: 1 +ldouble: 1 + +Function: "tan_downward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 + +Function: "tan_tonearest": +ildouble: 1 +ldouble: 1 + +Function: "tan_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "tan_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: "tanh": +ildouble: 1 +ldouble: 1 + +Function: "tgamma": +double: 4 +float: 3 +idouble: 4 +ifloat: 3 +ildouble: 4 +ldouble: 4 + +Function: "y0": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 3 +ldouble: 3 + +Function: "y1": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: "yn": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 +ildouble: 4 +ldouble: 4 + +# end of automatic generation diff --git a/sysdeps/aarch64/machine-gmon.h b/sysdeps/aarch64/machine-gmon.h new file mode 100644 index 0000000..b9d8f0e --- /dev/null +++ b/sysdeps/aarch64/machine-gmon.h @@ -0,0 +1,34 @@ +/* AArch64 definitions for profiling support. + Copyright (C) 1996-2014 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/>. */ + +/* Accept 'frompc' address as argument from the function that calls + __mcount for profiling. Use __builtin_return_address (0) + for the 'selfpc' address. */ + +#include <sysdep.h> + +static void mcount_internal (u_long frompc, u_long selfpc); + +#define _MCOUNT_DECL(frompc, selfpc) \ +static inline void mcount_internal (u_long frompc, u_long selfpc) + +#define MCOUNT \ +void __mcount (void *frompc) \ +{ \ + mcount_internal ((u_long) frompc, (u_long) RETURN_ADDRESS (0)); \ +} diff --git a/sysdeps/aarch64/mcount.c b/sysdeps/aarch64/mcount.c new file mode 100644 index 0000000..3201e41 --- /dev/null +++ b/sysdeps/aarch64/mcount.c @@ -0,0 +1,33 @@ +/* Copyright (C) 2013-2014 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 <shlib-compat.h> + +#include <gmon/mcount.c> + +/* We forgot to add _mcount in glibc 2.17. We added it in 2.18 + therefore we want it to be added with version GLIBC_2_18. However, + setting the version is not straight forward because a generic + Version file includes an earlier 2.xx version for each this symbol + and the linker uses the first version it sees. */ + +#if SHLIB_COMPAT (libc, GLIBC_2_17, GLIBC_2_18) +versioned_symbol (libc, __mcount, _mcount, GLIBC_2_18); +#else +strong_alias (__mcount, _mcount); +#endif diff --git a/sysdeps/aarch64/memcmp.S b/sysdeps/aarch64/memcmp.S new file mode 100644 index 0000000..6a62a4b --- /dev/null +++ b/sysdeps/aarch64/memcmp.S @@ -0,0 +1,151 @@ +/* memcmp - compare memory + + Copyright (C) 2013-2014 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 <sysdep.h> + +/* Assumptions: + * + * ARMv8-a, AArch64 + */ + +/* Parameters and result. */ +#define src1 x0 +#define src2 x1 +#define limit x2 +#define result x0 + +/* Internal variables. */ +#define data1 x3 +#define data1w w3 +#define data2 x4 +#define data2w w4 +#define has_nul x5 +#define diff x6 +#define endloop x7 +#define tmp1 x8 +#define tmp2 x9 +#define tmp3 x10 +#define pos x11 +#define limit_wd x12 +#define mask x13 + +ENTRY_ALIGN (memcmp, 6) + cbz limit, L(ret0) + eor tmp1, src1, src2 + tst tmp1, #7 + b.ne L(misaligned8) + ands tmp1, src1, #7 + b.ne L(mutual_align) + add limit_wd, limit, #7 + lsr limit_wd, limit_wd, #3 + /* Start of performance-critical section -- one 64B cache line. */ +L(loop_aligned): + ldr data1, [src1], #8 + ldr data2, [src2], #8 +L(start_realigned): + subs limit_wd, limit_wd, #1 + eor diff, data1, data2 /* Non-zero if differences found. */ + csinv endloop, diff, xzr, ne /* Last Dword or differences. */ + cbz endloop, L(loop_aligned) + /* End of performance-critical section -- one 64B cache line. */ + + /* Not reached the limit, must have found a diff. */ + cbnz limit_wd, L(not_limit) + + /* Limit % 8 == 0 => all bytes significant. */ + ands limit, limit, #7 + b.eq L(not_limit) + + lsl limit, limit, #3 /* Bits -> bytes. */ + mov mask, #~0 +#ifdef __AARCH64EB__ + lsr mask, mask, limit +#else + lsl mask, mask, limit +#endif + bic data1, data1, mask + bic data2, data2, mask + + orr diff, diff, mask +L(not_limit): + +#ifndef __AARCH64EB__ + rev diff, diff + rev data1, data1 + rev data2, data2 +#endif + /* The MS-non-zero bit of DIFF marks either the first bit + that is different, or the end of the significant data. + Shifting left now will bring the critical information into the + top bits. */ + clz pos, diff + lsl data1, data1, pos + lsl data2, data2, pos + /* But we need to zero-extend (char is unsigned) the value and then + perform a signed 32-bit subtraction. */ + lsr data1, data1, #56 + sub result, data1, data2, lsr #56 + RET + +L(mutual_align): + /* Sources are mutually aligned, but are not currently at an + alignment boundary. Round down the addresses and then mask off + the bytes that precede the start point. */ + bic src1, src1, #7 + bic src2, src2, #7 + add limit, limit, tmp1 /* Adjust the limit for the extra. */ + lsl tmp1, tmp1, #3 /* Bytes beyond alignment -> bits. */ + ldr data1, [src1], #8 + neg tmp1, tmp1 /* Bits to alignment -64. */ + ldr data2, [src2], #8 + mov tmp2, #~0 +#ifdef __AARCH64EB__ + /* Big-endian. Early bytes are at MSB. */ + lsl tmp2, tmp2, tmp1 /* Shift (tmp1 & 63). */ +#else + /* Little-endian. Early bytes are at LSB. */ + lsr tmp2, tmp2, tmp1 /* Shift (tmp1 & 63). */ +#endif + add limit_wd, limit, #7 + orr data1, data1, tmp2 + orr data2, data2, tmp2 + lsr limit_wd, limit_wd, #3 + b L(start_realigned) + +L(ret0): + mov result, #0 + RET + + .p2align 6 +L(misaligned8): + sub limit, limit, #1 +1: + /* Perhaps we can do better than this. */ + ldrb data1w, [src1], #1 + ldrb data2w, [src2], #1 + subs limit, limit, #1 + ccmp data1w, data2w, #0, cs /* NZCV = 0b0000. */ + b.eq 1b + sub result, data1, data2 + RET +END (memcmp) +#undef bcmp +weak_alias (memcmp, bcmp) +libc_hidden_builtin_def (memcmp) diff --git a/sysdeps/aarch64/memcpy.S b/sysdeps/aarch64/memcpy.S new file mode 100644 index 0000000..caf2ab2 --- /dev/null +++ b/sysdeps/aarch64/memcpy.S @@ -0,0 +1,176 @@ +/* Copyright (C) 2012-2014 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/>. */ + +/* Assumptions: + * + * ARMv8-a, AArch64 + * Unaligned accesses + * + */ + +#define dstin x0 +#define src x1 +#define count x2 +#define tmp1 x3 +#define tmp1w w3 +#define tmp2 x4 +#define tmp2w w4 +#define tmp3 x5 +#define tmp3w w5 +#define dst x6 + +#define A_l x7 +#define A_h x8 +#define B_l x9 +#define B_h x10 +#define C_l x11 +#define C_h x12 +#define D_l x13 +#define D_h x14 + +#include <sysdep.h> + +ENTRY_ALIGN (memcpy, 6) + + mov dst, dstin + cmp count, #64 + b.ge L(cpy_not_short) + cmp count, #15 + b.le L(tail15tiny) + + /* Deal with small copies quickly by dropping straight into the + * exit block. */ +L(tail63): + /* Copy up to 48 bytes of data. At this point we only need the + * bottom 6 bits of count to be accurate. */ + ands tmp1, count, #0x30 + b.eq L(tail15) + add dst, dst, tmp1 + add src, src, tmp1 + cmp tmp1w, #0x20 + b.eq 1f + b.lt 2f + ldp A_l, A_h, [src, #-48] + stp A_l, A_h, [dst, #-48] +1: + ldp A_l, A_h, [src, #-32] + stp A_l, A_h, [dst, #-32] +2: + ldp A_l, A_h, [src, #-16] + stp A_l, A_h, [dst, #-16] + +L(tail15): + ands count, count, #15 + beq 1f + add src, src, count + ldp A_l, A_h, [src, #-16] + add dst, dst, count + stp A_l, A_h, [dst, #-16] +1: + RET + +L(tail15tiny): + /* Copy up to 15 bytes of data. Does not assume additional data + being copied. */ + tbz count, #3, 1f + ldr tmp1, [src], #8 + str tmp1, [dst], #8 +1: + tbz count, #2, 1f + ldr tmp1w, [src], #4 + str tmp1w, [dst], #4 +1: + tbz count, #1, 1f + ldrh tmp1w, [src], #2 + strh tmp1w, [dst], #2 +1: + tbz count, #0, 1f + ldrb tmp1w, [src] + strb tmp1w, [dst] +1: + RET + +L(cpy_not_short): + /* We don't much care about the alignment of DST, but we want SRC + * to be 128-bit (16 byte) aligned so that we don't cross cache line + * boundaries on both loads and stores. */ + neg tmp2, src + ands tmp2, tmp2, #15 /* Bytes to reach alignment. */ + b.eq 2f + sub count, count, tmp2 + /* Copy more data than needed; it's faster than jumping + * around copying sub-Quadword quantities. We know that + * it can't overrun. */ + ldp A_l, A_h, [src] + add src, src, tmp2 + stp A_l, A_h, [dst] + add dst, dst, tmp2 + /* There may be less than 63 bytes to go now. */ + cmp count, #63 + b.le L(tail63) +2: + subs count, count, #128 + b.ge L(cpy_body_large) + /* Less than 128 bytes to copy, so handle 64 here and then jump + * to the tail. */ + ldp A_l, A_h, [src] + ldp B_l, B_h, [src, #16] + ldp C_l, C_h, [src, #32] + ldp D_l, D_h, [src, #48] + stp A_l, A_h, [dst] + stp B_l, B_h, [dst, #16] + stp C_l, C_h, [dst, #32] + stp D_l, D_h, [dst, #48] + tst count, #0x3f + add src, src, #64 + add dst, dst, #64 + b.ne L(tail63) + RET + + /* Critical loop. Start at a new cache line boundary. Assuming + * 64 bytes per line this ensures the entire loop is in one line. */ + .p2align 6 +L(cpy_body_large): + /* There are at least 128 bytes to copy. */ + ldp A_l, A_h, [src, #0] + sub dst, dst, #16 /* Pre-bias. */ + ldp B_l, B_h, [src, #16] + ldp C_l, C_h, [src, #32] + ldp D_l, D_h, [src, #48]! /* src += 64 - Pre-bias. */ +1: + stp A_l, A_h, [dst, #16] + ldp A_l, A_h, [src, #16] + stp B_l, B_h, [dst, #32] + ldp B_l, B_h, [src, #32] + stp C_l, C_h, [dst, #48] + ldp C_l, C_h, [src, #48] + stp D_l, D_h, [dst, #64]! + ldp D_l, D_h, [src, #64]! + subs count, count, #64 + b.ge 1b + stp A_l, A_h, [dst, #16] + stp B_l, B_h, [dst, #32] + stp C_l, C_h, [dst, #48] + stp D_l, D_h, [dst, #64] + add src, src, #16 + add dst, dst, #64 + 16 + tst count, #0x3f + b.ne L(tail63) + RET +END (memcpy) +libc_hidden_builtin_def (memcpy) diff --git a/sysdeps/aarch64/memmove.S b/sysdeps/aarch64/memmove.S new file mode 100644 index 0000000..4227b7f --- /dev/null +++ b/sysdeps/aarch64/memmove.S @@ -0,0 +1,312 @@ +/* Copyright (C) 2012-2014 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 <sysdep.h> + +/* Assumptions: + * + * ARMv8-a, AArch64 + * Unaligned accesses + */ + +/* Parameters and result. */ +#define dstin x0 +#define src x1 +#define count x2 +#define tmp1 x3 +#define tmp1w w3 +#define tmp2 x4 +#define tmp2w w4 +#define tmp3 x5 +#define tmp3w w5 +#define dst x6 + +#define A_l x7 +#define A_h x8 +#define B_l x9 +#define B_h x10 +#define C_l x11 +#define C_h x12 +#define D_l x13 +#define D_h x14 + +ENTRY_ALIGN (memmove, 6) + + cmp dstin, src + b.lo L(downwards) + add tmp1, src, count + cmp dstin, tmp1 + b.hs memcpy /* No overlap. */ + + /* Upwards move with potential overlap. + * Need to move from the tail backwards. SRC and DST point one + * byte beyond the remaining data to move. */ + add dst, dstin, count + add src, src, count + cmp count, #64 + b.ge L(mov_not_short_up) + + /* Deal with small moves quickly by dropping straight into the + * exit block. */ +L(tail63up): + /* Move up to 48 bytes of data. At this point we only need the + * bottom 6 bits of count to be accurate. */ + ands tmp1, count, #0x30 + b.eq L(tail15up) + sub dst, dst, tmp1 + sub src, src, tmp1 + cmp tmp1w, #0x20 + b.eq 1f + b.lt 2f + ldp A_l, A_h, [src, #32] + stp A_l, A_h, [dst, #32] +1: + ldp A_l, A_h, [src, #16] + stp A_l, A_h, [dst, #16] +2: + ldp A_l, A_h, [src] + stp A_l, A_h, [dst] +L(tail15up): + /* Move up to 15 bytes of data. Does not assume additional data + * being moved. */ + tbz count, #3, 1f + ldr tmp1, [src, #-8]! + str tmp1, [dst, #-8]! +1: + tbz count, #2, 1f + ldr tmp1w, [src, #-4]! + str tmp1w, [dst, #-4]! +1: + tbz count, #1, 1f + ldrh tmp1w, [src, #-2]! + strh tmp1w, [dst, #-2]! +1: + tbz count, #0, 1f + ldrb tmp1w, [src, #-1] + strb tmp1w, [dst, #-1] +1: + RET + +L(mov_not_short_up): + /* We don't much care about the alignment of DST, but we want SRC + * to be 128-bit (16 byte) aligned so that we don't cross cache line + * boundaries on both loads and stores. */ + ands tmp2, src, #15 /* Bytes to reach alignment. */ + b.eq 2f + sub count, count, tmp2 + /* Move enough data to reach alignment; unlike memcpy, we have to + * be aware of the overlap, which means we can't move data twice. */ + tbz tmp2, #3, 1f + ldr tmp1, [src, #-8]! + str tmp1, [dst, #-8]! +1: + tbz tmp2, #2, 1f + ldr tmp1w, [src, #-4]! + str tmp1w, [dst, #-4]! +1: + tbz tmp2, #1, 1f + ldrh tmp1w, [src, #-2]! + strh tmp1w, [dst, #-2]! +1: + tbz tmp2, #0, 1f + ldrb tmp1w, [src, #-1]! + strb tmp1w, [dst, #-1]! +1: + + /* There may be less than 63 bytes to go now. */ + cmp count, #63 + b.le L(tail63up) +2: + subs count, count, #128 + b.ge L(mov_body_large_up) + /* Less than 128 bytes to move, so handle 64 here and then jump + * to the tail. */ + ldp A_l, A_h, [src, #-64]! + ldp B_l, B_h, [src, #16] + ldp C_l, C_h, [src, #32] + ldp D_l, D_h, [src, #48] + stp A_l, A_h, [dst, #-64]! + stp B_l, B_h, [dst, #16] + stp C_l, C_h, [dst, #32] + stp D_l, D_h, [dst, #48] + tst count, #0x3f + b.ne L(tail63up) + RET + + /* Critical loop. Start at a new Icache line boundary. Assuming + * 64 bytes per line this ensures the entire loop is in one line. */ + .p2align 6 +L(mov_body_large_up): + /* There are at least 128 bytes to move. */ + ldp A_l, A_h, [src, #-16] + ldp B_l, B_h, [src, #-32] + ldp C_l, C_h, [src, #-48] + ldp D_l, D_h, [src, #-64]! +1: + stp A_l, A_h, [dst, #-16] + ldp A_l, A_h, [src, #-16] + stp B_l, B_h, [dst, #-32] + ldp B_l, B_h, [src, #-32] + stp C_l, C_h, [dst, #-48] + ldp C_l, C_h, [src, #-48] + stp D_l, D_h, [dst, #-64]! + ldp D_l, D_h, [src, #-64]! + subs count, count, #64 + b.ge 1b + stp A_l, A_h, [dst, #-16] + stp B_l, B_h, [dst, #-32] + stp C_l, C_h, [dst, #-48] + stp D_l, D_h, [dst, #-64]! + tst count, #0x3f + b.ne L(tail63up) + RET + +L(downwards): + /* For a downwards move we can safely use memcpy provided that + * DST is more than 16 bytes away from SRC. */ + sub tmp1, src, #16 + cmp dstin, tmp1 + b.ls memcpy /* May overlap, but not critically. */ + + mov dst, dstin /* Preserve DSTIN for return value. */ + cmp count, #64 + b.ge L(mov_not_short_down) + + /* Deal with small moves quickly by dropping straight into the + * exit block. */ +L(tail63down): + /* Move up to 48 bytes of data. At this point we only need the + * bottom 6 bits of count to be accurate. */ + ands tmp1, count, #0x30 + b.eq L(tail15down) + add dst, dst, tmp1 + add src, src, tmp1 + cmp tmp1w, #0x20 + b.eq 1f + b.lt 2f + ldp A_l, A_h, [src, #-48] + stp A_l, A_h, [dst, #-48] +1: + ldp A_l, A_h, [src, #-32] + stp A_l, A_h, [dst, #-32] +2: + ldp A_l, A_h, [src, #-16] + stp A_l, A_h, [dst, #-16] +L(tail15down): + /* Move up to 15 bytes of data. Does not assume additional data + being moved. */ + tbz count, #3, 1f + ldr tmp1, [src], #8 + str tmp1, [dst], #8 +1: + tbz count, #2, 1f + ldr tmp1w, [src], #4 + str tmp1w, [dst], #4 +1: + tbz count, #1, 1f + ldrh tmp1w, [src], #2 + strh tmp1w, [dst], #2 +1: + tbz count, #0, 1f + ldrb tmp1w, [src] + strb tmp1w, [dst] +1: + RET + +L(mov_not_short_down): + /* We don't much care about the alignment of DST, but we want SRC + * to be 128-bit (16 byte) aligned so that we don't cross cache line + * boundaries on both loads and stores. */ + neg tmp2, src + ands tmp2, tmp2, #15 /* Bytes to reach alignment. */ + b.eq 2f + sub count, count, tmp2 + /* Move enough data to reach alignment; unlike memcpy, we have to + * be aware of the overlap, which means we can't move data twice. */ + tbz tmp2, #3, 1f + ldr tmp1, [src], #8 + str tmp1, [dst], #8 +1: + tbz tmp2, #2, 1f + ldr tmp1w, [src], #4 + str tmp1w, [dst], #4 +1: + tbz tmp2, #1, 1f + ldrh tmp1w, [src], #2 + strh tmp1w, [dst], #2 +1: + tbz tmp2, #0, 1f + ldrb tmp1w, [src], #1 + strb tmp1w, [dst], #1 +1: + + /* There may be less than 63 bytes to go now. */ + cmp count, #63 + b.le L(tail63down) +2: + subs count, count, #128 + b.ge L(mov_body_large_down) + /* Less than 128 bytes to move, so handle 64 here and then jump + * to the tail. */ + ldp A_l, A_h, [src] + ldp B_l, B_h, [src, #16] + ldp C_l, C_h, [src, #32] + ldp D_l, D_h, [src, #48] + stp A_l, A_h, [dst] + stp B_l, B_h, [dst, #16] + stp C_l, C_h, [dst, #32] + stp D_l, D_h, [dst, #48] + tst count, #0x3f + add src, src, #64 + add dst, dst, #64 + b.ne L(tail63down) + RET + + /* Critical loop. Start at a new cache line boundary. Assuming + * 64 bytes per line this ensures the entire loop is in one line. */ + .p2align 6 +L(mov_body_large_down): + /* There are at least 128 bytes to move. */ + ldp A_l, A_h, [src, #0] + sub dst, dst, #16 /* Pre-bias. */ + ldp B_l, B_h, [src, #16] + ldp C_l, C_h, [src, #32] + ldp D_l, D_h, [src, #48]! /* src += 64 - Pre-bias. */ +1: + stp A_l, A_h, [dst, #16] + ldp A_l, A_h, [src, #16] + stp B_l, B_h, [dst, #32] + ldp B_l, B_h, [src, #32] + stp C_l, C_h, [dst, #48] + ldp C_l, C_h, [src, #48] + stp D_l, D_h, [dst, #64]! + ldp D_l, D_h, [src, #64]! + subs count, count, #64 + b.ge 1b + stp A_l, A_h, [dst, #16] + stp B_l, B_h, [dst, #32] + stp C_l, C_h, [dst, #48] + stp D_l, D_h, [dst, #64] + add src, src, #16 + add dst, dst, #64 + 16 + tst count, #0x3f + b.ne L(tail63down) + RET +END (memmove) + +libc_hidden_builtin_def (memmove) diff --git a/sysdeps/aarch64/memset.S b/sysdeps/aarch64/memset.S new file mode 100644 index 0000000..06f04be --- /dev/null +++ b/sysdeps/aarch64/memset.S @@ -0,0 +1,229 @@ +/* Copyright (C) 2012-2014 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/>. */ + +/* Assumptions: + * + * ARMv8-a, AArch64 + * Unaligned accesses + * + */ + +#include <sysdep.h> + +/* By default we assume that the DC instruction can be used to zero + data blocks more efficiently. In some circumstances this might be + unsafe, for example in an asymmetric multiprocessor environment with + different DC clear lengths (neither the upper nor lower lengths are + safe to use). The feature can be disabled by defining DONT_USE_DC. + + If code may be run in a virtualized environment, then define + MAYBE_VIRT. This will cause the code to cache the system register + values rather than re-reading them each call. */ + +#define dstin x0 +#define val w1 +#define count x2 +#define tmp1 x3 +#define tmp1w w3 +#define tmp2 x4 +#define tmp2w w4 +#define zva_len_x x5 +#define zva_len w5 +#define zva_bits_x x6 + +#define A_l x7 +#define A_lw w7 +#define dst x8 +#define tmp3w w9 + +ENTRY_ALIGN (__memset, 6) + + mov dst, dstin /* Preserve return value. */ + ands A_lw, val, #255 +#ifndef DONT_USE_DC + b.eq L(zero_mem) +#endif + orr A_lw, A_lw, A_lw, lsl #8 + orr A_lw, A_lw, A_lw, lsl #16 + orr A_l, A_l, A_l, lsl #32 +L(tail_maybe_long): + cmp count, #64 + b.ge L(not_short) +L(tail_maybe_tiny): + cmp count, #15 + b.le L(tail15tiny) +L(tail63): + ands tmp1, count, #0x30 + b.eq L(tail15) + add dst, dst, tmp1 + cmp tmp1w, #0x20 + b.eq 1f + b.lt 2f + stp A_l, A_l, [dst, #-48] +1: + stp A_l, A_l, [dst, #-32] +2: + stp A_l, A_l, [dst, #-16] + +L(tail15): + and count, count, #15 + add dst, dst, count + stp A_l, A_l, [dst, #-16] /* Repeat some/all of last store. */ + RET + +L(tail15tiny): + /* Set up to 15 bytes. Does not assume earlier memory + being set. */ + tbz count, #3, 1f + str A_l, [dst], #8 +1: + tbz count, #2, 1f + str A_lw, [dst], #4 +1: + tbz count, #1, 1f + strh A_lw, [dst], #2 +1: + tbz count, #0, 1f + strb A_lw, [dst] +1: + RET + + /* Critical loop. Start at a new cache line boundary. Assuming + * 64 bytes per line, this ensures the entire loop is in one line. */ + .p2align 6 +L(not_short): + neg tmp2, dst + ands tmp2, tmp2, #15 + b.eq 2f + /* Bring DST to 128-bit (16-byte) alignment. We know that there's + * more than that to set, so we simply store 16 bytes and advance by + * the amount required to reach alignment. */ + sub count, count, tmp2 + stp A_l, A_l, [dst] + add dst, dst, tmp2 + /* There may be less than 63 bytes to go now. */ + cmp count, #63 + b.le L(tail63) +2: + sub dst, dst, #16 /* Pre-bias. */ + sub count, count, #64 +1: + stp A_l, A_l, [dst, #16] + stp A_l, A_l, [dst, #32] + stp A_l, A_l, [dst, #48] + stp A_l, A_l, [dst, #64]! + subs count, count, #64 + b.ge 1b + tst count, #0x3f + add dst, dst, #16 + b.ne L(tail63) + RET + +#ifndef DONT_USE_DC + /* For zeroing memory, check to see if we can use the ZVA feature to + * zero entire 'cache' lines. */ +L(zero_mem): + mov A_l, #0 + cmp count, #63 + b.le L(tail_maybe_tiny) + neg tmp2, dst + ands tmp2, tmp2, #15 + b.eq 1f + sub count, count, tmp2 + stp A_l, A_l, [dst] + add dst, dst, tmp2 + cmp count, #63 + b.le L(tail63) +1: + /* For zeroing small amounts of memory, it's not worth setting up + * the line-clear code. */ + cmp count, #128 + b.lt L(not_short) +#ifdef MAYBE_VIRT + /* For efficiency when virtualized, we cache the ZVA capability. */ + adrp tmp2, L(cache_clear) + ldr zva_len, [tmp2, #:lo12:L(cache_clear)] + tbnz zva_len, #31, L(not_short) + cbnz zva_len, L(zero_by_line) + mrs tmp1, dczid_el0 + tbz tmp1, #4, 1f + /* ZVA not available. Remember this for next time. */ + mov zva_len, #~0 + str zva_len, [tmp2, #:lo12:L(cache_clear)] + b L(not_short) +1: + mov tmp3w, #4 + and zva_len, tmp1w, #15 /* Safety: other bits reserved. */ + lsl zva_len, tmp3w, zva_len + str zva_len, [tmp2, #:lo12:L(cache_clear)] +#else + mrs tmp1, dczid_el0 + tbnz tmp1, #4, L(not_short) + mov tmp3w, #4 + and zva_len, tmp1w, #15 /* Safety: other bits reserved. */ + lsl zva_len, tmp3w, zva_len +#endif + +L(zero_by_line): + /* Compute how far we need to go to become suitably aligned. We're + * already at quad-word alignment. */ + cmp count, zva_len_x + b.lt L(not_short) /* Not enough to reach alignment. */ + sub zva_bits_x, zva_len_x, #1 + neg tmp2, dst + ands tmp2, tmp2, zva_bits_x + b.eq 1f /* Already aligned. */ + /* Not aligned, check that there's enough to copy after alignment. */ + sub tmp1, count, tmp2 + cmp tmp1, #64 + ccmp tmp1, zva_len_x, #8, ge /* NZCV=0b1000 */ + b.lt L(not_short) + /* We know that there's at least 64 bytes to zero and that it's safe + * to overrun by 64 bytes. */ + mov count, tmp1 +2: + stp A_l, A_l, [dst] + stp A_l, A_l, [dst, #16] + stp A_l, A_l, [dst, #32] + subs tmp2, tmp2, #64 + stp A_l, A_l, [dst, #48] + add dst, dst, #64 + b.ge 2b + /* We've overrun a bit, so adjust dst downwards. */ + add dst, dst, tmp2 +1: + sub count, count, zva_len_x +3: + dc zva, dst + add dst, dst, zva_len_x + subs count, count, zva_len_x + b.ge 3b + ands count, count, zva_bits_x + b.ne L(tail_maybe_long) + RET +#ifdef MAYBE_VIRT + .bss + .p2align 2 +L(cache_clear): + .space 4 +#endif +#endif /* DONT_USE_DC */ + +END (__memset) +weak_alias (__memset, memset) +libc_hidden_builtin_def (memset) diff --git a/sysdeps/aarch64/memusage.h b/sysdeps/aarch64/memusage.h new file mode 100644 index 0000000..7553269 --- /dev/null +++ b/sysdeps/aarch64/memusage.h @@ -0,0 +1,21 @@ +/* Copyright (C) 2000-2014 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/>. */ + +#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) + +#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/aarch64/nptl/Makefile b/sysdeps/aarch64/nptl/Makefile new file mode 100644 index 0000000..f550eb1 --- /dev/null +++ b/sysdeps/aarch64/nptl/Makefile @@ -0,0 +1,21 @@ +# Copyright (C) 2005-2014 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/>. + +ifeq ($(subdir),csu) +gen-as-const-headers += tcb-offsets.sym +endif diff --git a/sysdeps/aarch64/nptl/pthread_spin_lock.c b/sysdeps/aarch64/nptl/pthread_spin_lock.c new file mode 100644 index 0000000..490bd43 --- /dev/null +++ b/sysdeps/aarch64/nptl/pthread_spin_lock.c @@ -0,0 +1,24 @@ +/* Copyright (C) 2008-2014 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/>. */ + +#define SPIN_LOCK_READS_BETWEEN_CMPXCHG 1000 + +/* We can't use the normal "#include <nptl/pthread_spin_lock.c>" because + it will resolve to this very file. Using "sysdeps/.." as reference to the + top level directory does the job. */ +#include <sysdeps/../nptl/pthread_spin_lock.c> diff --git a/sysdeps/aarch64/nptl/pthreaddef.h b/sysdeps/aarch64/nptl/pthreaddef.h new file mode 100644 index 0000000..361a95c --- /dev/null +++ b/sysdeps/aarch64/nptl/pthreaddef.h @@ -0,0 +1,37 @@ +/* Copyright (C) 2002-2014 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/>. */ + +/* Default stack size. */ +#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024) + +/* Required stack pointer alignment at beginning. */ +#define STACK_ALIGN 16 + +/* Minimal stack size after allocating thread descriptor and guard size. */ +#define MINIMAL_REST_STACK 2048 + +/* Alignment requirement for TCB. */ +#define TCB_ALIGNMENT 16 + +/* Location of current stack frame. */ +#define CURRENT_STACK_FRAME __builtin_frame_address (0) + + +/* XXX Until we have a better place keep the definitions here. */ +#define __exit_thread_inline(val) \ + INLINE_SYSCALL (exit, 1, (val)) diff --git a/sysdeps/aarch64/nptl/tcb-offsets.sym b/sysdeps/aarch64/nptl/tcb-offsets.sym new file mode 100644 index 0000000..0677aea --- /dev/null +++ b/sysdeps/aarch64/nptl/tcb-offsets.sym @@ -0,0 +1,7 @@ +#include <sysdep.h> +#include <tls.h> + +PTHREAD_MULTIPLE_THREADS_OFFSET offsetof (struct pthread, header.multiple_threads) +PTHREAD_PID_OFFSET offsetof (struct pthread, pid) +PTHREAD_TID_OFFSET offsetof (struct pthread, tid) +PTHREAD_SIZEOF sizeof (struct pthread) diff --git a/sysdeps/aarch64/nptl/tls.h b/sysdeps/aarch64/nptl/tls.h new file mode 100644 index 0000000..f03c519 --- /dev/null +++ b/sysdeps/aarch64/nptl/tls.h @@ -0,0 +1,142 @@ +/* Copyright (C) 2005-2014 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/>. */ + +#ifndef _TLS_H +#define _TLS_H 1 + +#include <dl-sysdep.h> + +#ifndef __ASSEMBLER__ +# include <stdbool.h> +# include <stddef.h> +# include <stdint.h> + +/* Type for the dtv. */ +typedef union dtv +{ + size_t counter; + struct + { + void *val; + bool is_static; + } pointer; +} dtv_t; + +#else /* __ASSEMBLER__ */ +# include <tcb-offsets.h> +#endif /* __ASSEMBLER__ */ + +#ifndef __ASSEMBLER__ + +/* Get system call information. */ +# include <sysdep.h> + +/* The TP points to the start of the thread blocks. */ +# define TLS_DTV_AT_TP 1 + +/* Get the thread descriptor definition. */ +# include <nptl/descr.h> + +typedef struct +{ + dtv_t *dtv; + void *private; +} tcbhead_t; + +/* This is the size of the initial TCB. */ +# define TLS_INIT_TCB_SIZE sizeof (tcbhead_t) + +/* Alignment requirements for the initial TCB. */ +# define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t) + +/* This is the size of the TCB. */ +# define TLS_TCB_SIZE sizeof (tcbhead_t) + +/* This is the size we need before TCB. */ +# define TLS_PRE_TCB_SIZE sizeof (struct pthread) + +/* Alignment requirements for the TCB. */ +# define TLS_TCB_ALIGN __alignof__ (tcbhead_t) + +/* Install the dtv pointer. The pointer passed is to the element with + index -1 which contain the length. */ +# define INSTALL_DTV(tcbp, dtvp) \ + (((tcbhead_t *) (tcbp))->dtv = (dtvp) + 1) + +/* Install new dtv for current thread. */ +# define INSTALL_NEW_DTV(dtv) \ + (THREAD_DTV() = (dtv)) + +/* Return dtv of given thread descriptor. */ +# define GET_DTV(tcbp) \ + (((tcbhead_t *) (tcbp))->dtv) + +/* Code to initially initialize the thread pointer. This might need + special attention since 'errno' is not yet available and if the + operation can cause a failure 'errno' must not be touched. */ +# define TLS_INIT_TP(tcbp, secondcall) \ + ({ __asm __volatile ("msr tpidr_el0, %0" : : "r" (tcbp)); NULL; }) + +/* Return the address of the dtv for the current thread. */ +# define THREAD_DTV() \ + (((tcbhead_t *) __builtin_thread_pointer ())->dtv) + +/* Return the thread descriptor for the current thread. */ +# define THREAD_SELF \ + ((struct pthread *)__builtin_thread_pointer () - 1) + +/* Magic for libthread_db to know how to do THREAD_SELF. */ +# define DB_THREAD_SELF \ + CONST_THREAD_AREA (64, sizeof (struct pthread)) + +/* Access to data in the thread descriptor is easy. */ +# define THREAD_GETMEM(descr, member) \ + descr->member +# define THREAD_GETMEM_NC(descr, member, idx) \ + descr->member[idx] +# define THREAD_SETMEM(descr, member, value) \ + descr->member = (value) +# define THREAD_SETMEM_NC(descr, member, idx, value) \ + descr->member[idx] = (value) + +/* Get and set the global scope generation counter in struct pthread. */ +# define THREAD_GSCOPE_FLAG_UNUSED 0 +# define THREAD_GSCOPE_FLAG_USED 1 +# define THREAD_GSCOPE_FLAG_WAIT 2 +# define THREAD_GSCOPE_RESET_FLAG() \ + do \ + { int __res \ + = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \ + THREAD_GSCOPE_FLAG_UNUSED); \ + if (__res == THREAD_GSCOPE_FLAG_WAIT) \ + lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE); \ + } \ + while (0) +# define THREAD_GSCOPE_SET_FLAG() \ + do \ + { \ + THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \ + atomic_write_barrier (); \ + } \ + while (0) +# define THREAD_GSCOPE_WAIT() \ + GL(dl_wait_lookup_done) () + +# endif /* __ASSEMBLER__ */ + +#endif /* tls.h */ diff --git a/sysdeps/aarch64/preconfigure b/sysdeps/aarch64/preconfigure new file mode 100644 index 0000000..720c1d7 --- /dev/null +++ b/sysdeps/aarch64/preconfigure @@ -0,0 +1,14 @@ +case "$machine" in +aarch64*) + base_machine=aarch64 + machine=aarch64 + ;; +esac + +case "$machine" in +aarch64*) + # Parameters to allow auto-detection of -z relro. + libc_commonpagesize=0x1000 + libc_relro_required=yes + ;; +esac diff --git a/sysdeps/aarch64/setjmp.S b/sysdeps/aarch64/setjmp.S new file mode 100644 index 0000000..5822abd --- /dev/null +++ b/sysdeps/aarch64/setjmp.S @@ -0,0 +1,69 @@ +/* Copyright (C) 1997-2014 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 <sysdep.h> +#include <jmpbuf-offsets.h> + + /* Keep traditional entry points in with sigsetjmp(). */ +ENTRY (setjmp) + mov x1, #1 + b 1f +END (setjmp) + +ENTRY (_setjmp) + mov x1, #0 + b 1f +END (_setjmp) +libc_hidden_def (_setjmp) + +ENTRY (__sigsetjmp) + +1: + stp x19, x20, [x0, #JB_X19<<3] + stp x21, x22, [x0, #JB_X21<<3] + stp x23, x24, [x0, #JB_X23<<3] + stp x25, x26, [x0, #JB_X25<<3] + stp x27, x28, [x0, #JB_X27<<3] + +#ifdef PTR_MANGLE + PTR_MANGLE (x4, x30, x3, x2) + stp x29, x4, [x0, #JB_X29<<3] +#else + stp x29, x30, [x0, #JB_X29<<3] +#endif + stp d8, d9, [x0, #JB_D8<<3] + stp d10, d11, [x0, #JB_D10<<3] + stp d12, d13, [x0, #JB_D12<<3] + stp d14, d15, [x0, #JB_D14<<3] +#ifdef PTR_MANGLE + mov x4, sp + PTR_MANGLE (x5, x4, x3, x2) + str x5, [x0, #JB_SP<<3] +#else + mov x2, sp + str x2, [x0, #JB_SP<<3] +#endif +#if defined NOT_IN_libc && defined IS_IN_rtld + /* In ld.so we never save the signal mask */ + mov w0, #0 + RET +#else + b C_SYMBOL_NAME(__sigjmp_save) +#endif +END (__sigsetjmp) +hidden_def (__sigsetjmp) diff --git a/sysdeps/aarch64/shlib-versions b/sysdeps/aarch64/shlib-versions new file mode 100644 index 0000000..67f1911 --- /dev/null +++ b/sysdeps/aarch64/shlib-versions @@ -0,0 +1,7 @@ +aarch64.*-.*-linux.* DEFAULT GLIBC_2.17 + +%ifdef HAVE_AARCH64_BE +aarch64.*-.*-linux.* ld=ld-linux-aarch64_be.so.1 +%else +aarch64.*-.*-linux.* ld=ld-linux-aarch64.so.1 +%endif diff --git a/sysdeps/aarch64/soft-fp/Makefile b/sysdeps/aarch64/soft-fp/Makefile new file mode 100644 index 0000000..ada13e8 --- /dev/null +++ b/sysdeps/aarch64/soft-fp/Makefile @@ -0,0 +1,3 @@ +ifeq ($(subdir),math) +CPPFLAGS += -I../soft-fp +endif diff --git a/sysdeps/aarch64/soft-fp/e_sqrtl.c b/sysdeps/aarch64/soft-fp/e_sqrtl.c new file mode 100644 index 0000000..a13c542 --- /dev/null +++ b/sysdeps/aarch64/soft-fp/e_sqrtl.c @@ -0,0 +1,39 @@ +/* long double square root in software floating-point emulation. + Copyright (C) 1997-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Richard Henderson (rth@cygnus.com) and + Jakub Jelinek (jj@ultra.linux.cz). + + 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 <stdlib.h> +#include <soft-fp.h> +#include <quad.h> + +long double +__ieee754_sqrtl (const long double a) +{ + FP_DECL_EX; + FP_DECL_Q(A); FP_DECL_Q(C); + long double c; + + FP_INIT_ROUNDMODE; + FP_UNPACK_Q(A, a); + FP_SQRT_Q(C, A); + FP_PACK_Q(c, C); + FP_HANDLE_EXCEPTIONS; + return c; +} +strong_alias (__ieee754_sqrtl, __sqrtl_finite) diff --git a/sysdeps/aarch64/soft-fp/sfp-machine.h b/sysdeps/aarch64/soft-fp/sfp-machine.h new file mode 100644 index 0000000..9bb94e5 --- /dev/null +++ b/sysdeps/aarch64/soft-fp/sfp-machine.h @@ -0,0 +1,118 @@ +#include <fenv.h> +#include <fpu_control.h> + +#define _FP_W_TYPE_SIZE 64 +#define _FP_W_TYPE unsigned long long +#define _FP_WS_TYPE signed long long +#define _FP_I_TYPE long long + +#define _FP_MUL_MEAT_S(R,X,Y) \ + _FP_MUL_MEAT_1_imm(_FP_WFRACBITS_S,R,X,Y) +#define _FP_MUL_MEAT_D(R,X,Y) \ + _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_Q(R,X,Y) \ + _FP_MUL_MEAT_2_wide_3mul(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) + +#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_imm(S,R,X,Y,_FP_DIV_HELP_imm) +#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_1_udiv_norm(D,R,X,Y) +#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_2_udiv(Q,R,X,Y) + +#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1) +#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1) +#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1 +#define _FP_NANSIGN_S 0 +#define _FP_NANSIGN_D 0 +#define _FP_NANSIGN_Q 0 + +#define _FP_KEEPNANFRACP 1 +#define _FP_QNANNEGATEDP 0 + +/* From my experiments it seems X is chosen unless one of the + NaNs is sNaN, in which case the result is NANSIGN/NANFRAC. */ +#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ + do { \ + if ((_FP_FRAC_HIGH_RAW_##fs(X) | \ + _FP_FRAC_HIGH_RAW_##fs(Y)) & _FP_QNANBIT_##fs) \ + { \ + R##_s = _FP_NANSIGN_##fs; \ + _FP_FRAC_SET_##wc(R,_FP_NANFRAC_##fs); \ + } \ + else \ + { \ + R##_s = X##_s; \ + _FP_FRAC_COPY_##wc(R,X); \ + } \ + R##_c = FP_CLS_NAN; \ + } while (0) + +#define _FP_DECL_EX fpu_control_t _fcw + +#define FP_ROUNDMODE (_fcw & _FPU_FPCR_RM_MASK) + +#define FP_RND_NEAREST FE_TONEAREST +#define FP_RND_ZERO FE_TOWARDZERO +#define FP_RND_PINF FE_UPWARD +#define FP_RND_MINF FE_DOWNWARD + +#define FP_EX_INVALID FE_INVALID +#define FP_EX_OVERFLOW FE_OVERFLOW +#define FP_EX_UNDERFLOW FE_UNDERFLOW +#define FP_EX_DIVZERO FE_DIVBYZERO +#define FP_EX_INEXACT FE_INEXACT + +#define FP_INIT_ROUNDMODE \ +do { \ + _FPU_GETCW (_fcw); \ +} while (0) + +#define FP_HANDLE_EXCEPTIONS \ + do { \ + const float fp_max = __FLT_MAX__; \ + const float fp_min = __FLT_MIN__; \ + const float fp_1e32 = 1.0e32f; \ + const float fp_zero = 0.0; \ + const float fp_one = 1.0; \ + unsigned fpsr; \ + if (_fex & FP_EX_INVALID) \ + { \ + __asm__ __volatile__ ("fdiv\ts0, %s0, %s0" \ + : \ + : "w" (fp_zero) \ + : "s0"); \ + __asm__ __volatile__ ("mrs\t%0, fpsr" : "=r" (fpsr)); \ + } \ + if (_fex & FP_EX_DIVZERO) \ + { \ + __asm__ __volatile__ ("fdiv\ts0, %s0, %s1" \ + : \ + : "w" (fp_one), "w" (fp_zero) \ + : "s0"); \ + __asm__ __volatile__ ("mrs\t%0, fpsr" : "=r" (fpsr)); \ + } \ + if (_fex & FP_EX_OVERFLOW) \ + { \ + __asm__ __volatile__ ("fadd\ts0, %s0, %s1" \ + : \ + : "w" (fp_max), "w" (fp_1e32) \ + : "s0"); \ + __asm__ __volatile__ ("mrs\t%0, fpsr" : "=r" (fpsr)); \ + } \ + if (_fex & FP_EX_UNDERFLOW) \ + { \ + __asm__ __volatile__ ("fmul\ts0, %s0, %s0" \ + : \ + : "w" (fp_min) \ + : "s0"); \ + __asm__ __volatile__ ("mrs\t%0, fpsr" : "=r" (fpsr)); \ + } \ + if (_fex & FP_EX_INEXACT) \ + { \ + __asm__ __volatile__ ("fsub\ts0, %s0, %s1" \ + : \ + : "w" (fp_max), "w" (fp_one) \ + : "s0"); \ + __asm__ __volatile__ ("mrs\t%0, fpsr" : "=r" (fpsr)); \ + } \ + } while (0) + +#define FP_TRAPPING_EXCEPTIONS ((_fcw >> FE_EXCEPT_SHIFT) & FE_ALL_EXCEPT) diff --git a/sysdeps/aarch64/sotruss-lib.c b/sysdeps/aarch64/sotruss-lib.c new file mode 100644 index 0000000..735e9ef --- /dev/null +++ b/sysdeps/aarch64/sotruss-lib.c @@ -0,0 +1,51 @@ +/* Override generic sotruss-lib.c to define actual functions for AArch64. + Copyright (C) 2012-2014 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/>. */ + +#define HAVE_ARCH_PLTENTER +#define HAVE_ARCH_PLTEXIT + +#include <elf/sotruss-lib.c> + +ElfW(Addr) +la_aarch64_gnu_pltenter (ElfW(Sym) *sym __attribute__ ((unused)), + unsigned int ndx __attribute__ ((unused)), + uintptr_t *refcook, uintptr_t *defcook, + La_aarch64_regs *regs, unsigned int *flags, + const char *symname, long int *framesizep) +{ + print_enter (refcook, defcook, symname, + regs->lr_xreg[0], regs->lr_xreg[1], regs->lr_xreg[2], + *flags); + + /* No need to copy anything, we will not need the parameters in any case. */ + *framesizep = 0; + + return sym->st_value; +} + +unsigned int +la_aarch64_gnu_pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, + const struct La_aarch64_regs *inregs, + struct La_aarch64_retval *outregs, const char *symname) +{ + print_exit (refcook, defcook, symname, outregs->lrv_xreg[0]); + + return 0; +} diff --git a/sysdeps/aarch64/stackinfo.h b/sysdeps/aarch64/stackinfo.h new file mode 100644 index 0000000..cf381f6 --- /dev/null +++ b/sysdeps/aarch64/stackinfo.h @@ -0,0 +1,33 @@ +/* Copyright (C) 2001-2014 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/>. */ + +/* This file contains a bit of information about the stack allocation + of the processor. */ + +#ifndef _STACKINFO_H +#define _STACKINFO_H 1 + +#include <elf.h> + +/* On AArch64 the stack grows down. */ +#define _STACK_GROWS_DOWN 1 + +/* Default to a non-executable stack. */ +#define DEFAULT_STACK_PERMS (PF_R|PF_W) + +#endif /* stackinfo.h */ diff --git a/sysdeps/aarch64/start.S b/sysdeps/aarch64/start.S new file mode 100644 index 0000000..35d603a --- /dev/null +++ b/sysdeps/aarch64/start.S @@ -0,0 +1,93 @@ +/* Copyright (C) 1995-2014 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/>. */ + +/* This is the canonical entry point, usually the first thing in the text + segment. + + Note that the code in the .init section has already been run. + This includes _init and _libc_init + + + At this entry point, most registers' values are unspecified, except: + + x0 Contains a function pointer to be registered with `atexit'. + This is how the dynamic linker arranges to have DT_FINI + functions called for shared libraries that have been loaded + before this code runs. + + sp The stack contains the arguments and environment: + 0(sp) argc + 8(sp) argv[0] + ... + (8*argc)(sp) NULL + (8*(argc+1))(sp) envp[0] + ... + NULL + */ + + .text + .globl _start + .type _start,#function +_start: + /* Create an initial frame with 0 LR and FP */ + mov x29, #0 + mov x30, #0 + mov x29, sp + + /* Setup rtld_fini in argument register */ + mov x5, x0 + + /* Load argc and a pointer to argv */ + ldr x1, [sp, #0] + add x2, sp, #8 + + /* Setup stack limit in argument register */ + mov x6, sp + +#ifdef SHARED + adrp x0, :got:main + ldr x0, [x0, #:got_lo12:main] + + adrp x3, :got:__libc_csu_init + ldr x3, [x3, #:got_lo12:__libc_csu_init] + + adrp x4, :got:__libc_csu_fini + ldr x4, [x4, #:got_lo12:__libc_csu_fini] +#else + /* Set up the other arguments in registers */ + ldr x0, =main + ldr x3, =__libc_csu_init + ldr x4, =__libc_csu_fini +#endif + + /* __libc_start_main (main, argc, argv, init, fini, rtld_fini, + stack_end) */ + + /* Let the libc call main and exit with its return code. */ + bl __libc_start_main + + /* should never get here....*/ + bl abort + + /* Define a symbol for the first piece of initialized data. */ + .data + .globl __data_start +__data_start: + .long 0 + .weak data_start + data_start = __data_start diff --git a/sysdeps/aarch64/strcmp.S b/sysdeps/aarch64/strcmp.S new file mode 100644 index 0000000..ec9d10a --- /dev/null +++ b/sysdeps/aarch64/strcmp.S @@ -0,0 +1,155 @@ +/* Copyright (C) 2012-2014 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/>. */ + +/* Assumptions: + * + * ARMv8-a, AArch64 + */ + +#include <sysdep.h> + +#define REP8_01 0x0101010101010101 +#define REP8_7f 0x7f7f7f7f7f7f7f7f +#define REP8_80 0x8080808080808080 + +/* Parameters and result. */ +#define src1 x0 +#define src2 x1 +#define result x0 + +/* Internal variables. */ +#define data1 x2 +#define data1w w2 +#define data2 x3 +#define data2w w3 +#define has_nul x4 +#define diff x5 +#define syndrome x6 +#define tmp1 x7 +#define tmp2 x8 +#define tmp3 x9 +#define zeroones x10 +#define pos x11 + + /* Start of performance-critical section -- one 64B cache line. */ +ENTRY_ALIGN(strcmp, 6) + + eor tmp1, src1, src2 + mov zeroones, #REP8_01 + tst tmp1, #7 + b.ne L(misaligned8) + ands tmp1, src1, #7 + b.ne L(mutual_align) + /* NUL detection works on the principle that (X - 1) & (~X) & 0x80 + (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and + can be done in parallel across the entire word. */ +L(loop_aligned): + ldr data1, [src1], #8 + ldr data2, [src2], #8 +L(start_realigned): + sub tmp1, data1, zeroones + orr tmp2, data1, #REP8_7f + eor diff, data1, data2 /* Non-zero if differences found. */ + bic has_nul, tmp1, tmp2 /* Non-zero if NUL terminator. */ + orr syndrome, diff, has_nul + cbz syndrome, L(loop_aligned) + /* End of performance-critical section -- one 64B cache line. */ + +#ifndef __AARCH64EB__ + rev syndrome, syndrome + rev data1, data1 + /* The MS-non-zero bit of the syndrome marks either the first bit + that is different, or the top bit of the first zero byte. + Shifting left now will bring the critical information into the + top bits. */ + clz pos, syndrome + rev data2, data2 + lsl data1, data1, pos + lsl data2, data2, pos + /* But we need to zero-extend (char is unsigned) the value and then + perform a signed 32-bit subtraction. */ + lsr data1, data1, #56 + sub result, data1, data2, lsr #56 + RET +#else + /* For big-endian we cannot use the trick with the syndrome value + as carry-propagation can corrupt the upper bits if the trailing + bytes in the string contain 0x01. */ + /* However, if there is no NUL byte in the dword, we can generate + the result directly. We can't just subtract the bytes as the + MSB might be significant. */ + cbnz has_nul, 1f + cmp data1, data2 + cset result, ne + cneg result, result, lo + RET +1: + /* Re-compute the NUL-byte detection, using a byte-reversed value. */ + rev tmp3, data1 + sub tmp1, tmp3, zeroones + orr tmp2, tmp3, #REP8_7f + bic has_nul, tmp1, tmp2 + rev has_nul, has_nul + orr syndrome, diff, has_nul + clz pos, syndrome + /* The MS-non-zero bit of the syndrome marks either the first bit + that is different, or the top bit of the first zero byte. + Shifting left now will bring the critical information into the + top bits. */ + lsl data1, data1, pos + lsl data2, data2, pos + /* But we need to zero-extend (char is unsigned) the value and then + perform a signed 32-bit subtraction. */ + lsr data1, data1, #56 + sub result, data1, data2, lsr #56 + RET +#endif + +L(mutual_align): + /* Sources are mutually aligned, but are not currently at an + alignment boundary. Round down the addresses and then mask off + the bytes that preceed the start point. */ + bic src1, src1, #7 + bic src2, src2, #7 + lsl tmp1, tmp1, #3 /* Bytes beyond alignment -> bits. */ + ldr data1, [src1], #8 + neg tmp1, tmp1 /* Bits to alignment -64. */ + ldr data2, [src2], #8 + mov tmp2, #~0 +#ifdef __AARCH64EB__ + /* Big-endian. Early bytes are at MSB. */ + lsl tmp2, tmp2, tmp1 /* Shift (tmp1 & 63). */ +#else + /* Little-endian. Early bytes are at LSB. */ + lsr tmp2, tmp2, tmp1 /* Shift (tmp1 & 63). */ +#endif + orr data1, data1, tmp2 + orr data2, data2, tmp2 + b L(start_realigned) + +L(misaligned8): + /* We can do better than this. */ + ldrb data1w, [src1], #1 + ldrb data2w, [src2], #1 + cmp data1w, #1 + ccmp data1w, data2w, #0, cs /* NZCV = 0b0000. */ + b.eq L(misaligned8) + sub result, data1, data2 + RET +END(strcmp) +libc_hidden_builtin_def (strcmp) diff --git a/sysdeps/aarch64/strlen.S b/sysdeps/aarch64/strlen.S new file mode 100644 index 0000000..4d2a20a --- /dev/null +++ b/sysdeps/aarch64/strlen.S @@ -0,0 +1,117 @@ +/* Copyright (C) 2012-2014 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 <sysdep.h> + +/* Assumptions: + * + * ARMv8-a, AArch64 + */ + +/* Arguments and results. */ +#define srcin x0 +#define len x0 + +/* Locals and temporaries. */ +#define src x1 +#define data1 x2 +#define data2 x3 +#define data2a x4 +#define has_nul1 x5 +#define has_nul2 x6 +#define tmp1 x7 +#define tmp2 x8 +#define tmp3 x9 +#define tmp4 x10 +#define zeroones x11 +#define pos x12 + +#define REP8_01 0x0101010101010101 +#define REP8_7f 0x7f7f7f7f7f7f7f7f +#define REP8_80 0x8080808080808080 + + /* Start of critial section -- keep to one 64Byte cache line. */ +ENTRY_ALIGN (strlen, 6) + mov zeroones, #REP8_01 + bic src, srcin, #15 + ands tmp1, srcin, #15 + b.ne L(misaligned) + /* NUL detection works on the principle that (X - 1) & (~X) & 0x80 + (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and + can be done in parallel across the entire word. */ + /* The inner loop deals with two Dwords at a time. This has a + slightly higher start-up cost, but we should win quite quickly, + especially on cores with a high number of issue slots per + cycle, as we get much better parallelism out of the operations. */ +L(loop): + ldp data1, data2, [src], #16 +L(realigned): + sub tmp1, data1, zeroones + orr tmp2, data1, #REP8_7f + sub tmp3, data2, zeroones + orr tmp4, data2, #REP8_7f + bic has_nul1, tmp1, tmp2 + bics has_nul2, tmp3, tmp4 + ccmp has_nul1, #0, #0, eq /* NZCV = 0000 */ + b.eq L(loop) + /* End of critical section -- keep to one 64Byte cache line. */ + + sub len, src, srcin + cbz has_nul1, L(nul_in_data2) +#ifdef __AARCH64EB__ + mov data2, data1 +#endif + sub len, len, #8 + mov has_nul2, has_nul1 +L(nul_in_data2): +#ifdef __AARCH64EB__ + /* For big-endian, carry propagation (if the final byte in the + string is 0x01) means we cannot use has_nul directly. The + easiest way to get the correct byte is to byte-swap the data + and calculate the syndrome a second time. */ + rev data2, data2 + sub tmp1, data2, zeroones + orr tmp2, data2, #REP8_7f + bic has_nul2, tmp1, tmp2 +#endif + sub len, len, #8 + rev has_nul2, has_nul2 + clz pos, has_nul2 + add len, len, pos, lsr #3 /* Bits to bytes. */ + RET + +L(misaligned): + cmp tmp1, #8 + neg tmp1, tmp1 + ldp data1, data2, [src], #16 + lsl tmp1, tmp1, #3 /* Bytes beyond alignment -> bits. */ + mov tmp2, #~0 +#ifdef __AARCH64EB__ + /* Big-endian. Early bytes are at MSB. */ + lsl tmp2, tmp2, tmp1 /* Shift (tmp1 & 63). */ +#else + /* Little-endian. Early bytes are at LSB. */ + lsr tmp2, tmp2, tmp1 /* Shift (tmp1 & 63). */ +#endif + orr data1, data1, tmp2 + orr data2a, data2, tmp2 + csinv data1, data1, xzr, le + csel data2, data2, data2a, le + b L(realigned) +END (strlen) +libc_hidden_builtin_def (strlen) diff --git a/sysdeps/aarch64/strncmp.S b/sysdeps/aarch64/strncmp.S new file mode 100644 index 0000000..468bff4 --- /dev/null +++ b/sysdeps/aarch64/strncmp.S @@ -0,0 +1,204 @@ +/* Copyright (C) 2013-2014 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 <sysdep.h> + +/* Assumptions: + * + * ARMv8-a, AArch64 + */ + +#define REP8_01 0x0101010101010101 +#define REP8_7f 0x7f7f7f7f7f7f7f7f +#define REP8_80 0x8080808080808080 + +/* Parameters and result. */ +#define src1 x0 +#define src2 x1 +#define limit x2 +#define result x0 + +/* Internal variables. */ +#define data1 x3 +#define data1w w3 +#define data2 x4 +#define data2w w4 +#define has_nul x5 +#define diff x6 +#define syndrome x7 +#define tmp1 x8 +#define tmp2 x9 +#define tmp3 x10 +#define zeroones x11 +#define pos x12 +#define limit_wd x13 +#define mask x14 +#define endloop x15 + +ENTRY_ALIGN_AND_PAD (strncmp, 6, 7) + cbz limit, L(ret0) + eor tmp1, src1, src2 + mov zeroones, #REP8_01 + tst tmp1, #7 + b.ne L(misaligned8) + ands tmp1, src1, #7 + b.ne L(mutual_align) + /* Calculate the number of full and partial words -1. */ + sub limit_wd, limit, #1 /* limit != 0, so no underflow. */ + lsr limit_wd, limit_wd, #3 /* Convert to Dwords. */ + + /* NUL detection works on the principle that (X - 1) & (~X) & 0x80 + (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and + can be done in parallel across the entire word. */ + /* Start of performance-critical section -- one 64B cache line. */ +L(loop_aligned): + ldr data1, [src1], #8 + ldr data2, [src2], #8 +L(start_realigned): + subs limit_wd, limit_wd, #1 + sub tmp1, data1, zeroones + orr tmp2, data1, #REP8_7f + eor diff, data1, data2 /* Non-zero if differences found. */ + csinv endloop, diff, xzr, pl /* Last Dword or differences. */ + bics has_nul, tmp1, tmp2 /* Non-zero if NUL terminator. */ + ccmp endloop, #0, #0, eq + b.eq L(loop_aligned) + /* End of performance-critical section -- one 64B cache line. */ + + /* Not reached the limit, must have found the end or a diff. */ + tbz limit_wd, #63, L(not_limit) + + /* Limit % 8 == 0 => all bytes significant. */ + ands limit, limit, #7 + b.eq L(not_limit) + + lsl limit, limit, #3 /* Bits -> bytes. */ + mov mask, #~0 +#ifdef __AARCH64EB__ + lsr mask, mask, limit +#else + lsl mask, mask, limit +#endif + bic data1, data1, mask + bic data2, data2, mask + + /* Make sure that the NUL byte is marked in the syndrome. */ + orr has_nul, has_nul, mask + +L(not_limit): + orr syndrome, diff, has_nul + +#ifndef __AARCH64EB__ + rev syndrome, syndrome + rev data1, data1 + /* The MS-non-zero bit of the syndrome marks either the first bit + that is different, or the top bit of the first zero byte. + Shifting left now will bring the critical information into the + top bits. */ + clz pos, syndrome + rev data2, data2 + lsl data1, data1, pos + lsl data2, data2, pos + /* But we need to zero-extend (char is unsigned) the value and then + perform a signed 32-bit subtraction. */ + lsr data1, data1, #56 + sub result, data1, data2, lsr #56 + RET +#else + /* For big-endian we cannot use the trick with the syndrome value + as carry-propagation can corrupt the upper bits if the trailing + bytes in the string contain 0x01. */ + /* However, if there is no NUL byte in the dword, we can generate + the result directly. We can't just subtract the bytes as the + MSB might be significant. */ + cbnz has_nul, 1f + cmp data1, data2 + cset result, ne + cneg result, result, lo + RET +1: + /* Re-compute the NUL-byte detection, using a byte-reversed value. */ + rev tmp3, data1 + sub tmp1, tmp3, zeroones + orr tmp2, tmp3, #REP8_7f + bic has_nul, tmp1, tmp2 + rev has_nul, has_nul + orr syndrome, diff, has_nul + clz pos, syndrome + /* The MS-non-zero bit of the syndrome marks either the first bit + that is different, or the top bit of the first zero byte. + Shifting left now will bring the critical information into the + top bits. */ + lsl data1, data1, pos + lsl data2, data2, pos + /* But we need to zero-extend (char is unsigned) the value and then + perform a signed 32-bit subtraction. */ + lsr data1, data1, #56 + sub result, data1, data2, lsr #56 + RET +#endif + +L(mutual_align): + /* Sources are mutually aligned, but are not currently at an + alignment boundary. Round down the addresses and then mask off + the bytes that precede the start point. + We also need to adjust the limit calculations, but without + overflowing if the limit is near ULONG_MAX. */ + bic src1, src1, #7 + bic src2, src2, #7 + ldr data1, [src1], #8 + neg tmp3, tmp1, lsl #3 /* 64 - bits(bytes beyond align). */ + ldr data2, [src2], #8 + mov tmp2, #~0 + sub limit_wd, limit, #1 /* limit != 0, so no underflow. */ +#ifdef __AARCH64EB__ + /* Big-endian. Early bytes are at MSB. */ + lsl tmp2, tmp2, tmp3 /* Shift (tmp1 & 63). */ +#else + /* Little-endian. Early bytes are at LSB. */ + lsr tmp2, tmp2, tmp3 /* Shift (tmp1 & 63). */ +#endif + and tmp3, limit_wd, #7 + lsr limit_wd, limit_wd, #3 + /* Adjust the limit. Only low 3 bits used, so overflow irrelevant. */ + add limit, limit, tmp1 + add tmp3, tmp3, tmp1 + orr data1, data1, tmp2 + orr data2, data2, tmp2 + add limit_wd, limit_wd, tmp3, lsr #3 + b L(start_realigned) + +L(ret0): + mov result, #0 + RET + + .p2align 6 +L(misaligned8): + sub limit, limit, #1 +1: + /* Perhaps we can do better than this. */ + ldrb data1w, [src1], #1 + ldrb data2w, [src2], #1 + subs limit, limit, #1 + ccmp data1w, #1, #0, cs /* NZCV = 0b0000. */ + ccmp data1w, data2w, #0, cs /* NZCV = 0b0000. */ + b.eq 1b + sub result, data1, data2 + RET +END (strncmp) +libc_hidden_builtin_def (strncmp) diff --git a/sysdeps/aarch64/strnlen.S b/sysdeps/aarch64/strnlen.S new file mode 100644 index 0000000..928360f --- /dev/null +++ b/sysdeps/aarch64/strnlen.S @@ -0,0 +1,161 @@ +/* strnlen - calculate the length of a string with limit. + + Copyright (C) 2013-2014 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 <sysdep.h> + +/* Assumptions: + * + * ARMv8-a, AArch64 + */ + +/* Arguments and results. */ +#define srcin x0 +#define len x0 +#define limit x1 + +/* Locals and temporaries. */ +#define src x2 +#define data1 x3 +#define data2 x4 +#define data2a x5 +#define has_nul1 x6 +#define has_nul2 x7 +#define tmp1 x8 +#define tmp2 x9 +#define tmp3 x10 +#define tmp4 x11 +#define zeroones x12 +#define pos x13 +#define limit_wd x14 + +#define REP8_01 0x0101010101010101 +#define REP8_7f 0x7f7f7f7f7f7f7f7f +#define REP8_80 0x8080808080808080 + +ENTRY_ALIGN_AND_PAD (__strnlen, 6, 9) + cbz limit, L(hit_limit) + mov zeroones, #REP8_01 + bic src, srcin, #15 + ands tmp1, srcin, #15 + b.ne L(misaligned) + /* Calculate the number of full and partial words -1. */ + sub limit_wd, limit, #1 /* Limit != 0, so no underflow. */ + lsr limit_wd, limit_wd, #4 /* Convert to Qwords. */ + + /* NUL detection works on the principle that (X - 1) & (~X) & 0x80 + (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and + can be done in parallel across the entire word. */ + /* The inner loop deals with two Dwords at a time. This has a + slightly higher start-up cost, but we should win quite quickly, + especially on cores with a high number of issue slots per + cycle, as we get much better parallelism out of the operations. */ + + /* Start of critial section -- keep to one 64Byte cache line. */ +L(loop): + ldp data1, data2, [src], #16 +L(realigned): + sub tmp1, data1, zeroones + orr tmp2, data1, #REP8_7f + sub tmp3, data2, zeroones + orr tmp4, data2, #REP8_7f + bic has_nul1, tmp1, tmp2 + bic has_nul2, tmp3, tmp4 + subs limit_wd, limit_wd, #1 + orr tmp1, has_nul1, has_nul2 + ccmp tmp1, #0, #0, pl /* NZCV = 0000 */ + b.eq L(loop) + /* End of critical section -- keep to one 64Byte cache line. */ + + orr tmp1, has_nul1, has_nul2 + cbz tmp1, L(hit_limit) /* No null in final Qword. */ + + /* We know there's a null in the final Qword. The easiest thing + to do now is work out the length of the string and return + MIN (len, limit). */ + + sub len, src, srcin + cbz has_nul1, L(nul_in_data2) +#ifdef __AARCH64EB__ + mov data2, data1 +#endif + sub len, len, #8 + mov has_nul2, has_nul1 +L(nul_in_data2): +#ifdef __AARCH64EB__ + /* For big-endian, carry propagation (if the final byte in the + string is 0x01) means we cannot use has_nul directly. The + easiest way to get the correct byte is to byte-swap the data + and calculate the syndrome a second time. */ + rev data2, data2 + sub tmp1, data2, zeroones + orr tmp2, data2, #REP8_7f + bic has_nul2, tmp1, tmp2 +#endif + sub len, len, #8 + rev has_nul2, has_nul2 + clz pos, has_nul2 + add len, len, pos, lsr #3 /* Bits to bytes. */ + cmp len, limit + csel len, len, limit, ls /* Return the lower value. */ + RET + +L(misaligned): + /* Deal with a partial first word. + We're doing two things in parallel here; + 1) Calculate the number of words (but avoiding overflow if + limit is near ULONG_MAX) - to do this we need to work out + limit + tmp1 - 1 as a 65-bit value before shifting it; + 2) Load and mask the initial data words - we force the bytes + before the ones we are interested in to 0xff - this ensures + early bytes will not hit any zero detection. */ + sub limit_wd, limit, #1 + neg tmp4, tmp1 + cmp tmp1, #8 + + and tmp3, limit_wd, #15 + lsr limit_wd, limit_wd, #4 + mov tmp2, #~0 + + ldp data1, data2, [src], #16 + lsl tmp4, tmp4, #3 /* Bytes beyond alignment -> bits. */ + add tmp3, tmp3, tmp1 + +#ifdef __AARCH64EB__ + /* Big-endian. Early bytes are at MSB. */ + lsl tmp2, tmp2, tmp4 /* Shift (tmp1 & 63). */ +#else + /* Little-endian. Early bytes are at LSB. */ + lsr tmp2, tmp2, tmp4 /* Shift (tmp1 & 63). */ +#endif + add limit_wd, limit_wd, tmp3, lsr #4 + + orr data1, data1, tmp2 + orr data2a, data2, tmp2 + + csinv data1, data1, xzr, le + csel data2, data2, data2a, le + b L(realigned) + +L(hit_limit): + mov len, limit + RET +END (__strnlen) +weak_alias (__strnlen, strnlen) +libc_hidden_def (strnlen) diff --git a/sysdeps/aarch64/sysdep.h b/sysdeps/aarch64/sysdep.h new file mode 100644 index 0000000..7169ba7 --- /dev/null +++ b/sysdeps/aarch64/sysdep.h @@ -0,0 +1,98 @@ +/* Copyright (C) 1997-2014 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 <sysdeps/generic/sysdep.h> + +#ifdef __ASSEMBLER__ + +/* Syntactic details of assembler. */ + +#define ASM_SIZE_DIRECTIVE(name) .size name,.-name + +/* Define an entry point visible from C. */ +#define ENTRY(name) \ + .globl C_SYMBOL_NAME(name); \ + .type C_SYMBOL_NAME(name),%function; \ + .align 4; \ + C_LABEL(name) \ + cfi_startproc; \ + CALL_MCOUNT + +/* Define an entry point visible from C. */ +#define ENTRY_ALIGN(name, align) \ + .globl C_SYMBOL_NAME(name); \ + .type C_SYMBOL_NAME(name),%function; \ + .p2align align; \ + C_LABEL(name) \ + cfi_startproc; \ + CALL_MCOUNT + +/* Define an entry point visible from C with a specified alignment and + pre-padding with NOPs. This can be used to ensure that a critical + loop within a function is cache line aligned. Note this version + does not adjust the padding if CALL_MCOUNT is defined. */ + +#define ENTRY_ALIGN_AND_PAD(name, align, padding) \ + .globl C_SYMBOL_NAME(name); \ + .type C_SYMBOL_NAME(name),%function; \ + .p2align align; \ + .rep padding; \ + nop; \ + .endr; \ + C_LABEL(name) \ + cfi_startproc; \ + CALL_MCOUNT + +#undef END +#define END(name) \ + cfi_endproc; \ + ASM_SIZE_DIRECTIVE(name) + +/* If compiled for profiling, call `mcount' at the start of each function. */ +#ifdef PROF +# define CALL_MCOUNT \ + str x30, [sp, #-16]!; \ + bl mcount; \ + ldr x30, [sp], #16 ; +#else +# define CALL_MCOUNT /* Do nothing. */ +#endif + +/* Local label name for asm code. */ +#ifndef L +# define L(name) .L##name +#endif + +/* Load or store to/from a pc-relative EXPR into/from R, using T. */ +#define LDST_PCREL(OP, R, T, EXPR) \ + adrp T, EXPR; \ + OP R, [T, #:lo12:EXPR];\ + +/* Load or store to/from a got-relative EXPR into/from R, using T. */ +#define LDST_GLOBAL(OP, R, T, EXPR) \ + adrp T, :got:EXPR; \ + ldr T, [T, #:got_lo12:EXPR];\ + OP R, [T]; + +/* Since C identifiers are not normally prefixed with an underscore + on this system, the asm identifier `syscall_error' intrudes on the + C name space. Make sure we use an innocuous name. */ +#define syscall_error __syscall_error +#define mcount _mcount + +#endif /* __ASSEMBLER__ */ diff --git a/sysdeps/aarch64/tls-macros.h b/sysdeps/aarch64/tls-macros.h new file mode 100644 index 0000000..ad39e24 --- /dev/null +++ b/sysdeps/aarch64/tls-macros.h @@ -0,0 +1,51 @@ +/* Copyright (C) 2009-2014 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/>. */ + +#define TLS_LD(x) TLS_GD(x) + +#define TLS_GD(x) \ + ({ register unsigned long __result asm ("x0"); \ + asm ("adrp %0, :tlsgd:" #x "; " \ + "add %0, %0, #:tlsgd_lo12:" #x "; " \ + "bl __tls_get_addr;" \ + "nop" \ + : "=r" (__result) \ + : \ + : "x1", "x2", "x3", "x4", "x5", "x6", \ + "x7", "x8", "x9", "x10", "x11", "x12", \ + "x13", "x14", "x15", "x16", "x17", "x18", \ + "x30", "memory"); \ + (int *) (__result); }) + +#define TLS_IE(x) \ + ({ register unsigned long __result asm ("x0"); \ + register unsigned long __t; \ + asm ("mrs %1, tpidr_el0; " \ + "adrp %0, :gottprel:" #x "; " \ + "ldr %0, [%0, #:gottprel_lo12:" #x "]; " \ + "add %0, %0, %1" \ + : "=r" (__result), "=r" (__t)); \ + (int *) (__result); }) + +#define TLS_LE(x) \ + ({ register unsigned long __result asm ("x0"); \ + asm ("mrs %0, tpidr_el0; " \ + "add %0, %0, :tprel_hi12:" #x "; " \ + "add %0, %0, :tprel_lo12_nc:" #x \ + : "=r" (__result)); \ + (int *) (__result); }) diff --git a/sysdeps/aarch64/tlsdesc.c b/sysdeps/aarch64/tlsdesc.c new file mode 100644 index 0000000..0921230 --- /dev/null +++ b/sysdeps/aarch64/tlsdesc.c @@ -0,0 +1,154 @@ +/* Manage TLS descriptors. AArch64 version. + + Copyright (C) 2011-2014 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 <link.h> +#include <ldsodefs.h> +#include <elf/dynamic-link.h> +#include <tls.h> +#include <dl-tlsdesc.h> +#include <tlsdeschtab.h> + +/* The following functions take an entry_check_offset argument. It's + computed by the caller as an offset between its entry point and the + call site, such that by adding the built-in return address that is + implicitly passed to the function with this offset, we can easily + obtain the caller's entry point to compare with the entry point + given in the TLS descriptor. If it's changed, we want to return + immediately. */ + +/* This function is used to lazily resolve TLS_DESC RELA relocations. + The argument location is used to hold a pointer to the relocation. */ + +void +attribute_hidden +_dl_tlsdesc_resolve_rela_fixup (struct tlsdesc volatile *td, + struct link_map *l) +{ + const ElfW(Rela) *reloc = td->arg; + + if (_dl_tlsdesc_resolve_early_return_p + (td, (void*)(D_PTR (l, l_info[ADDRIDX (DT_TLSDESC_PLT)]) + l->l_addr))) + return; + + /* The code below was borrowed from _dl_fixup(), + except for checking for STB_LOCAL. */ + const ElfW(Sym) *const symtab + = (const void *) D_PTR (l, l_info[DT_SYMTAB]); + const char *strtab = (const void *) D_PTR (l, l_info[DT_STRTAB]); + const ElfW(Sym) *sym = &symtab[ELFW(R_SYM) (reloc->r_info)]; + lookup_t result; + + /* Look up the target symbol. If the normal lookup rules are not + used don't look in the global scope. */ + if (ELFW(ST_BIND) (sym->st_info) != STB_LOCAL + && __builtin_expect (ELFW(ST_VISIBILITY) (sym->st_other), 0) == 0) + { + const struct r_found_version *version = NULL; + + if (l->l_info[VERSYMIDX (DT_VERSYM)] != NULL) + { + const ElfW(Half) *vernum = + (const void *) D_PTR (l, l_info[VERSYMIDX (DT_VERSYM)]); + ElfW(Half) ndx = vernum[ELFW(R_SYM) (reloc->r_info)] & 0x7fff; + version = &l->l_versions[ndx]; + if (version->hash == 0) + version = NULL; + } + + result = _dl_lookup_symbol_x (strtab + sym->st_name, l, &sym, + l->l_scope, version, ELF_RTYPE_CLASS_PLT, + DL_LOOKUP_ADD_DEPENDENCY, NULL); + } + else + { + /* We already found the symbol. The module (and therefore its load + address) is also known. */ + result = l; + } + + if (!sym) + { + td->arg = (void*) reloc->r_addend; + td->entry = _dl_tlsdesc_undefweak; + } + else + { +# ifndef SHARED + CHECK_STATIC_TLS (l, result); +# else + if (!TRY_STATIC_TLS (l, result)) + { + td->arg = _dl_make_tlsdesc_dynamic (result, sym->st_value + + reloc->r_addend); + td->entry = _dl_tlsdesc_dynamic; + } + else +# endif + { + td->arg = (void*) (sym->st_value + result->l_tls_offset + + reloc->r_addend); + td->entry = _dl_tlsdesc_return; + } + } + + _dl_tlsdesc_wake_up_held_fixups (); +} + +/* This function is used to avoid busy waiting for other threads to + complete the lazy relocation. Once another thread wins the race to + relocate a TLS descriptor, it sets the descriptor up such that this + function is called to wait until the resolver releases the + lock. */ + +void +attribute_hidden +_dl_tlsdesc_resolve_hold_fixup (struct tlsdesc volatile *td, + void *caller) +{ + /* Maybe we're lucky and can return early. */ + if (caller != td->entry) + return; + + /* Locking here will stop execution until the running resolver runs + _dl_tlsdesc_wake_up_held_fixups(), releasing the lock. + + FIXME: We'd be better off waiting on a condition variable, such + that we didn't have to hold the lock throughout the relocation + processing. */ + __rtld_lock_lock_recursive (GL(dl_load_lock)); + __rtld_lock_unlock_recursive (GL(dl_load_lock)); +} + + +/* Unmap the dynamic object, but also release its TLS descriptor table + if there is one. */ + +void +internal_function +_dl_unmap (struct link_map *map) +{ + __munmap ((void *) (map)->l_map_start, + (map)->l_map_end - (map)->l_map_start); + +#if SHARED + if (map->l_mach.tlsdesc_table) + htab_delete (map->l_mach.tlsdesc_table); +#endif +} diff --git a/sysdeps/aarch64/tlsdesc.sym b/sysdeps/aarch64/tlsdesc.sym new file mode 100644 index 0000000..63766af --- /dev/null +++ b/sysdeps/aarch64/tlsdesc.sym @@ -0,0 +1,15 @@ +#include <stddef.h> +#include <sysdep.h> +#include <tls.h> +#include <link.h> +#include <dl-tlsdesc.h> + +-- + +-- Abuse tls.h macros to derive offsets relative to the thread register. + +TLSDESC_ARG offsetof(struct tlsdesc, arg) + +TLSDESC_GEN_COUNT offsetof(struct tlsdesc_dynamic_arg, gen_count) +TLSDESC_MODID offsetof(struct tlsdesc_dynamic_arg, tlsinfo.ti_module) +TLSDESC_MODOFF offsetof(struct tlsdesc_dynamic_arg, tlsinfo.ti_offset) diff --git a/sysdeps/aarch64/tst-audit.h b/sysdeps/aarch64/tst-audit.h new file mode 100644 index 0000000..ee07876 --- /dev/null +++ b/sysdeps/aarch64/tst-audit.h @@ -0,0 +1,25 @@ +/* Definitions for testing PLT entry/exit auditing. AArch64 version. + + Copyright (C) 2005-2014 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/>. */ + +#define pltenter la_aarch64_gnu_pltenter +#define pltexit la_aarch64_gnu_pltexit +#define La_regs La_aarch64_regs +#define La_retval La_aarch64_retval +#define int_retval lrv_xreg[0] |