diff options
author | Andreas Schwab <schwab@linux-m68k.org> | 2014-02-10 20:05:01 +0100 |
---|---|---|
committer | Andreas Schwab <schwab@linux-m68k.org> | 2014-02-10 20:22:40 +0100 |
commit | 73588a7223bec40d652fd4c75f1cb4772c5d2612 (patch) | |
tree | dfc1f1965e78e62e611199d91c482d1b76ff109d /sysdeps/m68k/m680x0 | |
parent | 87569616d27a2c742f87b5dbcac2f2e3437fd874 (diff) | |
download | glibc-73588a7223bec40d652fd4c75f1cb4772c5d2612.tar.gz |
Move m68k from ports to libc
Diffstat (limited to 'sysdeps/m68k/m680x0')
193 files changed, 13584 insertions, 0 deletions
diff --git a/sysdeps/m68k/m680x0/Implies b/sysdeps/m68k/m680x0/Implies new file mode 100644 index 0000000000..abf356d9e8 --- /dev/null +++ b/sysdeps/m68k/m680x0/Implies @@ -0,0 +1 @@ +ieee754/ldbl-96 diff --git a/sysdeps/m68k/m680x0/Makefile b/sysdeps/m68k/m680x0/Makefile new file mode 100644 index 0000000000..582fa6f900 --- /dev/null +++ b/sysdeps/m68k/m680x0/Makefile @@ -0,0 +1,2 @@ +# The 68k `long double' is a distinct type we support. +long-double-fcts = yes diff --git a/sysdeps/m68k/m680x0/add_n.S b/sysdeps/m68k/m680x0/add_n.S new file mode 100644 index 0000000000..370e993fbb --- /dev/null +++ b/sysdeps/m68k/m680x0/add_n.S @@ -0,0 +1,82 @@ +/* mc68020 __mpn_add_n -- Add two limb vectors of the same length > 0 and store + sum in a third limb vector. + +Copyright (C) 1992-2014 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP 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 MP 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 MP Library. If not, see <http://www.gnu.org/licenses/>. */ + +/* + INPUT PARAMETERS + res_ptr (sp + 4) + s1_ptr (sp + 8) + s2_ptr (sp + 16) + size (sp + 12) +*/ + +#include "sysdep.h" +#include "asm-syntax.h" + + TEXT +ENTRY(__mpn_add_n) +/* Save used registers on the stack. */ + movel R(d2),MEM_PREDEC(sp) + cfi_adjust_cfa_offset (4) + movel R(a2),MEM_PREDEC(sp) + cfi_adjust_cfa_offset (4) + cfi_rel_offset (R(d2), 4) + cfi_rel_offset (R(a2), 0) + +/* Copy the arguments to registers. Better use movem? */ + movel MEM_DISP(sp,12),R(a2) + movel MEM_DISP(sp,16),R(a0) + movel MEM_DISP(sp,20),R(a1) + movel MEM_DISP(sp,24),R(d2) + + eorw #1,R(d2) + lsrl #1,R(d2) + bcc L(L1) + subql #1,R(d2) /* clears cy as side effect */ + +L(Loop:) + movel MEM_POSTINC(a0),R(d0) + movel MEM_POSTINC(a1),R(d1) + addxl R(d1),R(d0) + movel R(d0),MEM_POSTINC(a2) +L(L1:) movel MEM_POSTINC(a0),R(d0) + movel MEM_POSTINC(a1),R(d1) + addxl R(d1),R(d0) + movel R(d0),MEM_POSTINC(a2) + + dbf R(d2),L(Loop) /* loop until 16 lsb of %4 == -1 */ + subxl R(d0),R(d0) /* d0 <= -cy; save cy as 0 or -1 in d0 */ + subl #0x10000,R(d2) + bcs L(L2) + addl R(d0),R(d0) /* restore cy */ + bra L(Loop) + +L(L2:) + negl R(d0) + +/* Restore used registers from stack frame. */ + movel MEM_POSTINC(sp),R(a2) + cfi_adjust_cfa_offset (-4) + cfi_restore (R(a2)) + movel MEM_POSTINC(sp),R(d2) + cfi_adjust_cfa_offset (-4) + cfi_restore (R(d2)) + + rts +END(__mpn_add_n) diff --git a/sysdeps/m68k/m680x0/bits/huge_vall.h b/sysdeps/m68k/m680x0/bits/huge_vall.h new file mode 100644 index 0000000000..f1a1614c35 --- /dev/null +++ b/sysdeps/m68k/m680x0/bits/huge_vall.h @@ -0,0 +1,41 @@ +/* `HUGE_VALL' constant for m68k (where it is infinity). + Used by <stdlib.h> and <math.h> functions for overflow. + Copyright (C) 1992-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 _MATH_H +# error "Never use <bits/huge_val.h> directly; include <math.h> instead." +#endif + +#if __GNUC_PREREQ(3,3) +# define HUGE_VALL (__builtin_huge_vall ()) +#elif __GNUC_PREREQ(2,96) +# define HUGE_VALL (__extension__ 0x1.0p32767L) +#elif defined__GNUC__ + +# define HUGE_VALL \ + (__extension__ \ + ((union { unsigned long __l[3]; long double __ld; }) \ + { __l: { 0x7fff0000UL, 0x80000000UL, 0UL } }).__ld) + +#else /* not GCC */ + +static union { unsigned char __c[12]; long double __ld; } __huge_vall = + { { 0x7f, 0xff, 0, 0, 0x80, 0, 0, 0, 0, 0, 0, 0 } }; +# define HUGE_VALL (__huge_vall.__ld) + +#endif /* GCC 2.95. */ diff --git a/sysdeps/m68k/m680x0/bits/mathdef.h b/sysdeps/m68k/m680x0/bits/mathdef.h new file mode 100644 index 0000000000..c13e53bf31 --- /dev/null +++ b/sysdeps/m68k/m680x0/bits/mathdef.h @@ -0,0 +1,37 @@ +/* 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/>. */ + +#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 + +/* The m68k FPUs evaluate all values in the 96 bit floating-point format + which is also available for the user as `long double'. Therefore we + define: */ +typedef long double float_t; /* `float' expressions are evaluated as + `long double'. */ +typedef long double double_t; /* `double' expressions are evaluated as + `long double'. */ + +/* The values returned by `ilogb' for 0 and NaN respectively. */ +# define FP_ILOGB0 (-2147483647 - 1) +# define FP_ILOGBNAN (2147483647) + +#endif /* ISO C99 */ diff --git a/sysdeps/m68k/m680x0/fpu/bits/mathinline.h b/sysdeps/m68k/m680x0/fpu/bits/mathinline.h new file mode 100644 index 0000000000..e609eb5c1b --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/bits/mathinline.h @@ -0,0 +1,443 @@ +/* Definitions of inline math functions implemented by the m68881/2. + Copyright (C) 1991-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 _MATH_H +# error "Never use <bits/mathinline.h> directly; include <math.h> instead." +#endif + +#ifndef __extern_inline +# define __MATH_INLINE __inline +#else +# define __MATH_INLINE __extern_inline +#endif + +#ifdef __GNUC__ + +#ifdef __USE_ISOC99 +/* GCC 3.1 and up have builtins that actually can be used. */ +# if !__GNUC_PREREQ (3,1) +/* ISO C99 defines some macros to perform unordered comparisons. The + m68k FPU supports this with special opcodes and we should use them. + These must not be inline functions since we have to be able to handle + all floating-point types. */ +# undef isgreater +# undef isgreaterequal +# undef isless +# undef islessequal +# undef islessgreater +# undef isunordered +# define isgreater(x, y) \ + __extension__ \ + ({ char __result; \ + __asm__ ("fcmp%.x %2,%1; fsogt %0" \ + : "=dm" (__result) : "f" (x), "f" (y)); \ + __result != 0; }) + +# define isgreaterequal(x, y) \ + __extension__ \ + ({ char __result; \ + __asm__ ("fcmp%.x %2,%1; fsoge %0" \ + : "=dm" (__result) : "f" (x), "f" (y)); \ + __result != 0; }) + +# define isless(x, y) \ + __extension__ \ + ({ char __result; \ + __asm__ ("fcmp%.x %2,%1; fsolt %0" \ + : "=dm" (__result) : "f" (x), "f" (y)); \ + __result != 0; }) + +# define islessequal(x, y) \ + __extension__ \ + ({ char __result; \ + __asm__ ("fcmp%.x %2,%1; fsole %0" \ + : "=dm" (__result) : "f" (x), "f" (y)); \ + __result != 0; }) + +# define islessgreater(x, y) \ + __extension__ \ + ({ char __result; \ + __asm__ ("fcmp%.x %2,%1; fsogl %0" \ + : "=dm" (__result) : "f" (x), "f" (y)); \ + __result != 0; }) + +# define isunordered(x, y) \ + __extension__ \ + ({ char __result; \ + __asm__ ("fcmp%.x %2,%1; fsun %0" \ + : "=dm" (__result) : "f" (x), "f" (y)); \ + __result != 0; }) +# endif /* GCC 3.1 */ + +/* Test for negative number. Used in the signbit() macro. */ +__MATH_INLINE int +__NTH (__signbitf (float __x)) +{ + __extension__ union { float __f; int __i; } __u = { __f: __x }; + return __u.__i < 0; +} +__MATH_INLINE int +__NTH (__signbit (double __x)) +{ + __extension__ union { double __d; int __i[2]; } __u = { __d: __x }; + return __u.__i[0] < 0; +} +__MATH_INLINE int +__NTH (__signbitl (long double __x)) +{ + __extension__ union { long double __d; int __i[3]; } __u = { __d: __x }; + return __u.__i[0] < 0; +} +#endif + + +#if (!defined __NO_MATH_INLINES && defined __OPTIMIZE__) \ + || defined __LIBC_INTERNAL_MATH_INLINES + +#ifdef __LIBC_INTERNAL_MATH_INLINES +/* This is used when defining the functions themselves. Define them with + __ names, and with `static inline' instead of `extern inline' so the + bodies will always be used, never an external function call. */ +# define __m81_u(x) __CONCAT(__,x) +# define __m81_inline static __inline +#else +# define __m81_u(x) x +# define __m81_inline __MATH_INLINE +# define __M81_MATH_INLINES 1 +#endif + +/* Define a const math function. */ +#define __m81_defun(rettype, func, args) \ + __m81_inline rettype __attribute__((__const__)) \ + __NTH (__m81_u(func) args) + +/* Define the three variants of a math function that has a direct + implementation in the m68k fpu. FUNC is the name for C (which will be + suffixed with f and l for the float and long double version, resp). OP + is the name of the fpu operation (without leading f). */ + +#if defined __USE_MISC || defined __USE_ISOC99 +# define __inline_mathop(func, op) \ + __inline_mathop1(double, func, op) \ + __inline_mathop1(float, __CONCAT(func,f), op) \ + __inline_mathop1(long double, __CONCAT(func,l), op) +#else +# define __inline_mathop(func, op) \ + __inline_mathop1(double, func, op) +#endif + +#define __inline_mathop1(float_type,func, op) \ + __m81_defun (float_type, func, (float_type __mathop_x)) \ + { \ + float_type __result; \ + __asm __volatile__ ("f" __STRING(op) "%.x %1, %0" \ + : "=f" (__result) : "f" (__mathop_x)); \ + return __result; \ + } + +__inline_mathop(__atan, atan) +__inline_mathop(__cos, cos) +__inline_mathop(__sin, sin) +__inline_mathop(__tan, tan) +__inline_mathop(__tanh, tanh) +__inline_mathop(__fabs, abs) + +#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99 +__inline_mathop(__rint, int) +__inline_mathop(__expm1, etoxm1) +__inline_mathop(__log1p, lognp1) +#endif + +#ifdef __USE_MISC +__inline_mathop(__significand, getman) +#endif + +#ifdef __USE_ISOC99 +__inline_mathop(__trunc, intrz) +#endif + +#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__ + +__inline_mathop(atan, atan) +__inline_mathop(tanh, tanh) + +# if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99 +__inline_mathop(rint, int) +__inline_mathop(log1p, lognp1) +# endif + +# ifdef __USE_MISC +__inline_mathop(significand, getman) +# endif + +# ifdef __USE_ISOC99 +__inline_mathop(trunc, intrz) +# endif + +#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */ + +/* This macro contains the definition for the rest of the inline + functions, using FLOAT_TYPE as the domain type and S as the suffix + for the function names. */ + +#define __inline_functions(float_type, s) \ +__m81_defun (float_type, __CONCAT(__floor,s), (float_type __x)) \ +{ \ + float_type __result; \ + unsigned long int __ctrl_reg; \ + __asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg)); \ + /* Set rounding towards negative infinity. */ \ + __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \ + : "dmi" ((__ctrl_reg & ~0x10) | 0x20)); \ + /* Convert X to an integer, using -Inf rounding. */ \ + __asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x)); \ + /* Restore the previous rounding mode. */ \ + __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \ + : "dmi" (__ctrl_reg)); \ + return __result; \ +} \ + \ +__m81_defun (float_type, __CONCAT(__ceil,s), (float_type __x)) \ +{ \ + float_type __result; \ + unsigned long int __ctrl_reg; \ + __asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg)); \ + /* Set rounding towards positive infinity. */ \ + __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \ + : "dmi" (__ctrl_reg | 0x30)); \ + /* Convert X to an integer, using +Inf rounding. */ \ + __asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x)); \ + /* Restore the previous rounding mode. */ \ + __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \ + : "dmi" (__ctrl_reg)); \ + return __result; \ +} + +__inline_functions(double,) +#if defined __USE_MISC || defined __USE_ISOC99 +__inline_functions(float,f) +__inline_functions(long double,l) +#endif +#undef __inline_functions + +#ifdef __USE_MISC + +# define __inline_functions(float_type, s) \ +__m81_defun (int, __CONCAT(__isinf,s), (float_type __value)) \ +{ \ + /* There is no branch-condition for infinity, \ + so we must extract and examine the condition codes manually. */ \ + unsigned long int __fpsr; \ + __asm ("ftst%.x %1\n" \ + "fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value)); \ + return (__fpsr & (2 << 24)) ? (__fpsr & (8 << 24) ? -1 : 1) : 0; \ +} \ + \ +__m81_defun (int, __CONCAT(__finite,s), (float_type __value)) \ +{ \ + /* There is no branch-condition for infinity, so we must extract and \ + examine the condition codes manually. */ \ + unsigned long int __fpsr; \ + __asm ("ftst%.x %1\n" \ + "fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value)); \ + return (__fpsr & (3 << 24)) == 0; \ +} \ + \ +__m81_defun (float_type, __CONCAT(__scalbn,s), \ + (float_type __x, int __n)) \ +{ \ + float_type __result; \ + __asm __volatile__ ("fscale%.l %1, %0" : "=f" (__result) \ + : "dmi" (__n), "0" (__x)); \ + return __result; \ +} + +__inline_functions(double,) +__inline_functions(float,f) +__inline_functions(long double,l) +# undef __inline_functions + +#endif /* Use misc. */ + +#if defined __USE_MISC || defined __USE_XOPEN + +# define __inline_functions(float_type, s) \ +__m81_defun (int, __CONCAT(__isnan,s), (float_type __value)) \ +{ \ + char __result; \ + __asm ("ftst%.x %1\n" \ + "fsun %0" : "=dm" (__result) : "f" (__value)); \ + return __result; \ +} + +__inline_functions(double,) +# ifdef __USE_MISC +__inline_functions(float,f) +__inline_functions(long double,l) +# endif +# undef __inline_functions + +#endif + +#ifdef __USE_ISOC99 + +# define __inline_functions(float_type, s) \ +__m81_defun (float_type, __CONCAT(__scalbln,s), \ + (float_type __x, long int __n)) \ +{ \ + return __CONCAT(__scalbn,s) (__x, __n); \ +} \ + \ +__m81_defun (float_type, __CONCAT(__nearbyint,s), (float_type __x)) \ +{ \ + float_type __result; \ + unsigned long int __ctrl_reg; \ + __asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg)); \ + /* Temporarily disable the inexact exception. */ \ + __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \ + : "dmi" (__ctrl_reg & ~0x200)); \ + __asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x)); \ + __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \ + : "dmi" (__ctrl_reg)); \ + return __result; \ +} \ + \ +__m81_defun (long int, __CONCAT(__lrint,s), (float_type __x)) \ +{ \ + long int __result; \ + __asm __volatile__ ("fmove%.l %1, %0" : "=dm" (__result) : "f" (__x)); \ + return __result; \ +} + +__inline_functions (double,) +__inline_functions (float,f) +__inline_functions (long double,l) +# undef __inline_functions + +#endif /* Use ISO C9x */ + +#ifdef __USE_GNU + +# define __inline_functions(float_type, s) \ +__m81_inline void \ +__NTH (__m81_u(__CONCAT(__sincos,s))(float_type __x, float_type *__sinx, \ + float_type *__cosx)) \ +{ \ + __asm __volatile__ ("fsincos%.x %2,%1:%0" \ + : "=f" (*__sinx), "=f" (*__cosx) : "f" (__x)); \ +} + +__inline_functions (double,) +__inline_functions (float,f) +__inline_functions (long double,l) +# undef __inline_functions + +#endif + +#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__ + +/* Define inline versions of the user visible functions. */ + +/* Note that there must be no whitespace before the argument passed for + NAME, to make token pasting work correctly with -traditional. */ +# define __inline_forward_c(rettype, name, args1, args2) \ +__MATH_INLINE rettype __attribute__((__const__)) \ +__NTH (name args1) \ +{ \ + return __CONCAT(__,name) args2; \ +} + +# define __inline_forward(rettype, name, args1, args2) \ +__MATH_INLINE rettype __NTH (name args1) \ +{ \ + return __CONCAT(__,name) args2; \ +} + +__inline_forward_c(double,floor, (double __x), (__x)) +__inline_forward_c(double,ceil, (double __x), (__x)) +# ifdef __USE_MISC +# ifndef __USE_ISOC99 /* Conflict with macro of same name. */ +__inline_forward_c(int,isinf, (double __value), (__value)) +# endif +__inline_forward_c(int,finite, (double __value), (__value)) +__inline_forward_c(double,scalbn, (double __x, int __n), (__x, __n)) +# endif +# if defined __USE_MISC || defined __USE_XOPEN +# ifndef __USE_ISOC99 /* Conflict with macro of same name. */ +__inline_forward_c(int,isnan, (double __value), (__value)) +# endif +# endif +# ifdef __USE_ISOC99 +__inline_forward_c(double,scalbln, (double __x, long int __n), (__x, __n)) +__inline_forward_c(double,nearbyint, (double __value), (__value)) +__inline_forward_c(long int,lrint, (double __value), (__value)) +# endif +# ifdef __USE_GNU +__inline_forward(void,sincos, (double __x, double *__sinx, double *__cosx), + (__x, __sinx, __cosx)) +# endif + +# if defined __USE_MISC || defined __USE_ISOC99 + +__inline_forward_c(float,floorf, (float __x), (__x)) +__inline_forward_c(float,ceilf, (float __x), (__x)) +# ifdef __USE_MISC +__inline_forward_c(int,isinff, (float __value), (__value)) +__inline_forward_c(int,finitef, (float __value), (__value)) +__inline_forward_c(float,scalbnf, (float __x, int __n), (__x, __n)) +__inline_forward_c(int,isnanf, (float __value), (__value)) +# endif +# ifdef __USE_ISOC99 +__inline_forward_c(float,scalblnf, (float __x, long int __n), (__x, __n)) +__inline_forward_c(float,nearbyintf, (float __value), (__value)) +__inline_forward_c(long int,lrintf, (float __value), (__value)) +# endif +# ifdef __USE_GNU +__inline_forward(void,sincosf, (float __x, float *__sinx, float *__cosx), + (__x, __sinx, __cosx)) +# endif + +__inline_forward_c(long double,floorl, (long double __x), (__x)) +__inline_forward_c(long double,ceill, (long double __x), (__x)) +# ifdef __USE_MISC +__inline_forward_c(int,isinfl, (long double __value), (__value)) +__inline_forward_c(int,finitel, (long double __value), (__value)) +__inline_forward_c(long double,scalbnl, (long double __x, int __n), (__x, __n)) +__inline_forward_c(int,isnanl, (long double __value), (__value)) +# endif +# ifdef __USE_ISOC99 +__inline_forward_c(long double,scalblnl, (long double __x, long int __n), + (__x, __n)) +__inline_forward_c(long double,nearbyintl, (long double __value), (__value)) +__inline_forward_c(long int,lrintl, (long double __value), (__value)) +# endif +# ifdef __USE_GNU +__inline_forward(void,sincosl, + (long double __x, long double *__sinx, long double *__cosx), + (__x, __sinx, __cosx)) +# endif + +#endif /* Use misc or ISO C99 */ + +#undef __inline_forward +#undef __inline_forward_c + +#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */ + +#endif +#endif /* GCC. */ diff --git a/sysdeps/m68k/m680x0/fpu/branred.c b/sysdeps/m68k/m680x0/fpu/branred.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/branred.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/doasin.c b/sysdeps/m68k/m680x0/fpu/doasin.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/doasin.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/dosincos.c b/sysdeps/m68k/m680x0/fpu/dosincos.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/dosincos.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/e_acos.c b/sysdeps/m68k/m680x0/fpu/e_acos.c new file mode 100644 index 0000000000..c9234b7827 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_acos.c @@ -0,0 +1,38 @@ +/* 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> +#include <math_private.h> +#include "mathimpl.h" + +#ifndef FUNC +# define FUNC __ieee754_acos +# define FUNC_FINITE __acos_finite +#endif +#ifndef float_type +# define float_type double +#endif + +float_type +FUNC (x) + float_type x; +{ + return __m81_u(FUNC)(x); +} +#ifdef FUNC_FINITE +strong_alias (FUNC, FUNC_FINITE) +#endif diff --git a/sysdeps/m68k/m680x0/fpu/e_acosf.c b/sysdeps/m68k/m680x0/fpu/e_acosf.c new file mode 100644 index 0000000000..300fff601e --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_acosf.c @@ -0,0 +1,6 @@ +#ifndef FUNC +# define FUNC __ieee754_acosf +# define FUNC_FINITE __acosf_finite +#endif +#define float_type float +#include <e_acos.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_acosl.c b/sysdeps/m68k/m680x0/fpu/e_acosl.c new file mode 100644 index 0000000000..35767f4e23 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_acosl.c @@ -0,0 +1,6 @@ +#ifndef FUNC +# define FUNC __ieee754_acosl +# define FUNC_FINITE __acosl_finite +#endif +#define float_type long double +#include <e_acos.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_asin.c b/sysdeps/m68k/m680x0/fpu/e_asin.c new file mode 100644 index 0000000000..271a1f23d2 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_asin.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_asin +#define FUNC_FINITE __asin_finite +#include <e_acos.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_asinf.c b/sysdeps/m68k/m680x0/fpu/e_asinf.c new file mode 100644 index 0000000000..ece691c6fb --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_asinf.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_asinf +#define FUNC_FINITE __asinf_finite +#include <e_acosf.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_asinl.c b/sysdeps/m68k/m680x0/fpu/e_asinl.c new file mode 100644 index 0000000000..0c136f30eb --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_asinl.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_asinl +#define FUNC_FINITE __asinl_finite +#include <e_acosl.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_atan2.c b/sysdeps/m68k/m680x0/fpu/e_atan2.c new file mode 100644 index 0000000000..277a7b96a9 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_atan2.c @@ -0,0 +1,104 @@ +/* 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 <math.h> +#include <math_private.h> +#include "mathimpl.h" + +#ifndef SUFF +#define SUFF +#endif +#ifndef float_type +#define float_type double +#endif + +#define CONCATX(a,b) __CONCAT(a,b) +#define s(name) CONCATX(name,SUFF) +#define m81(func) __m81_u(s(func)) + +float_type +s(__ieee754_atan2) (float_type y, float_type x) +{ + float_type pi, pi_2, z; + unsigned long y_cond, x_cond; + + __asm ("fmovecr%.x %#0, %0" : "=f" (pi)); + __asm ("fscale%.w %#-1, %0" : "=f" (pi_2) : "0" (pi)); + y_cond = __m81_test (y); + x_cond = __m81_test (x); + + if ((x_cond | y_cond) & __M81_COND_NAN) + z = x + y; + else if (y_cond & __M81_COND_ZERO) + { + if (x_cond & __M81_COND_NEG) + z = y_cond & __M81_COND_NEG ? -pi : pi; + else + z = y; + } + else if (x_cond & __M81_COND_INF) + { + if (y_cond & __M81_COND_INF) + { + float_type pi_4; + __asm ("fscale%.w %#-2, %0" : "=f" (pi_4) : "0" (pi)); + z = x_cond & __M81_COND_NEG ? 3 * pi_4 : pi_4; + } + else + z = x_cond & __M81_COND_NEG ? pi : 0; + if (y_cond & __M81_COND_NEG) + z = -z; + } + else if (y_cond & __M81_COND_INF) + z = y_cond & __M81_COND_NEG ? -pi_2 : pi_2; + else if (x_cond & __M81_COND_NEG) + { + if (y_cond & __M81_COND_NEG) + { + if (-x > -y) + z = -pi + m81(__atan) (y / x); + else + z = -pi_2 - m81(__atan) (x / y); + } + else + { + if (-x > y) + z = pi + m81(__atan) (y / x); + else + z = pi_2 - m81(__atan) (x / y); + } + } + else + { + if (y_cond & __M81_COND_NEG) + { + if (x > -y) + z = m81(__atan) (y / x); + else + z = -pi_2 - m81(__atan) (x / y); + } + else + { + if (x > y) + z = m81(__atan) (y / x); + else + z = pi_2 - m81(__atan) (x / y); + } + } + return z; +} +strong_alias (s(__ieee754_atan2), CONCATX (s (__atan2), _finite)) diff --git a/sysdeps/m68k/m680x0/fpu/e_atan2f.c b/sysdeps/m68k/m680x0/fpu/e_atan2f.c new file mode 100644 index 0000000000..a0c750a759 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_atan2f.c @@ -0,0 +1,3 @@ +#define SUFF f +#define float_type float +#include <e_atan2.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_atan2l.c b/sysdeps/m68k/m680x0/fpu/e_atan2l.c new file mode 100644 index 0000000000..426ca94baa --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_atan2l.c @@ -0,0 +1,3 @@ +#define SUFF l +#define float_type long double +#include <e_atan2.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_atanh.c b/sysdeps/m68k/m680x0/fpu/e_atanh.c new file mode 100644 index 0000000000..f5f7e7b520 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_atanh.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_atanh +#define FUNC_FINITE __atanh_finite +#include <e_acos.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_atanhf.c b/sysdeps/m68k/m680x0/fpu/e_atanhf.c new file mode 100644 index 0000000000..cb464cbb7d --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_atanhf.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_atanhf +#define FUNC_FINITE __atanhf_finite +#include <e_acosf.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_atanhl.c b/sysdeps/m68k/m680x0/fpu/e_atanhl.c new file mode 100644 index 0000000000..8f276f5fad --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_atanhl.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_atanhl +#define FUNC_FINITE __atanhl_finite +#include <e_acosl.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_cosh.c b/sysdeps/m68k/m680x0/fpu/e_cosh.c new file mode 100644 index 0000000000..aaba11be3a --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_cosh.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_cosh +#define FUNC_FINITE __cosh_finite +#include <e_acos.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_coshf.c b/sysdeps/m68k/m680x0/fpu/e_coshf.c new file mode 100644 index 0000000000..0884741c5c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_coshf.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_coshf +#define FUNC_FINITE __coshf_finite +#include <e_acosf.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_coshl.c b/sysdeps/m68k/m680x0/fpu/e_coshl.c new file mode 100644 index 0000000000..7fc9b7b91c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_coshl.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_coshl +#define FUNC_FINITE __coshl_finite +#include <e_acosl.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_exp.c b/sysdeps/m68k/m680x0/fpu/e_exp.c new file mode 100644 index 0000000000..9f228034a1 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_exp.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_exp +#define FUNC_FINITE __exp_finite +#include <e_acos.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_exp10.c b/sysdeps/m68k/m680x0/fpu/e_exp10.c new file mode 100644 index 0000000000..e66a80599c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_exp10.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_exp10 +#define FUNC_FINITE __exp10_finite +#include <e_acos.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_exp10f.c b/sysdeps/m68k/m680x0/fpu/e_exp10f.c new file mode 100644 index 0000000000..7a3bdd4186 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_exp10f.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_exp10f +#define FUNC_FINITE __exp10f_finite +#include <e_acosf.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_exp10l.c b/sysdeps/m68k/m680x0/fpu/e_exp10l.c new file mode 100644 index 0000000000..e2a6255a76 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_exp10l.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_exp10l +#define FUNC_FINITE __exp10l_finite +#include <e_acosl.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_exp2.c b/sysdeps/m68k/m680x0/fpu/e_exp2.c new file mode 100644 index 0000000000..35e29ae653 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_exp2.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_exp2 +#define FUNC_FINITE __exp2_finite +#include <e_acos.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_exp2f.c b/sysdeps/m68k/m680x0/fpu/e_exp2f.c new file mode 100644 index 0000000000..e57ddb5365 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_exp2f.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_exp2f +#define FUNC_FINITE __exp2f_finite +#include <e_acosf.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_exp2l.c b/sysdeps/m68k/m680x0/fpu/e_exp2l.c new file mode 100644 index 0000000000..c5854ae427 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_exp2l.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_exp2l +#define FUNC_FINITE __exp2l_finite +#include <e_acosl.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_expf.c b/sysdeps/m68k/m680x0/fpu/e_expf.c new file mode 100644 index 0000000000..af1e019504 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_expf.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_expf +#define FUNC_FINITE __expf_finite +#include <e_acosf.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_expl.c b/sysdeps/m68k/m680x0/fpu/e_expl.c new file mode 100644 index 0000000000..543eb0edf5 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_expl.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_expl +#define FUNC_FINITE __expl_finite +#include <e_acosl.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_fmod.c b/sysdeps/m68k/m680x0/fpu/e_fmod.c new file mode 100644 index 0000000000..416c29f12a --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_fmod.c @@ -0,0 +1,39 @@ +/* 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> +#include <math_private.h> +#include "mathimpl.h" + +#ifndef FUNC +# define FUNC __ieee754_fmod +# define FUNC_FINITE __fmod_finite +#endif +#ifndef float_type +# define float_type double +#endif + +float_type +FUNC (x, y) + float_type x; + float_type y; +{ + return __m81_u(FUNC)(x, y); +} +#ifdef FUNC_FINITE +strong_alias (FUNC, FUNC_FINITE) +#endif diff --git a/sysdeps/m68k/m680x0/fpu/e_fmodf.c b/sysdeps/m68k/m680x0/fpu/e_fmodf.c new file mode 100644 index 0000000000..38995c3768 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_fmodf.c @@ -0,0 +1,6 @@ +#ifndef FUNC +# define FUNC __ieee754_fmodf +# define FUNC_FINITE __fmodf_finite +#endif +#define float_type float +#include <e_fmod.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_fmodl.c b/sysdeps/m68k/m680x0/fpu/e_fmodl.c new file mode 100644 index 0000000000..8d793b2de7 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_fmodl.c @@ -0,0 +1,6 @@ +#ifndef FUNC +# define FUNC __ieee754_fmodl +# define FUNC_FINITE __fmodl_finite +#endif +#define float_type long double +#include <e_fmod.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_ilogb.c b/sysdeps/m68k/m680x0/fpu/e_ilogb.c new file mode 100644 index 0000000000..0288ac14e9 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_ilogb.c @@ -0,0 +1,47 @@ +/* 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> +#include "mathimpl.h" + +#ifndef SUFF +#define SUFF +#endif +#ifndef float_type +#define float_type double +#endif + +#define CONCATX(a,b) __CONCAT(a,b) +#define s(name) CONCATX(name,SUFF) +#define m81(func) __m81_u(s(func)) + +int +s(__ieee754_ilogb) (float_type x) +{ + float_type result; + unsigned long x_cond; + + x_cond = __m81_test (x); + /* We must return consistent values for zero and NaN. */ + if (x_cond & __M81_COND_ZERO) + return FP_ILOGB0; + if (x_cond & (__M81_COND_NAN | __M81_COND_INF)) + return FP_ILOGBNAN; + + __asm ("fgetexp%.x %1, %0" : "=f" (result) : "f" (x)); + return (int) result; +} diff --git a/sysdeps/m68k/m680x0/fpu/e_ilogbf.c b/sysdeps/m68k/m680x0/fpu/e_ilogbf.c new file mode 100644 index 0000000000..34a8cd28e6 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_ilogbf.c @@ -0,0 +1,3 @@ +#define SUFF f +#define float_type float +#include <e_ilogb.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_ilogbl.c b/sysdeps/m68k/m680x0/fpu/e_ilogbl.c new file mode 100644 index 0000000000..b0e13af6b1 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_ilogbl.c @@ -0,0 +1,3 @@ +#define SUFF l +#define float_type long double +#include <e_ilogb.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_log.c b/sysdeps/m68k/m680x0/fpu/e_log.c new file mode 100644 index 0000000000..628c62b31a --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_log.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_log +#define FUNC_FINITE __log_finite +#include <e_acos.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_log10.c b/sysdeps/m68k/m680x0/fpu/e_log10.c new file mode 100644 index 0000000000..78e0693e9d --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_log10.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_log10 +#define FUNC_FINITE __log10_finite +#include <e_acos.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_log10f.c b/sysdeps/m68k/m680x0/fpu/e_log10f.c new file mode 100644 index 0000000000..452a75ec15 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_log10f.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_log10f +#define FUNC_FINITE __log10f_finite +#include <e_acosf.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_log10l.c b/sysdeps/m68k/m680x0/fpu/e_log10l.c new file mode 100644 index 0000000000..7c5dcb8e18 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_log10l.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_log10l +#define FUNC_FINITE __log10l_finite +#include <e_acosl.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_log2.c b/sysdeps/m68k/m680x0/fpu/e_log2.c new file mode 100644 index 0000000000..a00ddbdc96 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_log2.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_log2 +#define FUNC_FINITE __log2_finite +#include <e_acos.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_log2f.c b/sysdeps/m68k/m680x0/fpu/e_log2f.c new file mode 100644 index 0000000000..670b69c8a9 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_log2f.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_log2f +#define FUNC_FINITE __log2f_finite +#include <e_acosf.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_log2l.c b/sysdeps/m68k/m680x0/fpu/e_log2l.c new file mode 100644 index 0000000000..4a97a00235 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_log2l.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_log2l +#define FUNC_FINITE __log2l_finite +#include <e_acosl.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_logf.c b/sysdeps/m68k/m680x0/fpu/e_logf.c new file mode 100644 index 0000000000..1989a95431 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_logf.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_logf +#define FUNC_FINITE __logf_finite +#include <e_acosf.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_logl.c b/sysdeps/m68k/m680x0/fpu/e_logl.c new file mode 100644 index 0000000000..9ab842c3fc --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_logl.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_logl +#define FUNC_FINITE __logl_finite +#include <e_acosl.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_pow.c b/sysdeps/m68k/m680x0/fpu/e_pow.c new file mode 100644 index 0000000000..892a76c66a --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_pow.c @@ -0,0 +1,126 @@ +/* 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 <math.h> +#include <math_private.h> +#include "mathimpl.h" + +#ifndef SUFF +#define SUFF +#endif +#ifndef float_type +#define float_type double +#endif + +#define CONCATX(a,b) __CONCAT(a,b) +#define s(name) CONCATX(name,SUFF) +#define m81(func) __m81_u(s(func)) + +float_type +s(__ieee754_pow) (float_type x, float_type y) +{ + float_type z; + float_type ax; + unsigned long x_cond, y_cond; + + y_cond = __m81_test (y); + if (y_cond & __M81_COND_ZERO) + return 1.0; + if (y_cond & __M81_COND_NAN) + return x == 1.0 ? x : x + y; + + x_cond = __m81_test (x); + if (x_cond & __M81_COND_NAN) + return x + y; + + if (y_cond & __M81_COND_INF) + { + ax = s(fabs) (x); + if (ax == 1.0) + return ax; + if (ax > 1.0) + return y_cond & __M81_COND_NEG ? 0 : y; + else + return y_cond & __M81_COND_NEG ? -y : 0; + } + + if (s(fabs) (y) == 1.0) + return y_cond & __M81_COND_NEG ? 1 / x : x; + + if (y == 2) + return x * x; + if (y == 0.5 && !(x_cond & __M81_COND_NEG)) + return m81(__ieee754_sqrt) (x); + + if (x == 10.0) + { + __asm ("ftentox%.x %1, %0" : "=f" (z) : "f" (y)); + return z; + } + if (x == 2.0) + { + __asm ("ftwotox%.x %1, %0" : "=f" (z) : "f" (y)); + return z; + } + + ax = s(fabs) (x); + if (x_cond & (__M81_COND_INF | __M81_COND_ZERO) || ax == 1.0) + { + z = ax; + if (y_cond & __M81_COND_NEG) + z = 1 / z; + if (x_cond & __M81_COND_NEG) + { + if (y != m81(__rint) (y)) + { + if (x == -1) + z = (z - z) / (z - z); + } + else + goto maybe_negate; + } + return z; + } + + if (x_cond & __M81_COND_NEG) + { + if (y == m81(__rint) (y)) + { + z = m81(__ieee754_exp) (y * m81(__ieee754_log) (-x)); + maybe_negate: + /* We always use the long double format, since y is already in + this format and rounding won't change the result. */ + { + int32_t exponent; + u_int32_t i0, i1; + GET_LDOUBLE_WORDS (exponent, i0, i1, y); + exponent = (exponent & 0x7fff) - 0x3fff; + if (exponent <= 31 + ? i0 & (1 << (31 - exponent)) + : (exponent <= 63 + && i1 & (1 << (63 - exponent)))) + z = -z; + } + } + else + z = (y - y) / (y - y); + } + else + z = m81(__ieee754_exp) (y * m81(__ieee754_log) (x)); + return z; +} +strong_alias (s(__ieee754_pow), CONCATX (s(__pow), _finite)) diff --git a/sysdeps/m68k/m680x0/fpu/e_powf.c b/sysdeps/m68k/m680x0/fpu/e_powf.c new file mode 100644 index 0000000000..379014355a --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_powf.c @@ -0,0 +1,3 @@ +#define SUFF f +#define float_type float +#include <e_pow.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_powl.c b/sysdeps/m68k/m680x0/fpu/e_powl.c new file mode 100644 index 0000000000..f71fa34a26 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_powl.c @@ -0,0 +1,3 @@ +#define SUFF l +#define float_type long double +#include <e_pow.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_rem_pio2.c b/sysdeps/m68k/m680x0/fpu/e_rem_pio2.c new file mode 100644 index 0000000000..1347b0468c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_rem_pio2.c @@ -0,0 +1,3 @@ +/* Empty. This file is only meant to avoid compiling the file with the + same name in the libm-ieee754 directory. The code is not used since + there is an assembler version for all users of this file. */ diff --git a/sysdeps/m68k/m680x0/fpu/e_rem_pio2f.c b/sysdeps/m68k/m680x0/fpu/e_rem_pio2f.c new file mode 100644 index 0000000000..1347b0468c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_rem_pio2f.c @@ -0,0 +1,3 @@ +/* Empty. This file is only meant to avoid compiling the file with the + same name in the libm-ieee754 directory. The code is not used since + there is an assembler version for all users of this file. */ diff --git a/sysdeps/m68k/m680x0/fpu/e_rem_pio2l.c b/sysdeps/m68k/m680x0/fpu/e_rem_pio2l.c new file mode 100644 index 0000000000..1347b0468c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_rem_pio2l.c @@ -0,0 +1,3 @@ +/* Empty. This file is only meant to avoid compiling the file with the + same name in the libm-ieee754 directory. The code is not used since + there is an assembler version for all users of this file. */ diff --git a/sysdeps/m68k/m680x0/fpu/e_remainder.c b/sysdeps/m68k/m680x0/fpu/e_remainder.c new file mode 100644 index 0000000000..f7732af8c5 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_remainder.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_remainder +#define FUNC_FINITE __remainder_finite +#include <e_fmod.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_remainderf.c b/sysdeps/m68k/m680x0/fpu/e_remainderf.c new file mode 100644 index 0000000000..94b53e7a80 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_remainderf.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_remainderf +#define FUNC_FINITE __remainderf_finite +#include <e_fmodf.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_remainderl.c b/sysdeps/m68k/m680x0/fpu/e_remainderl.c new file mode 100644 index 0000000000..d5b59607ab --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_remainderl.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_remainderl +#define FUNC_FINITE __remainderl_finite +#include <e_fmodl.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_scalb.c b/sysdeps/m68k/m680x0/fpu/e_scalb.c new file mode 100644 index 0000000000..a1c7761ac9 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_scalb.c @@ -0,0 +1,60 @@ +/* Copyright (C) 1997-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <math.h> +#include <math_private.h> +#include "mathimpl.h" + +#ifndef SUFF +#define SUFF +#endif +#ifndef float_type +#define float_type double +#endif + +#define CONCATX(a,b) __CONCAT(a,b) +#define s(name) CONCATX(name,SUFF) +#define m81(func) __m81_u(s(func)) + +float_type +s(__ieee754_scalb) (float_type x, float_type fn) +{ + float_type retval; + unsigned long x_cond = __m81_test (x); + unsigned long fn_cond = __m81_test (fn); + + if ((x_cond | fn_cond) & __M81_COND_NAN) + return x * fn; + + if (fn_cond & __M81_COND_INF) + { + if (!(fn_cond & __M81_COND_NEG)) + return x * fn; + else if (x_cond & __M81_COND_ZERO) + return x; + else + return x / -fn; + } + + if (m81(__rint) (fn) != fn) + return (x - x) / (x - x); + + __asm ("fscale%.x %1, %0" : "=f" (retval) : "f" (fn), "0" (x)); + return retval; +} +strong_alias (s(__ieee754_scalb), CONCATX (s(__scalb), _finite)) diff --git a/sysdeps/m68k/m680x0/fpu/e_scalbf.c b/sysdeps/m68k/m680x0/fpu/e_scalbf.c new file mode 100644 index 0000000000..7943571246 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_scalbf.c @@ -0,0 +1,3 @@ +#define SUFF f +#define float_type float +#include <e_scalb.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_scalbl.c b/sysdeps/m68k/m680x0/fpu/e_scalbl.c new file mode 100644 index 0000000000..35fb2dc0ed --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_scalbl.c @@ -0,0 +1,3 @@ +#define SUFF l +#define float_type long double +#include <e_scalb.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_sinh.c b/sysdeps/m68k/m680x0/fpu/e_sinh.c new file mode 100644 index 0000000000..1e1b1c1180 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_sinh.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_sinh +#define FUNC_FINITE __sinh_finite +#include <e_acos.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_sinhf.c b/sysdeps/m68k/m680x0/fpu/e_sinhf.c new file mode 100644 index 0000000000..13c79f9d96 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_sinhf.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_sinhf +#define FUNC_FINITE __sinhf_finite +#include <e_acosf.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_sinhl.c b/sysdeps/m68k/m680x0/fpu/e_sinhl.c new file mode 100644 index 0000000000..47f0f24401 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_sinhl.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_sinhl +#define FUNC_FINITE __sinhl_finite +#include <e_acosl.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_sqrt.c b/sysdeps/m68k/m680x0/fpu/e_sqrt.c new file mode 100644 index 0000000000..9a250cbc25 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_sqrt.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_sqrt +#define FUNC_FINITE __sqrt_finite +#include <e_acos.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_sqrtf.c b/sysdeps/m68k/m680x0/fpu/e_sqrtf.c new file mode 100644 index 0000000000..372c3eb2f4 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_sqrtf.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_sqrtf +#define FUNC_FINITE __sqrtf_finite +#include <e_acosf.c> diff --git a/sysdeps/m68k/m680x0/fpu/e_sqrtl.c b/sysdeps/m68k/m680x0/fpu/e_sqrtl.c new file mode 100644 index 0000000000..df5f44e6a7 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/e_sqrtl.c @@ -0,0 +1,3 @@ +#define FUNC __ieee754_sqrtl +#define FUNC_FINITE __sqrtl_finite +#include <e_acosl.c> diff --git a/sysdeps/m68k/m680x0/fpu/fraiseexcpt.c b/sysdeps/m68k/m680x0/fpu/fraiseexcpt.c new file mode 100644 index 0000000000..6e41b1425d --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/fraiseexcpt.c @@ -0,0 +1,82 @@ +/* Raise given exceptions. + Copyright (C) 1997-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + 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 <float.h> +#include <math.h> + +int +__feraiseexcept (int excepts) +{ + /* Raise exceptions represented by EXCEPTS. But we must raise only one + signal at a time. It is important that if the overflow/underflow + exception and the divide by zero exception are given at the same + time, the overflow/underflow exception follows the divide by zero + exception. */ + + /* First: invalid exception. */ + if (excepts & FE_INVALID) + { + /* One example of an invalid operation is 0 * Infinity. */ + double d = HUGE_VAL; + __asm__ __volatile__ ("fmul%.s %#0r0,%0; fnop" : "=f" (d) : "0" (d)); + } + + /* Next: division by zero. */ + if (excepts & FE_DIVBYZERO) + { + double d = 1.0; + __asm__ __volatile__ ("fdiv%.s %#0r0,%0; fnop" : "=f" (d) : "0" (d)); + } + + /* Next: overflow. */ + if (excepts & FE_OVERFLOW) + { + long double d = LDBL_MAX; + + __asm__ __volatile__ ("fmul%.x %0,%0; fnop" : "=f" (d) : "0" (d)); + } + + /* Next: underflow. */ + if (excepts & FE_UNDERFLOW) + { + long double d = -LDBL_MAX; + + __asm__ __volatile__ ("fetox%.x %0; fnop" : "=f" (d) : "0" (d)); + } + + /* Last: inexact. */ + if (excepts & FE_INEXACT) + { + long double d = 1.0; + __asm__ __volatile__ ("fdiv%.s %#0r3,%0; fnop" : "=f" (d) : "0" (d)); + } + + /* Success. */ + return 0; +} + +#include <shlib-compat.h> +#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2) +strong_alias (__feraiseexcept, __old_feraiseexcept) +compat_symbol (libm, __old_feraiseexcept, feraiseexcept, GLIBC_2_1); +#endif + +libm_hidden_ver (__feraiseexcept, feraiseexcept) +versioned_symbol (libm, __feraiseexcept, feraiseexcept, GLIBC_2_2); diff --git a/sysdeps/m68k/m680x0/fpu/halfulp.c b/sysdeps/m68k/m680x0/fpu/halfulp.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/halfulp.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/k_cosl.c b/sysdeps/m68k/m680x0/fpu/k_cosl.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/k_cosl.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/k_rem_pio2.c b/sysdeps/m68k/m680x0/fpu/k_rem_pio2.c new file mode 100644 index 0000000000..1347b0468c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/k_rem_pio2.c @@ -0,0 +1,3 @@ +/* Empty. This file is only meant to avoid compiling the file with the + same name in the libm-ieee754 directory. The code is not used since + there is an assembler version for all users of this file. */ diff --git a/sysdeps/m68k/m680x0/fpu/k_rem_pio2f.c b/sysdeps/m68k/m680x0/fpu/k_rem_pio2f.c new file mode 100644 index 0000000000..1347b0468c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/k_rem_pio2f.c @@ -0,0 +1,3 @@ +/* Empty. This file is only meant to avoid compiling the file with the + same name in the libm-ieee754 directory. The code is not used since + there is an assembler version for all users of this file. */ diff --git a/sysdeps/m68k/m680x0/fpu/k_rem_pio2l.c b/sysdeps/m68k/m680x0/fpu/k_rem_pio2l.c new file mode 100644 index 0000000000..1347b0468c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/k_rem_pio2l.c @@ -0,0 +1,3 @@ +/* Empty. This file is only meant to avoid compiling the file with the + same name in the libm-ieee754 directory. The code is not used since + there is an assembler version for all users of this file. */ diff --git a/sysdeps/m68k/m680x0/fpu/k_sinl.c b/sysdeps/m68k/m680x0/fpu/k_sinl.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/k_sinl.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/k_tanf.c b/sysdeps/m68k/m680x0/fpu/k_tanf.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/k_tanf.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/k_tanl.c b/sysdeps/m68k/m680x0/fpu/k_tanl.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/k_tanl.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/libm-test-ulps b/sysdeps/m68k/m680x0/fpu/libm-test-ulps new file mode 100644 index 0000000000..b4333a07f2 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/libm-test-ulps @@ -0,0 +1,9764 @@ +# Begin of automatic generation + +# acosh +Test "acosh (0x6.4p+4)": +double: 1 +idouble: 1 + +# asin_downward +Test "asin_downward (-0x2p-16384)": +ildouble: 1 +ldouble: 1 +Test "asin_downward (-0x4p-1024)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_downward (-0x4p-1076)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "asin_downward (-0x4p-128)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "asin_downward (-0x4p-16384)": +ildouble: 1 +ldouble: 1 +Test "asin_downward (-0x4p-16448)": +ildouble: 1 +ldouble: 1 +Test "asin_downward (-0x8p-152)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "asin_downward (-0x8p-16448)": +ildouble: 1 +ldouble: 1 +Test "asin_downward (-0x8p-972)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +# asin_towardzero +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 (-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-972)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +# asin_upward +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 (-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 (0x1p+100)": +ildouble: 1 +ldouble: 1 +Test "asinh (0xap+0)": +float: 1 +ifloat: 1 +Test "asinh (0xf.424p+16)": +ildouble: 1 +ldouble: 1 + +# atan2 +Test "atan2 (-0x1.effe81f852716ffcp-8, -0x7.57d1de0e51248p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852716p-8, -0x7.57d1de0e5124664p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe81f852717p-8, -0x7.57d1de0e5124664p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe82p-8, -0x7.57d1de0e51248p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x1.effe8p-8, -0x7.57d1de0e51248p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x4p-16384, 0x2p-16384)": +ildouble: 1 +ldouble: 1 +Test "atan2 (-0x8p-16448, 0x4p-16448)": +ildouble: 1 +ldouble: 1 +Test "atan2 (0x1.64p+0, 0xe.ep-4)": +ildouble: 1 +ldouble: 1 +Test "atan2 (0x4p-16384, 0x2p-16384)": +ildouble: 1 +ldouble: 1 +Test "atan2 (0x6.4p-4, 0x1.30164840e1719f7ep-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (0x6.4p-4, 0x1.30164840e1719f8p-12)": +ildouble: 1 +ldouble: 1 +Test "atan2 (0x8p-16448, 0x4p-16448)": +ildouble: 1 +ldouble: 1 + +# cacos +Test "Imaginary part of: cacos (+0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (+0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (+0 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (+0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (+0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (+0 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.0 + 0x0.fffffffffffff8p0 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.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.0 - 0x0.fffffffffffff8p0 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.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0.25 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0.25 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0.5 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0.5 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0.5 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 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.ffffffffffffffffp0 + 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 - 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.ffffffp0 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x0.ffffffp0 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.0000000000000002p0 + 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacos (-0x1.0000000000000002p0 - 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.0000000000001p0 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 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-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 (-0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary 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 "Imaginary part of: cacos (-0x1p-23 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-23 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-52 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-52 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-52 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-52 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-63 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-63 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-63 + 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-0x1p-63 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 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 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-1.0 + 0x1.fp-10 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-1.0 + 0x1.fp-100 i)": +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 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.0 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (-1.0 - 0x1.fp-10 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-1.0 - 0x1.fp-100 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.0 - 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.5 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.5 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.5 - 0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.5 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (-1.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 + 0x0.fffffffffffff8p0 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.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.0 - 0x0.fffffffffffff8p0 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.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.25 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.25 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + +0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real 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 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-23 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-52 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-63 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 - 0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real 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 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-23 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-52 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-63 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0.5 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0.75 + 1.25 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0x0.ffffffffffffffffp0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real 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.ffffffffffffffffp0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real 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)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x0.ffffffp0 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x0.ffffffp0 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x0.ffffffp0 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacos (0x0.ffffffp0 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x0.ffffffp0 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x0.ffffffp0 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x0.ffffffp0 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacos (0x1.0000000000000002p0 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000000002p0 + 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: cacos (0x1.0000000000000002p0 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000000002p0 - 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacos (0x1.0000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000001p0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.0000000000001p0 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000001p0 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000001p0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.0000000000001p0 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.0000000000001p0 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.000002p0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Real part of: cacos (0x1.000002p0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Real part of: cacos (0x1.fp-10 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.fp-10 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1.fp-30 + 1.0 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 "Real part of: cacos (0x1.fp-30 - 1.0 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.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary 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-23 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-23 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1p-23 + 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1p-23 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-23 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (0x1p-23 - 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-52 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-52 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-52 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-52 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 + 0.25 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 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 +ildouble: 1 +ldouble: 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 +Test "Imaginary part of: cacos (1.0 + 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacos (1.0 - 0.25 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 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 +ildouble: 1 +ldouble: 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 +Test "Imaginary part of: cacos (1.0 - 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.5 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.5 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.5 - 0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.5 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacos (1.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 + +# cacosh +Test "Real part of: cacosh (+0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (+0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (+0 + 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (+0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (+0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (+0 - 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0 + 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0 - 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.0 + 0x0.fffffffffffff8p0 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.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.0 - 0x0.fffffffffffff8p0 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.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.25 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (-0.25 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0.5 - 1.0 i)": +ildouble: 1 +ldouble: 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.ffffffffffffffffp0 + 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 - 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.ffffffp0 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x0.ffffffp0 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.0000000000000002p0 + 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: cacosh (-0x1.0000000000000002p0 - 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: cacosh (-0x1.0000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000001p0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000001p0 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000001p0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.0000000000001p0 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 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-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 (-0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-23 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-23 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-52 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-52 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-52 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real 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 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-63 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-63 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary 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 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (-0x1p-63 - 0x1.0000000000000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.0 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 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 +Test "Imaginary part of: cacosh (-1.0 + 0x1.fp-10 i)": +ildouble: 1 +ldouble: 1 +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 "Real part of: cacosh (-1.0 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 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 +Test "Imaginary part of: cacosh (-1.0 - 0x1.fp-10 i)": +ildouble: 1 +ldouble: 1 +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 "Real part of: cacosh (-1.5 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 - 0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (-1.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 + 0x0.fffffffffffff8p0 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.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.0 - 0x0.fffffffffffff8p0 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.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.25 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.25 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + +0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-23 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-52 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-63 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-23 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-52 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-63 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0.5 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0.75 + 1.25 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0x0.fffffffffffff8p0 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0x0.fffffffffffff8p0 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffp0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffp0 + 0x1.fp-16385 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.ffffffffffffffffp0 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffp0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffffffffffffp0 - 0x1.fp-16385 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.ffffffffffffffffp0 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x0.ffffffp0 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x0.ffffffp0 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.0000000000000002p0 + 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacosh (0x1.0000000000000002p0 + 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000000002p0 - 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: cacosh (0x1.0000000000000002p0 - 0x1p-63 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.0000000000001p0 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.0000000000001p0 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.0000000000001p0 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.000002p0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacosh (0x1.000002p0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Real part of: cacosh (0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.fp-10 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1.fp-10 - 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 +Test "Real part of: cacosh (0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 + 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 - 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-16385 + 0x0.ffffffffffffffffp0 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-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)": +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)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-23 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1p-23 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1p-23 + 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-23 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1p-23 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (0x1p-23 - 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-52 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-52 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-52 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real 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 +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 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 + 0.25 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.0 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 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 +Test "Imaginary part of: cacosh (1.0 + 0x1.fp-10 i)": +float: 2 +ifloat: 2 +Test "Real part of: cacosh (1.0 + 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cacosh (1.0 - 0.25 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.0 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 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 +Test "Imaginary part of: cacosh (1.0 - 0x1.fp-10 i)": +float: 2 +ifloat: 2 +Test "Real part of: cacosh (1.0 - 0x1.fp-30 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 - 0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cacosh (1.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 + +# casin +Test "Imaginary part of: casin (+0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (+0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (+0 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (+0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (+0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (+0 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.0 + 0x0.fffffffffffff8p0 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.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.0 - 0x0.fffffffffffff8p0 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.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.25 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0.25 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1.fp-16385 i)": +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 +Test "Imaginary part of: casin (-0.5 + 0x1p-52 i)": +double: 1 +idouble: 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 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1.fp-16385 i)": +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 +Test "Imaginary part of: casin (-0.5 - 0x1p-52 i)": +double: 1 +idouble: 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 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary 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 "Imaginary 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 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x0.ffffffp0 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffp0 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (-0x0.ffffffp0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x0.ffffffp0 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffp0 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.0000000000000002p0 + 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (-0x1.0000000000000002p0 - 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (-0x1.0000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000001p0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000001p0 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000001p0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.0000000000001p0 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-10 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-10 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-100 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (-0x1.fp-100 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (-0x1.fp-1000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (-0x1.fp-1000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (-0x1.fp-10000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-10000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-1025 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-1025 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: casin (-0x1.fp-129 + 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-129 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: casin (-0x1.fp-129 - 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-129 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1.fp-30 + 1.0 i)": +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)": +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 - 0.5 i)": +float: 1 +ifloat: 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-23 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-23 + 0x1.000002p0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (-0x1p-23 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-23 - 0x1.000002p0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-52 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-52 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-52 + 0x1.0000000000001p0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1p-52 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-0x1p-52 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-52 - 0x1.0000000000001p0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-63 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 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 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (-0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 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 "Real part of: casin (-1.0 + 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (-1.0 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 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 "Real part of: casin (-1.0 - 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (-1.0 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 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.5 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.5 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.5 - 0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.5 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (-1.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 + 0x0.fffffffffffff8p0 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.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.0 - 0x0.fffffffffffff8p0 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.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.25 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.25 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1.fp-16385 i)": +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 +Test "Imaginary part of: casin (0.5 + 0x1p-52 i)": +double: 1 +idouble: 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 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1.fp-16385 i)": +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 +Test "Imaginary part of: casin (0.5 - 0x1p-52 i)": +double: 1 +idouble: 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 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0.75 + 1.25 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary 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 "Imaginary 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 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x0.ffffffp0 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffp0 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (0x0.ffffffp0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x0.ffffffp0 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x0.ffffffp0 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.0000000000000002p0 + 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (0x1.0000000000000002p0 - 0x1p-63 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: casin (0x1.0000000000001p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000001p0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000001p0 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000001p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000001p0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.0000000000001p0 - 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-10 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-10 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-100 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (0x1.fp-100 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (0x1.fp-1000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (0x1.fp-1000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (0x1.fp-10000 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-10000 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-1025 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-1025 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: casin (0x1.fp-129 + 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-129 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: casin (0x1.fp-129 - 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 0x1.000002p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-129 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1.fp-30 + 1.0 i)": +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)": +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 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-105 - 0.5 i)": +float: 1 +ifloat: 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-23 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-23 + 0x1.000002p0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (0x1p-23 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-23 - 0x1.000002p0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-52 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-52 + 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-52 + 0x1.0000000000001p0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1p-52 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (0x1p-52 - 0x0.fffffffffffff8p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-52 - 0x1.0000000000001p0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-63 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 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 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casin (0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 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 "Real part of: casin (1.0 + 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (1.0 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 + 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 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 "Real part of: casin (1.0 - 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (1.0 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 - 0.5 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 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.5 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.5 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.5 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.5 + 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.5 - 0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.5 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.5 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casin (1.5 - 0x1.fp-16385 i)": +ildouble: 1 +ldouble: 1 + +# casinh +Test "Real part of: casinh (+0 + 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (+0 - 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0 + 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0 - 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.0 + 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.0 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.0 - 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.0 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.25 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-0.25 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0.5 + +0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1.fp-129 i)": +float: 1 +ifloat: 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)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.5 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-52 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 + 0x1p-63 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 + 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.5 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 - 0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1.fp-129 i)": +float: 1 +ifloat: 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)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.5 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-52 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 - 0x1p-63 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0.5 - 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0.5 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.fffffffffffff8p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.fffffffffffff8p0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.fffffffffffff8p0 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.fffffffffffff8p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.fffffffffffff8p0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.fffffffffffff8p0 - 0x1p-52 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 "Imaginary 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 "Imaginary 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 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x0.ffffffp0 - 0x1p-23 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary 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 "Imaginary part of: casinh (-0x1.0000000000001p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-0x1.0000000000001p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1.000002p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.000002p0 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1.000002p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.000002p0 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1.fp-10 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1.fp-10 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1.fp-1025 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-1025 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-1025 + 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-1025 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-1025 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-1025 - 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-129 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.fp-129 + 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.fp-129 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-129 + 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-129 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.fp-129 - 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-0x1.fp-129 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-129 - 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 + 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1.fp-16385 - 1.5 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-23 + 0.5 i)": +double: 1 +idouble: 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)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1p-23 - 0.5 i)": +double: 1 +idouble: 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)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real 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-52 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real 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-52 - 0x1.0000000000001p0 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 + 0x1.0000000000000002p0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: casinh (-0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-0x1p-63 - 0x1.0000000000000002p0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: casinh (-1.0 + +0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-1.0 + 0.25 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 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 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-100 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-100 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-1000 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-1000 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary 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 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-129 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)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-1.0 - 0.25 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 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 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-100 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-100 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-1000 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-1000 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary 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 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-129 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)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (-1.5 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.5 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.5 - 0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.5 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-2 - 3 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.0 + 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.0 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.0 - 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.0 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.25 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (0.25 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0.5 + +0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1.fp-129 i)": +float: 1 +ifloat: 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)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.5 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-52 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 + 0x1p-63 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 + 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.5 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 - 0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1.fp-129 i)": +float: 1 +ifloat: 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)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.5 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-52 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 - 0x1p-63 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0.5 - 1.0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0.5 - 1.0 i)": +ildouble: 1 +ldouble: 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 "Real part of: casinh (0x0.fffffffffffff8p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.fffffffffffff8p0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.fffffffffffff8p0 + 0x1p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.fffffffffffff8p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.fffffffffffff8p0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.fffffffffffff8p0 - 0x1p-52 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 "Imaginary 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 "Imaginary 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 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x0.ffffffp0 - 0x1p-23 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary 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 "Imaginary part of: casinh (0x1.0000000000001p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (0x1.0000000000001p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1.000002p0 + 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.000002p0 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.000002p0 + 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.000002p0 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0x1.000002p0 - 0.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.000002p0 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.000002p0 - 0x1.fp-129 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.000002p0 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0x1.fp-10 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0x1.fp-10 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0x1.fp-1025 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-1025 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-1025 + 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-1025 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-1025 - 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-1025 - 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-129 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.fp-129 + 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.fp-129 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-129 + 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-129 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.fp-129 - 0x0.ffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (0x1.fp-129 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-129 - 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 + 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 + 1.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 - 0.5 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp-16385 - 1.5 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 +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-23 + 0.5 i)": +double: 1 +idouble: 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)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0x1p-23 - 0.5 i)": +double: 1 +idouble: 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)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real 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-52 + 0x1.0000000000001p0 i)": +ildouble: 1 +ldouble: 1 +Test "Real 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-52 - 0x1.0000000000001p0 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 + 0x1.0000000000000002p0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: casinh (0x1p-63 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (0x1p-63 - 0x1.0000000000000002p0 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: casinh (1.0 + +0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (1.0 + 0.25 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 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 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-100 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-100 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-1000 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-1000 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary 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 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-129 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)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (1.0 - 0.25 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 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 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-100 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-100 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-1000 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-1000 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary 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 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-1025 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-129 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)": +ildouble: 1 +ldouble: 1 +Test "Real part of: casinh (1.5 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.5 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.5 - 0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.5 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 + +# catan +Test "Imaginary part of: catan (-0x0.fffffffffffff8p0 + 0x1p-27 i)": +double: 1 +idouble: 1 +Test "Real part of: catan (-0x0.ffffffffffffffffp0 + 0x1p-33 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x0.ffffffffffffffffp0 + 0x1p-33 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (-0x0.ffffffffffffffffp0 - 0x1p-33 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x0.ffffffp0 + 0x1p-13 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: catan (-0x1.000002p0 - 0x1p-13 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1.fp1023 + 0x1.fp1023 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1.fp1023 - 0x1.fp1023 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1.fp127 + 0x1.fp127 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1.fp127 - 0x1.fp127 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1p-1020 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-0x1p-1020 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-1.0 - 0x1p-13 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-1.0 - 0x1p-64 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (-2 - 3 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real 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.ffffffffffffffffp0 + 0x1p-33 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x0.ffffffffffffffffp0 + 0x1p-33 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catan (0x0.ffffffffffffffffp0 - 0x1p-33 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x0.ffffffp0 + 0x1p-13 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: catan (0x1.000002p0 - 0x1p-13 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1.fp1023 + 0x1.fp1023 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1.fp1023 - 0x1.fp1023 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1.fp127 + 0x1.fp127 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1.fp127 - 0x1.fp127 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1p-1020 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (0x1p-1020 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (1.0 - 0x1p-13 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catan (1.0 - 0x1p-64 i)": +ildouble: 1 +ldouble: 1 + +# catanh +Test "Real part of: catanh (-0x1.fp1023 + 0x1.fp1023 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1.fp1023 - 0x1.fp1023 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1.fp127 + 0x1.fp127 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1.fp127 - 0x1.fp127 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1p-13 + 0x1.000002p0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1p-13 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1p-13 - 0x1.000002p0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1p-13 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (-0x1p-33 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (-0x1p-33 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1p-64 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-0x1p-64 - 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-1.0 + 0x1p-1020 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-1.0 - 0x1p-1020 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (-2 - 3 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (0.75 + 1.25 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (0x1.fp1023 + 0x1.fp1023 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1.fp1023 - 0x1.fp1023 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1.fp127 + 0x1.fp127 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1.fp127 - 0x1.fp127 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1p-13 + 0x0.ffffffp0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: catanh (0x1p-13 - 0x0.ffffffp0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 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-33 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0x1p-33 + 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (0x1p-33 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: catanh (0x1p-33 - 0x0.ffffffffffffffffp0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (1.0 + 0x1p-1020 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: catanh (1.0 - 0x1p-1020 i)": +ildouble: 1 +ldouble: 1 + +# cbrt +Test "cbrt (-0x4.189374bc6a7ef9d8p-12)": +ildouble: 1 +ldouble: 1 +Test "cbrt (-0x4.18937p-12)": +float: 1 +ifloat: 1 +Test "cbrt (-0x4p-1024)": +double: 1 +idouble: 1 +Test "cbrt (-0x8p-152)": +double: 1 +idouble: 1 +Test "cbrt (0x1.86ap+16)": +double: 1 +idouble: 1 +Test "cbrt (0x4p-1024)": +double: 1 +idouble: 1 +Test "cbrt (0x8p-152)": +double: 1 +idouble: 1 +Test "cbrt (0xf.ep-4)": +ildouble: 1 +ldouble: 1 + +# ccos +Test "Real part of: ccos (0xcp-4 + 0x1.4p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ccos (0xcp-4 + 0x1.4p+0 i)": +ildouble: 1 +ldouble: 1 + +# ccosh +Test "Imaginary part of: ccosh (-0x2p+0 - 0x3p+0 i)": +ildouble: 1 +ldouble: 1 + +# cexp +Test "Real part of: cexp (-0x2.71p+12 + 0x8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cexp (-0x2.71p+12 + 0xf.fffffp+124 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cexp (-0x2.c6ap+12 + 0xcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cexp (-0x5.fp+4 + 0xcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (0x2.c5c9p+12 + 0xcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cexp (0x2.c5dp+8 + 0xcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (0x3.2p+4 + 0x8p+124 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cexp (0x5.8cp+4 + 0xcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (0x5.8cp+4 + 0xcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cexp (0xcp-4 + 0x1.4p+0 i)": +ildouble: 1 +ldouble: 1 + +# clog +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.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 "Imaginary part of: clog (-0x1.000002p+0 + 0x4.8d1598p-32 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d159ep-32 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (-0x1.000002p+0 + 0x4.8d159ep-32 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d15ap-32 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (-0x1.000002p+0 + 0x4.8d15ap-32 i)": +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.0000000000000012p+0 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.0000000000000012p+0 + 0x1.234566p-60 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.0000000000000012p+0 + 0x1.23456789p-1000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.0000000000000012p+0 + 0x1.23456789p-60 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.0000000000000012p+0 + 0x1.234568p-60 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.0000000000000012p+0 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.0000000000000014p+0 + 0x1.234566p-60 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.0000000000000014p+0 + 0x1.23456789p-60 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.0000000000000014p+0 + 0x1.234568p-60 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 +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 +Test "Real part of: clog (0x1.000002p+0 + 0x1.234568p-60 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1.000002p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1.000566p+0 + 0x1.234p-100 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.f2c638bcfe0ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.48e45e3268d8p-4 + 0xf.f2c64p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x1.48e45e3268d8p-4 + 0xf.f2c64p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.48e45ep-4 + 0xf.f2c638bcfe0ep-4 i)": +ildouble: 1 +ldouble: 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.48e46p-4 + 0xf.f2c638bcfe0ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.8907bc3694fd4e7cp-4 + 0xf.ed1990460bep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.8907bc3694fd4e7ep-4 + 0xf.ed1990460bdfbf7p-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 "Real part of: clog (0x1.8907bc3694fd4p-4 + 0xf.ed1990460bdfbf6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.8907bc3694fd4p-4 + 0xf.ed1990460bdfbf7p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd4p-4 + 0xf.ed199p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bc3694fd4p-4 + 0xf.ed19ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.8907bc3694fd5p-4 + 0xf.ed1990460bdf8p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.8907bcp-4 + 0xf.ed1990460bdf8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.8907bcp-4 + 0xf.ed1990460bdfbf6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bcp-4 + 0xf.ed1990460bdfbf6p-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.ed1990460bdfbf7p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bcp-4 + 0xf.ed19ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.8907bep-4 + 0xf.ed1990460bdfbf6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.8907bep-4 + 0xf.ed1990460bep-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.e6b4d1d7a6e0948p-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.e6b4d1d7a6e1p-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.e6b4d1d7a6e08p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.c67ecd92a85944b8p-4 + 0xf.e6b4d1d7a6e0949p-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.e6b4ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecd92a8594p-4 + 0xf.e6b4d1d7a6e08p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.c67ecd92a8594p-4 + 0xf.e6b4dp-4 i)": +double: 1 +idouble: 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 "Imaginary part of: clog (0x1.c67ecd92a8595p-4 + 0xf.e6b4d1d7a6e0948p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x1.c67ecd92a8595p-4 + 0xf.e6b4d1d7a6e0949p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x1.c67ecd92a8595p-4 + 0xf.e6b4d1d7a6e1p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.c67ecd92a8595p-4 + 0xf.e6b4ep-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 "Imaginary part of: clog (0x1.c67ecep-4 + 0xf.e6b4dp-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 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.0ce7b8p-4 + 0xf.de3a3p-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.2d04p-8 + 0xf.ffda2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a3612p-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 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a38p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b281a8p-4 + 0xf.cd42a15bf9a38p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b281a8p-4 + 0xf.cd42ap-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.82b795e420b281a8p-4 + 0xf.cd42bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b281a8p-4 + 0xf.cd42bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b281acp-4 + 0xf.cd42a15bf9a3613p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b281acp-4 + 0xf.cd42a15bf9a38p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b281acp-4 + 0xf.cd42a15bf9a3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b281acp-4 + 0xf.cd42ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42a15bf9a3p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x2.82b795e420b2ap-4 + 0xf.cd42a15bf9a38p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x2.82b795e420b2ap-4 + 0xf.cd42ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b795e420b2ap-4 + 0xf.cd42bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x2.82b798p-4 + 0xf.cd42a15bf9a3613p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x2.82b798p-4 + 0xf.cd42ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.2cdb84p-4 + 0xf.ae888f0455f6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.2cdb84p-4 + 0xf.ae888f0455f6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.2cdb84p-4 + 0xf.ae888p-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.2cdb88p-4 + 0xf.ae888f0455f6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.2cdb88p-4 + 0xf.ae888p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9163276aa8dcp-4 + 0xf.ab873d09e61e797p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.3b8f9163276aa8dcp-4 + 0xf.ab873d09e61e8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9163276aa8ep-4 + 0xf.ab873d09e61e798p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.3b8f9163276aap-4 + 0xf.ab873d09e61e797p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9163276aap-4 + 0xf.ab873d09e61e8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9163276aap-4 + 0xf.ab873p-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.3b8f9163276acp-4 + 0xf.ab873p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.3b8f9163276acp-4 + 0xf.ab874p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.3b8f94p-4 + 0xf.ab873d09e61e797p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.3b8f94p-4 + 0xf.ab873d09e61e8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.3b8f94p-4 + 0xf.ab873d09e61ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.3b8f94p-4 + 0xf.ab873p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x3.3b8f9p-4 + 0xf.ab873d09e61e8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9p-4 + 0xf.ab873d09e61ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.3b8f9p-4 + 0xf.ab873p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aaap-4 + 0xf.a0c58a83e57c772p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aaap-4 + 0xf.a0c58a83e57c773p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aaap-4 + 0xf.a0c58p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab754p-4 + 0xf.a0c58a83e57c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab754p-4 + 0xf.a0c58a83e57cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab754p-4 + 0xf.a0c58p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e17119fb8aab754p-4 + 0xf.a0c59p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e17119fb8aab754p-4 + 0xf.a0c59p-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 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c58a83e57c772p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.6e1714p-4 + 0xf.a0c58a83e57c772p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c58a83e57cp-4 i)": +double: 1 +idouble: 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)": +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)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.6e171p-4 + 0xf.a0c58a83e57c773p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real 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.8e3d619a8d11bfep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bcp-4 + 0xf.8e3d619a8d12p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e3501174p-4 + 0xf.8e3d619a8d11bfdp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.bea2bd62e3501174p-4 + 0xf.8e3d619a8d11bfep-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.bea2bd62e350117p-4 + 0xf.8e3d619a8d11bfdp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.bea2bd62e350117p-4 + 0xf.8e3d619a8d11bfep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e350117p-4 + 0xf.8e3d7p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e3502p-4 + 0xf.8e3d619a8d11bfep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e3502p-4 + 0xf.8e3d619a8d12p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.bea2bd62e3502p-4 + 0xf.8e3d6p-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.bea2bd62e35p-4 + 0xf.8e3d6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.bea2cp-4 + 0xf.8e3d619a8d12p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.bea2cp-4 + 0xf.8e3d7p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x3.e1d0a105ac4eap-4 + 0xf.859b3d1b06d005ep-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 "Imaginary part of: clog (0x3.e1d0a105ac4eap-4 + 0xf.859b3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4ebeacp-4 + 0xf.859b3d1b06d005dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebeacp-4 + 0xf.859b3d1b06dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ebeacp-4 + 0xf.859b3p-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.859b3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4ecp-4 + 0xf.859b3d1b06d005dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a105ac4ecp-4 + 0xf.859b3d1b06d005dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4ecp-4 + 0xf.859b3d1b06d005ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a105ac4ecp-4 + 0xf.859b3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0a4p-4 + 0xf.859b3d1b06d08p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x3.e1d0a4p-4 + 0xf.859b3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x3.e1d0ap-4 + 0xf.859b3d1b06d005dp-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.859b3d1b06dp-4 i)": +ildouble: 1 +ldouble: 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 +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.7a5c1af8e3cec09p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.0dbf78p-4 + 0xf.7a5c1af8e3cfp-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.7a5c1af8e3cfp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.0dbf7d40fe1acp-4 + 0xf.7a5c1p-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.0dbf7d40fe1ad688p-4 + 0xf.7a5c1af8e3ce8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.0dbf7d40fe1ad688p-4 + 0xf.7a5c1af8e3cfp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.0dbf7d40fe1bp-4 + 0xf.7a5c1af8e3ce8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.0dbf7d40fe1bp-4 + 0xf.7a5c1af8e3cec09p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.0dbf7d40fe1bp-4 + 0xf.7a5c2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.0dbf7d40fe1bp-4 + 0xf.7a5c2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.0dbf8p-4 + 0xf.7a5c1af8e3ce8p-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)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.7017a2e368078p-4 + 0xf.5f4a550c9d758p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.7017a2e368078p-4 + 0xf.5f4a550c9d76p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.7017a2e368078p-4 + 0xf.5f4a6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807acb8p-4 + 0xf.5f4a550c9d75e3bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.7017a2e36807acbp-4 + 0xf.5f4a5p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807acbp-4 + 0xf.5f4a6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807cp-4 + 0xf.5f4a550c9d758p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x4.7017a2e36807cp-4 + 0xf.5f4a550c9d758p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a2e36807cp-4 + 0xf.5f4a550c9d75e3bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.7017a2e36807cp-4 + 0xf.5f4a550c9d76p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a8p-4 + 0xf.5f4a550c9d75e3cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017a8p-4 + 0xf.5f4a550c9d76p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x4.7017a8p-4 + 0xf.5f4a550c9d76p-4 i)": +ildouble: 1 +ldouble: 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.5f4a550c9d75e3bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.7017ap-4 + 0xf.5f4a550c9d76p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x4.7017ap-4 + 0xf.5f4a5p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.d9e8c415d5644p-4 + 0xf.3f302p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x4.d9e8c8p-4 + 0xf.3f303p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x4.d9e8c8p-4 + 0xf.3f303p-4 i)": +ildouble: 1 +ldouble: 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.3f302p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x5.318c58p-4 + 0xf.22363bf989d98p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x5.318c596a8cb114ep-4 + 0xf.22363bf989dap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.318c596a8cb114ep-4 + 0xf.22363bf989dap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x5.318c596a8cb114ep-4 + 0xf.22363p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x5.318c596a8cb114ep-4 + 0xf.22364p-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.22363bf989d9b5cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x5.318c6p-4 + 0xf.22363bf989dap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.b06b680ea2ccp-4 + 0xe.f452b965da9fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x5.b06b68p-4 + 0xe.f452b965da9fp-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 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 "Imaginary part of: clog (0x5.b06b7p-4 + 0xe.f452b965da9fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.ba8ce4b6p-4 + 0xe.f0742508p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x5.ba8cep-4 + 0xe.f0743p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.02fd5037c4792efp-4 + 0xe.d3e2086dcca80b8p-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.02fd5037c4792efp-4 + 0xe.d3e2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.02fd5037c4792efp-4 + 0xe.d3e2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.02fd5037c4794p-4 + 0xe.d3e2086dcca8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e2086dcca80b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e2086dcca80b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e21p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e21p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e2p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.02fd58p-4 + 0xe.d3e2086dcca80b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.02fd58p-4 + 0xe.d3e2086dcca80b8p-4 i)": +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 "Real part of: clog (0x6.02fd5p-4 + 0xe.d3e2086dcca80b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.1c643068cd124p-4 + 0xe.c97c2018b428257p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.1c643068cd124p-4 + 0xe.c97c2018b428258p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.1c643068cd124p-4 + 0xe.c97c2018b4288p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.1c643068cd125ef8p-4 + 0xe.c97c3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.1c643068cd125ef8p-4 + 0xe.c97c3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.1c643068cd125efp-4 + 0xe.c97c2018b4288p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.1c643068cd125efp-4 + 0xe.c97c3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.1c643068cd128p-4 + 0xe.c97c2018b428258p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.1c643068cd128p-4 + 0xe.c97c2p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.1c643068cd128p-4 + 0xe.c97c3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.1c643068cd128p-4 + 0xe.c97c3p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.1c6438p-4 + 0xe.c97c2018b428258p-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 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.1c6438p-4 + 0xe.c97c2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c3p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x6.1c643p-4 + 0xe.c97c2018b428257p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.1c643p-4 + 0xe.c97c2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.2aff83ae6467cb08p-4 + 0xe.c36a599a86ba8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.2aff83ae6467cb08p-4 + 0xe.c36a6p-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 "Real part of: clog (0x6.2aff83ae6467cbp-4 + 0xe.c36a599a86baf8fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.2aff83ae6467cbp-4 + 0xe.c36a5p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.2aff83ae6467cbp-4 + 0xe.c36a6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.2aff83ae6467cp-4 + 0xe.c36a599a86baf8fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.2aff83ae6467cp-4 + 0xe.c36a599a86bbp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.2aff83ae6467cp-4 + 0xe.c36a6p-4 i)": +double: 1 +idouble: 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.c36a599a86baf8fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.2aff83ae6468p-4 + 0xe.c36a599a86baf9p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.2aff83ae6468p-4 + 0xe.c36a5p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x6.2aff83ae6468p-4 + 0xe.c36a6p-4 i)": +ildouble: 1 +ldouble: 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.c36a599a86baf8fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.2aff8p-4 + 0xe.c36a599a86ba8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.2aff8p-4 + 0xe.c36a599a86baf8fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.2aff8p-4 + 0xe.c36a599a86baf8fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.2aff8p-4 + 0xe.c36a599a86baf9p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.2aff8p-4 + 0xe.c36a5p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.b10b48p-4 + 0xe.8893cbb449253a1p-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.8893cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x6.b10b4f3520214p-4 + 0xe.8893cbb449253a1p-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 "Real part of: clog (0x6.b10b4f3520217b6p-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 "Real 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 "Real part of: clog (0x6.b10b5p-4 + 0xe.8893cbb449258p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.b10b5p-4 + 0xe.8893cbb44925p-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.b10b5p-4 + 0xe.8893cbb44925p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.b10b5p-4 + 0xe.8893cp-4 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x6.b10b5p-4 + 0xe.8893dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real 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.e655e694e510a95p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca921b40e028p-4 + 0xd.e655fp-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca921b40e02ae18p-4 + 0xd.e655fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02ae18p-4 + 0xd.e655fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca921b40e02cp-4 + 0xd.e655e694e510a95p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca921b40e02cp-4 + 0xd.e655e694e511p-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.e655e694e511p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.eca928p-4 + 0xd.e655fp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x7.eca92p-4 + 0xd.e655e694e510a95p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.eca92p-4 + 0xd.e655fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8d20a1eca10d8p-4 + 0xd.e2d65939160b311p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca10d8p-4 + 0xd.e2d65939160b31p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8d20a1eca10d8p-4 + 0xd.e2d65939160b8p-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.e2d65939160bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8d20a1eca10dp-4 + 0xd.e2d66p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca10dp-4 + 0xd.e2d66p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d65939160b311p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d65939160b311p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d65939160b31p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d65939160b8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d66p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x7.f2c8d20a1ecap-4 + 0xd.e2d65939160b311p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8d20a1ecap-4 + 0xd.e2d65p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x7.f2c8d20a1ecap-4 + 0xd.e2d66p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f2c8d8p-4 + 0xd.e2d65939160b31p-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.e2d65p-4 i)": +float: 1 +ifloat: 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 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f2c8dp-4 + 0xd.e2d65939160bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x7.f4b083cb0bp-4 + 0xd.e1bf1p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x7.f4b083cb0bp-4 + 0xd.e1bf1p-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)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x8.88fae2eap-4 + 0xd.888bcp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x8.88faep-4 + 0xd.888bcp-4 i)": +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)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x8.88fafp-4 + 0xd.888bdp-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary 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 +ildouble: 1 +ldouble: 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.47947p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x8.ecbf9p-4 + 0xd.479468b09a37p-4 i)": +double: 1 +idouble: 1 +Test "Real 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)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.b386fc56b9688p-4 + 0xc.b9318p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.b386fc56b968a66p-4 + 0xc.b9317p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.b386fc56b968a66p-4 + 0xc.b9318p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.b386fc56b969p-4 + 0xc.b9317c470b4085cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.b386fc56b969p-4 + 0xc.b9317c470b41p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.b386fp-4 + 0xc.b9317c470b408p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.b386fp-4 + 0xc.b9317c470b408p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.b386fp-4 + 0xc.b9317c470b41p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary 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.b9318p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x9.b387p-4 + 0xc.b9317c470b4085cp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.b387p-4 + 0xc.b9317c470b41p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a246bap-4 + 0xc.ae53de1d5a7c8b1p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a246bap-4 + 0xc.ae53de1d5a7c8p-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.ae53de1d5a7dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a246bap-4 + 0xc.ae53ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a246bbp-4 + 0xc.ae53de1d5a7c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a246bbp-4 + 0xc.ae53de1d5a7dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a246bbp-4 + 0xc.ae53dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53de1d5a7c8bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53de1d5a7c8bp-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.ae53de1d5a7dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53ep-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53ep-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53de1d5a7dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53dp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53ep-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ap-4 + 0xc.ae53de1d5a7c8b1p-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 "Imaginary part of: clog (0x9.c1b6ap-4 + 0xc.ae53de1d5a7dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6ap-4 + 0xc.ae53dp-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x9.c1b6ap-4 + 0xc.ae53dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6ap-4 + 0xc.ae53ep-4 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0x9.c1b6bp-4 + 0xc.ae53de1d5a7c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0x9.c1b6bp-4 + 0xc.ae53de1d5a7dp-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.1f2c1p-4 + 0xc.643aep-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.42a51a3c05c19ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd4928p-4 + 0xc.42a51a3c05c19ap-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.47c0c65bd4928p-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 "Imaginary part of: clog (0xa.47c0c65bd492c7ep-4 + 0xc.42a51a3c05c199fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7ep-4 + 0xc.42a51a3c05c2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7ep-4 + 0xc.42a52p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd492c7fp-4 + 0xc.42a51a3c05c18p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7fp-4 + 0xc.42a51a3c05c199fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd492c7fp-4 + 0xc.42a51a3c05c19ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7fp-4 + 0xc.42a51a3c05c19ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd492c7fp-4 + 0xc.42a51a3c05c2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd492c7fp-4 + 0xc.42a52p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd493p-4 + 0xc.42a51a3c05c18p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0c65bd493p-4 + 0xc.42a51a3c05c199fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0c65bd493p-4 + 0xc.42a51a3c05c2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0cp-4 + 0xc.42a51a3c05c199fp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0cp-4 + 0xc.42a51a3c05c19ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0cp-4 + 0xc.42a51p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0xa.47c0cp-4 + 0xc.42a51p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.47c0dp-4 + 0xc.42a51a3c05c18p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0dp-4 + 0xc.42a51a3c05c19ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.47c0dp-4 + 0xc.42a51p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624342dfp-4 + 0xb.e867932966df589p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624342dfp-4 + 0xb.e867932966df58ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc57e2624342dfp-4 + 0xb.e867932966df8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624342dfp-4 + 0xb.e867932966dfp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624342dfp-4 + 0xb.e8679p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624342dfp-4 + 0xb.e867ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624342ep-4 + 0xb.e867932966df58ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624342ep-4 + 0xb.e867932966df8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624342ep-4 + 0xb.e867932966dfp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624342ep-4 + 0xb.e8679p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc57e2624342ep-4 + 0xb.e867ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624342ep-4 + 0xb.e867ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc57e2624348p-4 + 0xb.e867932966df589p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624348p-4 + 0xb.e867932966df589p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e2624348p-4 + 0xb.e867932966dfp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary 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 "Imaginary part of: clog (0xa.afc57e262434p-4 + 0xb.e867932966df589p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc57e262434p-4 + 0xb.e867ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc57e262434p-4 + 0xb.e867ap-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.afc57p-4 + 0xb.e867932966df58ap-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.e8679p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0xa.afc57p-4 + 0xb.e867ap-4 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.afc58p-4 + 0xb.e867ap-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xa.b96da19075eap-8 + 0xf.fc679p-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc67818f89d2p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xa.b96dap-8 + 0xf.fc67818f89d2p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc678p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc679p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xa.e7de8cc868ff8p-4 + 0xb.b51cbp-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 "Imaginary part of: clog (0xa.e7de8p-4 + 0xb.b51cbp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.e7de9p-4 + 0xb.b51cb9f04d4dp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xa.e7de9p-4 + 0xb.b51cb9f04d4dp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.e7de9p-4 + 0xb.b51cbp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e528a1p-4 + 0xb.b0f2405504a6058p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.ec55b7682e528a1p-4 + 0xb.b0f2405504a68p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e528a1p-4 + 0xb.b0f2405504a68p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e528a1p-4 + 0xb.b0f25p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.ec55b7682e528ap-4 + 0xb.b0f2405504a68p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e528p-4 + 0xb.b0f2405504a6059p-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.b0f2405504a6058p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e53p-4 + 0xb.b0f2405504a68p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e53p-4 + 0xb.b0f2405504a6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xa.ec55b7682e53p-4 + 0xb.b0f24p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55b7682e53p-4 + 0xb.b0f24p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55bp-4 + 0xb.b0f2405504a6058p-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 "Real part of: clog (0xa.ec55bp-4 + 0xb.b0f2405504a6p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55bp-4 + 0xb.b0f2405504a6p-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 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xa.ec55cp-4 + 0xb.b0f2405504a6p-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.79c9bp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xb.263a7p-4 + 0xb.79c9a417bb8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xb.263a7p-4 + 0xb.79c9ap-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0xb.263a7p-4 + 0xb.79c9bp-4 i)": +float: 1 +ifloat: 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)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.8p+16380 + 0x8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xf.8p+16380 + 0x8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog (0xf.ffffffffffff8p-4 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0xf.fffffffffffffffp-4 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.fffffffffffffffp-4 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.fffffffffffffffp-4 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.fffffffffffffffp-4 + 0xf.fffffffffffffffp-15004 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog (0xf.fffffp-4 + +0 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xf.fffffp-4 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xf.fffffp-4 + 0xf.fffffp-104 i)": +float: 1 +ifloat: 1 + +# clog10 +Test "Real 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: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-30 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (-0x1.234566p-40 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-1.0 + 0x1.234566p-20 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-inf + inf i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0.75 + 1.25 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x0.fffffffffffff8p0 + 0x0.fffffffffffff8p-1000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x0.ffffffffffffffffp0 + 0x0.ffffffffffffffffp-15000 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x0.ffffffp0 + 0x0.ffffffp-100 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x1.000566p0 + 0x1.234p-10 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: clog10 (0x1.000566p0 + 0x1.234p-100 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x1.234566p-30 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x1.234566p-50 + 1.0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x10673dd0f2481p-51 + 0x7ef1d17cefbd2p-51 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x1a6p-10 + 0x3a5p-10 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x1p-16440 + 0x1p-16441 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x2818p-15 + 0x798fp-15 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x2818p-15 + 0x798fp-15 i)": +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 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x4447d7175p-35 + 0x6c445e00ap-35 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x4447d7175p-35 + 0x6c445e00ap-35 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x4d4ep-15 + 0x6605p-15 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x5b06b680ea2ccp-52 + 0xef452b965da9fp-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x659b70ab7971bp-53 + 0x1f5d111e08abecp-53 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 (0x81b7efa81fc35ad1p-65 + 0x1ef4b835f1c79d812p-65 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0x8ecbf810c4ae6p-52 + 0xd479468b09a37p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0x8ecbf810c4ae6p-52 + 0xd479468b09a37p-52 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0xa1f2c1p-24 + 0xc643aep-24 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0xa4722f19346cp-51 + 0x7f9631c5e7f07p-51 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: clog10 (0xf2p-10 + 0x3e3p-10 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: clog10 (0xfe961079616p-45 + 0x1bc37e09e6d1p-45 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (1.0 + 0x1.234566p-10 i)": +ildouble: 1 +ldouble: 1 + +# cos +Test "cos (0x1.0000010b239a9p+0)": +double: 1 +idouble: 1 + +# cos_tonearest +Test "cos_tonearest (0x1.0000010b239a9p+0)": +double: 1 +idouble: 1 + +# cpow +Test "Real part of: cpow (0x2p+0 + +0 i, 0xap+0 + +0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: cpow (0x2p+0 + 0x3p+0 i, 0x4p+0 + +0 i)": +double: 1 +idouble: 1 +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: cpow (0x2p+0 + 0x3p+0 i, 0x4p+0 + +0 i)": +float: 5 +ifloat: 5 +Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, +0 + 0x1p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, 0x1p+0 + +0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, 0x1p+0 + 0x1p+0 i)": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +ildouble: 3 +ldouble: 3 +Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, 0xcp-4 + 0x1.4p+0 i)": +float: 3 +ifloat: 3 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: cpow (0xcp-4 + 0x1.4p+0 i, 0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# csin +Test "Real part of: csin (0.75 + 1.25 i)": +ildouble: 1 +ldouble: 1 + +# csinh +Test "Real part of: csinh (0.75 + 1.25 i)": +ildouble: 1 +ldouble: 1 + +# csqrt +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 "Real part of: csqrt (-0x4.000008p-128 - 0x4.000008p-128 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x4p-1076 - 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x4p-16384 - 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x4p-16384 - 0x4p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x8p-152 - 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x8p-152 - 0x4p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (-0x8p-152 - 0x8p-152 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-5000 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x2p-148 + 0x2p-148 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 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x4p-1076 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x4p-1076 + 0xf.ffffffffffff8p+1020 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-16384 + 0x4p-16384 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x4p-16448 + 0xf.ffffffffffff8p+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)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p+124 + 0x8p-152 i)": +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-1076 + 0x8p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p-152 + 0x4p-1076 i)": +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)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p-152 + 0x8p-152 i)": +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.ffffffffffff8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0x8p-16448 + 0xf.ffffffffffff8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: csqrt (0xf.8p+16380 + 0xf.8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (0xf.ffffffffffff8p+1020 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: csqrt (0xf.ffffffffffff8p+1020 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0x8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: csqrt (0xf.ffffffffffff8p+1020 + 0x8p-152 i)": +double: 1 +idouble: 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 +Test "Real part of: csqrt (0xf.ffffffffffff8p+1020 + 0xf.fffffp+124 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0xf.fffffp+124 + 0xf.ffffffffffff8p+1020 i)": +ildouble: 1 +ldouble: 1 + +# ctan +Test "Real part of: ctan (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (-0x2p+0 - 0x3p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x1.921fb4p+0 + +0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x1.921fb4p+0 + 0x4p-1076 i)": +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)": +float: 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 "Imaginary part of: ctan (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0x1.921fb54442d18p+0 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0x1.921fb54442d18p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary 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 + 0x8p-152 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary 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 +Test "Imaginary part of: ctan (0x1.921fb6p+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x1.921fb6p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan (0x1.921fb6p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x1p+0 + 0x2.dp+4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x1p+0 + 0x2.fp+4 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan (0x8p+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0x8p+124 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctan (0x8p+124 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0x8p+16380 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan (0xf.fffffp+124 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan (0xf.fffffp+124 + 0x1p+0 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +# ctan_downward +Test "Real part of: ctan_downward (-0x2p+0 - 0x3p+0 i)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1.921fb4p+0 + +0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan_downward (0x1.921fb4p+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1.921fb4p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan_downward (0x1.921fb4p+0 + 0x8p-152 i)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d1846ap+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d1846ap+0 + 0x8p-152 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 +Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +double: 3 +idouble: 3 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d18p+0 + 0x8p-152 i)": +double: 3 +idouble: 3 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d18p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1.921fb54442d19p+0 + +0 i)": +double: 2 +idouble: 2 +Test "Real part of: ctan_downward (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +double: 2 +idouble: 2 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1.921fb54442d19p+0 + 0x8p-152 i)": +double: 2 +idouble: 2 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d19p+0 + 0x8p-152 i)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_downward (0x1.921fb54442d19p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1.921fb6p+0 + +0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1.921fb6p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1.921fb6p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_downward (0x1.921fb6p+0 + 0x8p-152 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "Real part of: ctan_downward (0x1.921fb6p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1p+0 + 0x1.63p+8 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1p+0 + 0x1.6dp+8 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1p+0 + 0x2.dp+4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x1p+0 + 0x2.fp+4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x8p+1020 + 0x1p+0 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_downward (0x8p+1020 + 0x1p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_downward (0x8p+124 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_downward (0x8p+124 + 0x1p+0 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_downward (0x8p+16380 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +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)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_downward (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan_downward (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan_downward (0xf.fffffp+124 + 0x1p+0 i)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_downward (0xf.fffffp+124 + 0x1p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# ctan_tonearest +Test "Real part of: ctan_tonearest (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (-0x2p+0 - 0x3p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + +0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + 0x4p-1076 i)": +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)": +float: 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 "Imaginary part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x8p-152 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary 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 + 0x8p-152 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary 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 +Test "Imaginary part of: ctan_tonearest (0x1.921fb6p+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb6p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x1p+0 + 0x2.dp+4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x1p+0 + 0x2.fp+4 i)": +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_tonearest (0x8p+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0x8p+124 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctan_tonearest (0x8p+124 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0x8p+16380 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_tonearest (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_tonearest (0xf.fffffp+124 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_tonearest (0xf.fffffp+124 + 0x1p+0 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +# ctan_towardzero +Test "Real part of: ctan_towardzero (-0x2p+0 - 0x3p+0 i)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +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.921fb54442d18p+0 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +double: 3 +idouble: 3 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x8p-152 i)": +double: 3 +idouble: 3 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1.921fb54442d19p+0 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x8p-16448 i)": +ildouble: 3 +ldouble: 3 +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: 4 +ldouble: 4 +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: 4 +ldouble: 4 +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.63p+8 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1p+0 + 0x1.6dp+8 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1p+0 + 0x2.dp+4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x1p+0 + 0x2.fp+4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0x8p+1020 + 0x1p+0 i)": +double: 1 +idouble: 1 +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: 1 +idouble: 1 +Test "Imaginary part of: ctan_towardzero (0x8p+124 + 0x1p+0 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_towardzero (0x8p+16380 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +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)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan_towardzero (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_towardzero (0xf.fffffp+124 + 0x1p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_towardzero (0xf.fffffp+124 + 0x1p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# ctan_upward +Test "Real part of: ctan_upward (-0x2p+0 - 0x3p+0 i)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +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 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb4p+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 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 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0x1.921fb4p+0 + 0x8p-152 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb4p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x4p-1076 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x8p-152 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan_upward (0x1.921fb54442d18p+0 + +0 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctan_upward (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctan_upward (0x1.921fb54442d18p+0 + 0x4p-1076 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb54442d18p+0 + 0x8p-152 i)": +ildouble: 3 +ldouble: 3 +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: 3 +ldouble: 3 +Test "Imaginary part of: ctan_upward (0x1.921fb54442d18p+0 + 0x8p-16448 i)": +ildouble: 4 +ldouble: 4 +Test "Imaginary part of: ctan_upward (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +ildouble: 7 +ldouble: 7 +Test "Imaginary part of: ctan_upward (0x1.921fb54442d19p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +ildouble: 7 +ldouble: 7 +Test "Imaginary part of: ctan_upward (0x1.921fb54442d19p+0 + 0x8p-16448 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x1.921fb6p+0 + +0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: ctan_upward (0x1.921fb6p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_upward (0x1.921fb6p+0 + 0x4p-1076 i)": +ildouble: 7 +ldouble: 7 +Test "Real part of: ctan_upward (0x1.921fb6p+0 + 0x8p-152 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctan_upward (0x1.921fb6p+0 + 0x8p-152 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 7 +ldouble: 7 +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: 2 +ldouble: 2 +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: 1 +ldouble: 1 +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)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0x1p+0 + 0x2.dp+4 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_upward (0x1p+0 + 0x2.fp+4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctan_upward (0x1p+0 + 0x2.fp+4 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_upward (0x8p+1020 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctan_upward (0x8p+1020 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x8p+124 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0x8p+16380 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary 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 "Imaginary part of: ctan_upward (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctan_upward (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctan_upward (0xf.fffffp+124 + 0x1p+0 i)": +float: 3 +ifloat: 3 +ildouble: 5 +ldouble: 5 +Test "Imaginary part of: ctan_upward (0xf.fffffp+124 + 0x1p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# ctanh +Test "Imaginary part of: ctanh (+0 + 0x1.921fb4p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (+0 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctanh (+0 + 0xc.90fdaa22168c235p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (+0 + 0xc.90fdap-4 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (+0 + 0xc.90fdbp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (-0x2p+0 - 0x3p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (0x1p+0 + 0x8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0x1p+0 + 0x8p+124 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (0x1p+0 + 0x8p+124 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: ctanh (0x1p+0 + 0x8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh (0x1p+0 + 0xf.fffffp+124 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh (0x1p+0 + 0xf.fffffp+124 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh (0x2.dp+4 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (0x2.fp+4 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +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)": +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: 1 +ldouble: 1 +Test "Real 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: 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)": +float: 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: 1 +ldouble: 1 +Test "Real 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: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 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: 1 +ldouble: 1 +Test "Real part of: ctanh (0x8p-16448 + 0x1.921fb54442d19p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh (0xcp-4 + 0x1.4p+0 i)": +float: 2 +ifloat: 2 + +# ctanh_downward +Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb4p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb54442d19p+0 i)": +double: 2 +idouble: 2 +Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb6p+0 i)": +double: 1 +idouble: 1 +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.90fdaa22168c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (+0 + 0xc.90fdaa22168cp-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (+0 + 0xc.90fdbp-4 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: ctanh_downward (-0x2p+0 - 0x3p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (-0x2p+0 - 0x3p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_downward (0x1.63p+8 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x1.6dp+8 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_downward (0x1p+0 + 0x8p+1020 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x1p+0 + 0x8p+1020 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_downward (0x1p+0 + 0x8p+124 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_downward (0x1p+0 + 0x8p+124 i)": +double: 1 +idouble: 1 +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: 1 +ldouble: 1 +Test "Real part of: ctanh_downward (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_downward (0x1p+0 + 0xf.fffffp+124 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x1p+0 + 0xf.fffffp+124 i)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x2.dp+4 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x2.fp+4 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_downward (0x4p-1076 + 0x1.921fb4p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real 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)": +double: 3 +idouble: 3 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x4p-1076 + 0x1.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_downward (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +double: 2 +idouble: 2 +Test "Imaginary part of: ctanh_downward (0x4p-1076 + 0x1.921fb6p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_downward (0x8p-152 + 0x1.921fb4p+0 i)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb4p+0 i)": +float: 1 +ifloat: 1 +Test "Real 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)": +double: 3 +idouble: 3 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_downward (0x8p-152 + 0x1.921fb54442d19p+0 i)": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb54442d19p+0 i)": +double: 2 +idouble: 2 +Test "Real part of: ctanh_downward (0x8p-152 + 0x1.921fb6p+0 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb6p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real 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: 1 +ldouble: 1 +Test "Real part of: ctanh_downward (0x8p-16448 + 0x1.921fb54442d19p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_downward (0x8p-16448 + 0x1.921fb6p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_downward (0xcp-4 + 0x1.4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_downward (0xcp-4 + 0x1.4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# ctanh_tonearest +Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb4p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdaa22168c235p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdap-4 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdbp-4 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (-0x2p+0 - 0x3p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0x8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x1p+0 + 0x8p+124 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0x8p+124 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: ctanh_tonearest (0x1p+0 + 0x8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x1p+0 + 0xf.fffffp+124 i)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0xf.fffffp+124 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x2.dp+4 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x2.fp+4 + 0x1p+0 i)": +ildouble: 2 +ldouble: 2 +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)": +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: 1 +ldouble: 1 +Test "Real 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: 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)": +float: 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: 1 +ldouble: 1 +Test "Real 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: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 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: 1 +ldouble: 1 +Test "Real part of: ctanh_tonearest (0x8p-16448 + 0x1.921fb54442d19p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_tonearest (0xcp-4 + 0x1.4p+0 i)": +float: 2 +ifloat: 2 + +# 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.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh_towardzero (+0 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 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.90fdaa22168c234p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (+0 + 0xc.90fdaa22168c8p-4 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (+0 + 0xc.90fdaa22168cp-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (+0 + 0xc.90fdbp-4 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: ctanh_towardzero (-0x2p+0 - 0x3p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (-0x2p+0 - 0x3p+0 i)": +double: 1 +idouble: 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.63p+8 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x1.6dp+8 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +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: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_towardzero (0x1p+0 + 0x8p+124 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0x8p+124 i)": +double: 1 +idouble: 1 +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: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x1p+0 + 0xf.fffffp+124 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0xf.fffffp+124 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x2.dp+4 + 0x1p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x2.fp+4 + 0x1p+0 i)": +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.921fb54442d18p+0 i)": +double: 3 +idouble: 3 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb6p+0 i)": +ildouble: 4 +ldouble: 4 +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.921fb54442d18p+0 i)": +double: 3 +idouble: 3 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_towardzero (0x8p-152 + 0x1.921fb54442d18p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_towardzero (0x8p-152 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_towardzero (0x8p-152 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_towardzero (0x8p-152 + 0x1.921fb6p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 4 +ldouble: 4 +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.921fb54442d18p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_towardzero (0x8p-16448 + 0x1.921fb54442d19p+0 i)": +ildouble: 3 +ldouble: 3 +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)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_towardzero (0xcp-4 + 0x1.4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# ctanh_upward +Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb4p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb6p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 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.90fdbp-4 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (-0x2p+0 - 0x3p+0 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: ctanh_upward (-0x2p+0 - 0x3p+0 i)": +double: 1 +idouble: 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 (-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: 2 +ldouble: 2 +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: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x1p+0 + 0x8p+1020 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (0x1p+0 + 0x8p+1020 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_upward (0x1p+0 + 0x8p+124 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x1p+0 + 0x8p+16380 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (0x1p+0 + 0x8p+16380 i)": +ildouble: 2 +ldouble: 2 +Test "Imaginary part of: ctanh_upward (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "Real part of: ctanh_upward (0x1p+0 + 0xf.fffffp+124 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (0x1p+0 + 0xf.fffffp+124 i)": +float: 3 +ifloat: 3 +ildouble: 5 +ldouble: 5 +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 "Imaginary part of: ctanh_upward (0x2.fp+4 + 0x1p+0 i)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +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.921fb4p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d18p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +ildouble: 7 +ldouble: 7 +Test "Real part of: ctanh_upward (0x4p-1076 + 0x1.921fb6p+0 i)": +ildouble: 7 +ldouble: 7 +Test "Imaginary part of: ctanh_upward (0x4p-1076 + 0x1.921fb6p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_upward (0x8p-152 + 0x1.921fb4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Imaginary part of: ctanh_upward (0x8p-152 + 0x1.921fb4p+0 i)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x8p-152 + 0x1.921fb54442d1846ap+0 i)": +ildouble: 3 +ldouble: 3 +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)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctanh_upward (0x8p-152 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +ildouble: 7 +ldouble: 7 +Test "Real part of: ctanh_upward (0x8p-152 + 0x1.921fb6p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 7 +ldouble: 7 +Test "Imaginary part of: ctanh_upward (0x8p-152 + 0x1.921fb6p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_upward (0x8p-16448 + 0x1.921fb4p+0 i)": +ildouble: 1 +ldouble: 1 +Test "Real part of: ctanh_upward (0x8p-16448 + 0x1.921fb54442d18p+0 i)": +ildouble: 4 +ldouble: 4 +Test "Imaginary part of: ctanh_upward (0x8p-16448 + 0x1.921fb54442d18p+0 i)": +ildouble: 3 +ldouble: 3 +Test "Real part of: ctanh_upward (0x8p-16448 + 0x1.921fb54442d19p+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)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +# erf +Test "erf (-0x8p-4)": +ildouble: 1 +ldouble: 1 + +# erfc +Test "erfc (0x1.4p+0)": +ildouble: 1 +ldouble: 1 +Test "erfc (0x2p+0)": +float: 1 +ifloat: 1 +Test "erfc (0x3.ee6078p+0)": +ildouble: 1 +ldouble: 1 +Test "erfc (0x4.2p+0)": +ildouble: 1 +ldouble: 1 +Test "erfc (0x6.4p+4)": +ildouble: 1 +ldouble: 1 +Test "erfc (0x7.fe8008p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "erfc (0x7.fffd58p+0)": +ildouble: 1 +ldouble: 1 +Test "erfc (0x7.fffd59e26af37bc8p+0)": +ildouble: 1 +ldouble: 1 +Test "erfc (0x7.fffd59e26af37bcp+0)": +ildouble: 1 +ldouble: 1 +Test "erfc (0x7.fffd6p+0)": +float: 1 +ifloat: 1 +Test "erfc (0x7.ffff2p+0)": +ildouble: 1 +ldouble: 1 + +# expm1 +Test "expm1 (-0x1p-64)": +ildouble: 1 +ldouble: 1 + +# expm1_tonearest +Test "expm1_tonearest (-0x1p-64)": +ildouble: 1 +ldouble: 1 + +# gamma +Test "gamma (-0x4p-12)": +ildouble: 1 +ldouble: 1 +Test "gamma (-0x4p-32)": +ildouble: 1 +ldouble: 1 +Test "gamma (-0x8p-4)": +ildouble: 1 +ldouble: 1 +Test "gamma (0x1.3333333333334p+0)": +ildouble: 1 +ldouble: 1 +Test "gamma (0x1p-40)": +ildouble: 1 +ldouble: 1 +Test "gamma (0xb.333333333333334p-4)": +ildouble: 1 +ldouble: 1 +Test "gamma (0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "gamma (0xb.33333p-4)": +ildouble: 1 +ldouble: 1 + +# hypot +Test "hypot (-0xb.3333333333338p-4, -0xc.6666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.3333333333338p-4, 0xc.6666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33333p-4, -0xc.666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33333p-4, 0xc.666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xb.33334p-4, -0xc.6666666666668p+0)": +double: 1 +idouble: 1 +Test "hypot (-0xb.33334p-4, 0xc.6666666666668p+0)": +double: 1 +idouble: 1 +Test "hypot (-0xc.6666666666668p+0, -0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.6666666666668p+0, -0xb.33334p-4)": +double: 1 +idouble: 1 +Test "hypot (-0xc.6666666666668p+0, 0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.6666666666668p+0, 0xb.33334p-4)": +double: 1 +idouble: 1 +Test "hypot (-0xc.666666666666p+0, -0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (-0xc.666666666666p+0, 0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0x1.23456789abcdef02p-500, 0x1.23456789abcdefp-500)": +ildouble: 1 +ldouble: 1 +Test "hypot (0x1.23456789abcdefp-500, 0x1.23456789abcdef02p-500)": +ildouble: 1 +ldouble: 1 +Test "hypot (0x1.23456789abcdefp-500, 0x1.23456789abcdfp-500)": +ildouble: 1 +ldouble: 1 +Test "hypot (0x1.23456789abcdfp-500, 0x1.23456789abcdefp-500)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.3333333333338p-4, -0xc.6666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.3333333333338p-4, 0xc.6666666666668p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33333p-4, -0xc.666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33333p-4, 0xc.666666666666p+0)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xb.33334p-4, -0xc.6666666666668p+0)": +double: 1 +idouble: 1 +Test "hypot (0xb.33334p-4, 0xc.6666666666668p+0)": +double: 1 +idouble: 1 +Test "hypot (0xc.6666666666668p+0, -0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.6666666666668p+0, -0xb.33334p-4)": +double: 1 +idouble: 1 +Test "hypot (0xc.6666666666668p+0, 0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.6666666666668p+0, 0xb.33334p-4)": +double: 1 +idouble: 1 +Test "hypot (0xc.666666666666p+0, -0xb.33333p-4)": +ildouble: 1 +ldouble: 1 +Test "hypot (0xc.666666666666p+0, 0xb.33333p-4)": +ildouble: 1 +ldouble: 1 + +# j0 +Test "j0 (-0x2.002000002p+592)": +ildouble: 2 +ldouble: 2 +Test "j0 (-0x4p+0)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "j0 (-0xf.fffffp+124)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "j0 (0x1.8p+0)": +float: 1 +ifloat: 1 +Test "j0 (0x4p+0)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "j0 (0x4p+16380)": +ildouble: 1 +ldouble: 1 +Test "j0 (0x8p+0)": +float: 1 +ifloat: 1 +Test "j0 (0x8p+1020)": +double: 1 +idouble: 1 +Test "j0 (0xap+0)": +double: 1 +idouble: 1 +Test "j0 (0xe.be71dp+104)": +float: 2 +ifloat: 2 +Test "j0 (0xf.ffffffffffff8p+1020)": +ildouble: 1 +ldouble: 1 +Test "j0 (0xf.fffffp+124)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# j1 +Test "j1 (0x1.8p+0)": +float: 1 +ifloat: 1 +Test "j1 (0x2p+0)": +float: 1 +ifloat: 1 +Test "j1 (0x4.ffcp+72)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "j1 (0x4p+16380)": +ildouble: 1 +ldouble: 1 +Test "j1 (0xap+0)": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 + +# jn +Test "jn (0, -0x4p+0)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "jn (0, 0x1.8p+0)": +float: 1 +ifloat: 1 +Test "jn (0, 0x4p+0)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "jn (0, 0x8p+0)": +float: 1 +ifloat: 1 +Test "jn (0, 0xap+0)": +double: 1 +idouble: 1 +Test "jn (1, 0x1.8p+0)": +float: 1 +ifloat: 1 +Test "jn (1, 0x2p+0)": +float: 1 +ifloat: 1 +Test "jn (1, 0xap+0)": +float: 2 +ifloat: 2 +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)": +ildouble: 1 +ldouble: 1 +Test "jn (10, 0x2p-4)": +float: 1 +ifloat: 1 +Test "jn (10, 0xap+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 +Test "jn (10, 0xcp-4)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "jn (2, 0x2.67a2a4p+0)": +ildouble: 3 +ldouble: 3 +Test "jn (2, 0x2.67a2a5d2e36800fcp+0)": +ildouble: 1 +ldouble: 1 +Test "jn (2, 0x2.67a2a5d2e36801p+0)": +ildouble: 2 +ldouble: 2 +Test "jn (2, 0x2.67a2a5d2e3682p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (2, 0x2.67a2a5d2e368p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (2, 0x2.67a2a8p+0)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "jn (2, 0x8p+1020)": +double: 1 +idouble: 1 +Test "jn (2, 0x8p+124)": +ildouble: 1 +ldouble: 1 +Test "jn (2, 0xf.fffb1p+96)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "jn (2, 0xf.ffffffffffff8p+1020)": +ildouble: 1 +ldouble: 1 +Test "jn (2, 0xf.fffffp+124)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "jn (3, -0x1p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (3, 0x1p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (3, 0x2.67a2a4p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (3, 0x2.67a2a5d2e36801p+0)": +ildouble: 3 +ldouble: 3 +Test "jn (3, 0x2.67a2a5d2e3682p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (3, 0x2.67a2a8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "jn (3, 0x2p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "jn (3, 0xap+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "jn (4, 0x2.67a2a4p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (4, 0x2.67a2a5d2e36800fcp+0)": +ildouble: 2 +ldouble: 2 +Test "jn (4, 0x2.67a2a5d2e36801p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (4, 0x2.67a2a5d2e368p+0)": +ildouble: 1 +ldouble: 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)": +ildouble: 1 +ldouble: 1 +Test "jn (5, 0x2.67a2a5d2e36800fcp+0)": +ildouble: 2 +ldouble: 2 +Test "jn (5, 0x2.67a2a5d2e36801p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (5, 0x2.67a2a5d2e368p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (6, 0x2.67a2a4p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (6, 0x2.67a2a5d2e36800fcp+0)": +ildouble: 1 +ldouble: 1 +Test "jn (6, 0x2.67a2a5d2e36801p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (6, 0x2.67a2a5d2e3682p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (6, 0x2.67a2a8p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "jn (7, 0x2.67a2a4p+0)": +float: 1 +ifloat: 1 +Test "jn (7, 0x2.67a2a5d2e36800fcp+0)": +ildouble: 2 +ldouble: 2 +Test "jn (7, 0x2.67a2a5d2e36801p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (7, 0x2.67a2a5d2e3682p+0)": +ildouble: 4 +ldouble: 4 +Test "jn (7, 0x2.67a2a5d2e368p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (7, 0x2.67a2a8p+0)": +float: 1 +ifloat: 1 +Test "jn (8, 0x2.67a2a4p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (8, 0x2.67a2a5d2e3682p+0)": +double: 1 +idouble: 1 +Test "jn (8, 0x2.67a2a8p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "jn (9, 0x2.67a2a4p+0)": +float: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 +Test "jn (9, 0x2.67a2a5d2e3682p+0)": +double: 1 +idouble: 1 +Test "jn (9, 0x2.67a2a5d2e368p+0)": +ildouble: 1 +ldouble: 1 +Test "jn (9, 0x2.67a2a8p+0)": +double: 1 +idouble: 1 +ildouble: 3 +ldouble: 3 + +# lgamma +Test "lgamma (-0x4p-12)": +ildouble: 1 +ldouble: 1 +Test "lgamma (-0x4p-32)": +ildouble: 1 +ldouble: 1 +Test "lgamma (-0x8p-4)": +ildouble: 1 +ldouble: 1 +Test "lgamma (0x1.3333333333334p+0)": +ildouble: 1 +ldouble: 1 +Test "lgamma (0x1p-40)": +ildouble: 1 +ldouble: 1 +Test "lgamma (0xb.333333333333334p-4)": +ildouble: 1 +ldouble: 1 +Test "lgamma (0xb.3333333333338p-4)": +ildouble: 1 +ldouble: 1 +Test "lgamma (0xb.33333p-4)": +ildouble: 1 +ldouble: 1 + +# pow +Test "pow (-0x2p+0, -0x7.ep+4)": +ildouble: 7 +ldouble: 7 +Test "pow (-0x2p+0, -0x7.fp+4)": +ifloat: 7 +Test "pow (-0x2p+0, 0x7.ep+4)": +ildouble: 7 +ldouble: 7 +Test "pow (-0x8p-4, -0x7.ep+4)": +ildouble: 7 +ldouble: 7 +Test "pow (-0x8p-4, 0x7.ep+4)": +ildouble: 7 +ldouble: 7 +Test "pow (-0x8p-4, 0x7.fp+4)": +ifloat: 7 +Test "pow (0x1p+64, 0x2p-4)": +ildouble: 1 +ldouble: 1 +Test "pow (0x1p+8, 0x8p+0)": +float: 1 +ifloat: 1 +ildouble: 7 +ldouble: 7 +Test "pow (0xf.ffffffffffff8p+1020, 0xcp-4)": +double: 1 +idouble: 1 +Test "pow (0xf.fffffp+124, 0xcp-4)": +float: 5 +ifloat: 5 +Test "pow (0xf.fffffp-4, -0x1p+24)": +float: 1 +ifloat: 1 +Test "pow (0xf.fffffp-4, 0x1p+24)": +float: 1 +ifloat: 1 + +# pow_downward +Test "pow_downward (1.0625, 1.125)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "pow_downward (1.5, 1.03125)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# pow_tonearest +Test "pow_tonearest (-0x2p+0, -0x7.ep+4)": +ildouble: 7 +ldouble: 7 +Test "pow_tonearest (-0x2p+0, -0x7.fp+4)": +float: 7 +ifloat: 7 +Test "pow_tonearest (-0x2p+0, 0x7.ep+4)": +ildouble: 7 +ldouble: 7 +Test "pow_tonearest (-0x8p-4, -0x7.ep+4)": +ildouble: 7 +ldouble: 7 +Test "pow_tonearest (-0x8p-4, 0x7.ep+4)": +ildouble: 7 +ldouble: 7 +Test "pow_tonearest (-0x8p-4, 0x7.fp+4)": +float: 7 +ifloat: 7 +Test "pow_tonearest (0x1p+64, 0x2p-4)": +ildouble: 1 +ldouble: 1 +Test "pow_tonearest (0x1p+8, 0x8p+0)": +float: 1 +ifloat: 1 +ildouble: 7 +ldouble: 7 +Test "pow_tonearest (0xf.ffffffffffff8p+1020, 0xcp-4)": +double: 1 +idouble: 1 +Test "pow_tonearest (0xf.fffffp+124, 0xcp-4)": +float: 5 +ifloat: 5 +Test "pow_tonearest (0xf.fffffp-4, -0x1p+24)": +float: 1 +ifloat: 1 +Test "pow_tonearest (0xf.fffffp-4, 0x1p+24)": +float: 1 +ifloat: 1 + +# pow_towardzero +Test "pow_towardzero (1.0625, 1.125)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "pow_towardzero (1.5, 1.03125)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# pow_upward +Test "pow_upward (1.0625, 1.125)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "pow_upward (1.5, 1.03125)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +# sin +Test "sin (0x2.5535376715bap+0)": +double: 1 +idouble: 1 +Test "sin (0x4.1237e153f708p+0)": +double: 1 +idouble: 1 +Test "sin (0x4.c92d0ffa4bfp+0)": +double: 1 +idouble: 1 +Test "sin (0xe.ef3af1b5d8p-4)": +double: 1 +idouble: 1 + +# sin_tonearest +Test "sin_tonearest (0x2.5535376715bap+0)": +double: 1 +idouble: 1 +Test "sin_tonearest (0x4.1237e153f708p+0)": +double: 1 +idouble: 1 +Test "sin_tonearest (0x4.c92d0ffa4bfp+0)": +double: 1 +idouble: 1 +Test "sin_tonearest (0xe.ef3af1b5d8p-4)": +double: 1 +idouble: 1 + +# tgamma +Test "tgamma (-0x1.000002p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.3ffffep+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.3ffffffffffffffep+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.3ffffffffffffp+4)": +ildouble: 3 +ldouble: 3 +Test "tgamma (-0x1.4000000000000002p+4)": +ildouble: 3 +ldouble: 3 +Test "tgamma (-0x1.4000000000001p+4)": +double: 1 +idouble: 1 +ildouble: 6 +ldouble: 6 +Test "tgamma (-0x1.400002p+4)": +float: 3 +ifloat: 3 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.8p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.dffffffffffffffep+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.dffffffffffffp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.e000000000000002p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x1.e000000000001p+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1.e00002p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x1.f3fffep+8)": +ildouble: 5 +ldouble: 5 +Test "tgamma (-0x1.f3fffffffffffp+8)": +ildouble: 7 +ldouble: 7 +Test "tgamma (-0x1.f400000000000002p+8)": +ildouble: 8 +ldouble: 8 +Test "tgamma (-0x1.f40002p+8)": +ildouble: 4 +ldouble: 4 +Test "tgamma (-0x1.fffffffffffffp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x1p-24)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.0000000000000004p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.0000000000002p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.000004p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.146544p+4)": +float: 2 +ifloat: 2 +Test "tgamma (-0x2.7ffffcp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.7fffffffffffep+4)": +ildouble: 5 +ldouble: 5 +Test "tgamma (-0x2.7ffffffffffffffcp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.8000000000000004p+4)": +ildouble: 6 +ldouble: 6 +Test "tgamma (-0x2.800004p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x2.8ffffcp+4)": +ildouble: 6 +ldouble: 6 +Test "tgamma (-0x2.8fffffffffffep+4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x2.8ffffffffffffffcp+4)": +ildouble: 3 +ldouble: 3 +Test "tgamma (-0x2.8p+0)": +double: 1 +idouble: 1 +Test "tgamma (-0x2.9000000000000004p+4)": +ildouble: 4 +ldouble: 4 +Test "tgamma (-0x2.9000000000002p+4)": +ildouble: 7 +ldouble: 7 +Test "tgamma (-0x2.900004p+4)": +ildouble: 4 +ldouble: 4 +Test "tgamma (-0x2.9ffffcp+4)": +ildouble: 7 +ldouble: 7 +Test "tgamma (-0x2.9fffffffffffep+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x2.9ffffffffffffffcp+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x2.a000000000002p+4)": +ildouble: 5 +ldouble: 5 +Test "tgamma (-0x3.0000000000002p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x3.000004p+0)": +float: 1 +ifloat: 1 +Test "tgamma (-0x3.1ffffcp+4)": +ildouble: 3 +ldouble: 3 +Test "tgamma (-0x3.1fffffffffffep+4)": +double: 1 +idouble: 1 +ildouble: 5 +ldouble: 5 +Test "tgamma (-0x3.2000000000000004p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x3.2000000000002p+4)": +ildouble: 5 +ldouble: 5 +Test "tgamma (-0x3.200004p+4)": +double: 1 +idouble: 1 +ildouble: 8 +ldouble: 8 +Test "tgamma (-0x3.e7fffffffffffffcp+8)": +ildouble: 4 +ldouble: 4 +Test "tgamma (-0x3.e800000000002p+8)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x3.e80004p+8)": +ildouble: 5 +ldouble: 5 +Test "tgamma (-0x3.fffffcp+0)": +float: 1 +ifloat: 1 +Test "tgamma (-0x3.fffffffffffffffcp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x4.0000000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x4.000008p+0)": +float: 2 +ifloat: 2 +Test "tgamma (-0x4.8p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x4.fffff8p+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)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x5.fffff8p+0)": +float: 1 +ifloat: 1 +Test "tgamma (-0x6.0000000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.3ffff8p+4)": +ildouble: 4 +ldouble: 4 +Test "tgamma (-0x6.3fffffffffffcp+4)": +ildouble: 5 +ldouble: 5 +Test "tgamma (-0x6.3ffffffffffffff8p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x6.4000000000004p+4)": +ildouble: 6 +ldouble: 6 +Test "tgamma (-0x6.400008p+4)": +ildouble: 9 +ldouble: 9 +Test "tgamma (-0x6.8p+0)": +float: 1 +ifloat: 1 +Test "tgamma (-0x6.d60008p+8)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x6.fffff8p+0)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x6.ffffffffffffcp+0)": +double: 3 +idouble: 3 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x7.0000000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x7.0000000000004p+0)": +double: 4 +idouble: 4 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x7.000008p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x7.8p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x7.fffff8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x7.ffffffffffffcp+0)": +double: 3 +idouble: 3 +Test "tgamma (-0x7.fffffffffffffff8p+0)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x8.000000000000001p+0)": +ildouble: 3 +ldouble: 3 +Test "tgamma (-0x8.00001p+0)": +double: 1 +idouble: 1 +Test "tgamma (-0x8.8p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x8p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x9.5fffffffffff8p+4)": +ildouble: 3 +ldouble: 3 +Test "tgamma (-0x9.5ffffffffffffffp+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x9.60001p+4)": +ildouble: 7 +ldouble: 7 +Test "tgamma (-0x9.8p+0)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "tgamma (-0x9.ffffffffffff8p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0x9.fffffp+0)": +float: 1 +ifloat: 1 +Test "tgamma (-0xa.000000000000001p+0)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xa.0000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xa.00001p+0)": +double: 1 +idouble: 1 +Test "tgamma (-0xb.500000000000001p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xb.5000000000008p+4)": +ildouble: 7 +ldouble: 7 +Test "tgamma (-0xb.5fffffffffff8p+4)": +ildouble: 6 +ldouble: 6 +Test "tgamma (-0xb.5ffffp+4)": +ildouble: 3 +ldouble: 3 +Test "tgamma (-0xb.6000000000008p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.6fffffffffff8p+4)": +ildouble: 4 +ldouble: 4 +Test "tgamma (-0xb.7000000000008p+4)": +ildouble: 4 +ldouble: 4 +Test "tgamma (-0xb.800000000000001p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.8000000000008p+4)": +ildouble: 4 +ldouble: 4 +Test "tgamma (-0xb.80001p+4)": +ildouble: 4 +ldouble: 4 +Test "tgamma (-0xb.bfffffffffff8p+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.bffffffffffffffp+4)": +ildouble: 2 +ldouble: 2 +Test "tgamma (-0xb.bffffp+4)": +ildouble: 5 +ldouble: 5 +Test "tgamma (-0xb.cfffffffffff8p+4)": +ildouble: 6 +ldouble: 6 +Test "tgamma (-0xb.d00000000000001p+4)": +ildouble: 3 +ldouble: 3 +Test "tgamma (-0xb.dfffffffffff8p+4)": +ildouble: 9 +ldouble: 9 +Test "tgamma (-0xb.e000000000008p+4)": +ildouble: 9 +ldouble: 9 +Test "tgamma (-0xf.9fffffffffff8p+4)": +ildouble: 5 +ldouble: 5 +Test "tgamma (-0xf.9ffffffffffffffp+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xf.9ffffp+4)": +ildouble: 3 +ldouble: 3 +Test "tgamma (-0xf.a00000000000001p+4)": +ildouble: 4 +ldouble: 4 +Test "tgamma (-0xf.a000000000008p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xf.fffffffffffffffp-4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (-0xf.fffffp-4)": +float: 1 +ifloat: 1 +Test "tgamma (0x1.28p+4)": +float: 1 +ifloat: 1 +Test "tgamma (0x1.38p+4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x1.78p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x1.d8p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x1.e8p+4)": +float: 1 +ifloat: 1 +Test "tgamma (0x1.fffffep+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x1.fffffffffffffffep+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x1p-24)": +float: 1 +ifloat: 1 +Test "tgamma (0x1p-64)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x2.0000000000002p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x2.000004p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x2.08p+4)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x2.18p+4)": +float: 1 +ifloat: 1 +Test "tgamma (0x2.28p+4)": +float: 1 +ifloat: 1 +ildouble: 3 +ldouble: 3 +Test "tgamma (0x2.30a43cp+4)": +float: 2 +ifloat: 2 +ildouble: 3 +ldouble: 3 +Test "tgamma (0x2.30a44p+4)": +double: 1 +idouble: 1 +Test "tgamma (0x2.8p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x2.fffffcp+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x2.ffffffffffffep+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x3.0000000000002p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x3.8p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x3.e8p+8)": +ildouble: 7 +ldouble: 7 +Test "tgamma (0x3.fffffcp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x3.fffffffffffffffcp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x3p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x4.0000000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x4.000008p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x4.8p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x4.fffff8p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x4.fffffffffffffff8p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x4p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x5.0000000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x5.000008p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x5.8p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x5.fffff8p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x5.ffffffffffffcp+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x5p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x6.0000000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x6.000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x6.8p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x6.fffff8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x6.ffffffffffffcp+0)": +double: 3 +idouble: 3 +Test "tgamma (0x6p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x7.0000000000000008p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x7.0000000000004p+0)": +double: 4 +idouble: 4 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x7.000008p+0)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x7.8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x7.fffff8p+0)": +ildouble: 1 +ldouble: 1 +Test "tgamma (0x7.ffffffffffffcp+0)": +double: 2 +idouble: 2 +Test "tgamma (0x7.fffffffffffffff8p+0)": +ildouble: 2 +ldouble: 2 +Test "tgamma (0x7p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x8.000000000000001p+0)": +ildouble: 2 +ldouble: 2 +Test "tgamma (0x8.00001p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x8.8p+0)": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 +Test "tgamma (0x8p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x8p-4)": +float: 1 +ifloat: 1 +Test "tgamma (0x8p-56)": +double: 1 +idouble: 1 +Test "tgamma (0x9.8p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "tgamma (0x9p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (0xa.b9fd7p+4)": +double: 1 +idouble: 1 +Test "tgamma (0xa.b9fd8p+4)": +ildouble: 3 +ldouble: 3 +Test "tgamma (0xap+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# y0 +Test "y0 (0x1.8p+0)": +float: 1 +ifloat: 1 +Test "y0 (0x1p+0)": +ildouble: 1 +ldouble: 1 +Test "y0 (0x1p-100)": +float: 1 +ifloat: 1 +Test "y0 (0x1p-20)": +float: 1 +ifloat: 1 +Test "y0 (0x1p-40)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "y0 (0x1p-60)": +double: 1 +idouble: 1 +Test "y0 (0x1p-80)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "y0 (0x2p-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "y0 (0x4.ffcp+72)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "y0 (0x4p+16380)": +ildouble: 1 +ldouble: 1 +Test "y0 (0x4p-112)": +float: 1 +ifloat: 1 +Test "y0 (0x4p-12)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "y0 (0x4p-32)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "y0 (0x4p-72)": +double: 1 +idouble: 1 +Test "y0 (0x4p-92)": +float: 1 +ifloat: 1 +Test "y0 (0x8p+0)": +ildouble: 1 +ldouble: 1 +Test "y0 (0xap+0)": +float: 1 +ifloat: 1 +Test "y0 (0xcp-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# y1 +Test "y1 (0x1p+0)": +double: 1 +idouble: 1 +Test "y1 (0x2.002000002p+592)": +ildouble: 2 +ldouble: 2 +Test "y1 (0x2p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "y1 (0x2p-4)": +ildouble: 1 +ldouble: 1 +Test "y1 (0x4p+16380)": +ildouble: 1 +ldouble: 1 +Test "y1 (0x4p-12)": +float: 1 +ifloat: 1 +Test "y1 (0x8p+0)": +float: 1 +ifloat: 1 +Test "y1 (0x8p+1020)": +double: 1 +idouble: 1 +Test "y1 (0x9.3f102p+96)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 +Test "y1 (0xf.ffffffffffff8p+1020)": +ildouble: 1 +ldouble: 1 +Test "y1 (0xf.fffffp+124)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +# yn +Test "yn (-1, 0x1p+0)": +double: 1 +idouble: 1 +Test "yn (-10, 0x1p+0)": +float: 2 +ifloat: 2 +Test "yn (0, 0x1.8p+0)": +float: 1 +ifloat: 1 +Test "yn (0, 0x1p+0)": +ildouble: 1 +ldouble: 1 +Test "yn (0, 0x2p-4)": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 +Test "yn (0, 0x8p+0)": +ildouble: 1 +ldouble: 1 +Test "yn (0, 0xap+0)": +float: 1 +ifloat: 1 +Test "yn (0, 0xcp-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "yn (1, 0x1p+0)": +double: 1 +idouble: 1 +Test "yn (1, 0x2p+0)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "yn (1, 0x2p-4)": +ildouble: 1 +ldouble: 1 +Test "yn (1, 0x8p+0)": +float: 1 +ifloat: 1 +Test "yn (10, 0x1p+0)": +float: 2 +ifloat: 2 +Test "yn (10, 0x2p+0)": +float: 1 +ifloat: 1 +Test "yn (10, 0x2p-4)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 +Test "yn (10, 0x4p-1024)": +ildouble: 1 +ldouble: 1 +Test "yn (10, 0x4p-128)": +ildouble: 1 +ldouble: 1 +Test "yn (10, 0x8p-972)": +ildouble: 1 +ldouble: 1 +Test "yn (10, 0xap+0)": +float: 2 +ifloat: 2 +Test "yn (10, 0xcp-4)": +float: 1 +ifloat: 1 +ildouble: 4 +ldouble: 4 +Test "yn (2, 0x8p+124)": +float: 3 +ifloat: 3 +Test "yn (2, 0xf.fffb1p+96)": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "yn (3, 0x2p-4)": +ildouble: 1 +ldouble: 1 +Test "yn (3, 0xcp-4)": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 + +# Maximal error of functions: +Function: "acosh": +double: 1 +idouble: 1 + +Function: "asin_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +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: 1 +ldouble: 1 + +Function: "asinh": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "atan2": +ildouble: 1 +ldouble: 1 + +Function: Real part of "cacos": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "cacos": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Real part of "cacosh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "cacosh": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 + +Function: Real part of "casin": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "casin": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Real part of "casinh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "casinh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Real part of "catan": +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": +ildouble: 1 +ldouble: 1 + +Function: "cbrt": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Real part of "ccos": +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "ccos": +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "ccosh": +ildouble: 1 +ldouble: 1 + +Function: Real part of "cexp": +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "cexp": +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: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "clog10": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: "cos": +double: 1 +idouble: 1 + +Function: "cos_tonearest": +double: 1 +idouble: 1 + +Function: Real part of "cpow": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +ildouble: 3 +ldouble: 3 + +Function: Imaginary part of "cpow": +float: 5 +ifloat: 5 +ildouble: 1 +ldouble: 1 + +Function: Real part of "csin": +ildouble: 1 +ldouble: 1 + +Function: Real part of "csinh": +ildouble: 1 +ldouble: 1 + +Function: Real part of "csqrt": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: Imaginary part of "csqrt": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: Real part of "ctan": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "ctan": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Real part of "ctan_downward": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "ctan_downward": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Real part of "ctan_tonearest": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "ctan_tonearest": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Real part of "ctan_towardzero": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "ctan_towardzero": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 +ildouble: 4 +ldouble: 4 + +Function: Real part of "ctan_upward": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "ctan_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 7 +ldouble: 7 + +Function: Real part of "ctanh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "ctanh": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Real part of "ctanh_downward": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "ctanh_downward": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Real part of "ctanh_tonearest": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "ctanh_tonearest": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Real part of "ctanh_towardzero": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 +ildouble: 4 +ldouble: 4 + +Function: Imaginary part of "ctanh_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Real part of "ctanh_upward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 7 +ldouble: 7 + +Function: Imaginary part of "ctanh_upward": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: "erf": +ildouble: 1 +ldouble: 1 + +Function: "erfc": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "expm1": +ildouble: 1 +ldouble: 1 + +Function: "expm1_tonearest": +ildouble: 1 +ldouble: 1 + +Function: "gamma": +ildouble: 1 +ldouble: 1 + +Function: "hypot": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: "j0": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: "j1": +float: 2 +ifloat: 2 +ildouble: 1 +ldouble: 1 + +Function: "jn": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 4 +ldouble: 4 + +Function: "lgamma": +ildouble: 1 +ldouble: 1 + +Function: "pow": +double: 1 +float: 5 +idouble: 1 +ifloat: 7 +ildouble: 7 +ldouble: 7 + +Function: "pow_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "pow_tonearest": +double: 1 +float: 7 +idouble: 1 +ifloat: 7 +ildouble: 7 +ldouble: 7 + +Function: "pow_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "pow_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "sin": +double: 1 +idouble: 1 + +Function: "sin_tonearest": +double: 1 +idouble: 1 + +Function: "tgamma": +double: 4 +float: 3 +idouble: 4 +ifloat: 3 +ildouble: 9 +ldouble: 9 + +Function: "y0": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "y1": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: "yn": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +ildouble: 4 +ldouble: 4 + +# end of automatic generation diff --git a/sysdeps/m68k/m680x0/fpu/math_private.h b/sysdeps/m68k/m680x0/fpu/math_private.h new file mode 100644 index 0000000000..217de2ecc2 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/math_private.h @@ -0,0 +1,19 @@ +#ifndef _MATH_PRIVATE_H + +#define math_opt_barrier(x) \ +({ __typeof (x) __x; \ + __asm ("" : "=f" (__x) : "0" (x)); \ + __x; }) +#define math_force_eval(x) \ +do \ + { \ + __typeof (x) __x = (x); \ + if (sizeof (x) <= sizeof (double)) \ + __asm __volatile ("" : : "m" (__x)); \ + else \ + __asm __volatile ("" : : "f" (__x)); \ + } \ +while (0) + +#include_next <math_private.h> +#endif diff --git a/sysdeps/m68k/m680x0/fpu/mathimpl.h b/sysdeps/m68k/m680x0/fpu/mathimpl.h new file mode 100644 index 0000000000..2b129a86bd --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/mathimpl.h @@ -0,0 +1,93 @@ +/* Definitions of libc internal inline math functions implemented + by the m68881/2. + Copyright (C) 1991-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 the definitions of the inline math functions that + are only used internally inside libm, not visible to the user. */ + +__inline_mathop (__ieee754_acos, acos) +__inline_mathop (__ieee754_asin, asin) +__inline_mathop (__ieee754_cosh, cosh) +__inline_mathop (__ieee754_sinh, sinh) +__inline_mathop (__ieee754_exp, etox) +__inline_mathop (__ieee754_exp2, twotox) +__inline_mathop (__ieee754_exp10, tentox) +__inline_mathop (__ieee754_log10, log10) +__inline_mathop (__ieee754_log2, log2) +__inline_mathop (__ieee754_log, logn) +__inline_mathop (__ieee754_sqrt, sqrt) +__inline_mathop (__ieee754_atanh, atanh) + +__m81_defun (double, __ieee754_remainder, (double __x, double __y)) +{ + double __result; + __asm ("frem%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); + return __result; +} + +__m81_defun (float, __ieee754_remainderf, (float __x, float __y)) +{ + float __result; + __asm ("frem%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); + return __result; +} + +__m81_defun (long double, + __ieee754_remainderl, (long double __x, long double __y)) +{ + long double __result; + __asm ("frem%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); + return __result; +} + +__m81_defun (double, __ieee754_fmod, (double __x, double __y)) +{ + double __result; + __asm ("fmod%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); + return __result; +} + +__m81_defun (float, __ieee754_fmodf, (float __x, float __y)) +{ + float __result; + __asm ("fmod%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); + return __result; +} + +__m81_defun (long double, + __ieee754_fmodl, (long double __x, long double __y)) +{ + long double __result; + __asm ("fmod%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); + return __result; +} + +/* Get the m68881 condition codes, to quickly check multiple conditions. */ +static __inline__ unsigned long +__m81_test (long double __val) +{ + unsigned long __fpsr; + __asm ("ftst%.x %1; fmove%.l %/fpsr,%0" : "=dm" (__fpsr) : "f" (__val)); + return __fpsr; +} + +/* Bit values returned by __m81_test. */ +#define __M81_COND_NAN (1 << 24) +#define __M81_COND_INF (2 << 24) +#define __M81_COND_ZERO (4 << 24) +#define __M81_COND_NEG (8 << 24) diff --git a/sysdeps/m68k/m680x0/fpu/mpa.c b/sysdeps/m68k/m680x0/fpu/mpa.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/mpa.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/mpatan.c b/sysdeps/m68k/m680x0/fpu/mpatan.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/mpatan.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/mpatan2.c b/sysdeps/m68k/m680x0/fpu/mpatan2.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/mpatan2.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/mpexp.c b/sysdeps/m68k/m680x0/fpu/mpexp.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/mpexp.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/mplog.c b/sysdeps/m68k/m680x0/fpu/mplog.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/mplog.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/mpsqrt.c b/sysdeps/m68k/m680x0/fpu/mpsqrt.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/mpsqrt.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/mptan.c b/sysdeps/m68k/m680x0/fpu/mptan.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/mptan.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/s_atan.c b/sysdeps/m68k/m680x0/fpu/s_atan.c new file mode 100644 index 0000000000..c10437e50d --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_atan.c @@ -0,0 +1,35 @@ +/* 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 atan +#endif +#ifndef float_type +#define float_type double +#endif + +#define __CONCATX(a,b) __CONCAT(a,b) + +float_type +__CONCATX(__,FUNC) (x) + float_type x; +{ + return __m81_u(__CONCATX(__,FUNC))(x); +} +weak_alias (__CONCATX(__,FUNC), FUNC) diff --git a/sysdeps/m68k/m680x0/fpu/s_atanf.c b/sysdeps/m68k/m680x0/fpu/s_atanf.c new file mode 100644 index 0000000000..c98559a8ba --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_atanf.c @@ -0,0 +1,5 @@ +#ifndef FUNC +#define FUNC atanf +#endif +#define float_type float +#include <s_atan.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_atanl.c b/sysdeps/m68k/m680x0/fpu/s_atanl.c new file mode 100644 index 0000000000..b7e608addd --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_atanl.c @@ -0,0 +1,5 @@ +#ifndef FUNC +#define FUNC atanl +#endif +#define float_type long double +#include <s_atan.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_ccosh.c b/sysdeps/m68k/m680x0/fpu/s_ccosh.c new file mode 100644 index 0000000000..249516c15d --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_ccosh.c @@ -0,0 +1,76 @@ +/* Complex cosine hyperbole function. m68k fpu version + Copyright (C) 1997-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>. + + 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 <complex.h> +#include <math.h> +#include "mathimpl.h" + +#ifndef SUFF +#define SUFF +#endif +#ifndef float_type +#define float_type double +#endif + +#define CONCATX(a,b) __CONCAT(a,b) +#define s(name) CONCATX(name,SUFF) +#define m81(func) __m81_u(s(func)) + +__complex__ float_type +s(__ccosh) (__complex__ float_type x) +{ + __complex__ float_type retval; + unsigned long ix_cond = __m81_test (__imag__ x); + + if ((ix_cond & (__M81_COND_INF|__M81_COND_NAN)) == 0) + { + /* Imaginary part is finite. */ + float_type sin_ix, cos_ix; + + __asm ("fsincos%.x %2,%1:%0" : "=f" (sin_ix), "=f" (cos_ix) + : "f" (__imag__ x)); + __real__ retval = cos_ix * m81(__ieee754_cosh) (__real__ x); + if (ix_cond & __M81_COND_ZERO) + __imag__ retval = (signbit (__real__ x) + ? -__imag__ x : __imag__ x); + else + __imag__ retval = sin_ix * m81(__ieee754_sinh) (__real__ x); + } + else + { + unsigned long rx_cond = __m81_test (__real__ x); + + if (rx_cond & __M81_COND_ZERO) + { + __real__ retval = __imag__ x - __imag__ x; + __imag__ retval = __real__ x; + } + else + { + if (rx_cond & __M81_COND_INF) + __real__ retval = s(fabs) (__real__ x); + else + __real__ retval = s(__nan) (""); + __imag__ retval = __imag__ x - __imag__ x; + } + } + + return retval; +} +weak_alias (s(__ccosh), s(ccosh)) diff --git a/sysdeps/m68k/m680x0/fpu/s_ccoshf.c b/sysdeps/m68k/m680x0/fpu/s_ccoshf.c new file mode 100644 index 0000000000..3c8e7c7bb7 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_ccoshf.c @@ -0,0 +1,3 @@ +#define SUFF f +#define float_type float +#include <s_ccosh.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_ccoshl.c b/sysdeps/m68k/m680x0/fpu/s_ccoshl.c new file mode 100644 index 0000000000..772d5786cf --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_ccoshl.c @@ -0,0 +1,3 @@ +#define SUFF l +#define float_type long double +#include <s_ccosh.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_ceil.c b/sysdeps/m68k/m680x0/fpu/s_ceil.c new file mode 100644 index 0000000000..93d5ad72e5 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_ceil.c @@ -0,0 +1,2 @@ +#define FUNC ceil +#include <s_atan.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_ceilf.c b/sysdeps/m68k/m680x0/fpu/s_ceilf.c new file mode 100644 index 0000000000..b3ba6a5700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_ceilf.c @@ -0,0 +1,2 @@ +#define FUNC ceilf +#include <s_atanf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_ceill.c b/sysdeps/m68k/m680x0/fpu/s_ceill.c new file mode 100644 index 0000000000..2bf95b00c6 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_ceill.c @@ -0,0 +1,2 @@ +#define FUNC ceill +#include <s_atanl.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_cexp.c b/sysdeps/m68k/m680x0/fpu/s_cexp.c new file mode 100644 index 0000000000..79a2ca49c3 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_cexp.c @@ -0,0 +1,136 @@ +/* Complex exponential function. m68k fpu version + Copyright (C) 1997-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + 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 <float.h> +#include <complex.h> +#include <math.h> +#include "mathimpl.h" + +#ifndef SUFF +#define SUFF +#endif +#ifndef float_type +#define float_type double +#endif + +#define CONCATX(a,b) __CONCAT(a,b) +#define s(name) CONCATX(name,SUFF) +#define m81(func) __m81_u(s(func)) + +__complex__ float_type +s(__cexp) (__complex__ float_type x) +{ + __complex__ float_type retval; + unsigned long ix_cond; + + ix_cond = __m81_test (__imag__ x); + + if ((ix_cond & (__M81_COND_NAN|__M81_COND_INF)) == 0) + { + /* Imaginary part is finite. */ + unsigned long rx_cond = __m81_test (__real__ x); + + if ((rx_cond & (__M81_COND_NAN|__M81_COND_INF)) == 0) + { + const int t = (int) ((LDBL_MAX_EXP - 1) * M_LN2l); + long double sin_ix, cos_ix, exp_val; + + __m81_u (__sincosl) (__imag__ x, &sin_ix, &cos_ix); + + if (__real__ x > t) + { + long double exp_t = __m81_u(__ieee754_expl) (t); + __real__ x -= t; + sin_ix *= exp_t; + cos_ix *= exp_t; + if (__real__ x > t) + { + __real__ x -= t; + sin_ix *= exp_t; + cos_ix *= exp_t; + } + } + + exp_val = __m81_u(__ieee754_expl) (__real__ x); + __real__ retval = exp_val * cos_ix; + if (ix_cond & __M81_COND_ZERO) + __imag__ retval = __imag__ x; + else + __imag__ retval = exp_val * sin_ix; + } + else + { + /* Compute the sign of the result. */ + long double remainder, pi_2; + int quadrant; + + if ((rx_cond & (__M81_COND_NAN|__M81_COND_NEG)) == __M81_COND_NEG) + __real__ retval = __imag__ retval = 0.0; + else + __real__ retval = __imag__ retval = __real__ x; + __asm ("fmovecr %#0,%0\n\tfscale%.w %#-1,%0" : "=f" (pi_2)); + __asm ("fmod%.x %2,%0\n\tfmove%.l %/fpsr,%1" + : "=f" (remainder), "=dm" (quadrant) + : "f" (pi_2), "0" (__imag__ x)); + quadrant = (quadrant >> 16) & 0x83; + if (quadrant & 0x80) + quadrant ^= 0x83; + switch (quadrant) + { + default: + break; + case 1: + __real__ retval = -__real__ retval; + break; + case 2: + __real__ retval = -__real__ retval; + case 3: + __imag__ retval = -__imag__ retval; + break; + } + if (ix_cond & __M81_COND_ZERO && (rx_cond & __M81_COND_NAN) == 0) + __imag__ retval = __imag__ x; + } + } + else + { + unsigned long rx_cond = __m81_test (__real__ x); + + if (rx_cond & __M81_COND_INF) + { + /* Real part is infinite. */ + if (rx_cond & __M81_COND_NEG) + { + __real__ retval = __imag__ retval = 0.0; + if (ix_cond & __M81_COND_NEG) + __imag__ retval = -__imag__ retval; + } + else + { + __real__ retval = __real__ x; + __imag__ retval = __imag__ x - __imag__ x; + } + } + else + __real__ retval = __imag__ retval = __imag__ x - __imag__ x; + } + + return retval; +} +weak_alias (s(__cexp), s(cexp)) diff --git a/sysdeps/m68k/m680x0/fpu/s_cexpf.c b/sysdeps/m68k/m680x0/fpu/s_cexpf.c new file mode 100644 index 0000000000..177a360f9b --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_cexpf.c @@ -0,0 +1,3 @@ +#define SUFF f +#define float_type float +#include <s_cexp.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_cexpl.c b/sysdeps/m68k/m680x0/fpu/s_cexpl.c new file mode 100644 index 0000000000..bbda4ba990 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_cexpl.c @@ -0,0 +1,3 @@ +#define SUFF l +#define float_type long double +#include <s_cexp.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_cos.c b/sysdeps/m68k/m680x0/fpu/s_cos.c new file mode 100644 index 0000000000..2f1adf77f5 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_cos.c @@ -0,0 +1,2 @@ +#define FUNC cos +#include <s_sin.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_cosf.c b/sysdeps/m68k/m680x0/fpu/s_cosf.c new file mode 100644 index 0000000000..b6d6accb4a --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_cosf.c @@ -0,0 +1,2 @@ +#define FUNC cosf +#include <s_sinf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_cosl.c b/sysdeps/m68k/m680x0/fpu/s_cosl.c new file mode 100644 index 0000000000..eb61521fdd --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_cosl.c @@ -0,0 +1,2 @@ +#define FUNC cosl +#include <s_sinl.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_csin.c b/sysdeps/m68k/m680x0/fpu/s_csin.c new file mode 100644 index 0000000000..9400adb094 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_csin.c @@ -0,0 +1,67 @@ +/* Complex sine function. m68k fpu version + Copyright (C) 1997-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>. + + 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 <complex.h> +#include <math.h> +#include "mathimpl.h" + +#ifndef SUFF +#define SUFF +#endif +#ifndef float_type +#define float_type double +#endif + +#define CONCATX(a,b) __CONCAT(a,b) +#define s(name) CONCATX(name,SUFF) +#define m81(func) __m81_u(s(func)) + +__complex__ float_type +s(__csin) (__complex__ float_type x) +{ + __complex__ float_type retval; + unsigned long rx_cond = __m81_test (__real__ x); + + if ((rx_cond & (__M81_COND_INF|__M81_COND_NAN)) == 0) + { + /* Real part is finite. */ + float_type sin_rx, cos_rx; + + __asm ("fsincos%.x %2,%1:%0" : "=f" (sin_rx), "=f" (cos_rx) + : "f" (__real__ x)); + if (rx_cond & __M81_COND_ZERO) + __real__ retval = __real__ x; + else + __real__ retval = sin_rx * m81(__ieee754_cosh) (__imag__ x); + __imag__ retval = cos_rx * m81(__ieee754_sinh) (__imag__ x); + } + else + { + unsigned long ix_cond = __m81_test (__imag__ x); + + __real__ retval = __real__ x - __real__ x; + if (ix_cond & (__M81_COND_ZERO|__M81_COND_INF|__M81_COND_NAN)) + __imag__ retval = __imag__ x; + else + __imag__ retval = __real__ retval; + } + + return retval; +} +weak_alias (s(__csin), s(csin)) diff --git a/sysdeps/m68k/m680x0/fpu/s_csinf.c b/sysdeps/m68k/m680x0/fpu/s_csinf.c new file mode 100644 index 0000000000..b760e192c3 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_csinf.c @@ -0,0 +1,3 @@ +#define SUFF f +#define float_type float +#include <s_csin.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_csinh.c b/sysdeps/m68k/m680x0/fpu/s_csinh.c new file mode 100644 index 0000000000..b5d10e03fd --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_csinh.c @@ -0,0 +1,69 @@ +/* Complex sine hyperbole function. m68k fpu version + Copyright (C) 1997-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>. + + 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 <complex.h> +#include <math.h> +#include "mathimpl.h" + +#ifndef SUFF +#define SUFF +#endif +#ifndef float_type +#define float_type double +#endif + +#define CONCATX(a,b) __CONCAT(a,b) +#define s(name) CONCATX(name,SUFF) +#define m81(func) __m81_u(s(func)) + +__complex__ float_type +s(__csinh) (__complex__ float_type x) +{ + __complex__ float_type retval; + unsigned long ix_cond; + + ix_cond = __m81_test (__imag__ x); + + if ((ix_cond & (__M81_COND_INF|__M81_COND_NAN)) == 0) + { + /* Imaginary part is finite. */ + float_type sin_ix, cos_ix; + + __asm ("fsincos%.x %2,%1:%0" : "=f" (sin_ix), "=f" (cos_ix) + : "f" (__imag__ x)); + __real__ retval = cos_ix * m81(__ieee754_sinh) (__real__ x); + if (ix_cond & __M81_COND_ZERO) + __imag__ retval = __imag__ x; + else + __imag__ retval = sin_ix * m81(__ieee754_cosh) (__real__ x); + } + else + { + unsigned long rx_cond = __m81_test (__real__ x); + + __imag__ retval = __imag__ x - __imag__ x; + if (rx_cond & (__M81_COND_ZERO|__M81_COND_INF|__M81_COND_NAN)) + __real__ retval = __real__ x; + else + __real__ retval = __imag__ retval; + } + + return retval; +} +weak_alias (s(__csinh), s(csinh)) diff --git a/sysdeps/m68k/m680x0/fpu/s_csinhf.c b/sysdeps/m68k/m680x0/fpu/s_csinhf.c new file mode 100644 index 0000000000..2f7a43e6a8 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_csinhf.c @@ -0,0 +1,3 @@ +#define SUFF f +#define float_type float +#include <s_csinh.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_csinhl.c b/sysdeps/m68k/m680x0/fpu/s_csinhl.c new file mode 100644 index 0000000000..026a20e7be --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_csinhl.c @@ -0,0 +1,3 @@ +#define SUFF l +#define float_type long double +#include <s_csinh.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_csinl.c b/sysdeps/m68k/m680x0/fpu/s_csinl.c new file mode 100644 index 0000000000..ea2dad0556 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_csinl.c @@ -0,0 +1,3 @@ +#define SUFF l +#define float_type long double +#include <s_csin.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_expm1.c b/sysdeps/m68k/m680x0/fpu/s_expm1.c new file mode 100644 index 0000000000..341cd160b7 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_expm1.c @@ -0,0 +1,41 @@ +/* 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 <math.h> +#include <errno.h> +#include "mathimpl.h" + +#ifndef FUNC +# define FUNC expm1 +#endif +#ifndef float_type +# define float_type double +#endif +#ifndef o_threshold +# define o_threshold 7.09782712893383973096e+02 +#endif + +#define CONCATX(a,b) __CONCAT(a,b) + +float_type +CONCATX(__,FUNC) (float_type x) +{ + if ((__m81_test (x) & __M81_COND_INF) == 0 && isgreater (x, o_threshold)) + __set_errno (ERANGE); + return __m81_u(CONCATX(__, FUNC)) (x); +} +weak_alias (CONCATX(__, FUNC), FUNC) diff --git a/sysdeps/m68k/m680x0/fpu/s_expm1f.c b/sysdeps/m68k/m680x0/fpu/s_expm1f.c new file mode 100644 index 0000000000..2cd8ffcfeb --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_expm1f.c @@ -0,0 +1,4 @@ +#define FUNC expm1f +#define float_type float +#define o_threshold 8.8722831726e+01F +#include <s_expm1.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_expm1l.c b/sysdeps/m68k/m680x0/fpu/s_expm1l.c new file mode 100644 index 0000000000..a2c80860ba --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_expm1l.c @@ -0,0 +1,6 @@ +#define FUNC expm1l +#define float_type long double +/* 400c0000b17217f7d1cf79ab */ +#define o_threshold 1.13565234062941439487914863093465101e+04L +#include <s_expm1.c> +libm_hidden_def (__expm1l) diff --git a/sysdeps/m68k/m680x0/fpu/s_fabs.c b/sysdeps/m68k/m680x0/fpu/s_fabs.c new file mode 100644 index 0000000000..1f0631e2ff --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_fabs.c @@ -0,0 +1,2 @@ +#define FUNC fabs +#include <s_atan.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_fabsf.c b/sysdeps/m68k/m680x0/fpu/s_fabsf.c new file mode 100644 index 0000000000..8f9421998a --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_fabsf.c @@ -0,0 +1,2 @@ +#define FUNC fabsf +#include <s_atanf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_fabsl.c b/sysdeps/m68k/m680x0/fpu/s_fabsl.c new file mode 100644 index 0000000000..8ac14d5b8c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_fabsl.c @@ -0,0 +1,2 @@ +#define FUNC fabsl +#include <s_atanl.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_finite.c b/sysdeps/m68k/m680x0/fpu/s_finite.c new file mode 100644 index 0000000000..dafbd5901d --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_finite.c @@ -0,0 +1,2 @@ +#define FUNC finite +#include <s_isinf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_finitef.c b/sysdeps/m68k/m680x0/fpu/s_finitef.c new file mode 100644 index 0000000000..b81342e5c6 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_finitef.c @@ -0,0 +1,2 @@ +#define FUNC finitef +#include <s_isinff.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_finitel.c b/sysdeps/m68k/m680x0/fpu/s_finitel.c new file mode 100644 index 0000000000..bd346a220c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_finitel.c @@ -0,0 +1,2 @@ +#define FUNC finitel +#include <s_isinfl.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_floor.c b/sysdeps/m68k/m680x0/fpu/s_floor.c new file mode 100644 index 0000000000..e1219c602a --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_floor.c @@ -0,0 +1,2 @@ +#define FUNC floor +#include <s_atan.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_floorf.c b/sysdeps/m68k/m680x0/fpu/s_floorf.c new file mode 100644 index 0000000000..f4f9b9a1d8 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_floorf.c @@ -0,0 +1,2 @@ +#define FUNC floorf +#include <s_atanf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_floorl.c b/sysdeps/m68k/m680x0/fpu/s_floorl.c new file mode 100644 index 0000000000..2c1ffd7d2c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_floorl.c @@ -0,0 +1,2 @@ +#define FUNC floorl +#include <s_atanl.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_fpclassifyl.c b/sysdeps/m68k/m680x0/fpu/s_fpclassifyl.c new file mode 100644 index 0000000000..c28decbba1 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_fpclassifyl.c @@ -0,0 +1,43 @@ +/* Return classification value corresponding to argument. m68k version. + Copyright (C) 1997-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + Fixed for m68k by Andreas Schwab <schwab@suse.de>. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <math.h> + +#include <math_private.h> + + +int +__fpclassifyl (long double x) +{ + u_int32_t ex, hx, lx; + int retval = FP_NORMAL; + + GET_LDOUBLE_WORDS (ex, hx, lx, x); + ex &= 0x7fff; + if ((ex | hx | lx) == 0) + retval = FP_ZERO; + else if (ex == 0 && (hx & 0x80000000) == 0) + retval = FP_SUBNORMAL; + else if (ex == 0x7fff) + retval = ((hx & 0x7fffffff) | lx) != 0 ? FP_NAN : FP_INFINITE; + + return retval; +} +libm_hidden_def (__fpclassifyl) diff --git a/sysdeps/m68k/m680x0/fpu/s_frexp.c b/sysdeps/m68k/m680x0/fpu/s_frexp.c new file mode 100644 index 0000000000..f061b4f9ad --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_frexp.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 frexp +#endif +#ifndef float_type +#define float_type double +#endif + +#define __CONCATX(a,b) __CONCAT(a,b) + +float_type +__CONCATX(__,FUNC) (float_type value, int *expptr) +{ + float_type mantissa, exponent; + int iexponent; + unsigned long fpsr; + + __asm ("ftst%.x %1\n" + "fmove%.l %/fpsr, %0" + : "=dm" (fpsr) : "f" (value)); + if (fpsr & (7 << 24)) + { + /* Not finite or zero. */ + *expptr = 0; + return value; + } + __asm ("fgetexp%.x %1, %0" : "=f" (exponent) : "f" (value)); + iexponent = (int) exponent + 1; + *expptr = iexponent; + __asm ("fscale%.l %2, %0" + : "=f" (mantissa) + : "0" (value), "dmi" (-iexponent)); + return mantissa; +} +weak_alias (__CONCATX(__,FUNC), FUNC) diff --git a/sysdeps/m68k/m680x0/fpu/s_frexpf.c b/sysdeps/m68k/m680x0/fpu/s_frexpf.c new file mode 100644 index 0000000000..893b6ad3cf --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_frexpf.c @@ -0,0 +1,3 @@ +#define FUNC frexpf +#define float_type float +#include <s_frexp.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_frexpl.c b/sysdeps/m68k/m680x0/fpu/s_frexpl.c new file mode 100644 index 0000000000..7fdfe2cf7d --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_frexpl.c @@ -0,0 +1,58 @@ +/* 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/>. */ + +#include <math.h> + +long double +__frexpl (long double value, int *expptr) +{ + long double mantissa, exponent; + int iexponent; + unsigned long fpsr; + + __asm ("ftst%.x %1\n" + "fmove%.l %/fpsr, %0" + : "=dm" (fpsr) : "f" (value)); + if (fpsr & (7 << 24)) + { + /* Not finite or zero. */ + *expptr = 0; + return value; + } + __asm ("fgetexp%.x %1, %0" : "=f" (exponent) : "f" (value)); + iexponent = (int) exponent + 1; + *expptr = iexponent; + /* Unnormalized numbers must be handled specially, otherwise fscale + results in overflow. */ + if (iexponent <= -16384) + { + value *= 0x1p16383L; + iexponent += 16383; + } + else if (iexponent >= 16384) + { + value *= 0x1p-16383L; + iexponent -= 16383; + } + + __asm ("fscale%.l %2, %0" + : "=f" (mantissa) + : "0" (value), "dmi" (-iexponent)); + return mantissa; +} + +weak_alias (__frexpl, frexpl) diff --git a/sysdeps/m68k/m680x0/fpu/s_isinf.c b/sysdeps/m68k/m680x0/fpu/s_isinf.c new file mode 100644 index 0000000000..43952f7a42 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_isinf.c @@ -0,0 +1,38 @@ +/* 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 isinf +#endif +#ifndef float_type +#define float_type double +#endif + +#define __CONCATX(a,b) __CONCAT(a,b) + +int +__CONCATX(__,FUNC) (x) + float_type x; +{ + return __m81_u(__CONCATX(__,FUNC))(x); +} + +#define hidden_defx(a) hidden_def(a) +hidden_defx(__CONCATX(__,FUNC)) +weak_alias (__CONCATX(__,FUNC), FUNC) diff --git a/sysdeps/m68k/m680x0/fpu/s_isinff.c b/sysdeps/m68k/m680x0/fpu/s_isinff.c new file mode 100644 index 0000000000..ebf4f2ae96 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_isinff.c @@ -0,0 +1,5 @@ +#ifndef FUNC +#define FUNC isinff +#endif +#define float_type float +#include <s_isinf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_isinfl.c b/sysdeps/m68k/m680x0/fpu/s_isinfl.c new file mode 100644 index 0000000000..963725ad77 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_isinfl.c @@ -0,0 +1,5 @@ +#ifndef FUNC +#define FUNC isinfl +#endif +#define float_type long double +#include <s_isinf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_isnan.c b/sysdeps/m68k/m680x0/fpu/s_isnan.c new file mode 100644 index 0000000000..151d6dc6b4 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_isnan.c @@ -0,0 +1,2 @@ +#define FUNC isnan +#include <s_isinf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_isnanf.c b/sysdeps/m68k/m680x0/fpu/s_isnanf.c new file mode 100644 index 0000000000..667bca7235 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_isnanf.c @@ -0,0 +1,2 @@ +#define FUNC isnanf +#include <s_isinff.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_isnanl.c b/sysdeps/m68k/m680x0/fpu/s_isnanl.c new file mode 100644 index 0000000000..bbacb64f11 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_isnanl.c @@ -0,0 +1,2 @@ +#define FUNC isnanl +#include <s_isinfl.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_llrint.c b/sysdeps/m68k/m680x0/fpu/s_llrint.c new file mode 100644 index 0000000000..0734ac32ea --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_llrint.c @@ -0,0 +1,75 @@ +/* Round argument to nearest integral value according to current rounding + direction. + Copyright (C) 1997-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <math.h> +#include <math_private.h> +#include "mathimpl.h" + +long long int +__llrint (double x) +{ + int32_t e; + u_int32_t h, l, s; + long long int result; + + x = __m81_u(__rint) (x); + + /* We could use __fixxfdi from libgcc, but here we can take advantage of + the known floating point format. */ + EXTRACT_WORDS (h, l, x); + + e = ((h >> 20) & 0x7ff) - 0x3ff; + if (e < 0) + return 0; + s = h; + h &= 0xfffff; + h |= 0x100000; + + if (e < 63) + { + if (e > 52) + { + h <<= e - 52; + h |= l >> (84 - e); + l <<= e - 52; + result = ((long long int) h << 32) | l; + } + else if (e > 20) + { + l >>= 52 - e; + l |= h << (e - 20); + h >>= 52 - e; + result = ((long long int) h << 32) | l; + } + else + result = h >> (20 - e); + if (s & 0x80000000) + result = -result; + } + else + /* The number is too large or not finite. The standard leaves it + undefined what to return when the number is too large to fit in a + `long long int'. */ + result = -1LL; + + return result; +} + +weak_alias (__llrint, llrint) diff --git a/sysdeps/m68k/m680x0/fpu/s_llrintf.c b/sysdeps/m68k/m680x0/fpu/s_llrintf.c new file mode 100644 index 0000000000..4cd80308bd --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_llrintf.c @@ -0,0 +1,65 @@ +/* Round argument to nearest integral value according to current rounding + direction. + Copyright (C) 1997-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <math.h> +#include <math_private.h> +#include "mathimpl.h" + +long long int +__llrintf (float x) +{ + int32_t e; + u_int32_t i, s; + long long int result; + + x = __m81_u(__rintf) (x); + + GET_FLOAT_WORD (i, x); + + e = ((i >> 23) & 0xff) - 0x7f; + if (e < 0) + return 0; + s = i; + i &= 0x7fffff; + i |= 0x800000; + + if (e < 63) + { + if (e > 55) + result = (long long int) (i << (e - 55)) << 32; + else if (e > 31) + result = (((long long int) (i >> (55 - e)) << 32) | (i << (e - 23))); + else if (e > 23) + result = i << (e - 23); + else + result = i >> (23 - e); + if (s & 0x80000000) + result = -result; + } + else + /* The number is too large or not finite. The standard leaves it + undefined what to return when the number is too large to fit in a + `long long int'. */ + result = -1LL; + + return result; +} + +weak_alias (__llrintf, llrintf) diff --git a/sysdeps/m68k/m680x0/fpu/s_llrintl.c b/sysdeps/m68k/m680x0/fpu/s_llrintl.c new file mode 100644 index 0000000000..9bd9bf40e0 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_llrintl.c @@ -0,0 +1,64 @@ +/* Round argument to nearest integral value according to current rounding + direction. + Copyright (C) 1997-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <math.h> +#include <math_private.h> +#include "mathimpl.h" + +long long int +__llrintl (long double x) +{ + int32_t e, s; + u_int32_t h, l; + long long int result; + + x = __m81_u(__rintl) (x); + + GET_LDOUBLE_WORDS (e, h, l, x); + + s = e; + e = (e & 0x7fff) - 0x3fff; + if (e < 0) + return 0; + + if (e < 63) + { + if (e > 31) + { + l >>= 63 - e; + l |= h << (e - 31); + h >>= 63 - e; + result = ((long long int) h << 32) | l; + } + else + result = h >> (31 - e); + if (s & 0x8000) + result = -result; + } + else + /* The number is too large or not finite. The standard leaves it + undefined what to return when the number is too large to fit in a + `long long int'. */ + result = -1LL; + + return result; +} + +weak_alias (__llrintl, llrintl) diff --git a/sysdeps/m68k/m680x0/fpu/s_log1p.c b/sysdeps/m68k/m680x0/fpu/s_log1p.c new file mode 100644 index 0000000000..1840ced137 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_log1p.c @@ -0,0 +1,2 @@ +#define FUNC log1p +#include <s_atan.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_log1pf.c b/sysdeps/m68k/m680x0/fpu/s_log1pf.c new file mode 100644 index 0000000000..cb7235a071 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_log1pf.c @@ -0,0 +1,2 @@ +#define FUNC log1pf +#include <s_atanf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_log1pl.c b/sysdeps/m68k/m680x0/fpu/s_log1pl.c new file mode 100644 index 0000000000..8dbef89095 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_log1pl.c @@ -0,0 +1,2 @@ +#define FUNC log1pl +#include <s_atanl.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_logbl.c b/sysdeps/m68k/m680x0/fpu/s_logbl.c new file mode 100644 index 0000000000..2586622bf7 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_logbl.c @@ -0,0 +1,49 @@ +/* s_logbl.c -- long double version of s_logb.c. + * Conversion to long double by Ulrich Drepper, + * Cygnus Support, drepper@cygnus.com. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* + * long double logbl(x) + * IEEE 754 logb. Included to pass IEEE test suite. Not recommend. + * Use ilogb instead. + */ + +#include <math.h> +#include <math_private.h> + +long double +__logbl (long double x) +{ + int32_t es, lx, ix; + + GET_LDOUBLE_WORDS (es, ix, lx, x); + es &= 0x7fff; /* exponent */ + if ((es | ix | lx) == 0) + return -1.0 / fabsl (x); + if (es == 0x7fff) + return x * x; + if (es == 0) /* IEEE 754 logb */ + { + /* POSIX specifies that denormal number is treated as + though it were normalized. */ + if (ix == 0) + es = -(__builtin_clz (lx) + 32); + else + es = -__builtin_clz (ix); + } + return (long double) (es - 16383); +} + +weak_alias (__logbl, logbl) diff --git a/sysdeps/m68k/m680x0/fpu/s_lrint.c b/sysdeps/m68k/m680x0/fpu/s_lrint.c new file mode 100644 index 0000000000..02cb621d6a --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_lrint.c @@ -0,0 +1,37 @@ +/* Round argument to nearest integral value according to current rounding + direction. + Copyright (C) 1997-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + 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 suffix +#define suffix /*empty*/ +#endif +#ifndef float_type +#define float_type double +#endif + +#define CONCATX(a,b) __CONCAT(a,b) + +long int +CONCATX(__lrint,suffix) (float_type x) +{ + return __m81_u(CONCATX(__lrint,suffix)) (x); +} +weak_alias (CONCATX(__lrint,suffix), CONCATX(lrint,suffix)) diff --git a/sysdeps/m68k/m680x0/fpu/s_lrintf.c b/sysdeps/m68k/m680x0/fpu/s_lrintf.c new file mode 100644 index 0000000000..44924cb82f --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_lrintf.c @@ -0,0 +1,3 @@ +#define suffix f +#define float_type float +#include <s_lrint.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_lrintl.c b/sysdeps/m68k/m680x0/fpu/s_lrintl.c new file mode 100644 index 0000000000..cd0bd23b8a --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_lrintl.c @@ -0,0 +1,3 @@ +#define suffix l +#define float_type long double +#include <s_lrint.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_modf.c b/sysdeps/m68k/m680x0/fpu/s_modf.c new file mode 100644 index 0000000000..c9360c0ec4 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_modf.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> +#include "mathimpl.h" + +#ifndef SUFF +#define SUFF +#endif +#ifndef float_type +#define float_type double +#endif + +#define CONCATX(a,b) __CONCAT(a,b) +#define s(name) CONCATX(name,SUFF) +#define m81(func) __m81_u(s(func)) + +float_type +s(__modf) (float_type x, float_type *iptr) +{ + float_type x_int, result; + unsigned long x_cond; + + __asm ("fintrz%.x %1, %0" : "=f" (x_int) : "f" (x)); + *iptr = x_int; + x_cond = __m81_test (x); + if (x_cond & __M81_COND_INF) + { + result = 0; + if (x_cond & __M81_COND_NEG) + result = -result; + } + else if (x_cond & __M81_COND_ZERO) + result = x; + else + result = x - x_int; + return result; +} +weak_alias (s(__modf), s(modf)) diff --git a/sysdeps/m68k/m680x0/fpu/s_modff.c b/sysdeps/m68k/m680x0/fpu/s_modff.c new file mode 100644 index 0000000000..0c44d7c0ab --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_modff.c @@ -0,0 +1,3 @@ +#define SUFF f +#define float_type float +#include <s_modf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_modfl.c b/sysdeps/m68k/m680x0/fpu/s_modfl.c new file mode 100644 index 0000000000..c7075b3ba9 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_modfl.c @@ -0,0 +1,3 @@ +#define SUFF l +#define float_type long double +#include <s_modf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_nearbyint.c b/sysdeps/m68k/m680x0/fpu/s_nearbyint.c new file mode 100644 index 0000000000..b87f5e2160 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_nearbyint.c @@ -0,0 +1,2 @@ +#define FUNC nearbyint +#include <s_atan.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_nearbyintf.c b/sysdeps/m68k/m680x0/fpu/s_nearbyintf.c new file mode 100644 index 0000000000..70d08ab44c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_nearbyintf.c @@ -0,0 +1,2 @@ +#define FUNC nearbyintf +#include <s_atanf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_nearbyintl.c b/sysdeps/m68k/m680x0/fpu/s_nearbyintl.c new file mode 100644 index 0000000000..230cd7784c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_nearbyintl.c @@ -0,0 +1,2 @@ +#define FUNC nearbyintl +#include <s_atanl.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_nextafterl.c b/sysdeps/m68k/m680x0/fpu/s_nextafterl.c new file mode 100644 index 0000000000..03c136bb08 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_nextafterl.c @@ -0,0 +1,102 @@ +/* s_nextafterl.c -- long double version of s_nextafter.c. + * Conversion to long double by Ulrich Drepper, + * Cygnus Support, drepper@cygnus.com. + * Fixed for m68k by Andreas Schwab <schwab@suse.de>. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: $"; +#endif + +/* IEEE functions + * nextafterl(x,y) + * return the next machine floating-point number of x in the + * direction toward y. + * Special cases: + */ + +#include <math.h> +#include <math_private.h> + +long double __nextafterl(long double x, long double y) +{ + int32_t ix,iy,esx,esy; + u_int32_t hx,hy,lx,ly; + + GET_LDOUBLE_WORDS(esx,hx,lx,x); + GET_LDOUBLE_WORDS(esy,hy,ly,y); + ix = esx&0x7fff; /* |x| */ + iy = esy&0x7fff; /* |y| */ + + if(((ix==0x7fff)&&((hx&0x7fffffff)|lx)!=0) || /* x is nan */ + ((iy==0x7fff)&&((hy&0x7fffffff)|ly)!=0)) /* y is nan */ + return x+y; + if(x==y) return y; /* x=y, return y */ + if((ix|hx|lx)==0) { /* x == 0 */ + SET_LDOUBLE_WORDS(x,esy&0x8000,0,1);/* return +-minsubnormal */ + y = x*x; + math_force_eval (y); /* raise underflow flag */ + return x; + } + if(esx>=0) { /* x > 0 */ + if(esx>esy||((esx==esy) && (hx>hy||((hx==hy)&&(lx>ly))))) { + /* x > y, x -= ulp */ + if(lx==0) { + if (ix != 0 && hx == 0x80000000) hx = 0; + if (hx==0) esx -= 1; + hx -= 1; + } + lx -= 1; + } else { /* x < y, x += ulp */ + lx += 1; + if(lx==0) { + hx += 1; + if (hx==0) { + hx = 0x80000000; + esx += 1; + } + } + } + } else { /* x < 0 */ + if(esy>=0||esx>esy||((esx==esy) && (hx>hy||((hx==hy)&&(lx>ly))))){ + /* x < y, x -= ulp */ + if(lx==0) { + if (ix != 0 && hx == 0x80000000) hx = 0; + if (hx==0) esx -= 1; + hx -= 1; + } + lx -= 1; + } else { /* x > y, x += ulp */ + lx += 1; + if(lx==0) { + hx += 1; + if (hx==0) { + hx = 0x80000000; + esx += 1; + } + } + } + } + esy = esx&0x7fff; + if(esy==0x7fff) return x+x; /* overflow */ + if(esy==0 && (hx & 0x80000000) == 0) { /* underflow */ + y = x*x; + math_force_eval (y); /* raise underflow flag */ + } + SET_LDOUBLE_WORDS(x,esx,hx,lx); + return x; +} +weak_alias (__nextafterl, nextafterl) +strong_alias (__nextafterl, __nexttowardl) +weak_alias (__nextafterl, nexttowardl) diff --git a/sysdeps/m68k/m680x0/fpu/s_remquo.c b/sysdeps/m68k/m680x0/fpu/s_remquo.c new file mode 100644 index 0000000000..95211b8e01 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_remquo.c @@ -0,0 +1,46 @@ +/* Compute remainder and a congruent to the quotient. m68k fpu version + Copyright (C) 1997-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + 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 SUFF +#define SUFF +#endif +#ifndef float_type +#define float_type double +#endif + +#define CONCATX(a,b) __CONCAT(a,b) +#define s(name) CONCATX(name,SUFF) + +float_type +s(__remquo) (float_type x, float_type y, int *quo) +{ + float_type result; + int cquo, fpsr; + + __asm ("frem%.x %2,%0\n\tfmove%.l %/fpsr,%1" + : "=f" (result), "=dm" (fpsr) : "f" (y), "0" (x)); + cquo = (fpsr >> 16) & 0x7f; + if (fpsr & (1 << 23)) + cquo = -cquo; + *quo = cquo; + return result; +} +weak_alias (s(__remquo), s(remquo)) diff --git a/sysdeps/m68k/m680x0/fpu/s_remquof.c b/sysdeps/m68k/m680x0/fpu/s_remquof.c new file mode 100644 index 0000000000..8a292fc26c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_remquof.c @@ -0,0 +1,3 @@ +#define SUFF f +#define float_type float +#include <s_remquo.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_remquol.c b/sysdeps/m68k/m680x0/fpu/s_remquol.c new file mode 100644 index 0000000000..d236cfd1f9 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_remquol.c @@ -0,0 +1,3 @@ +#define SUFF l +#define float_type long double +#include <s_remquo.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_rint.c b/sysdeps/m68k/m680x0/fpu/s_rint.c new file mode 100644 index 0000000000..f0f18c7346 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_rint.c @@ -0,0 +1,2 @@ +#define FUNC rint +#include <s_atan.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_rintf.c b/sysdeps/m68k/m680x0/fpu/s_rintf.c new file mode 100644 index 0000000000..4e00cab0fb --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_rintf.c @@ -0,0 +1,2 @@ +#define FUNC rintf +#include <s_atanf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_rintl.c b/sysdeps/m68k/m680x0/fpu/s_rintl.c new file mode 100644 index 0000000000..305667b3a1 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_rintl.c @@ -0,0 +1,2 @@ +#define FUNC rintl +#include <s_atanl.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_scalbln.c b/sysdeps/m68k/m680x0/fpu/s_scalbln.c new file mode 100644 index 0000000000..1009713fbc --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_scalbln.c @@ -0,0 +1,2 @@ +/* Nothing to do. This function is the same as scalbn. So we define an + alias. */ diff --git a/sysdeps/m68k/m680x0/fpu/s_scalblnf.c b/sysdeps/m68k/m680x0/fpu/s_scalblnf.c new file mode 100644 index 0000000000..5e558c3540 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_scalblnf.c @@ -0,0 +1,2 @@ +/* Nothing to do. This function is the same as scalbnf. So we define an + alias. */ diff --git a/sysdeps/m68k/m680x0/fpu/s_scalblnl.c b/sysdeps/m68k/m680x0/fpu/s_scalblnl.c new file mode 100644 index 0000000000..cda2ec11c8 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_scalblnl.c @@ -0,0 +1,2 @@ +/* Nothing to do. This function is the same as scalbnl. So we define an + alias. */ diff --git a/sysdeps/m68k/m680x0/fpu/s_scalbn.c b/sysdeps/m68k/m680x0/fpu/s_scalbn.c new file mode 100644 index 0000000000..c56a9ffe94 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_scalbn.c @@ -0,0 +1,50 @@ +/* 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/>. */ + +#define scalbln __no_scalbln_decl +#define scalblnf __no_scalblnf_decl +#define scalblnl __no_scalblnl_decl +#define __scalbln __no__scalbln_decl +#define __scalblnf __no__scalblnf_decl +#define __scalblnl __no__scalblnl_decl +#include <math.h> +#undef scalbln +#undef scalblnf +#undef scalblnl +#undef __scalbln +#undef __scalblnf +#undef __scalblnl + +#ifndef suffix +#define suffix /*empty*/ +#endif +#ifndef float_type +#define float_type double +#endif + +#define __CONCATX(a,b) __CONCAT(a,b) + +float_type +__CONCATX(__scalbn,suffix) (x, exp) + float_type x; + int exp; +{ + return __m81_u(__CONCATX(__scalbn,suffix))(x, exp); +} +weak_alias (__CONCATX(__scalbn,suffix), __CONCATX(scalbn,suffix)) +strong_alias (__CONCATX(__scalbn,suffix), __CONCATX(__scalbln,suffix)) +weak_alias (__CONCATX(__scalbn,suffix), __CONCATX(scalbln,suffix)) diff --git a/sysdeps/m68k/m680x0/fpu/s_scalbnf.c b/sysdeps/m68k/m680x0/fpu/s_scalbnf.c new file mode 100644 index 0000000000..547971836a --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_scalbnf.c @@ -0,0 +1,3 @@ +#define suffix f +#define float_type float +#include <s_scalbn.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_scalbnl.c b/sysdeps/m68k/m680x0/fpu/s_scalbnl.c new file mode 100644 index 0000000000..874bafb04b --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_scalbnl.c @@ -0,0 +1,3 @@ +#define suffix l +#define float_type long double +#include <s_scalbn.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_significand.c b/sysdeps/m68k/m680x0/fpu/s_significand.c new file mode 100644 index 0000000000..34d4ea3d14 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_significand.c @@ -0,0 +1,2 @@ +#define FUNC significand +#include <s_atan.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_significandf.c b/sysdeps/m68k/m680x0/fpu/s_significandf.c new file mode 100644 index 0000000000..4e769ca317 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_significandf.c @@ -0,0 +1,2 @@ +#define FUNC significandf +#include <s_atanf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_significandl.c b/sysdeps/m68k/m680x0/fpu/s_significandl.c new file mode 100644 index 0000000000..8c6fc7e610 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_significandl.c @@ -0,0 +1,2 @@ +#define FUNC significandl +#include <s_atanl.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_sin.c b/sysdeps/m68k/m680x0/fpu/s_sin.c new file mode 100644 index 0000000000..5768efc8f6 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_sin.c @@ -0,0 +1,38 @@ +/* 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 <math.h> +#include <errno.h> +#include "mathimpl.h" + +#ifndef FUNC +# define FUNC sin +#endif +#ifndef float_type +# define float_type double +#endif + +#define CONCATX(a,b) __CONCAT(a,b) + +float_type +CONCATX(__,FUNC) (float_type x) +{ + if (__m81_test (x) & __M81_COND_INF) + __set_errno (EDOM); + return __m81_u(CONCATX(__, FUNC)) (x); +} +weak_alias (CONCATX(__, FUNC), FUNC) diff --git a/sysdeps/m68k/m680x0/fpu/s_sincos.c b/sysdeps/m68k/m680x0/fpu/s_sincos.c new file mode 100644 index 0000000000..68c2327fd9 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_sincos.c @@ -0,0 +1,35 @@ +/* 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 <math.h> + +#ifndef FUNC +#define FUNC sincos +#endif +#ifndef float_type +#define float_type double +#endif + +#define CONCATX(a,b) __CONCAT(a,b) + +void +CONCATX(__,FUNC) (x, sinx, cosx) + float_type x, *sinx, *cosx; +{ + __m81_u(CONCATX(__,FUNC))(x, sinx, cosx); +} +weak_alias (CONCATX(__,FUNC), FUNC) diff --git a/sysdeps/m68k/m680x0/fpu/s_sincosf.c b/sysdeps/m68k/m680x0/fpu/s_sincosf.c new file mode 100644 index 0000000000..7ee2ec6600 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_sincosf.c @@ -0,0 +1,3 @@ +#define FUNC sincosf +#define float_type float +#include <s_sincos.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_sincosl.c b/sysdeps/m68k/m680x0/fpu/s_sincosl.c new file mode 100644 index 0000000000..f998cc0977 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_sincosl.c @@ -0,0 +1,3 @@ +#define FUNC sincosl +#define float_type long double +#include <s_sincos.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_sinf.c b/sysdeps/m68k/m680x0/fpu/s_sinf.c new file mode 100644 index 0000000000..304f4f76f6 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_sinf.c @@ -0,0 +1,5 @@ +#ifndef FUNC +# define FUNC sinf +#endif +#define float_type float +#include <s_sin.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_sinl.c b/sysdeps/m68k/m680x0/fpu/s_sinl.c new file mode 100644 index 0000000000..31dac0bee7 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_sinl.c @@ -0,0 +1,5 @@ +#ifndef FUNC +# define FUNC sinl +#endif +#define float_type long double +#include <s_sin.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_tan.c b/sysdeps/m68k/m680x0/fpu/s_tan.c new file mode 100644 index 0000000000..dfbbbb2270 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_tan.c @@ -0,0 +1,2 @@ +#define FUNC tan +#include <s_sin.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_tanf.c b/sysdeps/m68k/m680x0/fpu/s_tanf.c new file mode 100644 index 0000000000..9ae66ddbf3 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_tanf.c @@ -0,0 +1,2 @@ +#define FUNC tanf +#include <s_sinf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_tanh.c b/sysdeps/m68k/m680x0/fpu/s_tanh.c new file mode 100644 index 0000000000..ac2e7dbb79 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_tanh.c @@ -0,0 +1,2 @@ +#define FUNC tanh +#include <s_atan.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_tanhf.c b/sysdeps/m68k/m680x0/fpu/s_tanhf.c new file mode 100644 index 0000000000..1addaae4ff --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_tanhf.c @@ -0,0 +1,2 @@ +#define FUNC tanhf +#include <s_atanf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_tanhl.c b/sysdeps/m68k/m680x0/fpu/s_tanhl.c new file mode 100644 index 0000000000..6e997911f2 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_tanhl.c @@ -0,0 +1,2 @@ +#define FUNC tanhl +#include <s_atanl.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_tanl.c b/sysdeps/m68k/m680x0/fpu/s_tanl.c new file mode 100644 index 0000000000..27daf8f29b --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_tanl.c @@ -0,0 +1,2 @@ +#define FUNC tanl +#include <s_sinl.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_trunc.c b/sysdeps/m68k/m680x0/fpu/s_trunc.c new file mode 100644 index 0000000000..96f29a776c --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_trunc.c @@ -0,0 +1,2 @@ +#define FUNC trunc +#include <s_atan.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_truncf.c b/sysdeps/m68k/m680x0/fpu/s_truncf.c new file mode 100644 index 0000000000..44dca748ca --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_truncf.c @@ -0,0 +1,2 @@ +#define FUNC truncf +#include <s_atanf.c> diff --git a/sysdeps/m68k/m680x0/fpu/s_truncl.c b/sysdeps/m68k/m680x0/fpu/s_truncl.c new file mode 100644 index 0000000000..8d35777aed --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/s_truncl.c @@ -0,0 +1,2 @@ +#define FUNC truncl +#include <s_atanl.c> diff --git a/sysdeps/m68k/m680x0/fpu/sincos32.c b/sysdeps/m68k/m680x0/fpu/sincos32.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/sincos32.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/sincostab.c b/sysdeps/m68k/m680x0/fpu/sincostab.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/sincostab.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/slowexp.c b/sysdeps/m68k/m680x0/fpu/slowexp.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/slowexp.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/slowpow.c b/sysdeps/m68k/m680x0/fpu/slowpow.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/slowpow.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/t_exp.c b/sysdeps/m68k/m680x0/fpu/t_exp.c new file mode 100644 index 0000000000..fd37963b05 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/t_exp.c @@ -0,0 +1 @@ +/* Empty. Not needed. */ diff --git a/sysdeps/m68k/m680x0/lshift.S b/sysdeps/m68k/m680x0/lshift.S new file mode 100644 index 0000000000..f7724f4514 --- /dev/null +++ b/sysdeps/m68k/m680x0/lshift.S @@ -0,0 +1,168 @@ +/* mc68020 __mpn_lshift -- Shift left a low-level natural-number integer. + +Copyright (C) 1996-2014 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP 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 MP 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 MP Library. If not, see <http://www.gnu.org/licenses/>. */ + +/* + INPUT PARAMETERS + res_ptr (sp + 4) + s_ptr (sp + 8) + s_size (sp + 16) + cnt (sp + 12) +*/ + +#include "sysdep.h" +#include "asm-syntax.h" + +#define res_ptr a1 +#define s_ptr a0 +#define s_size d6 +#define cnt d4 + + TEXT +ENTRY(__mpn_lshift) + +/* Save used registers on the stack. */ + moveml R(d2)-R(d6)/R(a2),MEM_PREDEC(sp) + cfi_adjust_cfa_offset (6*4) + cfi_rel_offset (R(d2), 0) + cfi_rel_offset (R(d3), 4) + cfi_rel_offset (R(d4), 8) + cfi_rel_offset (R(d5), 12) + cfi_rel_offset (R(d6), 16) + cfi_rel_offset (R(a2), 20) + +/* Copy the arguments to registers. */ + movel MEM_DISP(sp,28),R(res_ptr) + movel MEM_DISP(sp,32),R(s_ptr) + movel MEM_DISP(sp,36),R(s_size) + movel MEM_DISP(sp,40),R(cnt) + + moveql #1,R(d5) + cmpl R(d5),R(cnt) + bne L(Lnormal) + cmpl R(s_ptr),R(res_ptr) + bls L(Lspecial) /* jump if s_ptr >= res_ptr */ +#if (defined (__mc68020__) || defined (__NeXT__) || defined(mc68020)) + lea MEM_INDX1(s_ptr,s_size,l,4),R(a2) +#else /* not mc68020 */ + movel R(s_size),R(d0) + asll #2,R(d0) + lea MEM_INDX(s_ptr,d0,l),R(a2) +#endif + cmpl R(res_ptr),R(a2) + bls L(Lspecial) /* jump if res_ptr >= s_ptr + s_size */ + +L(Lnormal:) + moveql #32,R(d5) + subl R(cnt),R(d5) + +#if (defined (__mc68020__) || defined (__NeXT__) || defined(mc68020)) + lea MEM_INDX1(s_ptr,s_size,l,4),R(s_ptr) + lea MEM_INDX1(res_ptr,s_size,l,4),R(res_ptr) +#else /* not mc68000 */ + movel R(s_size),R(d0) + asll #2,R(d0) + addl R(s_size),R(s_ptr) + addl R(s_size),R(res_ptr) +#endif + movel MEM_PREDEC(s_ptr),R(d2) + movel R(d2),R(d0) + lsrl R(d5),R(d0) /* compute carry limb */ + + lsll R(cnt),R(d2) + movel R(d2),R(d1) + subql #1,R(s_size) + beq L(Lend) + lsrl #1,R(s_size) + bcs L(L1) + subql #1,R(s_size) + +L(Loop:) + movel MEM_PREDEC(s_ptr),R(d2) + movel R(d2),R(d3) + lsrl R(d5),R(d3) + orl R(d3),R(d1) + movel R(d1),MEM_PREDEC(res_ptr) + lsll R(cnt),R(d2) +L(L1:) + movel MEM_PREDEC(s_ptr),R(d1) + movel R(d1),R(d3) + lsrl R(d5),R(d3) + orl R(d3),R(d2) + movel R(d2),MEM_PREDEC(res_ptr) + lsll R(cnt),R(d1) + + dbf R(s_size),L(Loop) + subl #0x10000,R(s_size) + bcc L(Loop) + +L(Lend:) + movel R(d1),MEM_PREDEC(res_ptr) /* store least significant limb */ + +/* Restore used registers from stack frame. */ + moveml MEM_POSTINC(sp),R(d2)-R(d6)/R(a2) + cfi_remember_state + cfi_adjust_cfa_offset (-6*4) + cfi_restore (R(d2)) + cfi_restore (R(d3)) + cfi_restore (R(d4)) + cfi_restore (R(d5)) + cfi_restore (R(d6)) + cfi_restore (R(a2)) + rts + +/* We loop from least significant end of the arrays, which is only + permissible if the source and destination don't overlap, since the + function is documented to work for overlapping source and destination. */ + + cfi_restore_state +L(Lspecial:) + clrl R(d0) /* initialize carry */ + eorw #1,R(s_size) + lsrl #1,R(s_size) + bcc L(LL1) + subql #1,R(s_size) + +L(LLoop:) + movel MEM_POSTINC(s_ptr),R(d2) + addxl R(d2),R(d2) + movel R(d2),MEM_POSTINC(res_ptr) +L(LL1:) + movel MEM_POSTINC(s_ptr),R(d2) + addxl R(d2),R(d2) + movel R(d2),MEM_POSTINC(res_ptr) + + dbf R(s_size),L(LLoop) + addxl R(d0),R(d0) /* save cy in lsb */ + subl #0x10000,R(s_size) + bcs L(LLend) + lsrl #1,R(d0) /* restore cy */ + bra L(LLoop) + +L(LLend:) +/* Restore used registers from stack frame. */ + moveml MEM_POSTINC(sp),R(d2)-R(d6)/R(a2) + cfi_adjust_cfa_offset (-6*4) + cfi_restore (R(d2)) + cfi_restore (R(d3)) + cfi_restore (R(d4)) + cfi_restore (R(d5)) + cfi_restore (R(d6)) + cfi_restore (R(a2)) + rts +END(__mpn_lshift) diff --git a/sysdeps/m68k/m680x0/m68020/Makefile b/sysdeps/m68k/m680x0/m68020/Makefile new file mode 100644 index 0000000000..b17635467d --- /dev/null +++ b/sysdeps/m68k/m680x0/m68020/Makefile @@ -0,0 +1,3 @@ +ifeq ($(subdir),db2) +CPPFLAGS += -DHAVE_SPINLOCKS=1 -DHAVE_ASSEM_MC68020_GCC=1 +endif diff --git a/sysdeps/m68k/m680x0/m68020/addmul_1.S b/sysdeps/m68k/m680x0/m68020/addmul_1.S new file mode 100644 index 0000000000..5629202104 --- /dev/null +++ b/sysdeps/m68k/m680x0/m68020/addmul_1.S @@ -0,0 +1,88 @@ +/* mc68020 __mpn_addmul_1 -- Multiply a limb vector with a limb and add + the result to a second limb vector. + +Copyright (C) 1992-2014 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP 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 MP 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 MP Library. If not, see <http://www.gnu.org/licenses/>. */ + +/* + INPUT PARAMETERS + res_ptr (sp + 4) + s1_ptr (sp + 8) + s1_size (sp + 12) + s2_limb (sp + 16) +*/ + +#include "sysdep.h" +#include "asm-syntax.h" + + TEXT +ENTRY(__mpn_addmul_1) + +#define res_ptr a0 +#define s1_ptr a1 +#define s1_size d2 +#define s2_limb d4 + +/* Save used registers on the stack. */ + moveml R(d2)-R(d5),MEM_PREDEC(sp) + cfi_adjust_cfa_offset (4*4) + cfi_rel_offset (R(d2), 0) + cfi_rel_offset (R(d3), 4) + cfi_rel_offset (R(d4), 8) + cfi_rel_offset (R(d5), 12) + +/* Copy the arguments to registers. Better use movem? */ + movel MEM_DISP(sp,20),R(res_ptr) + movel MEM_DISP(sp,24),R(s1_ptr) + movel MEM_DISP(sp,28),R(s1_size) + movel MEM_DISP(sp,32),R(s2_limb) + + eorw #1,R(s1_size) + clrl R(d1) + clrl R(d5) + lsrl #1,R(s1_size) + bcc L(L1) + subql #1,R(s1_size) + subl R(d0),R(d0) /* (d0,cy) <= (0,0) */ + +L(Loop:) + movel MEM_POSTINC(s1_ptr),R(d3) + mulul R(s2_limb),R(d1):R(d3) + addxl R(d0),R(d3) + addxl R(d5),R(d1) + addl R(d3),MEM_POSTINC(res_ptr) +L(L1:) movel MEM_POSTINC(s1_ptr),R(d3) + mulul R(s2_limb),R(d0):R(d3) + addxl R(d1),R(d3) + addxl R(d5),R(d0) + addl R(d3),MEM_POSTINC(res_ptr) + + dbf R(s1_size),L(Loop) + addxl R(d5),R(d0) + subl #0x10000,R(s1_size) + bcc L(Loop) + +/* Restore used registers from stack frame. */ + moveml MEM_POSTINC(sp),R(d2)-R(d5) + cfi_adjust_cfa_offset (-4*4) + cfi_restore (R(d2)) + cfi_restore (R(d3)) + cfi_restore (R(d4)) + cfi_restore (R(d5)) + + rts +END(__mpn_addmul_1) diff --git a/sysdeps/m68k/m680x0/m68020/bits/atomic.h b/sysdeps/m68k/m680x0/m68020/bits/atomic.h new file mode 100644 index 0000000000..0f081f169a --- /dev/null +++ b/sysdeps/m68k/m680x0/m68020/bits/atomic.h @@ -0,0 +1,253 @@ +/* Copyright (C) 2003-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@suse.de>, 2003. + + 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 <stdint.h> + + +typedef int8_t atomic8_t; +typedef uint8_t uatomic8_t; +typedef int_fast8_t atomic_fast8_t; +typedef uint_fast8_t uatomic_fast8_t; + +typedef int16_t atomic16_t; +typedef uint16_t uatomic16_t; +typedef int_fast16_t atomic_fast16_t; +typedef uint_fast16_t uatomic_fast16_t; + +typedef int32_t atomic32_t; +typedef uint32_t uatomic32_t; +typedef int_fast32_t atomic_fast32_t; +typedef uint_fast32_t uatomic_fast32_t; + +typedef int64_t atomic64_t; +typedef uint64_t uatomic64_t; +typedef int_fast64_t atomic_fast64_t; +typedef uint_fast64_t uatomic_fast64_t; + +typedef intptr_t atomicptr_t; +typedef uintptr_t uatomicptr_t; +typedef intmax_t atomic_max_t; +typedef uintmax_t uatomic_max_t; + +#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \ + ({ __typeof (*(mem)) __ret; \ + __asm __volatile ("cas%.b %0,%2,%1" \ + : "=d" (__ret), "+m" (*(mem)) \ + : "d" (newval), "0" (oldval)); \ + __ret; }) + +#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \ + ({ __typeof (*(mem)) __ret; \ + __asm __volatile ("cas%.w %0,%2,%1" \ + : "=d" (__ret), "+m" (*(mem)) \ + : "d" (newval), "0" (oldval)); \ + __ret; }) + +#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \ + ({ __typeof (*(mem)) __ret; \ + __asm __volatile ("cas%.l %0,%2,%1" \ + : "=d" (__ret), "+m" (*(mem)) \ + : "d" (newval), "0" (oldval)); \ + __ret; }) + +# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \ + ({ __typeof (*(mem)) __ret; \ + __typeof (mem) __memp = (mem); \ + __asm __volatile ("cas2%.l %0:%R0,%1:%R1,(%2):(%3)" \ + : "=d" (__ret) \ + : "d" (newval), "r" (__memp), \ + "r" ((char *) __memp + 4), "0" (oldval) \ + : "memory"); \ + __ret; }) + +#define atomic_exchange_acq(mem, newvalue) \ + ({ __typeof (*(mem)) __result = *(mem); \ + if (sizeof (*(mem)) == 1) \ + __asm __volatile ("1: cas%.b %0,%2,%1;" \ + " jbne 1b" \ + : "=d" (__result), "+m" (*(mem)) \ + : "d" (newvalue), "0" (__result)); \ + else if (sizeof (*(mem)) == 2) \ + __asm __volatile ("1: cas%.w %0,%2,%1;" \ + " jbne 1b" \ + : "=d" (__result), "+m" (*(mem)) \ + : "d" (newvalue), "0" (__result)); \ + else if (sizeof (*(mem)) == 4) \ + __asm __volatile ("1: cas%.l %0,%2,%1;" \ + " jbne 1b" \ + : "=d" (__result), "+m" (*(mem)) \ + : "d" (newvalue), "0" (__result)); \ + else \ + { \ + __typeof (mem) __memp = (mem); \ + __asm __volatile ("1: cas2%.l %0:%R0,%1:%R1,(%2):(%3);" \ + " jbne 1b" \ + : "=d" (__result) \ + : "d" (newvalue), "r" (__memp), \ + "r" ((char *) __memp + 4), "0" (__result) \ + : "memory"); \ + } \ + __result; }) + +#define atomic_exchange_and_add(mem, value) \ + ({ __typeof (*(mem)) __result = *(mem); \ + __typeof (*(mem)) __temp; \ + if (sizeof (*(mem)) == 1) \ + __asm __volatile ("1: move%.b %0,%2;" \ + " add%.b %3,%2;" \ + " cas%.b %0,%2,%1;" \ + " jbne 1b" \ + : "=d" (__result), "+m" (*(mem)), \ + "=&d" (__temp) \ + : "d" (value), "0" (__result)); \ + else if (sizeof (*(mem)) == 2) \ + __asm __volatile ("1: move%.w %0,%2;" \ + " add%.w %3,%2;" \ + " cas%.w %0,%2,%1;" \ + " jbne 1b" \ + : "=d" (__result), "+m" (*(mem)), \ + "=&d" (__temp) \ + : "d" (value), "0" (__result)); \ + else if (sizeof (*(mem)) == 4) \ + __asm __volatile ("1: move%.l %0,%2;" \ + " add%.l %3,%2;" \ + " cas%.l %0,%2,%1;" \ + " jbne 1b" \ + : "=d" (__result), "+m" (*(mem)), \ + "=&d" (__temp) \ + : "d" (value), "0" (__result)); \ + else \ + { \ + __typeof (mem) __memp = (mem); \ + __asm __volatile ("1: move%.l %0,%1;" \ + " move%.l %R0,%R1;" \ + " add%.l %2,%1;" \ + " addx%.l %R2,%R1;" \ + " cas2%.l %0:%R0,%1:%R1,(%3):(%4);" \ + " jbne 1b" \ + : "=d" (__result), "=&d" (__temp) \ + : "d" (value), "r" (__memp), \ + "r" ((char *) __memp + 4), "0" (__result) \ + : "memory"); \ + } \ + __result; }) + +#define atomic_add(mem, value) \ + (void) ({ if (sizeof (*(mem)) == 1) \ + __asm __volatile ("add%.b %1,%0" \ + : "+m" (*(mem)) \ + : "id" (value)); \ + else if (sizeof (*(mem)) == 2) \ + __asm __volatile ("add%.w %1,%0" \ + : "+m" (*(mem)) \ + : "id" (value)); \ + else if (sizeof (*(mem)) == 4) \ + __asm __volatile ("add%.l %1,%0" \ + : "+m" (*(mem)) \ + : "id" (value)); \ + else \ + { \ + __typeof (mem) __memp = (mem); \ + __typeof (*(mem)) __oldval = *__memp; \ + __typeof (*(mem)) __temp; \ + __asm __volatile ("1: move%.l %0,%1;" \ + " move%.l %R0,%R1;" \ + " add%.l %2,%1;" \ + " addx%.l %R2,%R1;" \ + " cas2%.l %0:%R0,%1:%R1,(%3):(%4);" \ + " jbne 1b" \ + : "=d" (__oldval), "=&d" (__temp) \ + : "d" (value), "r" (__memp), \ + "r" ((char *) __memp + 4), "0" (__oldval) \ + : "memory"); \ + } \ + }) + +#define atomic_increment_and_test(mem) \ + ({ char __result; \ + if (sizeof (*(mem)) == 1) \ + __asm __volatile ("addq%.b %#1,%1; seq %0" \ + : "=dm" (__result), "+m" (*(mem))); \ + else if (sizeof (*(mem)) == 2) \ + __asm __volatile ("addq%.w %#1,%1; seq %0" \ + : "=dm" (__result), "+m" (*(mem))); \ + else if (sizeof (*(mem)) == 4) \ + __asm __volatile ("addq%.l %#1,%1; seq %0" \ + : "=dm" (__result), "+m" (*(mem))); \ + else \ + { \ + __typeof (mem) __memp = (mem); \ + __typeof (*(mem)) __oldval = *__memp; \ + __typeof (*(mem)) __temp; \ + __asm __volatile ("1: move%.l %1,%2;" \ + " move%.l %R1,%R2;" \ + " addq%.l %#1,%2;" \ + " addx%.l %5,%R2;" \ + " seq %0;" \ + " cas2%.l %1:%R1,%2:%R2,(%3):(%4);" \ + " jbne 1b" \ + : "=&dm" (__result), "=d" (__oldval), \ + "=&d" (__temp) \ + : "r" (__memp), "r" ((char *) __memp + 4), \ + "d" (0), "1" (__oldval) \ + : "memory"); \ + } \ + __result; }) + +#define atomic_decrement_and_test(mem) \ + ({ char __result; \ + if (sizeof (*(mem)) == 1) \ + __asm __volatile ("subq%.b %#1,%1; seq %0" \ + : "=dm" (__result), "+m" (*(mem))); \ + else if (sizeof (*(mem)) == 2) \ + __asm __volatile ("subq%.w %#1,%1; seq %0" \ + : "=dm" (__result), "+m" (*(mem))); \ + else if (sizeof (*(mem)) == 4) \ + __asm __volatile ("subq%.l %#1,%1; seq %0" \ + : "=dm" (__result), "+m" (*(mem))); \ + else \ + { \ + __typeof (mem) __memp = (mem); \ + __typeof (*(mem)) __oldval = *__memp; \ + __typeof (*(mem)) __temp; \ + __asm __volatile ("1: move%.l %1,%2;" \ + " move%.l %R1,%R2;" \ + " subq%.l %#1,%2;" \ + " subx%.l %5,%R2;" \ + " seq %0;" \ + " cas2%.l %1:%R1,%2:%R2,(%3):(%4);" \ + " jbne 1b" \ + : "=&dm" (__result), "=d" (__oldval), \ + "=&d" (__temp) \ + : "r" (__memp), "r" ((char *) __memp + 4), \ + "d" (0), "1" (__oldval) \ + : "memory"); \ + } \ + __result; }) + +#define atomic_bit_set(mem, bit) \ + __asm __volatile ("bfset %0{%1,#1}" \ + : "+m" (*(mem)) \ + : "di" (sizeof (*(mem)) * 8 - (bit) - 1)) + +#define atomic_bit_test_set(mem, bit) \ + ({ char __result; \ + __asm __volatile ("bfset %1{%2,#1}; sne %0" \ + : "=dm" (__result), "+m" (*(mem)) \ + : "di" (sizeof (*(mem)) * 8 - (bit) - 1)); \ + __result; }) diff --git a/sysdeps/m68k/m680x0/m68020/bits/string.h b/sysdeps/m68k/m680x0/m68020/bits/string.h new file mode 100644 index 0000000000..af6a776e0e --- /dev/null +++ b/sysdeps/m68k/m680x0/m68020/bits/string.h @@ -0,0 +1,25 @@ +/* Optimized, inlined string functions. m680x0 version, x >= 2. + 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 _STRING_H +# error "Never use <bits/string.h> directly; include <string.h> instead." +#endif + +/* Currently the only purpose of this file is to tell the generic inline + macros that unaligned memory access is possible. */ +#define _STRING_ARCH_unaligned 1 diff --git a/sysdeps/m68k/m680x0/m68020/mul_1.S b/sysdeps/m68k/m680x0/m68020/mul_1.S new file mode 100644 index 0000000000..67822cd1af --- /dev/null +++ b/sysdeps/m68k/m680x0/m68020/mul_1.S @@ -0,0 +1,83 @@ +/* mc68020 __mpn_mul_1 -- Multiply a limb vector with a limb and store + the result in a second limb vector. + +Copyright (C) 1992-2014 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP 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 MP 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 MP Library. If not, see <http://www.gnu.org/licenses/>. */ + +/* + INPUT PARAMETERS + res_ptr (sp + 4) + s1_ptr (sp + 8) + s1_size (sp + 12) + s2_limb (sp + 16) +*/ + +#include "sysdep.h" +#include "asm-syntax.h" + + TEXT +ENTRY(__mpn_mul_1) + +#define res_ptr a0 +#define s1_ptr a1 +#define s1_size d2 +#define s2_limb d4 + +/* Save used registers on the stack. */ + moveml R(d2)-R(d4),MEM_PREDEC(sp) + cfi_adjust_cfa_offset (3*4) + cfi_rel_offset (R(d2), 0) + cfi_rel_offset (R(d3), 4) + cfi_rel_offset (R(d4), 8) + +/* Copy the arguments to registers. Better use movem? */ + movel MEM_DISP(sp,16),R(res_ptr) + movel MEM_DISP(sp,20),R(s1_ptr) + movel MEM_DISP(sp,24),R(s1_size) + movel MEM_DISP(sp,28),R(s2_limb) + + eorw #1,R(s1_size) + clrl R(d1) + lsrl #1,R(s1_size) + bcc L(L1) + subql #1,R(s1_size) + subl R(d0),R(d0) /* (d0,cy) <= (0,0) */ + +L(Loop:) + movel MEM_POSTINC(s1_ptr),R(d3) + mulul R(s2_limb),R(d1):R(d3) + addxl R(d0),R(d3) + movel R(d3),MEM_POSTINC(res_ptr) +L(L1:) movel MEM_POSTINC(s1_ptr),R(d3) + mulul R(s2_limb),R(d0):R(d3) + addxl R(d1),R(d3) + movel R(d3),MEM_POSTINC(res_ptr) + + dbf R(s1_size),L(Loop) + clrl R(d3) + addxl R(d3),R(d0) + subl #0x10000,R(s1_size) + bcc L(Loop) + +/* Restore used registers from stack frame. */ + moveml MEM_POSTINC(sp),R(d2)-R(d4) + cfi_adjust_cfa_offset (-3*4) + cfi_restore (R(d2)) + cfi_restore (R(d3)) + cfi_restore (R(d4)) + rts +END(__mpn_mul_1) diff --git a/sysdeps/m68k/m680x0/m68020/submul_1.S b/sysdeps/m68k/m680x0/m68020/submul_1.S new file mode 100644 index 0000000000..b7c60d4b89 --- /dev/null +++ b/sysdeps/m68k/m680x0/m68020/submul_1.S @@ -0,0 +1,88 @@ +/* mc68020 __mpn_submul_1 -- Multiply a limb vector with a limb and subtract + the result from a second limb vector. + +Copyright (C) 1992-2014 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP 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 MP 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 MP Library. If not, see <http://www.gnu.org/licenses/>. */ + +/* + INPUT PARAMETERS + res_ptr (sp + 4) + s1_ptr (sp + 8) + s1_size (sp + 12) + s2_limb (sp + 16) +*/ + +#include "sysdep.h" +#include "asm-syntax.h" + + TEXT +ENTRY(__mpn_submul_1) + +#define res_ptr a0 +#define s1_ptr a1 +#define s1_size d2 +#define s2_limb d4 + +/* Save used registers on the stack. */ + moveml R(d2)-R(d5),MEM_PREDEC(sp) + cfi_adjust_cfa_offset (4*4) + cfi_rel_offset (R(d2), 0) + cfi_rel_offset (R(d3), 4) + cfi_rel_offset (R(d4), 8) + cfi_rel_offset (R(d5), 12) + +/* Copy the arguments to registers. Better use movem? */ + movel MEM_DISP(sp,20),R(res_ptr) + movel MEM_DISP(sp,24),R(s1_ptr) + movel MEM_DISP(sp,28),R(s1_size) + movel MEM_DISP(sp,32),R(s2_limb) + + eorw #1,R(s1_size) + clrl R(d1) + clrl R(d5) + lsrl #1,R(s1_size) + bcc L(L1) + subql #1,R(s1_size) + subl R(d0),R(d0) /* (d0,cy) <= (0,0) */ + +L(Loop:) + movel MEM_POSTINC(s1_ptr),R(d3) + mulul R(s2_limb),R(d1):R(d3) + addxl R(d0),R(d3) + addxl R(d5),R(d1) + subl R(d3),MEM_POSTINC(res_ptr) +L(L1:) movel MEM_POSTINC(s1_ptr),R(d3) + mulul R(s2_limb),R(d0):R(d3) + addxl R(d1),R(d3) + addxl R(d5),R(d0) + subl R(d3),MEM_POSTINC(res_ptr) + + dbf R(s1_size),L(Loop) + addxl R(d5),R(d0) + subl #0x10000,R(s1_size) + bcc L(Loop) + +/* Restore used registers from stack frame. */ + moveml MEM_POSTINC(sp),R(d2)-R(d5) + cfi_adjust_cfa_offset (-4*4) + cfi_restore (R(d2)) + cfi_restore (R(d3)) + cfi_restore (R(d4)) + cfi_restore (R(d5)) + + rts +END(__mpn_submul_1) diff --git a/sysdeps/m68k/m680x0/m68020/wordcopy.S b/sysdeps/m68k/m680x0/m68020/wordcopy.S new file mode 100644 index 0000000000..4fb1a4518f --- /dev/null +++ b/sysdeps/m68k/m680x0/m68020/wordcopy.S @@ -0,0 +1 @@ +/* Empty, not needed. */ diff --git a/sysdeps/m68k/m680x0/printf_fphex.c b/sysdeps/m68k/m680x0/printf_fphex.c new file mode 100644 index 0000000000..d021a090ab --- /dev/null +++ b/sysdeps/m68k/m680x0/printf_fphex.c @@ -0,0 +1,2 @@ +#define LONG_DOUBLE_DENORM_BIAS IEEE854_LONG_DOUBLE_BIAS +#include <sysdeps/ieee754/ldbl-96/printf_fphex.c> diff --git a/sysdeps/m68k/m680x0/rshift.S b/sysdeps/m68k/m680x0/rshift.S new file mode 100644 index 0000000000..e2d335405c --- /dev/null +++ b/sysdeps/m68k/m680x0/rshift.S @@ -0,0 +1,167 @@ +/* mc68020 __mpn_rshift -- Shift right a low-level natural-number integer. + +Copyright (C) 1996-2014 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP 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 MP 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 MP Library. If not, see <http://www.gnu.org/licenses/>. */ + +/* + INPUT PARAMETERS + res_ptr (sp + 4) + s_ptr (sp + 8) + s_size (sp + 16) + cnt (sp + 12) +*/ + +#include "sysdep.h" +#include "asm-syntax.h" + +#define res_ptr a1 +#define s_ptr a0 +#define s_size d6 +#define cnt d4 + + TEXT +ENTRY(__mpn_rshift) +/* Save used registers on the stack. */ + moveml R(d2)-R(d6)/R(a2),MEM_PREDEC(sp) + cfi_adjust_cfa_offset (6*4) + cfi_rel_offset (R(d2), 0) + cfi_rel_offset (R(d3), 4) + cfi_rel_offset (R(d4), 8) + cfi_rel_offset (R(d5), 12) + cfi_rel_offset (R(d6), 16) + cfi_rel_offset (R(a2), 20) + +/* Copy the arguments to registers. */ + movel MEM_DISP(sp,28),R(res_ptr) + movel MEM_DISP(sp,32),R(s_ptr) + movel MEM_DISP(sp,36),R(s_size) + movel MEM_DISP(sp,40),R(cnt) + + moveql #1,R(d5) + cmpl R(d5),R(cnt) + bne L(Lnormal) + cmpl R(res_ptr),R(s_ptr) + bls L(Lspecial) /* jump if res_ptr >= s_ptr */ +#if (defined (__mc68020__) || defined (__NeXT__) || defined(mc68020)) + lea MEM_INDX1(res_ptr,s_size,l,4),R(a2) +#else /* not mc68020 */ + movel R(s_size),R(d0) + asll #2,R(d0) + lea MEM_INDX(res_ptr,d0,l),R(a2) +#endif + cmpl R(s_ptr),R(a2) + bls L(Lspecial) /* jump if s_ptr >= res_ptr + s_size */ + +L(Lnormal:) + moveql #32,R(d5) + subl R(cnt),R(d5) + movel MEM_POSTINC(s_ptr),R(d2) + movel R(d2),R(d0) + lsll R(d5),R(d0) /* compute carry limb */ + + lsrl R(cnt),R(d2) + movel R(d2),R(d1) + subql #1,R(s_size) + beq L(Lend) + lsrl #1,R(s_size) + bcs L(L1) + subql #1,R(s_size) + +L(Loop:) + movel MEM_POSTINC(s_ptr),R(d2) + movel R(d2),R(d3) + lsll R(d5),R(d3) + orl R(d3),R(d1) + movel R(d1),MEM_POSTINC(res_ptr) + lsrl R(cnt),R(d2) +L(L1:) + movel MEM_POSTINC(s_ptr),R(d1) + movel R(d1),R(d3) + lsll R(d5),R(d3) + orl R(d3),R(d2) + movel R(d2),MEM_POSTINC(res_ptr) + lsrl R(cnt),R(d1) + + dbf R(s_size),L(Loop) + subl #0x10000,R(s_size) + bcc L(Loop) + +L(Lend:) + movel R(d1),MEM(res_ptr) /* store most significant limb */ + +/* Restore used registers from stack frame. */ + moveml MEM_POSTINC(sp),R(d2)-R(d6)/R(a2) + cfi_remember_state + cfi_adjust_cfa_offset (-6*4) + cfi_restore (R(d2)) + cfi_restore (R(d3)) + cfi_restore (R(d4)) + cfi_restore (R(d5)) + cfi_restore (R(d6)) + cfi_restore (R(a2)) + rts + +/* We loop from most significant end of the arrays, which is only + permissible if the source and destination don't overlap, since the + function is documented to work for overlapping source and destination. */ + + cfi_restore_state +L(Lspecial:) +#if (defined (__mc68020__) || defined (__NeXT__) || defined(mc68020)) + lea MEM_INDX1(s_ptr,s_size,l,4),R(s_ptr) + lea MEM_INDX1(res_ptr,s_size,l,4),R(res_ptr) +#else /* not mc68000 */ + movel R(s_size),R(d0) + asll #2,R(d0) + addl R(s_size),R(s_ptr) + addl R(s_size),R(res_ptr) +#endif + + clrl R(d0) /* initialize carry */ + eorw #1,R(s_size) + lsrl #1,R(s_size) + bcc L(LL1) + subql #1,R(s_size) + +L(LLoop:) + movel MEM_PREDEC(s_ptr),R(d2) + roxrl #1,R(d2) + movel R(d2),MEM_PREDEC(res_ptr) +L(LL1:) + movel MEM_PREDEC(s_ptr),R(d2) + roxrl #1,R(d2) + movel R(d2),MEM_PREDEC(res_ptr) + + dbf R(s_size),L(LLoop) + roxrl #1,R(d0) /* save cy in msb */ + subl #0x10000,R(s_size) + bcs L(LLend) + addl R(d0),R(d0) /* restore cy */ + bra L(LLoop) + +L(LLend:) +/* Restore used registers from stack frame. */ + moveml MEM_POSTINC(sp),R(d2)-R(d6)/R(a2) + cfi_adjust_cfa_offset (-6*4) + cfi_restore (R(d2)) + cfi_restore (R(d3)) + cfi_restore (R(d4)) + cfi_restore (R(d5)) + cfi_restore (R(d6)) + cfi_restore (R(a2)) + rts +END(__mpn_rshift) diff --git a/sysdeps/m68k/m680x0/strtold_l.c b/sysdeps/m68k/m680x0/strtold_l.c new file mode 100644 index 0000000000..481d9924c2 --- /dev/null +++ b/sysdeps/m68k/m680x0/strtold_l.c @@ -0,0 +1,2 @@ +#define DENORM_EXP (MIN_EXP - 1) +#include <sysdeps/ieee754/ldbl-96/strtold_l.c> diff --git a/sysdeps/m68k/m680x0/sub_n.S b/sysdeps/m68k/m680x0/sub_n.S new file mode 100644 index 0000000000..6c6d92e6f5 --- /dev/null +++ b/sysdeps/m68k/m680x0/sub_n.S @@ -0,0 +1,82 @@ +/* mc68020 __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and + store difference in a third limb vector. + +Copyright (C) 1992-2014 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP 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 MP 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 MP Library. If not, see <http://www.gnu.org/licenses/>. */ + +/* + INPUT PARAMETERS + res_ptr (sp + 4) + s1_ptr (sp + 8) + s2_ptr (sp + 16) + size (sp + 12) +*/ + +#include "sysdep.h" +#include "asm-syntax.h" + + TEXT +ENTRY(__mpn_sub_n) +/* Save used registers on the stack. */ + movel R(d2),MEM_PREDEC(sp) + cfi_adjust_cfa_offset (4) + movel R(a2),MEM_PREDEC(sp) + cfi_adjust_cfa_offset (4) + cfi_rel_offset (R(d2), 4) + cfi_rel_offset (R(a2), 0) + +/* Copy the arguments to registers. Better use movem? */ + movel MEM_DISP(sp,12),R(a2) + movel MEM_DISP(sp,16),R(a0) + movel MEM_DISP(sp,20),R(a1) + movel MEM_DISP(sp,24),R(d2) + + eorw #1,R(d2) + lsrl #1,R(d2) + bcc L(L1) + subql #1,R(d2) /* clears cy as side effect */ + +L(Loop:) + movel MEM_POSTINC(a0),R(d0) + movel MEM_POSTINC(a1),R(d1) + subxl R(d1),R(d0) + movel R(d0),MEM_POSTINC(a2) +L(L1:) movel MEM_POSTINC(a0),R(d0) + movel MEM_POSTINC(a1),R(d1) + subxl R(d1),R(d0) + movel R(d0),MEM_POSTINC(a2) + + dbf R(d2),L(Loop) /* loop until 16 lsb of %4 == -1 */ + subxl R(d0),R(d0) /* d0 <= -cy; save cy as 0 or -1 in d0 */ + subl #0x10000,R(d2) + bcs L(L2) + addl R(d0),R(d0) /* restore cy */ + bra L(Loop) + +L(L2:) + negl R(d0) + +/* Restore used registers from stack frame. */ + movel MEM_POSTINC(sp),R(a2) + cfi_adjust_cfa_offset (-4) + cfi_restore (R(a2)) + movel MEM_POSTINC(sp),R(d2) + cfi_adjust_cfa_offset (-4) + cfi_restore (R(d2)) + + rts +END(__mpn_sub_n) diff --git a/sysdeps/m68k/m680x0/sysdep.h b/sysdeps/m68k/m680x0/sysdep.h new file mode 100644 index 0000000000..40526176f1 --- /dev/null +++ b/sysdeps/m68k/m680x0/sysdep.h @@ -0,0 +1,39 @@ +/* Assembler macros for m680x0. + Copyright (C) 2010-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/m68k/sysdep.h> + +#ifdef __ASSEMBLER__ + +/* Perform operation OP with PC-relative SRC as the first operand and + DST as the second. TMP is available as a temporary if needed. */ +# define PCREL_OP(OP, SRC, DST, TMP) \ + OP SRC(%pc), DST + +/* Load the address of the GOT into register R. */ +# define LOAD_GOT(R) \ + lea _GLOBAL_OFFSET_TABLE_@GOTPC (%pc), R + +#else + +/* As above, but PC is the spelling of the PC register. We need this + so that the macro can be used in both normal and extended asms. */ +#define PCREL_OP(OP, SRC, DST, TMP, PC) \ + OP " " SRC "(" PC "), " DST + +#endif /* __ASSEMBLER__ */ |