$ gcc -v -O3 -fPIC -S atan2l.i
Reading specs from /usr/lib/gcc-lib/m68k-linux/2.7.1/specs
gcc version 2.7.1
/usr/lib/gcc-lib/m68k-linux/2.7.1/cc1 atan2l.i -quiet -O3 -version -fPIC -o atan2l.s
GNU C version 2.7.1 (68k Linux/ELF) compiled by GNU C version 2.7.0.
atan2l.c: In function `atan2l':
atan2l.c:83: internal error--unrecognizable insn:
(insn 539 120 122 (set (reg:XF 22 %fp6)
(mem/u:XF (symbol_ref/u:SI ("*.LC6")))) -1 (nil)
(nil))
gcc: Internal compiler error: program cc1 got fatal signal 6
------------------------------------------------------------
# 1 "atan2l.c"
# 1 "../../../../../include/ansidecl.h" 1 3
# 105 "../../../../../include/ansidecl.h" 3
# 20 "atan2l.c" 2
# 1 "fp.h" 1
long double acoshl( long double _x);
long double acosl ( long double _x);
long double asinhl ( long double _x);
long double asinl ( long double _x);
long double atanl ( long double _x);
long double atan2l( long double _x, long double _y);
long double atanhl( long double _x);
long double fabsl ( long double _x);
long double floorl( long double _x);
long double fmodl ( long double _x, long double _y);
long double hypotl( long double _x, long double _y);
long double sqrtl ( long double _x);
long double sinl ( long double _x);
long double logl ( long double _x);
long double expl ( long double _x);
int fpclassifyf( float _x);
int fpclassifyd( double _x);
int fpclassifyl( long double _x);
long double __infnanl( int error);
# 21 "atan2l.c" 2
# 1 "../../../../../include/math.h" 1 3
# 1 "../../../../../include/features.h" 1 3
# 1 "../../../../../include/sys/cdefs.h" 1 3
# 1 "../../../../../include/features.h" 1 3
# 136 "../../../../../include/features.h" 3
# 24 "../../../../../include/sys/cdefs.h" 2 3
# 50 "../../../../../include/sys/cdefs.h" 3
# 100 "../../../../../include/sys/cdefs.h" 3
typedef long double __long_double_t;
# 128 "../../../../../include/sys/cdefs.h" 3
# 134 "../../../../../include/features.h" 2 3
# 26 "../../../../../include/math.h" 2 3
extern double atan2 (double __y, double __x) __attribute__ ((const)) ;
# 60 "../../../../../include/math.h" 3
extern double acosh (double __x) __attribute__ ((const)) ;
extern double asinh (double __x) __attribute__ ((const)) ;
# 97 "../../../../../include/math.h" 3
extern double cbrt (double __x) __attribute__ ((const)) ;
# 136 "../../../../../include/math.h" 3
extern int __finite (double __value) __attribute__ ((const)) ;
extern double __infnan (int __error) ;
extern double __copysign (double __x,
double __y) __attribute__ ((const)) ;
extern double hypot (double __x, double __y) __attribute__ ((const)) ;
extern int isinf (double __value) __attribute__ ((const)) ;
extern int isnan (double __value) __attribute__ ((const)) ;
extern int finite (double __value) __attribute__ ((const)) ;
extern double infnan (int __error) __attribute__ ((const)) ;
extern double copysign (double __x,
double __y) __attribute__ ((const)) ;
extern double drem (double __x, double __y) __attribute__ ((const)) ;
extern double pow2 (double __x) __attribute__ ((const)) ;
extern double pow10 (double __x) __attribute__ ((const)) ;
extern double erf (double __x) __attribute__ ((const)) ;
extern double erfc (double __x) __attribute__ ((const)) ;
extern double j0 (double __x) __attribute__ ((const)) ;
extern double j1 (double __x) __attribute__ ((const)) ;
extern double jn (int __n, double __x) __attribute__ ((const)) ;
extern double lgamma (double __x) __attribute__ ((const)) ;
extern double y0 (double __x) __attribute__ ((const)) ;
extern double y1 (double __x) __attribute__ ((const)) ;
extern double yn (int __n, double __x) __attribute__ ((const)) ;
extern __long_double_t acoshl (__long_double_t __x) ;
extern __long_double_t asinhl (__long_double_t __x) ;
# 246 "../../../../../include/math.h" 3
extern __long_double_t atan2l (__long_double_t __y, __long_double_t __x) ;
extern __long_double_t hypotl (__long_double_t __x, __long_double_t __y) __attribute__ ((const)) ;
extern __long_double_t erfl (__long_double_t __x) ;
extern __long_double_t erfcl (__long_double_t __x) ;
extern __long_double_t lgammal (__long_double_t __x) ;
extern __long_double_t j0l (__long_double_t __x) ;
extern __long_double_t y0l (__long_double_t __x) ;
extern __long_double_t j1l (__long_double_t __x) ;
extern __long_double_t y1l (__long_double_t __x) ;
extern __long_double_t jnl (int __n, __long_double_t __x) ;
extern __long_double_t ynl (int __n, __long_double_t __x) ;
extern __long_double_t cbrtl (__long_double_t __x) ;
# 286 "../../../../../include/math.h" 3
extern int signgam;
# 1 "../../../../../include/huge_val.h" 1 3
# 1 "../../../../../include/endian.h" 1 3
# 1 "../../../../../include/bytesex.h" 1 3
# 34 "../../../../../include/endian.h" 2 3
# 27 "../../../../../include/huge_val.h" 2 3
# 293 "../../../../../include/math.h" 2 3
# 1 "../../../../../include/nan.h" 1 3
# 46 "../../../../../include/nan.h" 3
# 71 "../../../../../include/nan.h" 3
# 86 "../../../../../include/nan.h" 3
# 297 "../../../../../include/math.h" 2 3
# 1 "/usr/lib/gcc-lib/m68k-linux/2.7.1/include/float.h" 1 3
# 300 "../../../../../include/math.h" 2 3
# 1 "../../../../../include/values.h" 1 3
# 65 "../../../../../include/values.h" 3
# 183 "../../../../../include/values.h" 3
# 301 "../../../../../include/math.h" 2 3
# 1 "../../../../../include/m68k/__math.h" 1 3
# 42 "../../../../../include/m68k/__math.h" 3
# 54 "../../../../../include/m68k/__math.h" 3
extern __inline double acos (double __mathop_x) __attribute__ ((const)) ; extern __inline double acos (double __mathop_x) { double __result; __asm("f" "acos" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double asin (double __mathop_x) __attribute__ ((const)) ; extern __inline double asin (double __mathop_x) { double __result; __asm("f" "asin" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double atan (double __mathop_x) __attribute__ ((const)) ; extern __inline double atan (double __mathop_x) { double __result; __asm("f" "atan" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double cos (double __mathop_x) __attribute__ ((const)) ; extern __inline double cos (double __mathop_x) { double __result; __asm("f" "cos" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double sin (double __mathop_x) __attribute__ ((const)) ; extern __inline double sin (double __mathop_x) { double __result; __asm("f" "sin" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double tan (double __mathop_x) __attribute__ ((const)) ; extern __inline double tan (double __mathop_x) { double __result; __asm("f" "tan" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double cosh (double __mathop_x) __attribute__ ((const)) ; extern __inline double cosh (double __mathop_x) { double __result; __asm("f" "cosh" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double sinh (double __mathop_x) __attribute__ ((const)) ; extern __inline double sinh (double __mathop_x) { double __result; __asm("f" "sinh" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double tanh (double __mathop_x) __attribute__ ((const)) ; extern __inline double tanh (double __mathop_x) { double __result; __asm("f" "tanh" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double exp (double __mathop_x) __attribute__ ((const)) ; extern __inline double exp (double __mathop_x) { double __result; __asm("f" "etox" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double fabs (double __mathop_x) __attribute__ ((const)) ; extern __inline double fabs (double __mathop_x) { double __result; __asm("f" "abs" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double log10 (double __mathop_x) __attribute__ ((const)) ; extern __inline double log10 (double __mathop_x) { double __result; __asm("f" "log10" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double log (double __mathop_x) __attribute__ ((const)) ; extern __inline double log (double __mathop_x) { double __result; __asm("f" "logn" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double sqrt (double __mathop_x) __attribute__ ((const)) ; extern __inline double sqrt (double __mathop_x) { double __result; __asm("f" "sqrt" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double acosl (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double acosl (long double __mathop_x) { long double __result; __asm("f" "acos" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double asinl (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double asinl (long double __mathop_x) { long double __result; __asm("f" "asin" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double atanl (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double atanl (long double __mathop_x) { long double __result; __asm("f" "atan" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double cosl (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double cosl (long double __mathop_x) { long double __result; __asm("f" "cos" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double sinl (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double sinl (long double __mathop_x) { long double __result; __asm("f" "sin" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double tanl (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double tanl (long double __mathop_x) { long double __result; __asm("f" "tan" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double coshl (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double coshl (long double __mathop_x) { long double __result; __asm("f" "cosh" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double sinhl (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double sinhl (long double __mathop_x) { long double __result; __asm("f" "sinh" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double tanhl (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double tanhl (long double __mathop_x) { long double __result; __asm("f" "tanh" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double expl (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double expl (long double __mathop_x) { long double __result; __asm("f" "etox" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double fabsl (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double fabsl (long double __mathop_x) { long double __result; __asm("f" "abs" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double log2l (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double log2l (long double __mathop_x) { long double __result; __asm("f" "log2" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double log10l (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double log10l (long double __mathop_x) { long double __result; __asm("f" "log10" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double logl (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double logl (long double __mathop_x) { long double __result; __asm("f" "logn" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double sqrtl (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double sqrtl (long double __mathop_x) { long double __result; __asm("f" "sqrt" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double __expm1 (double __mathop_x) __attribute__ ((const)) ; extern __inline double __expm1 (double __mathop_x) { double __result; __asm("f" "etoxm1" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double __expm1l (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double __expm1l (long double __mathop_x) { long double __result; __asm("f" "etoxm1" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double expm1 (double __mathop_x) __attribute__ ((const)) ; extern __inline double expm1 (double __mathop_x) { double __result; __asm("f" "etoxm1" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double log1p (double __mathop_x) __attribute__ ((const)) ; extern __inline double log1p (double __mathop_x) { double __result; __asm("f" "lognp1" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double atanh (double __mathop_x) __attribute__ ((const)) ; extern __inline double atanh (double __mathop_x) { double __result; __asm("f" "atanh" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double expm1l (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double expm1l (long double __mathop_x) { long double __result; __asm("f" "etoxm1" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double log1pl (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double log1pl (long double __mathop_x) { long double __result; __asm("f" "lognp1" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline long double atanhl (long double __mathop_x) __attribute__ ((const)) ; extern __inline long double atanhl (long double __mathop_x) { long double __result; __asm("f" "atanh" "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x)); return __result; }
extern __inline double
__drem (double __x, double __y) __attribute__ ((const)) ;
extern __inline double
__drem (double __x, double __y)
{
double __result;
__asm("frem%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x));
return __result;
}
extern __inline double
ldexp (double __x, int __e) __attribute__ ((const)) ;
extern __inline double
ldexp (double __x, int __e)
{
double __result;
double __double_e = (double) __e;
__asm("fscale%.x %1, %0" : "=f" (__result) : "f" (__double_e), "0" (__x));
return __result;
}
extern __inline double
fmod (double __x, double __y) __attribute__ ((const)) ;
extern __inline double
fmod (double __x, double __y)
{
double __result;
__asm("fmod%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x));
return __result;
}
extern __inline double
frexp (double __value, int *__expptr);
extern __inline double
frexp (double __value, int *__expptr)
{
double __mantissa, __exponent;
__asm("fgetexp%.x %1, %0" : "=f" (__exponent) : "f" (__value));
__asm("fgetman%.x %1, %0" : "=f" (__mantissa) : "f" (__value));
*__expptr = (int) __exponent;
return __mantissa;
}
extern __inline double
floor (double __x) __attribute__ ((const)) ;
extern __inline double
floor (double __x)
{
double __result;
unsigned long int __ctrl_reg;
__asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg));
__asm __volatile__ ("fmove%.l %0, %!" :
: "dmi" ((__ctrl_reg & ~0x10) | 0x20));
__asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x));
__asm __volatile__ ("fmove%.l %0, %!" :
: "dmi" (__ctrl_reg));
return __result;
}
extern __inline double
__rint (double __x) __attribute__ ((const)) ;
extern __inline double
__rint (double __x)
{
double __result;
unsigned long int __ctrl_reg;
__asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg));
__asm __volatile__ ("fmove%.l %0, %!" :
: "dmi" (__ctrl_reg & ~0x30));
__asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x));
__asm __volatile__ ("fmove%.l %0, %!" :
: "dmi" (__ctrl_reg));
return __result;
}
extern __inline double
rint (double __x) __attribute__ ((const)) ;
extern __inline double
rint (double __x)
{
return __rint (__x);
}
extern __inline double
pow (double __x, double __y) __attribute__ ((const)) ;
extern __inline double
pow (double __x, double __y)
{
double __result;
if (__x == 0.0)
{
if (__y == 0.0)
__result = __infnan (0);
else
__result = 0.0;
}
else if (__y == 0.0 || __x == 1.0)
__result = 1.0;
else if (__y == 1.0)
__result = __x;
else if (__y == 2.0)
__result = __x * __x;
else if (__x == 10.0)
__asm("ftentox%.x %1, %0" : "=f" (__result) : "f" (__y));
else if (__x == 2.0)
__asm("ftwotox%.x %1, %0" : "=f" (__result) : "f" (__y));
else if (__x < 0.0)
{
double __temp = floor (__y);
if (__y == __temp)
{
int i = (int) __y;
__result = exp (__y * log (-__x));
if (i & 1)
__result = -__result;
}
else
__result = __infnan (0);
}
else
__result = exp (__y * log (__x));
return __result;
}
extern __inline double
ceil (double __x) __attribute__ ((const)) ;
extern __inline double
ceil (double __x)
{
double __result;
unsigned long int __ctrl_reg;
__asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg));
__asm __volatile__ ("fmove%.l %0, %!" :
: "dmi" (__ctrl_reg | 0x30));
__asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x));
__asm __volatile__ ("fmove%.l %0, %!" :
: "dmi" (__ctrl_reg));
return __result;
}
extern __inline double
modf (double __value, double *__iptr);
extern __inline double
modf (double __value, double *__iptr)
{
double __modf_int = floor (__value);
*__iptr = __modf_int;
return __value - __modf_int;
}
extern __inline int
__isinf (double __value) __attribute__ ((const)) ;
extern __inline int
__isinf (double __value)
{
unsigned long int __fpsr;
__asm("ftst%.x %1\n"
"fmove%.l %!, %0" : "=dm" (__fpsr) : "f" (__value));
return (__fpsr & (2 << (3 * 8))) ? (__value < 0 ? -1 : 1) : 0;
}
extern __inline int
__isnan (double __value) __attribute__ ((const)) ;
extern __inline int
__isnan (double __value)
{
char __result;
__asm("ftst%.x %1\n"
"fsun %0" : "=dm" (__result) : "f" (__value));
return __result;
}
extern __inline long double
__dreml (long double __x, long double __y) __attribute__ ((const)) ;
extern __inline long double
__dreml (long double __x, long double __y)
{
long double __result;
__asm("frem%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x));
return __result;
}
extern __inline long double
ldexpl (long double __x, int __e) __attribute__ ((const)) ;
extern __inline long double
ldexpl (long double __x, int __e)
{
long double __result;
long double __double_e = (long double) __e;
__asm("fscale%.x %1, %0" : "=f" (__result) : "f" (__double_e), "0" (__x));
return __result;
}
extern __inline long double
fmodl (long double __x, long double __y) __attribute__ ((const)) ;
extern __inline long double
fmodl (long double __x, long double __y)
{
long double __result;
__asm("fmod%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x));
return __result;
}
extern __inline long double
frexpl (long double __value, int *__expptr);
extern __inline long double
frexpl (long double __value, int *__expptr)
{
long double __mantissa, __exponent;
__asm("fgetexp%.x %1, %0" : "=f" (__exponent) : "f" (__value));
__asm("fgetman%.x %1, %0" : "=f" (__mantissa) : "f" (__value));
*__expptr = (int) __exponent;
return __mantissa;
}
extern __inline long double
floorl (long double __x) __attribute__ ((const)) ;
extern __inline long double
floorl (long double __x)
{
long double __result;
unsigned long int __ctrl_reg;
__asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg));
__asm __volatile__ ("fmove%.l %0, %!" :
: "dmi" ((__ctrl_reg & ~0x10) | 0x20));
__asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x));
__asm __volatile__ ("fmove%.l %0, %!" :
: "dmi" (__ctrl_reg));
return __result;
}
extern __inline long double
__rintl (long double __x) __attribute__ ((const)) ;
extern __inline long double
__rintl (long double __x)
{
long double __result;
unsigned long int __ctrl_reg;
__asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg));
__asm __volatile__ ("fmove%.l %0, %!" :
: "dmi" (__ctrl_reg & ~0x30));
__asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x));
__asm __volatile__ ("fmove%.l %0, %!" :
: "dmi" (__ctrl_reg));
return __result;
}
extern __inline long double
rintl (long double __x) __attribute__ ((const)) ;
extern __inline long double
rintl (long double __x)
{
return __rintl (__x);
}
extern long double __infnanl (int error);
extern __inline long double
powl (long double __x, long double __y) __attribute__ ((const)) ;
extern __inline long double
powl (long double __x, long double __y)
{
long double __result;
if (__x == 0.0L)
{
if (__y == 0.0L)
__result = __infnanl (0);
else
__result = 0.0L;
}
else if (__y == 0.0L || __x == 1.0L)
__result = 1.0L;
else if (__y == 1.0L)
__result = __x;
else if (__y == 2.0L)
__result = __x * __x;
else if (__x == 10.0L)
__asm("ftentox%.x %1, %0" : "=f" (__result) : "f" (__y));
else if (__x == 2.0L)
__asm("ftwotox%.x %1, %0" : "=f" (__result) : "f" (__y));
else if (__x < 0.0L)
{
long double __temp = floorl (__y);
if (__y == __temp)
{
int i = (int) __y;
__result = expl (__y * logl (-__x));
if (i & 1)
__result = -__result;
}
else
__result = __infnanl (0);
}
else
__result = expl (__y * logl (__x));
return __result;
}
extern __inline long double
ceill (long double __x) __attribute__ ((const)) ;
extern __inline long double
ceill (long double __x)
{
long double __result;
unsigned long int __ctrl_reg;
__asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg));
__asm __volatile__ ("fmove%.l %0, %!" :
: "dmi" (__ctrl_reg | 0x30));
__asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x));
__asm __volatile__ ("fmove%.l %0, %!" :
: "dmi" (__ctrl_reg));
return __result;
}
extern __inline long double
modfl (long double __value, long double *__iptr);
extern __inline long double
modfl (long double __value, long double *__iptr)
{
long double __modf_int = floorl (__value);
*__iptr = __modf_int;
return __value - __modf_int;
}
extern __inline int
__isinfl (long double __value) __attribute__ ((const)) ;
extern __inline int
__isinfl (long double __value)
{
unsigned long int __fpsr;
__asm("ftst%.x %1\n"
"fmove%.l %!, %0" : "=g" (__fpsr) : "f" (__value));
return (__fpsr & (2 << (3 * 8))) ? (__value < 0 ? -1 : 1) : 0;
}
extern __inline int
__isnanl (long double __value) __attribute__ ((const)) ;
extern __inline int
__isnanl (long double __value)
{
char __result;
__asm("ftst%.x %1\n"
"fsun %0" : "=g" (__result) : "f" (__value));
return __result;
}
# 359 "../../../../../include/math.h" 2 3
# 22 "atan2l.c" 2
# 1 "../../../../../include/ieee854.h" 1 3
union ieee854_double
{
long double d;
struct
{
unsigned int negative:1;
unsigned int exponent:15;
unsigned int empty:16;
unsigned int mantissa0:32;
unsigned int mantissa1:32;
} ieee;
struct
{
unsigned int negative:1;
unsigned int exponent:15;
unsigned int empty:16;
unsigned int one:1;
unsigned int quiet_nan:1;
unsigned int mantissa0:30;
unsigned int mantissa1:32;
# 67 "../../../../../include/ieee854.h" 3
} ieee_nan;
};
# 26 "atan2l.c" 2
static long double
__copysignl ( long double x , long double y )
{
union ieee854_double *ux = (union ieee854_double *) &x;
union ieee854_double *uy = (union ieee854_double *) &y;
ux->ieee.negative = uy->ieee.negative;
return x;
}
long double
atan2l ( long double y , long double x )
{
long double one = 1.0, zero = 0.0;
long double signx, signy;
long double pi, PIo4, PIo2;
if (__isnanl(x))
return x;
if (__isnanl(y))
return y;
signy = __copysignl(one, y);
signx = __copysignl(one, x);
asm("fmovecr%.x %1, %0" : "=f" (pi) : "i" (0));
PIo2 = pi / 2;
PIo4 = pi / 4;
if (y == zero)
return signx == one ? y : __copysignl(pi, signy);
if (x == zero)
return __copysignl(PIo2, signy);
if (__isinfl(x))
{
if (__isinfl(y))
return __copysignl(signx == one ? PIo4 : 3 * PIo4, signy);
else
return __copysignl(signx == one ? zero : pi, signy);
}
if (__isinfl(y))
return __copysignl(PIo2, signy);
y = fabsl(y);
if (x < 0.0)
return __copysignl(pi - atanl(y / -x), signy);
return __copysignl(atanl(y / x), signy);
}
------------------------------------------------------------