This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: long double test failures due to underflow exception getting set?


On Thu, 2017-07-20 at 17:32 +0000, Wilco Dijkstra wrote:
> Carlos wrote:
> > 
> > Neither DJ nor Szabolcs's glibc 2.26 builds showed those failures:
> Actually Szabolcs mentioned trunk GCC has some issues with long double.
> I don't know the details but I imagine GCC lifts some FP operations across
> fegetenv/fesetenv calls (or similar) which may be a bug depending on the
> optimization setting (I guess you need -ftrapping-math to block such
> lifting).
> 
> Wilco

Yes, this does appear to be a GCC bug.  I have created a test case that
I can submit to GCC where the code does the right thing at -O0 and the
wrong thing with -O2.  I tried using -ftrapping-math but that didn't
help.  I will submit a GCC bug shortly, here is the test case if you
are interested, it is based on e_expl.c but can be compiled as a
standalone program.

Steve Ellcey
sellcey@cavium.com
extern void __chk_fail (void) __attribute__ ((__noreturn__));
typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
typedef signed long int __int64_t;
typedef unsigned long int __uint64_t;
typedef long int __quad_t;
typedef unsigned long int __u_quad_t;
typedef long int __intmax_t;
typedef unsigned long int __uintmax_t;
typedef unsigned long int __dev_t;
typedef unsigned int __uid_t;
typedef unsigned int __gid_t;
typedef unsigned long int __ino_t;
typedef unsigned long int __ino64_t;
typedef unsigned int __mode_t;
typedef unsigned int __nlink_t;
typedef long int __off_t;
typedef long int __off64_t;
typedef int __pid_t;
typedef struct { int __val[2]; } __fsid_t;
typedef long int __clock_t;
typedef unsigned long int __rlim_t;
typedef unsigned long int __rlim64_t;
typedef unsigned int __id_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
typedef int __daddr_t;
typedef int __key_t;
typedef int __clockid_t;
typedef void * __timer_t;
typedef int __blksize_t;
typedef long int __blkcnt_t;
typedef long int __blkcnt64_t;
typedef unsigned long int __fsblkcnt_t;
typedef unsigned long int __fsblkcnt64_t;
typedef unsigned long int __fsfilcnt_t;
typedef unsigned long int __fsfilcnt64_t;
typedef long int __fsword_t;
typedef long int __ssize_t;
typedef long int __syscall_slong_t;
typedef unsigned long int __syscall_ulong_t;
typedef __off64_t __loff_t;
typedef __quad_t *__qaddr_t;
typedef char *__caddr_t;
typedef long int __intptr_t;
typedef unsigned int __socklen_t;
typedef int __sig_atomic_t;
static __inline unsigned int
__bswap_32 (unsigned int __bsx)
{
  return __builtin_bswap32 (__bsx);
}
static __inline __uint64_t
__bswap_64 (__uint64_t __bsx)
{
  return __builtin_bswap64 (__bsx);
}
static __inline __uint16_t
__uint16_identity (__uint16_t __x)
{
  return __x;
}
static __inline __uint32_t
__uint32_identity (__uint32_t __x)
{
  return __x;
}
static __inline __uint64_t
__uint64_identity (__uint64_t __x)
{
  return __x;
}
union ieee754_float
  {
    float f;
    struct
      {
 unsigned int mantissa:23;
 unsigned int exponent:8;
 unsigned int negative:1;
      } ieee;
    struct
      {
 unsigned int mantissa:22;
 unsigned int quiet_nan:1;
 unsigned int exponent:8;
 unsigned int negative:1;
      } ieee_nan;
  };
union ieee754_double
  {
    double d;
    struct
      {
 unsigned int mantissa1:32;
 unsigned int mantissa0:20;
 unsigned int exponent:11;
 unsigned int negative:1;
      } ieee;
    struct
      {
 unsigned int mantissa1:32;
 unsigned int mantissa0:19;
 unsigned int quiet_nan:1;
 unsigned int exponent:11;
 unsigned int negative:1;
      } ieee_nan;
  };
union ieee854_long_double
  {
    long double d;
    struct
      {
 unsigned int mantissa3:32;
 unsigned int mantissa2:32;
 unsigned int mantissa1:32;
 unsigned int mantissa0:16;
 unsigned int exponent:15;
 unsigned int negative:1;
      } ieee;
    struct
      {
 unsigned int mantissa3:32;
 unsigned int mantissa2:32;
 unsigned int mantissa1:32;
 unsigned int mantissa0:15;
 unsigned int quiet_nan:1;
 unsigned int exponent:15;
 unsigned int negative:1;
      } ieee_nan;
  };
typedef float float_t;
typedef double double_t;
enum
  {
    FP_INT_UPWARD =
      0,
    FP_INT_DOWNWARD =
      1,
    FP_INT_TOWARDZERO =
      2,
    FP_INT_TONEARESTFROMZERO =
      3,
    FP_INT_TONEAREST =
      4,
  };
extern int __fpclassify (double __value) __attribute__ ((__nothrow__ ))
     __attribute__ ((__const__));
extern int __signbit (double __value) __attribute__ ((__nothrow__ ))
     __attribute__ ((__const__));
extern int __isinf (double __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int __finite (double __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int __isnan (double __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int __iseqsig (double __x, double __y) __attribute__ ((__nothrow__ ));
extern int __issignaling (double __value) __attribute__ ((__nothrow__ ))
     __attribute__ ((__const__));
extern double acos (double __x) __attribute__ ((__nothrow__ )); extern double __acos (double __x) __attribute__ ((__nothrow__ ));
extern double asin (double __x) __attribute__ ((__nothrow__ )); extern double __asin (double __x) __attribute__ ((__nothrow__ ));
extern double atan (double __x) __attribute__ ((__nothrow__ )); extern double __atan (double __x) __attribute__ ((__nothrow__ ));
extern double atan2 (double __y, double __x) __attribute__ ((__nothrow__ )); extern double __atan2 (double __y, double __x) __attribute__ ((__nothrow__ ));
 extern double cos (double __x) __attribute__ ((__nothrow__ )); extern double __cos (double __x) __attribute__ ((__nothrow__ ));
 extern double sin (double __x) __attribute__ ((__nothrow__ )); extern double __sin (double __x) __attribute__ ((__nothrow__ ));
extern double tan (double __x) __attribute__ ((__nothrow__ )); extern double __tan (double __x) __attribute__ ((__nothrow__ ));
extern double cosh (double __x) __attribute__ ((__nothrow__ )); extern double __cosh (double __x) __attribute__ ((__nothrow__ ));
extern double sinh (double __x) __attribute__ ((__nothrow__ )); extern double __sinh (double __x) __attribute__ ((__nothrow__ ));
extern double tanh (double __x) __attribute__ ((__nothrow__ )); extern double __tanh (double __x) __attribute__ ((__nothrow__ ));
 extern void sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__ )); extern void __sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__ ))
                                                        ;
extern double acosh (double __x) __attribute__ ((__nothrow__ )); extern double __acosh (double __x) __attribute__ ((__nothrow__ ));
extern double asinh (double __x) __attribute__ ((__nothrow__ )); extern double __asinh (double __x) __attribute__ ((__nothrow__ ));
extern double atanh (double __x) __attribute__ ((__nothrow__ )); extern double __atanh (double __x) __attribute__ ((__nothrow__ ));
 extern double exp (double __x) __attribute__ ((__nothrow__ )); extern double __exp (double __x) __attribute__ ((__nothrow__ ));
extern double frexp (double __x, int *__exponent) __attribute__ ((__nothrow__ )); extern double __frexp (double __x, int *__exponent) __attribute__ ((__nothrow__ ));
extern double ldexp (double __x, int __exponent) __attribute__ ((__nothrow__ )); extern double __ldexp (double __x, int __exponent) __attribute__ ((__nothrow__ ));
 extern double log (double __x) __attribute__ ((__nothrow__ )); extern double __log (double __x) __attribute__ ((__nothrow__ ));
extern double log10 (double __x) __attribute__ ((__nothrow__ )); extern double __log10 (double __x) __attribute__ ((__nothrow__ ));
extern double modf (double __x, double *__iptr) __attribute__ ((__nothrow__ )); extern double __modf (double __x, double *__iptr) __attribute__ ((__nothrow__ )) ;
extern double exp10 (double __x) __attribute__ ((__nothrow__ )); extern double __exp10 (double __x) __attribute__ ((__nothrow__ ));
extern double pow10 (double __x) __attribute__ ((__nothrow__ )); extern double __pow10 (double __x) __attribute__ ((__nothrow__ ));
extern double expm1 (double __x) __attribute__ ((__nothrow__ )); extern double __expm1 (double __x) __attribute__ ((__nothrow__ ));
extern double log1p (double __x) __attribute__ ((__nothrow__ )); extern double __log1p (double __x) __attribute__ ((__nothrow__ ));
extern double logb (double __x) __attribute__ ((__nothrow__ )); extern double __logb (double __x) __attribute__ ((__nothrow__ ));
extern double exp2 (double __x) __attribute__ ((__nothrow__ )); extern double __exp2 (double __x) __attribute__ ((__nothrow__ ));
extern double log2 (double __x) __attribute__ ((__nothrow__ )); extern double __log2 (double __x) __attribute__ ((__nothrow__ ));
 extern double pow (double __x, double __y) __attribute__ ((__nothrow__ )); extern double __pow (double __x, double __y) __attribute__ ((__nothrow__ ));
extern double sqrt (double __x) __attribute__ ((__nothrow__ )); extern double __sqrt (double __x) __attribute__ ((__nothrow__ ));
extern double hypot (double __x, double __y) __attribute__ ((__nothrow__ )); extern double __hypot (double __x, double __y) __attribute__ ((__nothrow__ ));
extern double cbrt (double __x) __attribute__ ((__nothrow__ )); extern double __cbrt (double __x) __attribute__ ((__nothrow__ ));
extern double ceil (double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern double __ceil (double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern double fabs (double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern double floor (double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern double __floor (double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern double fmod (double __x, double __y) __attribute__ ((__nothrow__ )); extern double __fmod (double __x, double __y) __attribute__ ((__nothrow__ ));
extern int isinf (double __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int finite (double __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern double drem (double __x, double __y) __attribute__ ((__nothrow__ )); extern double __drem (double __x, double __y) __attribute__ ((__nothrow__ ));
extern double significand (double __x) __attribute__ ((__nothrow__ )); extern double __significand (double __x) __attribute__ ((__nothrow__ ));
extern double copysign (double __x, double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern double nan (const char *__tagb) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern double __nan (const char *__tagb) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int isnan (double __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern double j0 (double) __attribute__ ((__nothrow__ )); extern double __j0 (double) __attribute__ ((__nothrow__ ));
extern double j1 (double) __attribute__ ((__nothrow__ )); extern double __j1 (double) __attribute__ ((__nothrow__ ));
extern double jn (int, double) __attribute__ ((__nothrow__ )); extern double __jn (int, double) __attribute__ ((__nothrow__ ));
extern double y0 (double) __attribute__ ((__nothrow__ )); extern double __y0 (double) __attribute__ ((__nothrow__ ));
extern double y1 (double) __attribute__ ((__nothrow__ )); extern double __y1 (double) __attribute__ ((__nothrow__ ));
extern double yn (int, double) __attribute__ ((__nothrow__ )); extern double __yn (int, double) __attribute__ ((__nothrow__ ));
extern double erf (double) __attribute__ ((__nothrow__ )); extern double __erf (double) __attribute__ ((__nothrow__ ));
extern double erfc (double) __attribute__ ((__nothrow__ )); extern double __erfc (double) __attribute__ ((__nothrow__ ));
extern double lgamma (double) __attribute__ ((__nothrow__ )); extern double __lgamma (double) __attribute__ ((__nothrow__ ));
extern double tgamma (double) __attribute__ ((__nothrow__ )); extern double __tgamma (double) __attribute__ ((__nothrow__ ));
extern double gamma (double) __attribute__ ((__nothrow__ )); extern double __gamma (double) __attribute__ ((__nothrow__ ));
extern double lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__ )); extern double __lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__ ));
extern double rint (double __x) __attribute__ ((__nothrow__ )); extern double __rint (double __x) __attribute__ ((__nothrow__ ));
extern double nextafter (double __x, double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern double nexttoward (double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern double nextdown (double __x) __attribute__ ((__nothrow__ )); extern double __nextdown (double __x) __attribute__ ((__nothrow__ ));
extern double nextup (double __x) __attribute__ ((__nothrow__ )); extern double __nextup (double __x) __attribute__ ((__nothrow__ ));
extern double remainder (double __x, double __y) __attribute__ ((__nothrow__ )); extern double __remainder (double __x, double __y) __attribute__ ((__nothrow__ ));
extern double scalbn (double __x, int __n) __attribute__ ((__nothrow__ )); extern double __scalbn (double __x, int __n) __attribute__ ((__nothrow__ ));
extern int ilogb (double __x) __attribute__ ((__nothrow__ )); extern int __ilogb (double __x) __attribute__ ((__nothrow__ ));
extern long int llogb (double __x) __attribute__ ((__nothrow__ )); extern long int __llogb (double __x) __attribute__ ((__nothrow__ ));
extern double scalbln (double __x, long int __n) __attribute__ ((__nothrow__ )); extern double __scalbln (double __x, long int __n) __attribute__ ((__nothrow__ ));
extern double nearbyint (double __x) __attribute__ ((__nothrow__ )); extern double __nearbyint (double __x) __attribute__ ((__nothrow__ ));
extern double round (double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern double __round (double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern double trunc (double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern double __trunc (double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern double remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__ )); extern double __remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__ ));
extern long int lrint (double __x) __attribute__ ((__nothrow__ )); extern long int __lrint (double __x) __attribute__ ((__nothrow__ ));
__extension__
extern long long int llrint (double __x) __attribute__ ((__nothrow__ )); extern long long int __llrint (double __x) __attribute__ ((__nothrow__ ));
extern long int lround (double __x) __attribute__ ((__nothrow__ )); extern long int __lround (double __x) __attribute__ ((__nothrow__ ));
__extension__
extern long long int llround (double __x) __attribute__ ((__nothrow__ )); extern long long int __llround (double __x) __attribute__ ((__nothrow__ ));
extern double fdim (double __x, double __y) __attribute__ ((__nothrow__ )); extern double __fdim (double __x, double __y) __attribute__ ((__nothrow__ ));
extern double fmax (double __x, double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern double __fmax (double __x, double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern double fmin (double __x, double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern double __fmin (double __x, double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern double fma (double __x, double __y, double __z) __attribute__ ((__nothrow__ )); extern double __fma (double __x, double __y, double __z) __attribute__ ((__nothrow__ ));
extern double roundeven (double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern double __roundeven (double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern __intmax_t fromfp (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ )); extern __intmax_t __fromfp (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ ))
                            ;
extern __uintmax_t ufromfp (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ )); extern __uintmax_t __ufromfp (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ ))
                              ;
extern __intmax_t fromfpx (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ )); extern __intmax_t __fromfpx (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ ))
                             ;
extern __uintmax_t ufromfpx (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ )); extern __uintmax_t __ufromfpx (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ ))
                               ;
extern double fmaxmag (double __x, double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern double __fmaxmag (double __x, double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern double fminmag (double __x, double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern double __fminmag (double __x, double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int totalorder (double __x, double __y) __attribute__ ((__nothrow__ ))
     __attribute__ ((__const__));
extern int totalordermag (double __x, double __y) __attribute__ ((__nothrow__ ))
     __attribute__ ((__const__));
extern int canonicalize (double *__cx, const double *__x) __attribute__ ((__nothrow__ ));
extern double getpayload (const double *__x) __attribute__ ((__nothrow__ )); extern double __getpayload (const double *__x) __attribute__ ((__nothrow__ ));
extern int setpayload (double *__x, double __payload) __attribute__ ((__nothrow__ ));
extern int setpayloadsig (double *__x, double __payload) __attribute__ ((__nothrow__ ));
extern double scalb (double __x, double __n) __attribute__ ((__nothrow__ )); extern double __scalb (double __x, double __n) __attribute__ ((__nothrow__ ));
extern int __fpclassifyf (float __value) __attribute__ ((__nothrow__ ))
     __attribute__ ((__const__));
extern int __signbitf (float __value) __attribute__ ((__nothrow__ ))
     __attribute__ ((__const__));
extern int __isinff (float __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int __finitef (float __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int __isnanf (float __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int __iseqsigf (float __x, float __y) __attribute__ ((__nothrow__ ));
extern int __issignalingf (float __value) __attribute__ ((__nothrow__ ))
     __attribute__ ((__const__));
extern float acosf (float __x) __attribute__ ((__nothrow__ )); extern float __acosf (float __x) __attribute__ ((__nothrow__ ));
extern float asinf (float __x) __attribute__ ((__nothrow__ )); extern float __asinf (float __x) __attribute__ ((__nothrow__ ));
extern float atanf (float __x) __attribute__ ((__nothrow__ )); extern float __atanf (float __x) __attribute__ ((__nothrow__ ));
extern float atan2f (float __y, float __x) __attribute__ ((__nothrow__ )); extern float __atan2f (float __y, float __x) __attribute__ ((__nothrow__ ));
 extern float cosf (float __x) __attribute__ ((__nothrow__ )); extern float __cosf (float __x) __attribute__ ((__nothrow__ ));
 extern float sinf (float __x) __attribute__ ((__nothrow__ )); extern float __sinf (float __x) __attribute__ ((__nothrow__ ));
extern float tanf (float __x) __attribute__ ((__nothrow__ )); extern float __tanf (float __x) __attribute__ ((__nothrow__ ));
extern float coshf (float __x) __attribute__ ((__nothrow__ )); extern float __coshf (float __x) __attribute__ ((__nothrow__ ));
extern float sinhf (float __x) __attribute__ ((__nothrow__ )); extern float __sinhf (float __x) __attribute__ ((__nothrow__ ));
extern float tanhf (float __x) __attribute__ ((__nothrow__ )); extern float __tanhf (float __x) __attribute__ ((__nothrow__ ));
 extern void sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__ )); extern void __sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__ ))
                                                        ;
extern float acoshf (float __x) __attribute__ ((__nothrow__ )); extern float __acoshf (float __x) __attribute__ ((__nothrow__ ));
extern float asinhf (float __x) __attribute__ ((__nothrow__ )); extern float __asinhf (float __x) __attribute__ ((__nothrow__ ));
extern float atanhf (float __x) __attribute__ ((__nothrow__ )); extern float __atanhf (float __x) __attribute__ ((__nothrow__ ));
 extern float expf (float __x) __attribute__ ((__nothrow__ )); extern float __expf (float __x) __attribute__ ((__nothrow__ ));
extern float frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__ )); extern float __frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__ ));
extern float ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__ )); extern float __ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__ ));
 extern float logf (float __x) __attribute__ ((__nothrow__ )); extern float __logf (float __x) __attribute__ ((__nothrow__ ));
extern float log10f (float __x) __attribute__ ((__nothrow__ )); extern float __log10f (float __x) __attribute__ ((__nothrow__ ));
extern float modff (float __x, float *__iptr) __attribute__ ((__nothrow__ )); extern float __modff (float __x, float *__iptr) __attribute__ ((__nothrow__ )) ;
extern float exp10f (float __x) __attribute__ ((__nothrow__ )); extern float __exp10f (float __x) __attribute__ ((__nothrow__ ));
extern float pow10f (float __x) __attribute__ ((__nothrow__ )); extern float __pow10f (float __x) __attribute__ ((__nothrow__ ));
extern float expm1f (float __x) __attribute__ ((__nothrow__ )); extern float __expm1f (float __x) __attribute__ ((__nothrow__ ));
extern float log1pf (float __x) __attribute__ ((__nothrow__ )); extern float __log1pf (float __x) __attribute__ ((__nothrow__ ));
extern float logbf (float __x) __attribute__ ((__nothrow__ )); extern float __logbf (float __x) __attribute__ ((__nothrow__ ));
extern float exp2f (float __x) __attribute__ ((__nothrow__ )); extern float __exp2f (float __x) __attribute__ ((__nothrow__ ));
extern float log2f (float __x) __attribute__ ((__nothrow__ )); extern float __log2f (float __x) __attribute__ ((__nothrow__ ));
 extern float powf (float __x, float __y) __attribute__ ((__nothrow__ )); extern float __powf (float __x, float __y) __attribute__ ((__nothrow__ ));
extern float sqrtf (float __x) __attribute__ ((__nothrow__ )); extern float __sqrtf (float __x) __attribute__ ((__nothrow__ ));
extern float hypotf (float __x, float __y) __attribute__ ((__nothrow__ )); extern float __hypotf (float __x, float __y) __attribute__ ((__nothrow__ ));
extern float cbrtf (float __x) __attribute__ ((__nothrow__ )); extern float __cbrtf (float __x) __attribute__ ((__nothrow__ ));
extern float ceilf (float __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern float __ceilf (float __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern float fabsf (float __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern float floorf (float __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern float __floorf (float __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern float fmodf (float __x, float __y) __attribute__ ((__nothrow__ )); extern float __fmodf (float __x, float __y) __attribute__ ((__nothrow__ ));
extern int isinff (float __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int finitef (float __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern float dremf (float __x, float __y) __attribute__ ((__nothrow__ )); extern float __dremf (float __x, float __y) __attribute__ ((__nothrow__ ));
extern float significandf (float __x) __attribute__ ((__nothrow__ )); extern float __significandf (float __x) __attribute__ ((__nothrow__ ));
extern float copysignf (float __x, float __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern float nanf (const char *__tagb) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern float __nanf (const char *__tagb) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int isnanf (float __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern float j0f (float) __attribute__ ((__nothrow__ )); extern float __j0f (float) __attribute__ ((__nothrow__ ));
extern float j1f (float) __attribute__ ((__nothrow__ )); extern float __j1f (float) __attribute__ ((__nothrow__ ));
extern float jnf (int, float) __attribute__ ((__nothrow__ )); extern float __jnf (int, float) __attribute__ ((__nothrow__ ));
extern float y0f (float) __attribute__ ((__nothrow__ )); extern float __y0f (float) __attribute__ ((__nothrow__ ));
extern float y1f (float) __attribute__ ((__nothrow__ )); extern float __y1f (float) __attribute__ ((__nothrow__ ));
extern float ynf (int, float) __attribute__ ((__nothrow__ )); extern float __ynf (int, float) __attribute__ ((__nothrow__ ));
extern float erff (float) __attribute__ ((__nothrow__ )); extern float __erff (float) __attribute__ ((__nothrow__ ));
extern float erfcf (float) __attribute__ ((__nothrow__ )); extern float __erfcf (float) __attribute__ ((__nothrow__ ));
extern float lgammaf (float) __attribute__ ((__nothrow__ )); extern float __lgammaf (float) __attribute__ ((__nothrow__ ));
extern float tgammaf (float) __attribute__ ((__nothrow__ )); extern float __tgammaf (float) __attribute__ ((__nothrow__ ));
extern float gammaf (float) __attribute__ ((__nothrow__ )); extern float __gammaf (float) __attribute__ ((__nothrow__ ));
extern float lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__ )); extern float __lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__ ));
extern float rintf (float __x) __attribute__ ((__nothrow__ )); extern float __rintf (float __x) __attribute__ ((__nothrow__ ));
extern float nextafterf (float __x, float __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern float nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern float nextdownf (float __x) __attribute__ ((__nothrow__ )); extern float __nextdownf (float __x) __attribute__ ((__nothrow__ ));
extern float nextupf (float __x) __attribute__ ((__nothrow__ )); extern float __nextupf (float __x) __attribute__ ((__nothrow__ ));
extern float remainderf (float __x, float __y) __attribute__ ((__nothrow__ )); extern float __remainderf (float __x, float __y) __attribute__ ((__nothrow__ ));
extern float scalbnf (float __x, int __n) __attribute__ ((__nothrow__ )); extern float __scalbnf (float __x, int __n) __attribute__ ((__nothrow__ ));
extern int ilogbf (float __x) __attribute__ ((__nothrow__ )); extern int __ilogbf (float __x) __attribute__ ((__nothrow__ ));
extern long int llogbf (float __x) __attribute__ ((__nothrow__ )); extern long int __llogbf (float __x) __attribute__ ((__nothrow__ ));
extern float scalblnf (float __x, long int __n) __attribute__ ((__nothrow__ )); extern float __scalblnf (float __x, long int __n) __attribute__ ((__nothrow__ ));
extern float nearbyintf (float __x) __attribute__ ((__nothrow__ )); extern float __nearbyintf (float __x) __attribute__ ((__nothrow__ ));
extern float roundf (float __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern float __roundf (float __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern float truncf (float __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern float __truncf (float __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern float remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__ )); extern float __remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__ ));
extern long int lrintf (float __x) __attribute__ ((__nothrow__ )); extern long int __lrintf (float __x) __attribute__ ((__nothrow__ ));
__extension__
extern long long int llrintf (float __x) __attribute__ ((__nothrow__ )); extern long long int __llrintf (float __x) __attribute__ ((__nothrow__ ));
extern long int lroundf (float __x) __attribute__ ((__nothrow__ )); extern long int __lroundf (float __x) __attribute__ ((__nothrow__ ));
__extension__
extern long long int llroundf (float __x) __attribute__ ((__nothrow__ )); extern long long int __llroundf (float __x) __attribute__ ((__nothrow__ ));
extern float fdimf (float __x, float __y) __attribute__ ((__nothrow__ )); extern float __fdimf (float __x, float __y) __attribute__ ((__nothrow__ ));
extern float fmaxf (float __x, float __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern float fminf (float __x, float __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern float __fminf (float __x, float __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern float fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__ )); extern float __fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__ ));
extern float roundevenf (float __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern float __roundevenf (float __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern __intmax_t fromfpf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ )); extern __intmax_t __fromfpf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ ))
                            ;
extern __uintmax_t ufromfpf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ )); extern __uintmax_t __ufromfpf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ ))
                              ;
extern __intmax_t fromfpxf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ )); extern __intmax_t __fromfpxf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ ))
                             ;
extern __uintmax_t ufromfpxf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ )); extern __uintmax_t __ufromfpxf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ ))
                               ;
extern float fmaxmagf (float __x, float __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern float __fmaxmagf (float __x, float __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern float fminmagf (float __x, float __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern float __fminmagf (float __x, float __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int totalorderf (float __x, float __y) __attribute__ ((__nothrow__ ))
     __attribute__ ((__const__));
extern int totalordermagf (float __x, float __y) __attribute__ ((__nothrow__ ))
     __attribute__ ((__const__));
extern int canonicalizef (float *__cx, const float *__x) __attribute__ ((__nothrow__ ));
extern float getpayloadf (const float *__x) __attribute__ ((__nothrow__ )); extern float __getpayloadf (const float *__x) __attribute__ ((__nothrow__ ));
extern int setpayloadf (float *__x, float __payload) __attribute__ ((__nothrow__ ));
extern int setpayloadsigf (float *__x, float __payload) __attribute__ ((__nothrow__ ));
extern float scalbf (float __x, float __n) __attribute__ ((__nothrow__ )); extern float __scalbf (float __x, float __n) __attribute__ ((__nothrow__ ));
extern int __fpclassifyl (long double __value) __attribute__ ((__nothrow__ ))
     __attribute__ ((__const__));
extern int __signbitl (long double __value) __attribute__ ((__nothrow__ ))
     __attribute__ ((__const__));
extern int __isinfl (long double __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int __finitel (long double __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int __isnanl (long double __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int __iseqsigl (long double __x, long double __y) __attribute__ ((__nothrow__ ));
extern int __issignalingl (long double __value) __attribute__ ((__nothrow__ ))
     __attribute__ ((__const__));
extern long double acosl (long double __x) __attribute__ ((__nothrow__ )); extern long double __acosl (long double __x) __attribute__ ((__nothrow__ ));
extern long double asinl (long double __x) __attribute__ ((__nothrow__ )); extern long double __asinl (long double __x) __attribute__ ((__nothrow__ ));
extern long double atanl (long double __x) __attribute__ ((__nothrow__ )); extern long double __atanl (long double __x) __attribute__ ((__nothrow__ ));
extern long double atan2l (long double __y, long double __x) __attribute__ ((__nothrow__ )); extern long double __atan2l (long double __y, long double __x) __attribute__ ((__nothrow__ ));
 extern long double cosl (long double __x) __attribute__ ((__nothrow__ )); extern long double __cosl (long double __x) __attribute__ ((__nothrow__ ));
 extern long double sinl (long double __x) __attribute__ ((__nothrow__ )); extern long double __sinl (long double __x) __attribute__ ((__nothrow__ ));
extern long double tanl (long double __x) __attribute__ ((__nothrow__ )); extern long double __tanl (long double __x) __attribute__ ((__nothrow__ ));
extern long double coshl (long double __x) __attribute__ ((__nothrow__ )); extern long double __coshl (long double __x) __attribute__ ((__nothrow__ ));
extern long double sinhl (long double __x) __attribute__ ((__nothrow__ )); extern long double __sinhl (long double __x) __attribute__ ((__nothrow__ ));
extern long double tanhl (long double __x) __attribute__ ((__nothrow__ )); extern long double __tanhl (long double __x) __attribute__ ((__nothrow__ ));
 extern void sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__ )); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__ ))
                                                        ;
extern long double acoshl (long double __x) __attribute__ ((__nothrow__ )); extern long double __acoshl (long double __x) __attribute__ ((__nothrow__ ));
extern long double asinhl (long double __x) __attribute__ ((__nothrow__ )); extern long double __asinhl (long double __x) __attribute__ ((__nothrow__ ));
extern long double atanhl (long double __x) __attribute__ ((__nothrow__ )); extern long double __atanhl (long double __x) __attribute__ ((__nothrow__ ));
 extern long double expl (long double __x) __attribute__ ((__nothrow__ )); extern long double __expl (long double __x) __attribute__ ((__nothrow__ ));
extern long double frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__ )); extern long double __frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__ ));
extern long double ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__ )); extern long double __ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__ ));
 extern long double logl (long double __x) __attribute__ ((__nothrow__ )); extern long double __logl (long double __x) __attribute__ ((__nothrow__ ));
extern long double log10l (long double __x) __attribute__ ((__nothrow__ )); extern long double __log10l (long double __x) __attribute__ ((__nothrow__ ));
extern long double modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__ )); extern long double __modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__ )) ;
extern long double exp10l (long double __x) __attribute__ ((__nothrow__ )); extern long double __exp10l (long double __x) __attribute__ ((__nothrow__ ));
extern long double pow10l (long double __x) __attribute__ ((__nothrow__ )); extern long double __pow10l (long double __x) __attribute__ ((__nothrow__ ));
extern long double expm1l (long double __x) __attribute__ ((__nothrow__ )); extern long double __expm1l (long double __x) __attribute__ ((__nothrow__ ));
extern long double log1pl (long double __x) __attribute__ ((__nothrow__ )); extern long double __log1pl (long double __x) __attribute__ ((__nothrow__ ));
extern long double logbl (long double __x) __attribute__ ((__nothrow__ )); extern long double __logbl (long double __x) __attribute__ ((__nothrow__ ));
extern long double exp2l (long double __x) __attribute__ ((__nothrow__ )); extern long double __exp2l (long double __x) __attribute__ ((__nothrow__ ));
extern long double log2l (long double __x) __attribute__ ((__nothrow__ )); extern long double __log2l (long double __x) __attribute__ ((__nothrow__ ));
 extern long double powl (long double __x, long double __y) __attribute__ ((__nothrow__ )); extern long double __powl (long double __x, long double __y) __attribute__ ((__nothrow__ ));
extern long double sqrtl (long double __x) __attribute__ ((__nothrow__ )); extern long double __sqrtl (long double __x) __attribute__ ((__nothrow__ ));
extern long double hypotl (long double __x, long double __y) __attribute__ ((__nothrow__ )); extern long double __hypotl (long double __x, long double __y) __attribute__ ((__nothrow__ ));
extern long double cbrtl (long double __x) __attribute__ ((__nothrow__ )); extern long double __cbrtl (long double __x) __attribute__ ((__nothrow__ ));
extern long double ceill (long double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern long double __ceill (long double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern long double fabsl (long double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern long double __fabsl (long double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern long double floorl (long double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern long double __floorl (long double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern long double fmodl (long double __x, long double __y) __attribute__ ((__nothrow__ )); extern long double __fmodl (long double __x, long double __y) __attribute__ ((__nothrow__ ));
extern int isinfl (long double __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int finitel (long double __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern long double dreml (long double __x, long double __y) __attribute__ ((__nothrow__ )); extern long double __dreml (long double __x, long double __y) __attribute__ ((__nothrow__ ));
extern long double significandl (long double __x) __attribute__ ((__nothrow__ )); extern long double __significandl (long double __x) __attribute__ ((__nothrow__ ));
extern long double copysignl (long double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern long double nanl (const char *__tagb) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern long double __nanl (const char *__tagb) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int isnanl (long double __value) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern long double j0l (long double) __attribute__ ((__nothrow__ )); extern long double __j0l (long double) __attribute__ ((__nothrow__ ));
extern long double j1l (long double) __attribute__ ((__nothrow__ )); extern long double __j1l (long double) __attribute__ ((__nothrow__ ));
extern long double jnl (int, long double) __attribute__ ((__nothrow__ )); extern long double __jnl (int, long double) __attribute__ ((__nothrow__ ));
extern long double y0l (long double) __attribute__ ((__nothrow__ )); extern long double __y0l (long double) __attribute__ ((__nothrow__ ));
extern long double y1l (long double) __attribute__ ((__nothrow__ )); extern long double __y1l (long double) __attribute__ ((__nothrow__ ));
extern long double ynl (int, long double) __attribute__ ((__nothrow__ )); extern long double __ynl (int, long double) __attribute__ ((__nothrow__ ));
extern long double erfl (long double) __attribute__ ((__nothrow__ )); extern long double __erfl (long double) __attribute__ ((__nothrow__ ));
extern long double erfcl (long double) __attribute__ ((__nothrow__ )); extern long double __erfcl (long double) __attribute__ ((__nothrow__ ));
extern long double lgammal (long double) __attribute__ ((__nothrow__ )); extern long double __lgammal (long double) __attribute__ ((__nothrow__ ));
extern long double tgammal (long double) __attribute__ ((__nothrow__ )); extern long double __tgammal (long double) __attribute__ ((__nothrow__ ));
extern long double gammal (long double) __attribute__ ((__nothrow__ )); extern long double __gammal (long double) __attribute__ ((__nothrow__ ));
extern long double lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__ )); extern long double __lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__ ));
extern long double rintl (long double __x) __attribute__ ((__nothrow__ )); extern long double __rintl (long double __x) __attribute__ ((__nothrow__ ));
extern long double nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern long double nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern long double __nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern long double nextdownl (long double __x) __attribute__ ((__nothrow__ )); extern long double __nextdownl (long double __x) __attribute__ ((__nothrow__ ));
extern long double nextupl (long double __x) __attribute__ ((__nothrow__ )); extern long double __nextupl (long double __x) __attribute__ ((__nothrow__ ));
extern long double remainderl (long double __x, long double __y) __attribute__ ((__nothrow__ )); extern long double __remainderl (long double __x, long double __y) __attribute__ ((__nothrow__ ));
extern long double scalbnl (long double __x, int __n) __attribute__ ((__nothrow__ )); extern long double __scalbnl (long double __x, int __n) __attribute__ ((__nothrow__ ));
extern int ilogbl (long double __x) __attribute__ ((__nothrow__ )); extern int __ilogbl (long double __x) __attribute__ ((__nothrow__ ));
extern long int llogbl (long double __x) __attribute__ ((__nothrow__ )); extern long int __llogbl (long double __x) __attribute__ ((__nothrow__ ));
extern long double scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__ )); extern long double __scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__ ));
extern long double nearbyintl (long double __x) __attribute__ ((__nothrow__ )); extern long double __nearbyintl (long double __x) __attribute__ ((__nothrow__ ));
extern long double roundl (long double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern long double __roundl (long double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern long double truncl (long double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern long double __truncl (long double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern long double remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__ )); extern long double __remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__ ));
extern long int lrintl (long double __x) __attribute__ ((__nothrow__ )); extern long int __lrintl (long double __x) __attribute__ ((__nothrow__ ));
__extension__
extern long long int llrintl (long double __x) __attribute__ ((__nothrow__ )); extern long long int __llrintl (long double __x) __attribute__ ((__nothrow__ ));
extern long int lroundl (long double __x) __attribute__ ((__nothrow__ )); extern long int __lroundl (long double __x) __attribute__ ((__nothrow__ ));
__extension__
extern long long int llroundl (long double __x) __attribute__ ((__nothrow__ )); extern long long int __llroundl (long double __x) __attribute__ ((__nothrow__ ));
extern long double fdiml (long double __x, long double __y) __attribute__ ((__nothrow__ )); extern long double __fdiml (long double __x, long double __y) __attribute__ ((__nothrow__ ));
extern long double fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern long double __fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern long double fminl (long double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern long double __fminl (long double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern long double fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__ )); extern long double __fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__ ));
extern long double roundevenl (long double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern long double __roundevenl (long double __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern __intmax_t fromfpl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ )); extern __intmax_t __fromfpl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ ))
                            ;
extern __uintmax_t ufromfpl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ )); extern __uintmax_t __ufromfpl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ ))
                              ;
extern __intmax_t fromfpxl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ )); extern __intmax_t __fromfpxl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ ))
                             ;
extern __uintmax_t ufromfpxl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ )); extern __uintmax_t __ufromfpxl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ ))
                               ;
extern long double fmaxmagl (long double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern long double __fmaxmagl (long double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern long double fminmagl (long double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)); extern long double __fminmagl (long double __x, long double __y) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern int totalorderl (long double __x, long double __y) __attribute__ ((__nothrow__ ))
     __attribute__ ((__const__));
extern int totalordermagl (long double __x, long double __y) __attribute__ ((__nothrow__ ))
     __attribute__ ((__const__));
extern int canonicalizel (long double *__cx, const long double *__x) __attribute__ ((__nothrow__ ));
extern long double getpayloadl (const long double *__x) __attribute__ ((__nothrow__ )); extern long double __getpayloadl (const long double *__x) __attribute__ ((__nothrow__ ));
extern int setpayloadl (long double *__x, long double __payload) __attribute__ ((__nothrow__ ));
extern int setpayloadsigl (long double *__x, long double __payload) __attribute__ ((__nothrow__ ));
extern long double scalbl (long double __x, long double __n) __attribute__ ((__nothrow__ )); extern long double __scalbl (long double __x, long double __n) __attribute__ ((__nothrow__ ));
extern int signgam;
enum
  {
    FP_NAN =
      0,
    FP_INFINITE =
      1,
    FP_ZERO =
      2,
    FP_SUBNORMAL =
      3,
    FP_NORMAL =
      4
  };
typedef enum
{
  _IEEE_ = -1,
  _SVID_,
  _XOPEN_,
  _POSIX_,
  _ISOC_
} _LIB_VERSION_TYPE;
extern _LIB_VERSION_TYPE _LIB_VERSION;
struct exception
  {
    int type;
    char *name;
    double arg1;
    double arg2;
    double retval;
  };
extern int matherr (struct exception *__exc);
extern int __matherr (struct exception *__exc);
extern int __signgam;
enum
  {
    FE_INVALID =
      1,
    FE_DIVBYZERO =
      2,
    FE_OVERFLOW =
      4,
    FE_UNDERFLOW =
      8,
    FE_INEXACT =
      16,
  };
typedef unsigned int fexcept_t;
typedef struct
  {
    unsigned int __fpcr;
    unsigned int __fpsr;
  }
fenv_t;
typedef unsigned int femode_t;
extern int feclearexcept (int __excepts) __attribute__ ((__nothrow__ ));
extern int fegetexceptflag (fexcept_t *__flagp, int __excepts) __attribute__ ((__nothrow__ ));
extern int feraiseexcept (int __excepts) __attribute__ ((__nothrow__ ));
extern int fesetexcept (int __excepts) __attribute__ ((__nothrow__ ));
extern int fesetexceptflag (const fexcept_t *__flagp, int __excepts) __attribute__ ((__nothrow__ ));
extern int fetestexcept (int __excepts) __attribute__ ((__nothrow__ ));
extern int fetestexceptflag (const fexcept_t *__flagp, int __excepts) __attribute__ ((__nothrow__ ));
extern int fegetround (void) __attribute__ ((__nothrow__ )) __attribute__ ((__pure__));
extern int fesetround (int __rounding_direction) __attribute__ ((__nothrow__ ));
extern int fegetenv (fenv_t *__envp) __attribute__ ((__nothrow__ ));
extern int feholdexcept (fenv_t *__envp) __attribute__ ((__nothrow__ ));
extern int fesetenv (const fenv_t *__envp) __attribute__ ((__nothrow__ ));
extern int feupdateenv (const fenv_t *__envp) __attribute__ ((__nothrow__ ));
extern int fegetmode (femode_t *__modep) __attribute__ ((__nothrow__ ));
extern int fesetmode (const femode_t *__modep) __attribute__ ((__nothrow__ ));
extern int feenableexcept (int __excepts) __attribute__ ((__nothrow__ ));
extern int fedisableexcept (int __excepts) __attribute__ ((__nothrow__ ));
extern int fegetexcept (void) __attribute__ ((__nothrow__ ));
extern int __feclearexcept (int __excepts);
extern int __fegetexcept (void);
extern int __fegetexceptflag (fexcept_t *__flagp, int __excepts);
extern int __feraiseexcept (int __excepts);
extern int __fesetexceptflag (const fexcept_t *__flagp, int __excepts);
extern int __fegetenv (fenv_t *__envp);
extern int __fesetenv (const fenv_t *__envp);
extern int __feupdateenv (const fenv_t *__envp);
extern __typeof (fegetround) __fegetround __attribute__ ((__pure__));
extern __typeof (feholdexcept) __feholdexcept;
extern __typeof (fesetround) __fesetround;
struct rm_ctx
{
  fenv_t env;
 _Bool 
      updated_status;
};
typedef __int8_t int8_t;
typedef __int16_t int16_t;
typedef __int32_t int32_t;
typedef __int64_t int64_t;
typedef __uint8_t uint8_t;
typedef __uint16_t uint16_t;
typedef __uint32_t uint32_t;
typedef __uint64_t uint64_t;
typedef signed char int_least8_t;
typedef short int int_least16_t;
typedef int int_least32_t;
typedef long int int_least64_t;
typedef unsigned char uint_least8_t;
typedef unsigned short int uint_least16_t;
typedef unsigned int uint_least32_t;
typedef unsigned long int uint_least64_t;
typedef signed char int_fast8_t;
typedef long int int_fast16_t;
typedef long int int_fast32_t;
typedef long int int_fast64_t;
typedef unsigned char uint_fast8_t;
typedef unsigned long int uint_fast16_t;
typedef unsigned long int uint_fast32_t;
typedef unsigned long int uint_fast64_t;
typedef long int intptr_t;
typedef unsigned long int uintptr_t;
typedef __intmax_t intmax_t;
typedef __uintmax_t uintmax_t;
typedef unsigned int __gwchar_t;
typedef struct
  {
    long int quot;
    long int rem;
  } imaxdiv_t;
extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom)
      __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern intmax_t strtoimax (const char *__restrict __nptr,
      char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ ));
extern uintmax_t strtoumax (const char *__restrict __nptr,
       char ** __restrict __endptr, int __base) __attribute__ ((__nothrow__ ));
extern intmax_t wcstoimax (const __gwchar_t *__restrict __nptr,
      __gwchar_t **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ ));
extern uintmax_t wcstoumax (const __gwchar_t *__restrict __nptr,
       __gwchar_t ** __restrict __endptr, int __base)
     __attribute__ ((__nothrow__ ));
extern long int __strtol_internal (const char *__restrict __nptr,
       char **__restrict __endptr,
       int __base, int __group)
  __attribute__ ((__nothrow__ )) ;
extern __inline intmax_t
__attribute__ ((__nothrow__ )) strtoimax (const char *__restrict nptr, char **__restrict endptr, int base)
{
  return __strtol_internal (nptr, endptr, base, 0);
}
extern unsigned long int __strtoul_internal (const char *__restrict __nptr,
          char ** __restrict __endptr,
          int __base, int __group)
  __attribute__ ((__nothrow__ )) ;
extern __inline uintmax_t
__attribute__ ((__nothrow__ )) strtoumax (const char *__restrict nptr, char **__restrict endptr, int base)
{
  return __strtoul_internal (nptr, endptr, base, 0);
}
extern long int __wcstol_internal (const __gwchar_t * __restrict __nptr,
       __gwchar_t **__restrict __endptr,
       int __base, int __group)
  __attribute__ ((__nothrow__ )) ;
extern __inline intmax_t
__attribute__ ((__nothrow__ )) wcstoimax (const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
{
  return __wcstol_internal (nptr, endptr, base, 0);
}
extern unsigned long int __wcstoul_internal (const __gwchar_t *
          __restrict __nptr,
          __gwchar_t **
          __restrict __endptr,
          int __base, int __group)
  __attribute__ ((__nothrow__ )) ;
extern __inline uintmax_t
__attribute__ ((__nothrow__ )) wcstoumax (const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
{
  return __wcstoul_internal (nptr, endptr, base, 0);
}
typedef unsigned int fpu_control_t;
typedef unsigned int fpu_fpsr_t;
extern fpu_control_t __fpu_control;
extern void __setfpucw (fpu_control_t);
extern __inline __attribute__ ((__always_inline__)) double
__ieee754_sqrt (double d)
{
  double res;
  asm __volatile__ ("fsqrt   %d0, %d1" : "=w" (res) : "w" (d));
  return res;
}
extern __inline __attribute__ ((__always_inline__)) float
__ieee754_sqrtf (float s)
{
  float res;
  asm __volatile__ ("fsqrt   %s0, %s1" : "=w" (res) : "w" (s));
  return res;
}
static __inline __attribute__ ((__always_inline__)) void
libc_feholdexcept_aarch64 (fenv_t *envp)
{
  fpu_control_t fpcr;
  fpu_control_t new_fpcr;
  fpu_fpsr_t fpsr;
  fpu_fpsr_t new_fpsr;
  __asm__ __volatile__ ("mrs	%0, fpcr" : "=r" (fpcr));
  __asm__ __volatile__ ("mrs	%0, fpsr" : "=r" (fpsr));
  envp->__fpcr = fpcr;
  envp->__fpsr = fpsr;
  new_fpcr = fpcr & ~((1 | 2 | 4 | 8 | 16) << 8);
  new_fpsr = fpsr & ~(1 | 2 | 4 | 8 | 16);
  if (__builtin_expect ((new_fpcr != fpcr), 0))
    __asm__ __volatile__ ("msr	fpcr, %0" : : "r" (new_fpcr));
  if (new_fpsr != fpsr)
    __asm__ __volatile__ ("msr	fpsr, %0" : : "r" (new_fpsr));
}
static __inline __attribute__ ((__always_inline__)) void
libc_fesetround_aarch64 (int round)
{
  fpu_control_t fpcr;
  __asm__ __volatile__ ("mrs	%0, fpcr" : "=r" (fpcr));
  round = (fpcr ^ round) & 0xc00000;
  if (__builtin_expect ((round != 0), 0))
    __asm__ __volatile__ ("msr	fpcr, %0" : : "r" (fpcr ^ round));
}
static __inline __attribute__ ((__always_inline__)) void
libc_feholdexcept_setround_aarch64 (fenv_t *envp, int round)
{
  fpu_control_t fpcr;
  fpu_control_t new_fpcr;
  fpu_fpsr_t fpsr;
  fpu_fpsr_t new_fpsr;
  __asm__ __volatile__ ("mrs	%0, fpcr" : "=r" (fpcr));
  __asm__ __volatile__ ("mrs	%0, fpsr" : "=r" (fpsr));
  envp->__fpcr = fpcr;
  envp->__fpsr = fpsr;
  new_fpcr = fpcr & ~(((1 | 2 | 4 | 8 | 16) << 8) | 0xc00000);
  new_fpcr |= round;
  new_fpsr = fpsr & ~(1 | 2 | 4 | 8 | 16);
  if (__builtin_expect ((new_fpcr != fpcr), 0))
    __asm__ __volatile__ ("msr	fpcr, %0" : : "r" (new_fpcr));
  if (new_fpsr != fpsr)
    __asm__ __volatile__ ("msr	fpsr, %0" : : "r" (new_fpsr));
}
static __inline __attribute__ ((__always_inline__)) int
libc_fetestexcept_aarch64 (int ex)
{
  fpu_fpsr_t fpsr;
  __asm__ __volatile__ ("mrs	%0, fpsr" : "=r" (fpsr));
  return fpsr & ex & (1 | 2 | 4 | 8 | 16);
}
static __inline __attribute__ ((__always_inline__)) void
libc_fesetenv_aarch64 (const fenv_t *envp)
{
  fpu_control_t fpcr;
  fpu_control_t new_fpcr;
  __asm__ __volatile__ ("mrs	%0, fpcr" : "=r" (fpcr));
  new_fpcr = envp->__fpcr;
  if (__builtin_expect ((fpcr != new_fpcr), 0))
    __asm__ __volatile__ ("msr	fpcr, %0" : : "r" (new_fpcr));
  __asm__ __volatile__ ("msr	fpsr, %0" : : "r" (envp->__fpsr));
}
static __inline __attribute__ ((__always_inline__)) int
libc_feupdateenv_test_aarch64 (const fenv_t *envp, int ex)
{
  fpu_control_t fpcr;
  fpu_control_t new_fpcr;
  fpu_fpsr_t fpsr;
  fpu_fpsr_t new_fpsr;
  int excepts;
  __asm__ __volatile__ ("mrs	%0, fpcr" : "=r" (fpcr));
  __asm__ __volatile__ ("mrs	%0, fpsr" : "=r" (fpsr));
  excepts = fpsr & (1 | 2 | 4 | 8 | 16);
  new_fpcr = envp->__fpcr;
  new_fpsr = envp->__fpsr | excepts;
  if (__builtin_expect ((fpcr != new_fpcr), 0))
    __asm__ __volatile__ ("msr	fpcr, %0" : : "r" (new_fpcr));
  if (fpsr != new_fpsr)
    __asm__ __volatile__ ("msr	fpsr, %0" : : "r" (new_fpsr));
  if (__builtin_expect ((excepts & (new_fpcr >> 8)), 0))
    __feraiseexcept (excepts);
  return excepts & ex;
}
static __inline __attribute__ ((__always_inline__)) void
libc_feupdateenv_aarch64 (const fenv_t *envp)
{
  libc_feupdateenv_test_aarch64 (envp, 0);
}
static __inline __attribute__ ((__always_inline__)) void
libc_feholdsetround_aarch64 (fenv_t *envp, int round)
{
  fpu_control_t fpcr;
  fpu_fpsr_t fpsr;
  __asm__ __volatile__ ("mrs	%0, fpcr" : "=r" (fpcr));
  __asm__ __volatile__ ("mrs	%0, fpsr" : "=r" (fpsr));
  envp->__fpcr = fpcr;
  envp->__fpsr = fpsr;
  round = (fpcr ^ round) & 0xc00000;
  if (__builtin_expect ((round != 0), 0))
    __asm__ __volatile__ ("msr	fpcr, %0" : : "r" (fpcr ^ round));
}
static __inline __attribute__ ((__always_inline__)) void
libc_feresetround_aarch64 (fenv_t *envp)
{
  fpu_control_t fpcr;
  int round;
  __asm__ __volatile__ ("mrs	%0, fpcr" : "=r" (fpcr));
  round = (envp->__fpcr ^ fpcr) & 0xc00000;
  if (__builtin_expect ((round != 0), 0))
    __asm__ __volatile__ ("msr	fpcr, %0" : : "r" (fpcr ^ round));
}
static __inline __attribute__ ((__always_inline__)) void
libc_feholdsetround_aarch64_ctx (struct rm_ctx *ctx, int r)
{
  fpu_control_t fpcr;
  int round;
  __asm__ __volatile__ ("mrs	%0, fpcr" : "=r" (fpcr));
  ctx->env.__fpcr = fpcr;
  round = (fpcr ^ r) & 0xc00000;
  ctx->updated_status = round != 0;
  if (__builtin_expect ((round != 0), 0))
    __asm__ __volatile__ ("msr	fpcr, %0" : : "r" (fpcr ^ round));
}
static __inline __attribute__ ((__always_inline__)) void
libc_feresetround_aarch64_ctx (struct rm_ctx *ctx)
{
  if (__builtin_expect ((ctx->updated_status), 0))
    __asm__ __volatile__ ("msr	fpcr, %0" : : "r" (ctx->env.__fpcr));
}
static __inline __attribute__ ((__always_inline__)) void
libc_feholdsetround_noex_aarch64_ctx (struct rm_ctx *ctx, int r)
{
  fpu_control_t fpcr;
  fpu_fpsr_t fpsr;
  int round;
  __asm__ __volatile__ ("mrs	%0, fpcr" : "=r" (fpcr));
  __asm__ __volatile__ ("mrs	%0, fpsr" : "=r" (fpsr));
  ctx->env.__fpcr = fpcr;
  ctx->env.__fpsr = fpsr;
  round = (fpcr ^ r) & 0xc00000;
  ctx->updated_status = round != 0;
  if (__builtin_expect ((round != 0), 0))
    __asm__ __volatile__ ("msr	fpcr, %0" : : "r" (fpcr ^ round));
}
static __inline __attribute__ ((__always_inline__)) void
libc_feresetround_noex_aarch64_ctx (struct rm_ctx *ctx)
{
  if (__builtin_expect ((ctx->updated_status), 0))
    __asm__ __volatile__ ("msr	fpcr, %0" : : "r" (ctx->env.__fpcr));
  __asm__ __volatile__ ("msr	fpsr, %0" : : "r" (ctx->env.__fpsr));
}
typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;
typedef __loff_t loff_t;
typedef __ino_t ino_t;
typedef __ino64_t ino64_t;
typedef __dev_t dev_t;
typedef __gid_t gid_t;
typedef __mode_t mode_t;
typedef __nlink_t nlink_t;
typedef __uid_t uid_t;
typedef __off_t off_t;
typedef __off64_t off64_t;
typedef __pid_t pid_t;
typedef __id_t id_t;
typedef __ssize_t ssize_t;
typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;
typedef __key_t key_t;
typedef __clock_t clock_t;
typedef __clockid_t clockid_t;
typedef __time_t time_t;
typedef __timer_t timer_t;
typedef __useconds_t useconds_t;
typedef __suseconds_t suseconds_t;
typedef long unsigned int size_t;
typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
typedef int register_t __attribute__ ((__mode__ (__word__)));
typedef struct
{
  unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
} __sigset_t;
typedef __sigset_t sigset_t;
struct timeval
{
  __time_t tv_sec;
  __suseconds_t tv_usec;
};
struct timespec
{
  __time_t tv_sec;
  __syscall_slong_t tv_nsec;
};
typedef long int __fd_mask;
typedef struct
  {
    __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))];
  } fd_set;
typedef __fd_mask fd_mask;
extern int select (int __nfds, fd_set *__restrict __readfds,
     fd_set *__restrict __writefds,
     fd_set *__restrict __exceptfds,
     struct timeval *__restrict __timeout);
extern int pselect (int __nfds, fd_set *__restrict __readfds,
      fd_set *__restrict __writefds,
      fd_set *__restrict __exceptfds,
      const struct timespec *__restrict __timeout,
      const __sigset_t *__restrict __sigmask);
extern int __pselect (int __nfds, fd_set *__readfds,
        fd_set *__writefds, fd_set *__exceptfds,
        const struct timespec *__timeout,
        const __sigset_t *__sigmask);
extern int __select (int __nfds, fd_set *__restrict __readfds,
       fd_set *__restrict __writefds,
       fd_set *__restrict __exceptfds,
       struct timeval *__restrict __timeout);
extern unsigned int gnu_dev_major (__dev_t __dev) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern unsigned int gnu_dev_minor (__dev_t __dev) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern __dev_t gnu_dev_makedev (unsigned int __major, unsigned int __minor) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
__extension__ extern __inline __attribute__ ((__const__)) unsigned int __attribute__ ((__nothrow__ )) gnu_dev_major (__dev_t __dev) { unsigned int __major; __major = ((__dev & (__dev_t) 0x00000000000fff00u) >> 8); __major |= ((__dev & (__dev_t) 0xfffff00000000000u) >> 32); return __major; }
__extension__ extern __inline __attribute__ ((__const__)) unsigned int __attribute__ ((__nothrow__ )) gnu_dev_minor (__dev_t __dev) { unsigned int __minor; __minor = ((__dev & (__dev_t) 0x00000000000000ffu) >> 0); __minor |= ((__dev & (__dev_t) 0x00000ffffff00000u) >> 12); return __minor; }
__extension__ extern __inline __attribute__ ((__const__)) __dev_t __attribute__ ((__nothrow__ )) gnu_dev_makedev (unsigned int __major, unsigned int __minor) { __dev_t __dev; __dev = (((__dev_t) (__major & 0x00000fffu)) << 8); __dev |= (((__dev_t) (__major & 0xfffff000u)) << 32); __dev |= (((__dev_t) (__minor & 0x000000ffu)) << 0); __dev |= (((__dev_t) (__minor & 0xffffff00u)) << 12); return __dev; }
typedef __blksize_t blksize_t;
typedef __blkcnt_t blkcnt_t;
typedef __fsblkcnt_t fsblkcnt_t;
typedef __fsfilcnt_t fsfilcnt_t;
typedef __blkcnt64_t blkcnt64_t;
typedef __fsblkcnt64_t fsblkcnt64_t;
typedef __fsfilcnt64_t fsfilcnt64_t;
struct __pthread_rwlock_arch_t
{
  unsigned int __readers;
  unsigned int __writers;
  unsigned int __wrphase_futex;
  unsigned int __writers_futex;
  unsigned int __pad3;
  unsigned int __pad4;
  int __cur_writer;
  int __shared;
  unsigned long int __pad1;
  unsigned long int __pad2;
  unsigned int __flags;
};
typedef struct __pthread_internal_list
{
  struct __pthread_internal_list *__prev;
  struct __pthread_internal_list *__next;
} __pthread_list_t;
struct __pthread_mutex_s
{
  int __lock ;
  unsigned int __count;
  int __owner;
  unsigned int __nusers;
  int __kind;
  ;
  int __spins;
  __pthread_list_t __list;
  ;
};
struct __pthread_cond_s
{
  __extension__ union
  {
    __extension__ unsigned long long int __wseq;
    struct
    {
      unsigned int __low;
      unsigned int __high;
    } __wseq32;
  };
  __extension__ union
  {
    __extension__ unsigned long long int __g1_start;
    struct
    {
      unsigned int __low;
      unsigned int __high;
    } __g1_start32;
  };
  unsigned int __g_refs[2] ;
  unsigned int __g_size[2];
  unsigned int __g1_orig_size;
  unsigned int __wrefs;
  unsigned int __g_signals[2];
};
typedef unsigned long int pthread_t;
typedef union
{
  char __size[8];
  int __align;
} pthread_mutexattr_t;
typedef union
{
  char __size[8];
  int __align;
} pthread_condattr_t;
typedef unsigned int pthread_key_t;
typedef int pthread_once_t;
union pthread_attr_t
{
  char __size[64];
  long int __align;
};
typedef union pthread_attr_t pthread_attr_t;
typedef union
{
  struct __pthread_mutex_s __data;
  char __size[48];
  long int __align;
} pthread_mutex_t;
typedef union
{
  struct __pthread_cond_s __data;
  char __size[48];
  __extension__ long long int __align;
} pthread_cond_t;
typedef union
{
  struct __pthread_rwlock_arch_t __data;
  char __size[56];
  long int __align;
} pthread_rwlock_t;
typedef union
{
  char __size[8];
  long int __align;
} pthread_rwlockattr_t;
typedef volatile int pthread_spinlock_t;
typedef union
{
  char __size[32];
  long int __align;
} pthread_barrier_t;
typedef union
{
  char __size[8];
  int __align;
} pthread_barrierattr_t;
extern void __setfpucw (fpu_control_t);
static inline int
get_rounding_mode (void)
{
  fpu_control_t fpcr;
  __asm__ __volatile__ ("mrs	%0, fpcr" : "=r" (fpcr));
  return fpcr & 0xc00000;
}
typedef union
{
  double value;
  struct
  {
    u_int32_t lsw;
    u_int32_t msw;
  } parts;
  uint64_t word;
} ieee_double_shape_type;
typedef union
{
  float value;
  u_int32_t word;
} ieee_float_shape_type;
typedef union
{
  long double value;
  struct
  {
    uint64_t lsw;
    uint64_t msw;
  } parts64;
  struct
  {
    uint32_t w3, w2, w1, w0;
  } parts32;
} ieee854_long_double_shape_type;
extern double __ieee754_acos (double);
extern double __ieee754_acosh (double);
extern double __ieee754_asin (double);
extern double __ieee754_atan2 (double, double);
extern double __ieee754_atanh (double);
extern double __ieee754_cosh (double);
extern double __ieee754_exp (double);
extern double __ieee754_exp10 (double);
extern double __ieee754_exp2 (double);
extern double __ieee754_fmod (double, double);
extern double __ieee754_gamma (double);
extern double __ieee754_gamma_r (double, int *);
extern double __ieee754_hypot (double, double);
extern double __ieee754_j0 (double);
extern double __ieee754_j1 (double);
extern double __ieee754_jn (int, double);
extern double __ieee754_lgamma (double);
extern double __ieee754_lgamma_r (double, int *);
extern double __ieee754_log (double);
extern double __ieee754_log10 (double);
extern double __ieee754_log2 (double);
extern double __ieee754_pow (double, double);
extern double __ieee754_remainder (double, double);
extern double __ieee754_sinh (double);
extern double __ieee754_sqrt (double);
extern double __ieee754_y0 (double);
extern double __ieee754_y1 (double);
extern double __ieee754_yn (int, double);
extern double __ieee754_scalb (double, double);
extern int __ieee754_ilogb (double);
extern int32_t __ieee754_rem_pio2 (double, double *);
extern double __kernel_sin (double, double, int);
extern double __kernel_cos (double, double);
extern double __kernel_tan (double, double, int);
extern int __kernel_rem_pio2 (double *, double *, int,
           int, int, const int32_t *);
extern double __copysign (double x, double __y);
extern inline double
__copysign (double x, double __y)
{
  return __builtin_copysign (x, __y);
}
extern double __x2y2m1 (double x, double y);
extern double __gamma_product (double x, double x_eps,
        int n, double *eps);
extern double __lgamma_neg (double x, int *signgamp);
extern double __lgamma_product (double t, double x,
         double x_eps, int n);
extern float __ieee754_acosf (float);
extern float __ieee754_acoshf (float);
extern float __ieee754_asinf (float);
extern float __ieee754_atan2f (float, float);
extern float __ieee754_atanhf (float);
extern float __ieee754_coshf (float);
extern float __ieee754_expf (float);
extern float __ieee754_exp10f (float);
extern float __ieee754_exp2f (float);
extern float __ieee754_fmodf (float, float);
extern float __ieee754_gammaf (float);
extern float __ieee754_gammaf_r (float, int *);
extern float __ieee754_hypotf (float, float);
extern float __ieee754_j0f (float);
extern float __ieee754_j1f (float);
extern float __ieee754_jnf (int, float);
extern float __ieee754_lgammaf (float);
extern float __ieee754_lgammaf_r (float, int *);
extern float __ieee754_logf (float);
extern float __ieee754_log10f (float);
extern float __ieee754_log2f (float);
extern float __ieee754_powf (float, float);
extern float __ieee754_remainderf (float, float);
extern float __ieee754_sinhf (float);
extern float __ieee754_sqrtf (float);
extern float __ieee754_y0f (float);
extern float __ieee754_y1f (float);
extern float __ieee754_ynf (int, float);
extern float __ieee754_scalbf (float, float);
extern int __ieee754_ilogbf (float);
extern int32_t __ieee754_rem_pio2f (float, float *);
extern float __kernel_sinf (float, float, int);
extern float __kernel_cosf (float, float);
extern float __kernel_tanf (float, float, int);
extern int __kernel_rem_pio2f (float *, float *, int,
           int, int, const int32_t *);
extern float __copysignf (float x, float __y);
extern inline float
__copysignf (float x, float __y)
{
  return __builtin_copysignf (x, __y);
}
extern float __x2y2m1f (float x, float y);
extern float __gamma_productf (float x, float x_eps,
        int n, float *eps);
extern float __lgamma_negf (float x, int *signgamp);
extern long double __ieee754_acosl (long double);
extern long double __ieee754_acoshl (long double);
extern long double __ieee754_asinl (long double);
extern long double __ieee754_atan2l (long double, long double);
extern long double __ieee754_atanhl (long double);
extern long double __ieee754_coshl (long double);
extern long double __ieee754_expl (long double);
extern long double __ieee754_exp10l (long double);
extern long double __ieee754_exp2l (long double);
extern long double __ieee754_fmodl (long double, long double);
extern long double __ieee754_gammal (long double);
extern long double __ieee754_gammal_r (long double, int *);
extern long double __ieee754_hypotl (long double, long double);
extern long double __ieee754_j0l (long double);
extern long double __ieee754_j1l (long double);
extern long double __ieee754_jnl (int, long double);
extern long double __ieee754_lgammal (long double);
extern long double __ieee754_lgammal_r (long double, int *);
extern long double __ieee754_logl (long double);
extern long double __ieee754_log10l (long double);
extern long double __ieee754_log2l (long double);
extern long double __ieee754_powl (long double, long double);
extern long double __ieee754_remainderl (long double, long double);
extern long double __ieee754_sinhl (long double);
extern long double __ieee754_sqrtl (long double);
extern long double __ieee754_y0l (long double);
extern long double __ieee754_y1l (long double);
extern long double __ieee754_ynl (int, long double);
extern long double __ieee754_scalbl (long double, long double);
extern int __ieee754_ilogbl (long double);
extern int32_t __ieee754_rem_pio2l (long double, long double *);
extern long double __kernel_sinl (long double, long double, int);
extern long double __kernel_cosl (long double, long double);
extern long double __kernel_tanl (long double, long double, int);
extern void __kernel_sincosl (long double, long double,
          long double *, long double *, int);
extern long double __copysignl (long double x, long double __y);
extern inline long double
__copysignl (long double x, long double __y)
{
  return __builtin_copysignl (x, __y);
}
extern long double __x2y2m1l (long double x, long double y);
extern long double __gamma_productl (long double x, long double x_eps,
        int n, long double *eps);
extern long double __lgamma_negl (long double x, int *signgamp);
extern long double __lgamma_productl (long double t, long double x,
         long double x_eps, int n);
extern double __kernel_standard (double,double,int);
extern float __kernel_standard_f (float,float,int);
extern long double __kernel_standard_l (long double,long double,int);
extern double __exp1 (double __x, double __xx, double __error);
extern double __sin (double __x);
extern double __cos (double __x);
extern int __branred (double __x, double *__a, double *__aa);
extern void __doasin (double __x, double __dx, double __v[]);
extern void __dubsin (double __x, double __dx, double __v[]);
extern void __dubcos (double __x, double __dx, double __v[]);
extern double __halfulp (double __x, double __y);
extern double __sin32 (double __x, double __res, double __res1);
extern double __cos32 (double __x, double __res, double __res1);
extern double __mpsin (double __x, double __dx, 
                                               _Bool 
                                                    __range_reduce);
extern double __mpcos (double __x, double __dx, 
                                               _Bool 
                                                    __range_reduce);
extern double __slowexp (double __x);
extern double __slowpow (double __x, double __y, double __z);
extern void __docos (double __x, double __dx, double __v[]);
static __inline __attribute__ ((__always_inline__)) void
default_libc_feholdexcept (fenv_t *e)
{
  (void) __feholdexcept (e);
}
static __inline __attribute__ ((__always_inline__)) void
default_libc_fesetround (int r)
{
  (void) __fesetround (r);
}
static __inline __attribute__ ((__always_inline__)) void
default_libc_feholdexcept_setround (fenv_t *e, int r)
{
  __feholdexcept (e);
  __fesetround (r);
}
static __inline __attribute__ ((__always_inline__)) void
default_libc_fesetenv (fenv_t *e)
{
  (void) __fesetenv (e);
}
static __inline __attribute__ ((__always_inline__)) void
default_libc_feupdateenv (fenv_t *e)
{
  (void) __feupdateenv (e);
}
static __inline __attribute__ ((__always_inline__)) int
default_libc_feupdateenv_test (fenv_t *e, int ex)
{
  int ret = fetestexcept (ex);
  __feupdateenv (e);
  return ret;
}
typedef long int ptrdiff_t;
typedef unsigned int wchar_t;
typedef struct {
  long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
  long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
} max_align_t;
typedef struct
  {
    int quot;
    int rem;
  } div_t;
typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;
__extension__ typedef struct
  {
    long long int quot;
    long long int rem;
  } lldiv_t;
extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__ )) ;
extern double atof (const char *__nptr)
     __attribute__ ((__nothrow__ )) __attribute__ ((__pure__)) ;
extern int atoi (const char *__nptr)
     __attribute__ ((__nothrow__ )) __attribute__ ((__pure__)) ;
extern long int atol (const char *__nptr)
     __attribute__ ((__nothrow__ )) __attribute__ ((__pure__)) ;
__extension__ extern long long int atoll (const char *__nptr)
     __attribute__ ((__nothrow__ )) __attribute__ ((__pure__)) ;
extern double strtod (const char *__restrict __nptr,
        char **__restrict __endptr)
     __attribute__ ((__nothrow__ )) ;
extern float strtof (const char *__restrict __nptr,
       char **__restrict __endptr) __attribute__ ((__nothrow__ )) ;
extern long double strtold (const char *__restrict __nptr,
       char **__restrict __endptr)
     __attribute__ ((__nothrow__ )) ;
extern long int strtol (const char *__restrict __nptr,
   char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ )) ;
extern unsigned long int strtoul (const char *__restrict __nptr,
      char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ )) ;
__extension__
extern long long int strtoq (const char *__restrict __nptr,
        char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ )) ;
__extension__
extern unsigned long long int strtouq (const char *__restrict __nptr,
           char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ )) ;
__extension__
extern long long int strtoll (const char *__restrict __nptr,
         char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ )) ;
__extension__
extern unsigned long long int strtoull (const char *__restrict __nptr,
     char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ )) ;
extern int strfromd (char *__dest, size_t __size, const char *__format,
       double __f)
     __attribute__ ((__nothrow__ )) ;
extern int strfromf (char *__dest, size_t __size, const char *__format,
       float __f)
     __attribute__ ((__nothrow__ )) ;
extern int strfroml (char *__dest, size_t __size, const char *__format,
       long double __f)
     __attribute__ ((__nothrow__ )) ;
struct __locale_struct
{
  struct __locale_data *__locales[13];
  const unsigned short int *__ctype_b;
  const int *__ctype_tolower;
  const int *__ctype_toupper;
  const char *__names[13];
};
typedef struct __locale_struct *__locale_t;
typedef __locale_t locale_t;
extern long int strtol_l (const char *__restrict __nptr,
     char **__restrict __endptr, int __base,
     locale_t __loc) __attribute__ ((__nothrow__ )) ;
extern unsigned long int strtoul_l (const char *__restrict __nptr,
        char **__restrict __endptr,
        int __base, locale_t __loc)
     __attribute__ ((__nothrow__ )) ;
__extension__
extern long long int strtoll_l (const char *__restrict __nptr,
    char **__restrict __endptr, int __base,
    locale_t __loc)
     __attribute__ ((__nothrow__ )) ;
__extension__
extern unsigned long long int strtoull_l (const char *__restrict __nptr,
       char **__restrict __endptr,
       int __base, locale_t __loc)
     __attribute__ ((__nothrow__ )) ;
extern double strtod_l (const char *__restrict __nptr,
   char **__restrict __endptr, locale_t __loc)
     __attribute__ ((__nothrow__ )) ;
extern float strtof_l (const char *__restrict __nptr,
         char **__restrict __endptr, locale_t __loc)
     __attribute__ ((__nothrow__ )) ;
extern long double strtold_l (const char *__restrict __nptr,
         char **__restrict __endptr,
         locale_t __loc)
     __attribute__ ((__nothrow__ )) ;
extern __inline int
__attribute__ ((__nothrow__ )) atoi (const char *__nptr)
{
  return (int) strtol (__nptr, (char **) 
                                        ((void *)0)
                                            , 10);
}
extern __inline long int
__attribute__ ((__nothrow__ )) atol (const char *__nptr)
{
  return strtol (__nptr, (char **) 
                                  ((void *)0)
                                      , 10);
}
__extension__ extern __inline long long int
__attribute__ ((__nothrow__ )) atoll (const char *__nptr)
{
  return strtoll (__nptr, (char **) 
                                   ((void *)0)
                                       , 10);
}
extern char *l64a (long int __n) __attribute__ ((__nothrow__ )) ;
extern long int a64l (const char *__s)
     __attribute__ ((__nothrow__ )) __attribute__ ((__pure__)) ;
extern long int random (void) __attribute__ ((__nothrow__ ));
extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__ ));
extern char *initstate (unsigned int __seed, char *__statebuf,
   size_t __statelen) __attribute__ ((__nothrow__ )) ;
extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__ )) ;
struct random_data
  {
    int32_t *fptr;
    int32_t *rptr;
    int32_t *state;
    int rand_type;
    int rand_deg;
    int rand_sep;
    int32_t *end_ptr;
  };
extern int random_r (struct random_data *__restrict __buf,
       int32_t *__restrict __result) __attribute__ ((__nothrow__ )) ;
extern int srandom_r (unsigned int __seed, struct random_data *__buf)
     __attribute__ ((__nothrow__ )) ;
extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
   size_t __statelen,
   struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__ )) ;
extern int setstate_r (char *__restrict __statebuf,
         struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__ )) ;
extern int rand (void) __attribute__ ((__nothrow__ ));
extern void srand (unsigned int __seed) __attribute__ ((__nothrow__ ));
extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__ ));
extern double drand48 (void) __attribute__ ((__nothrow__ ));
extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__ )) ;
extern long int lrand48 (void) __attribute__ ((__nothrow__ ));
extern long int nrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__ )) ;
extern long int mrand48 (void) __attribute__ ((__nothrow__ ));
extern long int jrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__ )) ;
extern void srand48 (long int __seedval) __attribute__ ((__nothrow__ ));
extern unsigned short int *seed48 (unsigned short int __seed16v[3])
     __attribute__ ((__nothrow__ )) ;
extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__ )) ;
struct drand48_data
  {
    unsigned short int __x[3];
    unsigned short int __old_x[3];
    unsigned short int __c;
    unsigned short int __init;
    __extension__ unsigned long long int __a;
  };
extern int drand48_r (struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__ )) ;
extern int erand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__ )) ;
extern int lrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ )) ;
extern int nrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ )) ;
extern int mrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ )) ;
extern int jrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ )) ;
extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
     __attribute__ ((__nothrow__ )) ;
extern int seed48_r (unsigned short int __seed16v[3],
       struct drand48_data *__buffer) __attribute__ ((__nothrow__ )) ;
extern int lcong48_r (unsigned short int __param[7],
        struct drand48_data *__buffer)
     __attribute__ ((__nothrow__ )) ;
extern void *malloc (size_t __size) __attribute__ ((__nothrow__ )) __attribute__ ((__malloc__)) ;
extern void *calloc (size_t __nmemb, size_t __size)
     __attribute__ ((__nothrow__ )) __attribute__ ((__malloc__)) ;
extern void *realloc (void *__ptr, size_t __size)
     __attribute__ ((__nothrow__ )) __attribute__ ((__warn_unused_result__));
extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
     __attribute__ ((__nothrow__ )) __attribute__ ((__warn_unused_result__));
extern void free (void *__ptr) __attribute__ ((__nothrow__ ));
extern void *alloca (size_t __size) __attribute__ ((__nothrow__ ));
typedef uint16_t Elf32_Half;
typedef uint16_t Elf64_Half;
typedef uint32_t Elf32_Word;
typedef int32_t Elf32_Sword;
typedef uint32_t Elf64_Word;
typedef int32_t Elf64_Sword;
typedef uint64_t Elf32_Xword;
typedef int64_t Elf32_Sxword;
typedef uint64_t Elf64_Xword;
typedef int64_t Elf64_Sxword;
typedef uint32_t Elf32_Addr;
typedef uint64_t Elf64_Addr;
typedef uint32_t Elf32_Off;
typedef uint64_t Elf64_Off;
typedef uint16_t Elf32_Section;
typedef uint16_t Elf64_Section;
typedef Elf32_Half Elf32_Versym;
typedef Elf64_Half Elf64_Versym;
typedef struct
{
  unsigned char e_ident[(16)];
  Elf32_Half e_type;
  Elf32_Half e_machine;
  Elf32_Word e_version;
  Elf32_Addr e_entry;
  Elf32_Off e_phoff;
  Elf32_Off e_shoff;
  Elf32_Word e_flags;
  Elf32_Half e_ehsize;
  Elf32_Half e_phentsize;
  Elf32_Half e_phnum;
  Elf32_Half e_shentsize;
  Elf32_Half e_shnum;
  Elf32_Half e_shstrndx;
} Elf32_Ehdr;
typedef struct
{
  unsigned char e_ident[(16)];
  Elf64_Half e_type;
  Elf64_Half e_machine;
  Elf64_Word e_version;
  Elf64_Addr e_entry;
  Elf64_Off e_phoff;
  Elf64_Off e_shoff;
  Elf64_Word e_flags;
  Elf64_Half e_ehsize;
  Elf64_Half e_phentsize;
  Elf64_Half e_phnum;
  Elf64_Half e_shentsize;
  Elf64_Half e_shnum;
  Elf64_Half e_shstrndx;
} Elf64_Ehdr;
typedef struct
{
  Elf32_Word sh_name;
  Elf32_Word sh_type;
  Elf32_Word sh_flags;
  Elf32_Addr sh_addr;
  Elf32_Off sh_offset;
  Elf32_Word sh_size;
  Elf32_Word sh_link;
  Elf32_Word sh_info;
  Elf32_Word sh_addralign;
  Elf32_Word sh_entsize;
} Elf32_Shdr;
typedef struct
{
  Elf64_Word sh_name;
  Elf64_Word sh_type;
  Elf64_Xword sh_flags;
  Elf64_Addr sh_addr;
  Elf64_Off sh_offset;
  Elf64_Xword sh_size;
  Elf64_Word sh_link;
  Elf64_Word sh_info;
  Elf64_Xword sh_addralign;
  Elf64_Xword sh_entsize;
} Elf64_Shdr;
typedef struct
{
  Elf32_Word ch_type;
  Elf32_Word ch_size;
  Elf32_Word ch_addralign;
} Elf32_Chdr;
typedef struct
{
  Elf64_Word ch_type;
  Elf64_Word ch_reserved;
  Elf64_Xword ch_size;
  Elf64_Xword ch_addralign;
} Elf64_Chdr;
typedef struct
{
  Elf32_Word st_name;
  Elf32_Addr st_value;
  Elf32_Word st_size;
  unsigned char st_info;
  unsigned char st_other;
  Elf32_Section st_shndx;
} Elf32_Sym;
typedef struct
{
  Elf64_Word st_name;
  unsigned char st_info;
  unsigned char st_other;
  Elf64_Section st_shndx;
  Elf64_Addr st_value;
  Elf64_Xword st_size;
} Elf64_Sym;
typedef struct
{
  Elf32_Half si_boundto;
  Elf32_Half si_flags;
} Elf32_Syminfo;
typedef struct
{
  Elf64_Half si_boundto;
  Elf64_Half si_flags;
} Elf64_Syminfo;
typedef struct
{
  Elf32_Addr r_offset;
  Elf32_Word r_info;
} Elf32_Rel;
typedef struct
{
  Elf64_Addr r_offset;
  Elf64_Xword r_info;
} Elf64_Rel;
typedef struct
{
  Elf32_Addr r_offset;
  Elf32_Word r_info;
  Elf32_Sword r_addend;
} Elf32_Rela;
typedef struct
{
  Elf64_Addr r_offset;
  Elf64_Xword r_info;
  Elf64_Sxword r_addend;
} Elf64_Rela;
typedef struct
{
  Elf32_Word p_type;
  Elf32_Off p_offset;
  Elf32_Addr p_vaddr;
  Elf32_Addr p_paddr;
  Elf32_Word p_filesz;
  Elf32_Word p_memsz;
  Elf32_Word p_flags;
  Elf32_Word p_align;
} Elf32_Phdr;
typedef struct
{
  Elf64_Word p_type;
  Elf64_Word p_flags;
  Elf64_Off p_offset;
  Elf64_Addr p_vaddr;
  Elf64_Addr p_paddr;
  Elf64_Xword p_filesz;
  Elf64_Xword p_memsz;
  Elf64_Xword p_align;
} Elf64_Phdr;
typedef struct
{
  Elf32_Sword d_tag;
  union
    {
      Elf32_Word d_val;
      Elf32_Addr d_ptr;
    } d_un;
} Elf32_Dyn;
typedef struct
{
  Elf64_Sxword d_tag;
  union
    {
      Elf64_Xword d_val;
      Elf64_Addr d_ptr;
    } d_un;
} Elf64_Dyn;
typedef struct
{
  Elf32_Half vd_version;
  Elf32_Half vd_flags;
  Elf32_Half vd_ndx;
  Elf32_Half vd_cnt;
  Elf32_Word vd_hash;
  Elf32_Word vd_aux;
  Elf32_Word vd_next;
} Elf32_Verdef;
typedef struct
{
  Elf64_Half vd_version;
  Elf64_Half vd_flags;
  Elf64_Half vd_ndx;
  Elf64_Half vd_cnt;
  Elf64_Word vd_hash;
  Elf64_Word vd_aux;
  Elf64_Word vd_next;
} Elf64_Verdef;
typedef struct
{
  Elf32_Word vda_name;
  Elf32_Word vda_next;
} Elf32_Verdaux;
typedef struct
{
  Elf64_Word vda_name;
  Elf64_Word vda_next;
} Elf64_Verdaux;
typedef struct
{
  Elf32_Half vn_version;
  Elf32_Half vn_cnt;
  Elf32_Word vn_file;
  Elf32_Word vn_aux;
  Elf32_Word vn_next;
} Elf32_Verneed;
typedef struct
{
  Elf64_Half vn_version;
  Elf64_Half vn_cnt;
  Elf64_Word vn_file;
  Elf64_Word vn_aux;
  Elf64_Word vn_next;
} Elf64_Verneed;
typedef struct
{
  Elf32_Word vna_hash;
  Elf32_Half vna_flags;
  Elf32_Half vna_other;
  Elf32_Word vna_name;
  Elf32_Word vna_next;
} Elf32_Vernaux;
typedef struct
{
  Elf64_Word vna_hash;
  Elf64_Half vna_flags;
  Elf64_Half vna_other;
  Elf64_Word vna_name;
  Elf64_Word vna_next;
} Elf64_Vernaux;
typedef struct
{
  uint32_t a_type;
  union
    {
      uint32_t a_val;
    } a_un;
} Elf32_auxv_t;
typedef struct
{
  uint64_t a_type;
  union
    {
      uint64_t a_val;
    } a_un;
} Elf64_auxv_t;
typedef struct
{
  Elf32_Word n_namesz;
  Elf32_Word n_descsz;
  Elf32_Word n_type;
} Elf32_Nhdr;
typedef struct
{
  Elf64_Word n_namesz;
  Elf64_Word n_descsz;
  Elf64_Word n_type;
} Elf64_Nhdr;
typedef struct
{
  Elf32_Xword m_value;
  Elf32_Word m_info;
  Elf32_Word m_poffset;
  Elf32_Half m_repeat;
  Elf32_Half m_stride;
} Elf32_Move;
typedef struct
{
  Elf64_Xword m_value;
  Elf64_Xword m_info;
  Elf64_Xword m_poffset;
  Elf64_Half m_repeat;
  Elf64_Half m_stride;
} Elf64_Move;
typedef union
{
  struct
    {
      Elf32_Word gt_current_g_value;
      Elf32_Word gt_unused;
    } gt_header;
  struct
    {
      Elf32_Word gt_g_value;
      Elf32_Word gt_bytes;
    } gt_entry;
} Elf32_gptab;
typedef struct
{
  Elf32_Word ri_gprmask;
  Elf32_Word ri_cprmask[4];
  Elf32_Sword ri_gp_value;
} Elf32_RegInfo;
typedef struct
{
  unsigned char kind;
  unsigned char size;
  Elf32_Section section;
  Elf32_Word info;
} Elf_Options;
typedef struct
{
  Elf32_Word hwp_flags1;
  Elf32_Word hwp_flags2;
} Elf_Options_Hw;
typedef struct
{
  Elf32_Word l_name;
  Elf32_Word l_time_stamp;
  Elf32_Word l_checksum;
  Elf32_Word l_version;
  Elf32_Word l_flags;
} Elf32_Lib;
typedef struct
{
  Elf64_Word l_name;
  Elf64_Word l_time_stamp;
  Elf64_Word l_checksum;
  Elf64_Word l_version;
  Elf64_Word l_flags;
} Elf64_Lib;
typedef Elf32_Addr Elf32_Conflict;
typedef struct
{
  Elf32_Half version;
  unsigned char isa_level;
  unsigned char isa_rev;
  unsigned char gpr_size;
  unsigned char cpr1_size;
  unsigned char cpr2_size;
  unsigned char fp_abi;
  Elf32_Word isa_ext;
  Elf32_Word ases;
  Elf32_Word flags1;
  Elf32_Word flags2;
} Elf_MIPS_ABIFlags_v0;
enum
{
  Val_GNU_MIPS_ABI_FP_ANY = 0,
  Val_GNU_MIPS_ABI_FP_DOUBLE = 1,
  Val_GNU_MIPS_ABI_FP_SINGLE = 2,
  Val_GNU_MIPS_ABI_FP_SOFT = 3,
  Val_GNU_MIPS_ABI_FP_OLD_64 = 4,
  Val_GNU_MIPS_ABI_FP_XX = 5,
  Val_GNU_MIPS_ABI_FP_64 = 6,
  Val_GNU_MIPS_ABI_FP_64A = 7,
  Val_GNU_MIPS_ABI_FP_MAX = 7
};
extern void *__alloca (size_t __size);
extern int __libc_use_alloca (size_t size) __attribute__ ((const));
extern int __libc_alloca_cutoff (size_t size) __attribute__ ((const));
extern __inline __attribute__ ((__always_inline__))
int
__libc_use_alloca (size_t size)
{
  return (__builtin_expect (size <= 131072 / 4, 1)
   || __builtin_expect (__libc_alloca_cutoff (size), 1));
}
extern void *valloc (size_t __size) __attribute__ ((__nothrow__ )) __attribute__ ((__malloc__)) ;
extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
     __attribute__ ((__nothrow__ )) ;
extern void *aligned_alloc (size_t __alignment, size_t __size)
     __attribute__ ((__nothrow__ )) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (2))) ;
extern void abort (void) __attribute__ ((__nothrow__ )) __attribute__ ((__noreturn__));
extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__ )) ;
extern int at_quick_exit (void (*__func) (void)) __attribute__ ((__nothrow__ )) ;
extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
     __attribute__ ((__nothrow__ )) ;
extern void exit (int __status) __attribute__ ((__nothrow__ )) __attribute__ ((__noreturn__));
extern void quick_exit (int __status) __attribute__ ((__nothrow__ )) __attribute__ ((__noreturn__));
extern void _Exit (int __status) __attribute__ ((__nothrow__ )) __attribute__ ((__noreturn__));
extern char *getenv (const char *__name) __attribute__ ((__nothrow__ )) ;
extern char *secure_getenv (const char *__name)
     __attribute__ ((__nothrow__ )) ;
extern int putenv (char *__string) __attribute__ ((__nothrow__ )) ;
extern int setenv (const char *__name, const char *__value, int __replace)
     __attribute__ ((__nothrow__ )) ;
extern int unsetenv (const char *__name) __attribute__ ((__nothrow__ )) ;
extern int clearenv (void) __attribute__ ((__nothrow__ ));
extern char *mktemp (char *__template) __attribute__ ((__nothrow__ )) ;
extern int mkstemp (char *__template) ;
extern int mkstemp64 (char *__template) ;
extern int mkstemps (char *__template, int __suffixlen) ;
extern int mkstemps64 (char *__template, int __suffixlen)
     ;
extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__ )) ;
extern int mkostemp (char *__template, int __flags) ;
extern int mkostemp64 (char *__template, int __flags) ;
extern int mkostemps (char *__template, int __suffixlen, int __flags)
     ;
extern int mkostemps64 (char *__template, int __suffixlen, int __flags)
     ;
extern int system (const char *__command) ;
extern char *canonicalize_file_name (const char *__name)
     __attribute__ ((__nothrow__ )) ;
extern char *realpath (const char *__restrict __name,
         char *__restrict __resolved) __attribute__ ((__nothrow__ )) ;
typedef int (*__compar_fn_t) (const void *, const void *);
typedef __compar_fn_t comparison_fn_t;
typedef int (*__compar_d_fn_t) (const void *, const void *, void *);
extern void *bsearch (const void *__key, const void *__base,
        size_t __nmemb, size_t __size, __compar_fn_t __compar)
     ;
extern __inline void *
bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size,
  __compar_fn_t __compar)
{
  size_t __l, __u, __idx;
  const void *__p;
  int __comparison;
  __l = 0;
  __u = __nmemb;
  while (__l < __u)
    {
      __idx = (__l + __u) / 2;
      __p = (void *) (((const char *) __base) + (__idx * __size));
      __comparison = (*__compar) (__key, __p);
      if (__comparison < 0)
 __u = __idx;
      else if (__comparison > 0)
 __l = __idx + 1;
      else
 return (void *) __p;
    }
  return 
        ((void *)0)
            ;
}
extern void qsort (void *__base, size_t __nmemb, size_t __size,
     __compar_fn_t __compar) ;
extern void qsort_r (void *__base, size_t __nmemb, size_t __size,
       __compar_d_fn_t __compar, void *__arg)
  ;
extern int abs (int __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)) ;
extern long int labs (long int __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)) ;
__extension__ extern long long int llabs (long long int __x)
     __attribute__ ((__nothrow__ )) __attribute__ ((__const__)) ;
extern div_t div (int __numer, int __denom)
     __attribute__ ((__nothrow__ )) __attribute__ ((__const__)) ;
extern ldiv_t ldiv (long int __numer, long int __denom)
     __attribute__ ((__nothrow__ )) __attribute__ ((__const__)) ;
__extension__ extern lldiv_t lldiv (long long int __numer,
        long long int __denom)
     __attribute__ ((__nothrow__ )) __attribute__ ((__const__)) ;
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__ )) ;
extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__ )) ;
extern char *gcvt (double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__ )) ;
extern char *qecvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__ )) ;
extern char *qfcvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__ )) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__ )) ;
extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__ )) ;
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__ )) ;
extern int qecvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__ )) ;
extern int qfcvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__ )) ;
extern int mblen (const char *__s, size_t __n) __attribute__ ((__nothrow__ ));
extern int mbtowc (wchar_t *__restrict __pwc,
     const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ ));
extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__ ));
extern size_t mbstowcs (wchar_t *__restrict __pwcs,
   const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ ));
extern size_t wcstombs (char *__restrict __s,
   const wchar_t *__restrict __pwcs, size_t __n)
     __attribute__ ((__nothrow__ ));
extern int rpmatch (const char *__response) __attribute__ ((__nothrow__ )) ;
extern int getsubopt (char **__restrict __optionp,
        char *const *__restrict __tokens,
        char **__restrict __valuep)
     __attribute__ ((__nothrow__ )) ;
extern void setkey (const char *__key) __attribute__ ((__nothrow__ )) ;
extern int posix_openpt (int __oflag) ;
extern int grantpt (int __fd) __attribute__ ((__nothrow__ ));
extern int unlockpt (int __fd) __attribute__ ((__nothrow__ ));
extern char *ptsname (int __fd) __attribute__ ((__nothrow__ )) ;
extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
     __attribute__ ((__nothrow__ )) ;
extern int getpt (void);
extern int getloadavg (double __loadavg[], int __nelem)
     __attribute__ ((__nothrow__ )) ;
extern __inline double
__attribute__ ((__nothrow__ )) atof (const char *__nptr)
{
  return strtod (__nptr, (char **) 
                                  ((void *)0)
                                      );
}
struct stat
  {
    __dev_t st_dev;
    __ino_t st_ino;
    __mode_t st_mode;
    __nlink_t st_nlink;
    __uid_t st_uid;
    __gid_t st_gid;
    __dev_t st_rdev;
    __dev_t __pad1;
    __off_t st_size;
    __blksize_t st_blksize;
    int __pad2;
    __blkcnt_t st_blocks;
    struct timespec st_atim;
    struct timespec st_mtim;
    struct timespec st_ctim;
    int __glibc_reserved[2];
  };
struct stat64
  {
    __dev_t st_dev;
    __ino64_t st_ino;
    __mode_t st_mode;
    __nlink_t st_nlink;
    __uid_t st_uid;
    __gid_t st_gid;
    __dev_t st_rdev;
    __dev_t __pad1;
    __off64_t st_size;
    __blksize_t st_blksize;
    int __pad2;
    __blkcnt64_t st_blocks;
    struct timespec st_atim;
    struct timespec st_mtim;
    struct timespec st_ctim;
    int __glibc_reserved[2];
  };
extern int stat (const char *__restrict __file,
   struct stat *__restrict __buf) __attribute__ ((__nothrow__ )) ;
extern int fstat (int __fd, struct stat *__buf) __attribute__ ((__nothrow__ )) ;
extern int stat64 (const char *__restrict __file,
     struct stat64 *__restrict __buf) __attribute__ ((__nothrow__ )) ;
extern int fstat64 (int __fd, struct stat64 *__buf) __attribute__ ((__nothrow__ )) ;
extern int fstatat (int __fd, const char *__restrict __file,
      struct stat *__restrict __buf, int __flag)
     __attribute__ ((__nothrow__ )) ;
extern int fstatat64 (int __fd, const char *__restrict __file,
        struct stat64 *__restrict __buf, int __flag)
     __attribute__ ((__nothrow__ )) ;
extern int lstat (const char *__restrict __file,
    struct stat *__restrict __buf) __attribute__ ((__nothrow__ )) ;
extern int lstat64 (const char *__restrict __file,
      struct stat64 *__restrict __buf)
     __attribute__ ((__nothrow__ )) ;
extern int chmod (const char *__file, __mode_t __mode)
     __attribute__ ((__nothrow__ )) ;
extern int lchmod (const char *__file, __mode_t __mode)
     __attribute__ ((__nothrow__ )) ;
extern int fchmod (int __fd, __mode_t __mode) __attribute__ ((__nothrow__ ));
extern int fchmodat (int __fd, const char *__file, __mode_t __mode,
       int __flag)
     __attribute__ ((__nothrow__ )) ;
extern __mode_t umask (__mode_t __mask) __attribute__ ((__nothrow__ ));
extern __mode_t getumask (void) __attribute__ ((__nothrow__ ));
extern int mkdir (const char *__path, __mode_t __mode)
     __attribute__ ((__nothrow__ )) ;
extern int mkdirat (int __fd, const char *__path, __mode_t __mode)
     __attribute__ ((__nothrow__ )) ;
extern int mknod (const char *__path, __mode_t __mode, __dev_t __dev)
     __attribute__ ((__nothrow__ )) ;
extern int mknodat (int __fd, const char *__path, __mode_t __mode,
      __dev_t __dev) __attribute__ ((__nothrow__ )) ;
extern int mkfifo (const char *__path, __mode_t __mode)
     __attribute__ ((__nothrow__ )) ;
extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
     __attribute__ ((__nothrow__ )) ;
extern int utimensat (int __fd, const char *__path,
        const struct timespec __times[2],
        int __flags)
     __attribute__ ((__nothrow__ )) ;
extern int futimens (int __fd, const struct timespec __times[2]) __attribute__ ((__nothrow__ ));
extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf)
     __attribute__ ((__nothrow__ )) ;
extern int __xstat (int __ver, const char *__filename,
      struct stat *__stat_buf) __attribute__ ((__nothrow__ )) ;
extern int __lxstat (int __ver, const char *__filename,
       struct stat *__stat_buf) __attribute__ ((__nothrow__ )) ;
extern int __fxstatat (int __ver, int __fildes, const char *__filename,
         struct stat *__stat_buf, int __flag)
     __attribute__ ((__nothrow__ )) ;
extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf)
     __attribute__ ((__nothrow__ )) ;
extern int __xstat64 (int __ver, const char *__filename,
        struct stat64 *__stat_buf) __attribute__ ((__nothrow__ )) ;
extern int __lxstat64 (int __ver, const char *__filename,
         struct stat64 *__stat_buf) __attribute__ ((__nothrow__ )) ;
extern int __fxstatat64 (int __ver, int __fildes, const char *__filename,
    struct stat64 *__stat_buf, int __flag)
     __attribute__ ((__nothrow__ )) ;
extern int __xmknod (int __ver, const char *__path, __mode_t __mode,
       __dev_t *__dev) __attribute__ ((__nothrow__ )) ;
extern int __xmknodat (int __ver, int __fd, const char *__path,
         __mode_t __mode, __dev_t *__dev)
     __attribute__ ((__nothrow__ )) ;
extern __inline int
__attribute__ ((__nothrow__ )) stat (const char *__path, struct stat *__statbuf)
{
  return __xstat (0, __path, __statbuf);
}
extern __inline int
__attribute__ ((__nothrow__ )) lstat (const char *__path, struct stat *__statbuf)
{
  return __lxstat (0, __path, __statbuf);
}
extern __inline int
__attribute__ ((__nothrow__ )) fstat (int __fd, struct stat *__statbuf)
{
  return __fxstat (0, __fd, __statbuf);
}
extern __inline int
__attribute__ ((__nothrow__ )) fstatat (int __fd, const char *__filename, struct stat *__statbuf, int __flag)
{
  return __fxstatat (0, __fd, __filename, __statbuf, __flag);
}
extern __inline int
__attribute__ ((__nothrow__ )) mknod (const char *__path, __mode_t __mode, __dev_t __dev)
{
  return __xmknod (0, __path, __mode, &__dev);
}
extern __inline int
__attribute__ ((__nothrow__ )) mknodat (int __fd, const char *__path, __mode_t __mode, __dev_t __dev)
{
  return __xmknodat (0, __fd, __path, __mode, &__dev);
}
extern __inline int
__attribute__ ((__nothrow__ )) stat64 (const char *__path, struct stat64 *__statbuf)
{
  return __xstat64 (0, __path, __statbuf);
}
extern __inline int
__attribute__ ((__nothrow__ )) lstat64 (const char *__path, struct stat64 *__statbuf)
{
  return __lxstat64 (0, __path, __statbuf);
}
extern __inline int
__attribute__ ((__nothrow__ )) fstat64 (int __fd, struct stat64 *__statbuf)
{
  return __fxstat64 (0, __fd, __statbuf);
}
extern __inline int
__attribute__ ((__nothrow__ )) fstatat64 (int __fd, const char *__filename, struct stat64 *__statbuf, int __flag)
{
  return __fxstatat64 (0, __fd, __filename, __statbuf, __flag);
}
extern int __stat (const char *__file, struct stat *__buf);
extern int __fstat (int __fd, struct stat *__buf);
extern int __lstat (const char *__file, struct stat *__buf);
extern int __chmod (const char *__file, __mode_t __mode);
extern int __fchmod (int __fd, __mode_t __mode);
extern __mode_t __umask (__mode_t __mask);
extern int __mkdir (const char *__path, __mode_t __mode);
extern int __mknod (const char *__path,
      __mode_t __mode, __dev_t __dev);
extern __inline__ int __stat (const char *__path, struct stat *__statbuf)
{
  return __xstat (0, __path, __statbuf);
}
extern __inline__ int __mknod (const char *__path, __mode_t __mode,
          __dev_t __dev)
{
  return __xmknod (0, __path, __mode, &__dev);
}
extern __typeof (strtol_l) __strtol_l;
extern __typeof (strtoul_l) __strtoul_l;
extern __typeof (strtoll_l) __strtoll_l;
extern __typeof (strtoull_l) __strtoull_l;
extern __typeof (strtod_l) __strtod_l;
extern __typeof (strtof_l) __strtof_l;
extern __typeof (strtold_l) __strtold_l;
extern __typeof (secure_getenv) __libc_secure_getenv;
extern __typeof (qsort_r) __qsort_r;
extern long int __random (void);
extern void __srandom (unsigned int __seed);
extern char *__initstate (unsigned int __seed, char *__statebuf,
     size_t __statelen);
extern char *__setstate (char *__statebuf);
extern int __random_r (struct random_data *__buf, int32_t *__result);
extern int __srandom_r (unsigned int __seed, struct random_data *__buf);
extern int __initstate_r (unsigned int __seed, char *__statebuf,
     size_t __statelen, struct random_data *__buf);
extern int __setstate_r (char *__statebuf, struct random_data *__buf);
extern int __rand_r (unsigned int *__seed);
extern int __erand48_r (unsigned short int __xsubi[3],
   struct drand48_data *__buffer, double *__result);
extern int __nrand48_r (unsigned short int __xsubi[3],
   struct drand48_data *__buffer,
   long int *__result);
extern int __jrand48_r (unsigned short int __xsubi[3],
   struct drand48_data *__buffer,
   long int *__result);
extern int __srand48_r (long int __seedval,
   struct drand48_data *__buffer);
extern int __seed48_r (unsigned short int __seed16v[3],
         struct drand48_data *__buffer);
extern int __lcong48_r (unsigned short int __param[7],
   struct drand48_data *__buffer);
extern int __drand48_iterate (unsigned short int __xsubi[3],
         struct drand48_data *__buffer);
extern struct drand48_data __libc_drand48_data ;
extern int __setenv (const char *__name, const char *__value, int __replace);
extern int __unsetenv (const char *__name);
extern int __clearenv (void);
extern char *__mktemp (char *__template) __attribute__ ((__nothrow__ )) ;
extern char *__canonicalize_file_name (const char *__name);
extern char *__realpath (const char *__name, char *__resolved);
extern int __ptsname_r (int __fd, char *__buf, size_t __buflen);
extern int __ptsname_internal (int fd, char *buf, size_t buflen,
          struct stat64 *stp);
extern int __getpt (void);
extern int __posix_openpt (int __oflag);
extern int __add_to_environ (const char *name, const char *value,
        const char *combines, int replace);
extern void _quicksort (void *const pbase, size_t total_elems,
   size_t size, __compar_d_fn_t cmp, void *arg);
extern int __on_exit (void (*__func) (int __status, void *__arg), void *__arg);
extern int __cxa_atexit (void (*func) (void *), void *arg, void *d);
;
extern int __cxa_thread_atexit_impl (void (*func) (void *), void *arg,
         void *d);
extern void __call_tls_dtors (void)
  __attribute__ ((weak))
  ;
extern void __cxa_finalize (void *d);
extern int __posix_memalign (void **memptr, size_t alignment, size_t size);
extern void *__libc_memalign (size_t alignment, size_t size)
     __attribute__ ((__malloc__));
extern void *__libc_reallocarray (void *__ptr, size_t __nmemb, size_t __size)
     __attribute__ ((__nothrow__ )) __attribute__ ((__warn_unused_result__));
extern int __libc_system (const char *line);
extern double __strtod_internal (const char *__restrict __nptr,
     char **__restrict __endptr, int __group)
     __attribute__ ((__nothrow__ )) ;
extern float __strtof_internal (const char *__restrict __nptr,
    char **__restrict __endptr, int __group)
     __attribute__ ((__nothrow__ )) ;
extern long double __strtold_internal (const char *__restrict __nptr,
           char **__restrict __endptr,
           int __group)
     __attribute__ ((__nothrow__ )) ;
extern long int __strtol_internal (const char *__restrict __nptr,
       char **__restrict __endptr,
       int __base, int __group)
     __attribute__ ((__nothrow__ )) ;
extern unsigned long int __strtoul_internal (const char *__restrict __nptr,
          char **__restrict __endptr,
          int __base, int __group)
     __attribute__ ((__nothrow__ )) ;
__extension__
extern long long int __strtoll_internal (const char *__restrict __nptr,
      char **__restrict __endptr,
      int __base, int __group)
     __attribute__ ((__nothrow__ )) ;
__extension__
extern unsigned long long int __strtoull_internal (const char *
         __restrict __nptr,
         char **__restrict __endptr,
         int __base, int __group)
     __attribute__ ((__nothrow__ )) ;
extern double ____strtod_l_internal (const char *__restrict __nptr,
         char **__restrict __endptr, int __group,
         locale_t __loc);
extern float ____strtof_l_internal (const char *__restrict __nptr,
        char **__restrict __endptr, int __group,
        locale_t __loc);
extern long double ____strtold_l_internal (const char *__restrict __nptr,
        char **__restrict __endptr,
        int __group, locale_t __loc);
extern long int ____strtol_l_internal (const char *__restrict __nptr,
           char **__restrict __endptr,
           int __base, int __group,
           locale_t __loc);
extern unsigned long int ____strtoul_l_internal (const char *
       __restrict __nptr,
       char **__restrict __endptr,
       int __base, int __group,
       locale_t __loc);
__extension__
extern long long int ____strtoll_l_internal (const char *__restrict __nptr,
          char **__restrict __endptr,
          int __base, int __group,
          locale_t __loc);
__extension__
extern unsigned long long int ____strtoull_l_internal (const char *
             __restrict __nptr,
             char **
             __restrict __endptr,
             int __base, int __group,
             locale_t __loc);
extern float __strtof_nan (const char *, char **, char) ;
extern double __strtod_nan (const char *, char **, char) ;
extern long double __strtold_nan (const char *, char **, char)
     ;
extern float __wcstof_nan (const wchar_t *, wchar_t **, wchar_t)
     ;
extern double __wcstod_nan (const wchar_t *, wchar_t **, wchar_t)
     ;
extern long double __wcstold_nan (const wchar_t *, wchar_t **, wchar_t)
     ;
extern char *__ecvt (double __value, int __ndigit, int *__restrict __decpt,
       int *__restrict __sign);
extern char *__fcvt (double __value, int __ndigit, int *__restrict __decpt,
       int *__restrict __sign);
extern char *__gcvt (double __value, int __ndigit, char *__buf);
extern int __ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
       int *__restrict __sign, char *__restrict __buf,
       size_t __len);
extern int __fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
       int *__restrict __sign, char *__restrict __buf,
       size_t __len);
extern char *__qecvt (long double __value, int __ndigit,
        int *__restrict __decpt, int *__restrict __sign);
extern char *__qfcvt (long double __value, int __ndigit,
        int *__restrict __decpt, int *__restrict __sign);
extern char *__qgcvt (long double __value, int __ndigit, char *__buf);
extern int __qecvt_r (long double __value, int __ndigit,
        int *__restrict __decpt, int *__restrict __sign,
        char *__restrict __buf, size_t __len);
extern int __qfcvt_r (long double __value, int __ndigit,
        int *__restrict __decpt, int *__restrict __sign,
        char *__restrict __buf, size_t __len);
extern void *__default_morecore (ptrdiff_t) __attribute__ ((__nothrow__ ));
struct abort_msg_s
{
  unsigned int size;
  char msg[0];
};
extern struct abort_msg_s *__abort_msg;
struct _IO_FILE;
typedef struct _IO_FILE __FILE;
struct _IO_FILE;
typedef struct _IO_FILE FILE;
typedef struct
{
  int __count;
  union
  {
    unsigned int __wch;
    char __wchb[4];
  } __value;
} __mbstate_t;
typedef unsigned int wint_t;
typedef struct
{
  __off_t __pos;
  __mbstate_t __state;
} _G_fpos_t;
typedef struct
{
  __off64_t __pos;
  __mbstate_t __state;
} _G_fpos64_t;
enum
{
  __GCONV_OK = 0,
  __GCONV_NOCONV,
  __GCONV_NODB,
  __GCONV_NOMEM,
  __GCONV_EMPTY_INPUT,
  __GCONV_FULL_OUTPUT,
  __GCONV_ILLEGAL_INPUT,
  __GCONV_INCOMPLETE_INPUT,
  __GCONV_ILLEGAL_DESCRIPTOR,
  __GCONV_INTERNAL_ERROR
};
enum
{
  __GCONV_IS_LAST = 0x0001,
  __GCONV_IGNORE_ERRORS = 0x0002,
  __GCONV_SWAP = 0x0004,
  __GCONV_TRANSLIT = 0x0008
};
struct __gconv_step;
struct __gconv_step_data;
struct __gconv_loaded_object;
typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
       const unsigned char **, const unsigned char *,
       unsigned char **, size_t *, int, int);
typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char);
typedef int (*__gconv_init_fct) (struct __gconv_step *);
typedef void (*__gconv_end_fct) (struct __gconv_step *);
struct __gconv_step
{
  struct __gconv_loaded_object *__shlib_handle;
  const char *__modname;
  int __counter;
  char *__from_name;
  char *__to_name;
  __gconv_fct __fct;
  __gconv_btowc_fct __btowc_fct;
  __gconv_init_fct __init_fct;
  __gconv_end_fct __end_fct;
  int __min_needed_from;
  int __max_needed_from;
  int __min_needed_to;
  int __max_needed_to;
  int __stateful;
  void *__data;
};
struct __gconv_step_data
{
  unsigned char *__outbuf;
  unsigned char *__outbufend;
  int __flags;
  int __invocation_counter;
  int __internal_use;
  __mbstate_t *__statep;
  __mbstate_t __state;
};
typedef struct __gconv_info
{
  size_t __nsteps;
  struct __gconv_step *__steps;
  __extension__ struct __gconv_step_data __data[0];
} *__gconv_t;
extern int __gconv_transliterate (struct __gconv_step *step,
      struct __gconv_step_data *step_data,
      const unsigned char *inbufstart,
      const unsigned char **inbufp,
      const unsigned char *inbufend,
      unsigned char **outbufstart,
      size_t *irreversible);
typedef union
{
  struct __gconv_info __cd;
  struct
  {
    struct __gconv_info __cd;
    struct __gconv_step_data __data;
  } __combined;
} _G_iconv_t;
typedef __builtin_va_list __gnuc_va_list;
struct _IO_jump_t; struct _IO_FILE;
typedef void _IO_lock_t;
struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;
  int _pos;
};
enum __codecvt_result
{
  __codecvt_ok,
  __codecvt_partial,
  __codecvt_error,
  __codecvt_noconv
};
struct _IO_codecvt
{
  void (*__codecvt_destr) (struct _IO_codecvt *);
  enum __codecvt_result (*__codecvt_do_out) (struct _IO_codecvt *,
          __mbstate_t *,
          const wchar_t *,
          const wchar_t *,
          const wchar_t **, char *,
          char *, char **);
  enum __codecvt_result (*__codecvt_do_unshift) (struct _IO_codecvt *,
       __mbstate_t *, char *,
       char *, char **);
  enum __codecvt_result (*__codecvt_do_in) (struct _IO_codecvt *,
         __mbstate_t *,
         const char *, const char *,
         const char **, wchar_t *,
         wchar_t *, wchar_t **);
  int (*__codecvt_do_encoding) (struct _IO_codecvt *);
  int (*__codecvt_do_always_noconv) (struct _IO_codecvt *);
  int (*__codecvt_do_length) (struct _IO_codecvt *, __mbstate_t *,
         const char *, const char *, size_t);
  int (*__codecvt_do_max_length) (struct _IO_codecvt *);
  _G_iconv_t __cd_in;
  _G_iconv_t __cd_out;
};
struct _IO_wide_data
{
  wchar_t *_IO_read_ptr;
  wchar_t *_IO_read_end;
  wchar_t *_IO_read_base;
  wchar_t *_IO_write_base;
  wchar_t *_IO_write_ptr;
  wchar_t *_IO_write_end;
  wchar_t *_IO_buf_base;
  wchar_t *_IO_buf_end;
  wchar_t *_IO_save_base;
  wchar_t *_IO_backup_base;
  wchar_t *_IO_save_end;
  __mbstate_t _IO_state;
  __mbstate_t _IO_last_state;
  struct _IO_codecvt _codecvt;
  wchar_t _shortbuf[1];
  const struct _IO_jump_t *_wide_vtable;
};
struct _IO_FILE {
  int _flags;
  char* _IO_read_ptr;
  char* _IO_read_end;
  char* _IO_read_base;
  char* _IO_write_base;
  char* _IO_write_ptr;
  char* _IO_write_end;
  char* _IO_buf_base;
  char* _IO_buf_end;
  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;
  struct _IO_marker *_markers;
  struct _IO_FILE *_chain;
  int _fileno;
  int _flags2;
  __off_t _old_offset;
  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];
  _IO_lock_t *_lock;
  __off64_t _offset;
  struct _IO_codecvt *_codecvt;
  struct _IO_wide_data *_wide_data;
  struct _IO_FILE *_freeres_list;
  void *_freeres_buf;
  size_t __pad5;
  int _mode;
  char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
};
typedef struct _IO_FILE _IO_FILE;
struct _IO_FILE_plus;
extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
extern _IO_FILE *_IO_stdin ;
extern _IO_FILE *_IO_stdout ;
extern _IO_FILE *_IO_stderr ;
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
typedef __ssize_t __io_write_fn (void *__cookie, const char *__buf,
     size_t __n);
typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
typedef int __io_close_fn (void *__cookie);
typedef __io_read_fn cookie_read_function_t;
typedef __io_write_fn cookie_write_function_t;
typedef __io_seek_fn cookie_seek_function_t;
typedef __io_close_fn cookie_close_function_t;
typedef struct
{
  __io_read_fn *read;
  __io_write_fn *write;
  __io_seek_fn *seek;
  __io_close_fn *close;
} _IO_cookie_io_functions_t;
typedef _IO_cookie_io_functions_t cookie_io_functions_t;
struct _IO_cookie_file;
extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
        void *__cookie, _IO_cookie_io_functions_t __fns);
extern int __underflow (_IO_FILE *);
extern int __uflow (_IO_FILE *);
extern int __overflow (_IO_FILE *, int);
extern wint_t __wunderflow (_IO_FILE *);
extern wint_t __wuflow (_IO_FILE *);
extern wint_t __woverflow (_IO_FILE *, wint_t);
extern int _IO_getc (_IO_FILE *__fp);
extern int _IO_putc (int __c, _IO_FILE *__fp);
extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__ ));
extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__ ));
extern int _IO_peekc_locked (_IO_FILE *__fp);
extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__ ));
extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__ ));
extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__ ));
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
   __gnuc_va_list, int *__restrict);
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
    __gnuc_va_list);
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__ ));
extern wint_t _IO_getwc (_IO_FILE *__fp);
extern wint_t _IO_putwc (wchar_t __wc, _IO_FILE *__fp);
extern int _IO_fwide (_IO_FILE *__fp, int __mode) __attribute__ ((__nothrow__ ));
extern int _IO_vfwscanf (_IO_FILE * __restrict, const wchar_t * __restrict,
    __gnuc_va_list, int *__restrict);
extern int _IO_vfwprintf (_IO_FILE *__restrict, const wchar_t *__restrict,
     __gnuc_va_list);
extern __ssize_t _IO_wpadn (_IO_FILE *, wint_t, __ssize_t);
extern void _IO_free_wbackup_area (_IO_FILE *) __attribute__ ((__nothrow__ ));
typedef __gnuc_va_list va_list;
typedef _G_fpos_t fpos_t;
typedef _G_fpos64_t fpos64_t;
extern struct _IO_FILE *stdin;
extern struct _IO_FILE *stdout;
extern struct _IO_FILE *stderr;
extern int remove (const char *__filename) __attribute__ ((__nothrow__ ));
extern int rename (const char *__old, const char *__new) __attribute__ ((__nothrow__ ));
extern int renameat (int __oldfd, const char *__old, int __newfd,
       const char *__new) __attribute__ ((__nothrow__ ));
extern FILE *tmpfile (void) ;
extern FILE *tmpfile64 (void) ;
extern char *tmpnam (char *__s) __attribute__ ((__nothrow__ )) ;
extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__ )) ;
extern char *tempnam (const char *__dir, const char *__pfx)
     __attribute__ ((__nothrow__ )) __attribute__ ((__malloc__)) ;
extern int fclose (FILE *__stream);
extern int fflush (FILE *__stream);
extern int fflush_unlocked (FILE *__stream);
extern int fcloseall (void);
extern FILE *fopen (const char *__restrict __filename,
      const char *__restrict __modes) ;
extern FILE *freopen (const char *__restrict __filename,
        const char *__restrict __modes,
        FILE *__restrict __stream) ;
extern FILE *fopen64 (const char *__restrict __filename,
        const char *__restrict __modes) ;
extern FILE *freopen64 (const char *__restrict __filename,
   const char *__restrict __modes,
   FILE *__restrict __stream) ;
extern FILE *fdopen (int __fd, const char *__modes) __attribute__ ((__nothrow__ )) ;
extern FILE *fopencookie (void *__restrict __magic_cookie,
     const char *__restrict __modes,
     _IO_cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__ )) ;
extern FILE *fmemopen (void *__s, size_t __len, const char *__modes)
  __attribute__ ((__nothrow__ )) ;
extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__ )) ;
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__ ));
extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
      int __modes, size_t __n) __attribute__ ((__nothrow__ ));
extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
         size_t __size) __attribute__ ((__nothrow__ ));
extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__ ));
extern int fprintf (FILE *__restrict __stream,
      const char *__restrict __format, ...);
extern int printf (const char *__restrict __format, ...);
extern int sprintf (char *__restrict __s,
      const char *__restrict __format, ...) __attribute__ ((__nothrow__));
extern int vfprintf (FILE *__restrict __s, const char *__restrict __format,
       __gnuc_va_list __arg);
extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg);
extern int vsprintf (char *__restrict __s, const char *__restrict __format,
       __gnuc_va_list __arg) __attribute__ ((__nothrow__));
extern int snprintf (char *__restrict __s, size_t __maxlen,
       const char *__restrict __format, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
extern int vsnprintf (char *__restrict __s, size_t __maxlen,
        const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
extern int vasprintf (char **__restrict __ptr, const char *__restrict __f,
        __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) ;
extern int __asprintf (char **__restrict __ptr,
         const char *__restrict __fmt, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
extern int asprintf (char **__restrict __ptr,
       const char *__restrict __fmt, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
extern int vdprintf (int __fd, const char *__restrict __fmt,
       __gnuc_va_list __arg)
     __attribute__ ((__format__ (__printf__, 2, 0)));
extern int dprintf (int __fd, const char *__restrict __fmt, ...)
     __attribute__ ((__format__ (__printf__, 2, 3)));
extern int fscanf (FILE *__restrict __stream,
     const char *__restrict __format, ...) ;
extern int scanf (const char *__restrict __format, ...) ;
extern int sscanf (const char *__restrict __s,
     const char *__restrict __format, ...) __attribute__ ((__nothrow__ ));
extern int vfscanf (FILE *__restrict __s, const char *__restrict __format,
      __gnuc_va_list __arg)
     __attribute__ ((__format__ (__scanf__, 2, 0))) ;
extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__format__ (__scanf__, 1, 0))) ;
extern int vsscanf (const char *__restrict __s,
      const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__nothrow__ )) __attribute__ ((__format__ (__scanf__, 2, 0)));
extern int fgetc (FILE *__stream);
extern int getc (FILE *__stream);
extern int getchar (void);
extern int getc_unlocked (FILE *__stream);
extern int getchar_unlocked (void);
extern int fgetc_unlocked (FILE *__stream);
extern int fputc (int __c, FILE *__stream);
extern int putc (int __c, FILE *__stream);
extern int putchar (int __c);
extern int fputc_unlocked (int __c, FILE *__stream);
extern int putc_unlocked (int __c, FILE *__stream);
extern int putchar_unlocked (int __c);
extern int getw (FILE *__stream);
extern int putw (int __w, FILE *__stream);
extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
     ;
extern char *fgets_unlocked (char *__restrict __s, int __n,
        FILE *__restrict __stream) ;
extern __ssize_t __getdelim (char **__restrict __lineptr,
          size_t *__restrict __n, int __delimiter,
          FILE *__restrict __stream) ;
extern __ssize_t getdelim (char **__restrict __lineptr,
        size_t *__restrict __n, int __delimiter,
        FILE *__restrict __stream) ;
extern __ssize_t getline (char **__restrict __lineptr,
       size_t *__restrict __n,
       FILE *__restrict __stream) ;
extern int fputs (const char *__restrict __s, FILE *__restrict __stream);
extern int puts (const char *__s);
extern int ungetc (int __c, FILE *__stream);
extern size_t fread (void *__restrict __ptr, size_t __size,
       size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite (const void *__restrict __ptr, size_t __size,
        size_t __n, FILE *__restrict __s);
extern int fputs_unlocked (const char *__restrict __s,
      FILE *__restrict __stream);
extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
         size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size,
          size_t __n, FILE *__restrict __stream);
extern int fseek (FILE *__stream, long int __off, int __whence);
extern long int ftell (FILE *__stream) ;
extern void rewind (FILE *__stream);
extern int fseeko (FILE *__stream, __off_t __off, int __whence);
extern __off_t ftello (FILE *__stream) ;
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
extern int fsetpos (FILE *__stream, const fpos_t *__pos);
extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
extern __off64_t ftello64 (FILE *__stream) ;
extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos);
extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__ ));
extern int feof (FILE *__stream) __attribute__ ((__nothrow__ )) ;
extern int ferror (FILE *__stream) __attribute__ ((__nothrow__ )) ;
extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__ ));
extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__ )) ;
extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__ )) ;
extern void perror (const char *__s);
extern int sys_nerr;
extern const char *const sys_errlist[];
extern int _sys_nerr;
extern const char *const _sys_errlist[];
extern int fileno (FILE *__stream) __attribute__ ((__nothrow__ )) ;
extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__ )) ;
extern FILE *popen (const char *__command, const char *__modes) ;
extern int pclose (FILE *__stream);
extern char *ctermid (char *__s) __attribute__ ((__nothrow__ ));
extern char *cuserid (char *__s);
struct obstack;
extern int obstack_printf (struct obstack *__restrict __obstack,
      const char *__restrict __format, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
extern int obstack_vprintf (struct obstack *__restrict __obstack,
       const char *__restrict __format,
       __gnuc_va_list __args)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));
extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__ ));
extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__ )) ;
extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__ ));
extern __inline int
vprintf (const char *__restrict __fmt, __gnuc_va_list __arg)
{
  return vfprintf (stdout, __fmt, __arg);
}
extern __inline int
getchar (void)
{
  return _IO_getc (stdin);
}
extern __inline int
fgetc_unlocked (FILE *__fp)
{
  return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}
extern __inline int
getc_unlocked (FILE *__fp)
{
  return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}
extern __inline int
getchar_unlocked (void)
{
  return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
}
extern __inline int
putchar (int __c)
{
  return _IO_putc (__c, stdout);
}
extern __inline int
fputc_unlocked (int __c, FILE *__stream)
{
  return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}
extern __inline int
putc_unlocked (int __c, FILE *__stream)
{
  return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}
extern __inline int
putchar_unlocked (int __c)
{
  return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
}
extern __inline __ssize_t
getline (char **__lineptr, size_t *__n, FILE *__stream)
{
  return __getdelim (__lineptr, __n, '\n', __stream);
}
extern __inline int
__attribute__ ((__nothrow__ )) feof_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x10) != 0);
}
extern __inline int
__attribute__ ((__nothrow__ )) ferror_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x20) != 0);
}
extern int __fcloseall (void);
extern int __snprintf (char *__restrict __s, size_t __maxlen,
         const char *__restrict __format, ...)
     __attribute__ ((__format__ (__printf__, 3, 4)));
extern int __vsnprintf (char *__restrict __s, size_t __maxlen,
   const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__format__ (__printf__, 3, 0)));
extern int __vfscanf (FILE *__restrict __s,
        const char *__restrict __format,
        __gnuc_va_list __arg)
     __attribute__ ((__format__ (__scanf__, 2, 0)));
extern int __vscanf (const char *__restrict __format,
       __gnuc_va_list __arg)
     __attribute__ ((__format__ (__scanf__, 1, 0)));
extern __ssize_t __getline (char **__lineptr, size_t *__n,
         FILE *__stream);
extern int __vsscanf (const char *__restrict __s,
        const char *__restrict __format,
        __gnuc_va_list __arg)
     __attribute__ ((__format__ (__scanf__, 2, 0)));
extern int __sprintf_chk (char *, int, size_t, const char *, ...) __attribute__ ((__nothrow__ ));
extern int __snprintf_chk (char *, size_t, int, size_t, const char *, ...)
     __attribute__ ((__nothrow__ ));
extern int __vsprintf_chk (char *, int, size_t, const char *,
      __gnuc_va_list) __attribute__ ((__nothrow__ ));
extern int __vsnprintf_chk (char *, size_t, int, size_t, const char *,
       __gnuc_va_list) __attribute__ ((__nothrow__ ));
extern int __printf_chk (int, const char *, ...);
extern int __fprintf_chk (FILE *, int, const char *, ...);
extern int __vprintf_chk (int, const char *, __gnuc_va_list);
extern int __vfprintf_chk (FILE *, int, const char *, __gnuc_va_list);
extern char *__fgets_unlocked_chk (char *buf, size_t size, int n, FILE *fp);
extern char *__fgets_chk (char *buf, size_t size, int n, FILE *fp);
extern int __asprintf_chk (char **, int, const char *, ...) __attribute__ ((__nothrow__ ));
extern int __vasprintf_chk (char **, int, const char *, __gnuc_va_list) __attribute__ ((__nothrow__ ));
extern int __dprintf_chk (int, int, const char *, ...);
extern int __vdprintf_chk (int, int, const char *, __gnuc_va_list);
extern int __obstack_printf_chk (struct obstack *, int, const char *, ...)
     __attribute__ ((__nothrow__ ));
extern int __obstack_vprintf_chk (struct obstack *, int, const char *,
      __gnuc_va_list) __attribute__ ((__nothrow__ ));
extern int __isoc99_fscanf (FILE *__restrict __stream,
       const char *__restrict __format, ...) ;
extern int __isoc99_scanf (const char *__restrict __format, ...) ;
extern int __isoc99_sscanf (const char *__restrict __s,
       const char *__restrict __format, ...) __attribute__ ((__nothrow__ ));
extern int __isoc99_vfscanf (FILE *__restrict __s,
        const char *__restrict __format,
        __gnuc_va_list __arg) ;
extern int __isoc99_vscanf (const char *__restrict __format,
       __gnuc_va_list __arg) ;
extern int __isoc99_vsscanf (const char *__restrict __s,
        const char *__restrict __format,
        __gnuc_va_list __arg) __attribute__ ((__nothrow__ ));
extern FILE *__new_tmpfile (void);
extern FILE *__old_tmpfile (void);
extern int __path_search (char *__tmpl, size_t __tmpl_len,
     const char *__dir, const char *__pfx,
     int __try_tempdir);
extern int __gen_tempname (char *__tmpl, int __suffixlen, int __flags,
      int __kind);
enum __libc_message_action
{
  do_message = 0,
  do_abort = 1 << 0,
  do_backtrace = 1 << 1
};
extern void __libc_fatal (const char *__message)
     __attribute__ ((__noreturn__));
extern void __libc_message (enum __libc_message_action action,
       const char *__fnt, ...);
extern void __fortify_fail (const char *msg)
     __attribute__ ((__noreturn__)) ;
extern void __fortify_fail_abort (_Bool, const char *msg)
     __attribute__ ((__noreturn__)) ;
extern void __flockfile (FILE *__stream);
extern void __funlockfile (FILE *__stream);
extern int __ftrylockfile (FILE *__stream);
extern int __getc_unlocked (FILE *__fp);
extern wint_t __getwc_unlocked (FILE *__fp);
extern int __fxprintf (FILE *__fp, const char *__fmt, ...)
     __attribute__ ((__format__ (__printf__, 2, 3)));
extern int __fxprintf_nocancel (FILE *__fp, const char *__fmt, ...)
     __attribute__ ((__format__ (__printf__, 2, 3)));
extern const char *const _sys_errlist_internal[] ;
extern int _sys_nerr_internal ;
extern __typeof (dprintf) __dprintf
     __attribute__ ((__format__ (__printf__, 2, 3)));
extern __typeof (fileno) __fileno;
extern __typeof (ftello) __ftello;
extern __typeof (fflush_unlocked) __fflush_unlocked;
extern __typeof (fread_unlocked) __fread_unlocked;
extern __typeof (fgets_unlocked) __fgets_unlocked;
extern __typeof (fputs_unlocked) __fputs_unlocked;
extern FILE *__open_memstream (char **, size_t *) __attribute__ ((__nothrow__ )) ;
extern FILE * __fmemopen (void *buf, size_t len, const char *mode);
static const long double __expl_table [] = {
 -3.47656250000000000584188889839535373E-01L,
  6.90417668990715641167244540876988960E-32L,
 -3.43749999999999981853132895957607418E-01L,
 -7.16021898043268093462818380603370350E-33L,
 -3.39843750000000013418643523138766329E-01L,
  8.16920774283317801641347327589583265E-32L,
 -3.35937500000000014998092453039303051E-01L,
 -6.55865578425428447938248396879359670E-32L,
 -3.32031250000000000981984049529998541E-01L,
  6.91213046334032232108944519541512737E-32L,
 -3.28124999999999986646017645350399708E-01L,
 -6.16281060996110316602421505683742661E-32L,
 -3.24218749999999991645717430645867963E-01L,
 -7.90797211087760527593856542417304137E-32L,
 -3.20312499999999998918211610690789652E-01L,
  8.64024799457616856987630373786503376E-32L,
 -3.16406249999999998153974811017181883E-01L,
 -2.73176610180696076418536105483668404E-32L,
 -3.12500000000000011420976192575972779E-01L,
  7.16573502812389453744433792609989420E-32L,
 -3.08593750000000001735496343854851414E-01L,
 -1.56292999645122272621237565671593071E-32L,
 -3.04687499999999982592401295899221626E-01L,
  6.48993208584888904958594509625158417E-32L,
 -3.00781249999999999230616898937763959E-01L,
  6.57082437496961397305801409357792029E-32L,
 -2.96874999999999998788769281703245722E-01L,
 -3.26588297198283968096426564544269170E-32L,
 -2.92968750000000015318089182805941695E-01L,
 -1.73291974845198589684358727559290718E-32L,
 -2.89062500000000007736778942676309681E-01L,
 -6.83629745986675744404029225571026236E-32L,
 -2.85156250000000001367091555763661937E-01L,
 -5.44898442619766878281110054067026237E-32L,
 -2.81249999999999986958718100227029406E-01L,
  1.13007318374506125723591889451107046E-32L,
 -2.77343750000000000356078829380495179E-01L,
 -4.98979365468978332358409063436543102E-32L,
 -2.73437499999999990276993957508540484E-01L,
 -8.79390484115892344533724650295100871E-32L,
 -2.69531250000000002434203866460082225E-01L,
  9.44060754687026590886751809927191596E-32L,
 -2.65624999999999997296320716986257179E-01L,
  2.07142664067265697791007875348396921E-32L,
 -2.61718750000000010237478733739017956E-01L,
 -6.10552936159265665298996309192680256E-32L,
 -2.57812500000000011948220522778370303E-01L,
  6.72477169058908902499239631466443836E-32L,
 -2.53906249999999991822993360536596860E-01L,
 -2.44868296623215865054704392917190994E-32L,
 -2.49999999999999986862019457428548084E-01L,
 -3.85302898949105073614122724961613078E-32L,
 -2.46093750000000000237554160737318435E-01L,
 -1.52823675242678363494345369284988589E-32L,
 -2.42187500000000003023380963205457065E-01L,
 -7.78402037952209709489481182714311699E-34L,
 -2.38281249999999995309623303145485725E-01L,
 -3.54307216794236899443913216397197696E-32L,
 -2.34374999999999998425804947623207526E-01L,
 -2.86038428948386602859761879407549696E-32L,
 -2.30468749999999993822207406785200832E-01L,
 -2.54339521031747516806893838749365762E-32L,
 -2.26562499999999997823524030344489884E-01L,
  4.31904611473158635644635628922959401E-32L,
 -2.22656250000000004835132405125162742E-01L,
  2.54709791629335691650310168420597566E-33L,
 -2.18749999999999988969454021829236626E-01L,
 -3.77236096429336082213752014054909454E-32L,
 -2.14843750000000010613256919115758495E-01L,
 -4.55194148712216691177097854305964738E-32L,
 -2.10937499999999993204656148110447201E-01L,
 -2.95044199165561453749332254271716417E-32L,
 -2.07031250000000012233944895423355677E-01L,
  1.93146788688385419095981415411012357E-32L,
 -2.03125000000000008030983633336321863E-01L,
  2.37361904671826193563212931215900137E-32L,
 -1.99218750000000001763815712796132779E-01L,
 -3.63171243370923753295192486732883239E-33L,
 -1.95312500000000004883660234506677272E-01L,
 -3.19989507343607877747980892249711601E-33L,
 -1.91406250000000013720152363227519348E-01L,
 -1.89295754093147174148371614722178860E-32L,
 -1.87500000000000000182342082774432620E-01L,
 -2.96812835183184815200854214892983927E-32L,
 -1.83593750000000012410147185883290345E-01L,
 -2.02191931237489669058466239995304587E-32L,
 -1.79687499999999997439177363346082917E-01L,
 -9.92752326937775530007399526834009465E-33L,
 -1.75781249999999995824373974504785174E-01L,
  1.44184772065335613487885714828816178E-32L,
 -1.71874999999999986685050259043077809E-01L,
 -3.49007014971241147689894940544402482E-32L,
 -1.67968749999999997316058782350439701E-01L,
  3.34025733574205019081305778794376391E-32L,
 -1.64062499999999993322730602128318480E-01L,
 -1.83345916769684984022099095506340635E-32L,
 -1.60156249999999992419000744447607979E-01L,
  2.73442789798110494773517431626534726E-32L,
 -1.56249999999999987665010524130393080E-01L,
  2.02695576464836145806428118889332191E-32L,
 -1.52343749999999989905291167951491803E-01L,
 -3.61436631548815190395331054871041524E-32L,
 -1.48437500000000006686107754967759751E-01L,
 -2.15524270159131591469319477922198390E-32L,
 -1.44531250000000005132889939177166485E-01L,
  2.74741116529653547935086189244019604E-32L,
 -1.40625000000000000707469094533647325E-01L,
  4.40607097220049957013547629906723266E-33L,
 -1.36718749999999995713752139187543306E-01L,
 -3.73751317180116492404578048203389108E-32L,
 -1.32812500000000007198453630478482191E-01L,
 -3.97050085179660203884930593717220728E-32L,
 -1.28906250000000006070486371645733082E-01L,
  3.59610068058504988294019521946586131E-32L,
 -1.25000000000000003700729208608337966E-01L,
  3.23464851393124362331846965931995969E-33L,
 -1.21093750000000013729038501177102555E-01L,
  2.45242487730722066611358741283977619E-32L,
 -1.17187499999999999765305306880205578E-01L,
 -1.14557520298960389903199646350205537E-32L,
 -1.13281250000000009579647893740755690E-01L,
  2.37873962873837390105423621772752350E-32L,
 -1.09375000000000008981153004560108539E-01L,
  1.53152444860014076105003555837231015E-32L,
 -1.05468749999999992399063850363228723E-01L,
 -8.75920903597804862471749360196688834E-33L,
 -1.01562500000000007685885179918350550E-01L,
 -4.63820993797174451904075397785059501E-33L,
 -9.76562499999999887262211517861331814E-02L,
 -2.63767025974952608658936466715705903E-33L,
 -9.37499999999999939650246024457439795E-02L,
 -1.72047822349322956713582039121348377E-32L,
 -8.98437500000000033088896383977486369E-02L,
  3.04831994420989436248526129869697270E-33L,
 -8.59374999999999947312400115121319225E-02L,
  1.50416954438393392150792422537312281E-32L,
 -8.20312500000000054182280847004695514E-02L,
  2.68399664523430004488075638997207289E-33L,
 -7.81250000000000114767533968079748798E-02L,
  1.72318124201659121296305402819694281E-32L,
 -7.42187500000000035531829472486812869E-02L,
  2.09401756478514117051383998628099655E-32L,
 -7.03124999999999987474933134860732535E-02L,
  2.28515798224350800271565551341211666E-32L,
 -6.64062500000000042267533361089054159E-02L,
  1.97576478800281368377376002585430031E-32L,
 -6.25000000000000066329769382774201686E-02L,
 -1.46422615813786836245343723048221678E-33L,
 -5.85937500000000002823707957982406053E-02L,
  9.25637741701318872896718218457555829E-33L,
 -5.46875000000000081586888005226044448E-02L,
 -4.87144542459404765480424673678105050E-33L,
 -5.07812499999999927720348253140567013E-02L,
 -3.01901021987395945826043649523451725E-33L,
 -4.68749999999999935349476738962633103E-02L,
  1.21521638219189777347767475937119750E-32L,
 -4.29687500000000056305562847814228219E-02L,
 -1.18643699217679276275559592978275214E-32L,
 -3.90624999999999962692914526031373542E-02L,
 -4.91277156857520035712509544689973679E-33L,
 -3.51562500000000108152468207687602886E-02L,
  1.18599806302656253755207072755609820E-32L,
 -3.12500000000000077376981036742289578E-02L,
  9.97730386477005171963635210799577079E-33L,
 -2.73437500000000139436129596418623235E-02L,
  2.25755321633070123579875157841633859E-33L,
 -2.34375000000000088003629211828324876E-02L,
  2.84374279216848803102126617873942975E-33L,
 -1.95312500000000107408831063404855424E-02L,
  2.47348089686935458989103979140011912E-33L,
 -1.56250000000000081443917555362290635E-02L,
 -2.43379314483517422161458863218426254E-33L,
 -1.17187500000000051490597418161403184E-02L,
  1.83405297208145390679150568810924707E-33L,
 -7.81249999999999715861805208310174953E-03L,
  3.51548384878710915171654413641872451E-34L,
 -3.90625000000000309326013918295097128E-03L,
  6.38058004651791109324060099097251911E-36L,
  0.00000000000000000000000000000000000E+00L,
  0.00000000000000000000000000000000000E+00L,
  3.90625000000000245479958859972588985E-03L,
 -6.58439598384342854976169982902779828E-36L,
  7.81250000000001311374391093664996358E-03L,
  2.60265650555493781464273319671555602E-33L,
  1.17187500000000269581156218247101912E-02L,
  1.00961747974945520631836275894919326E-33L,
  1.56249999999999797878275270751825475E-02L,
  2.03174577741375590087897353146748580E-33L,
  1.95312499999999760319884511789111533E-02L,
  4.62788519658803722282100289809515007E-33L,
  2.34374999999999822953909016349145918E-02L,
 -3.19499956304699705390404384504876533E-33L,
  2.73437500000000137220327275871555682E-02L,
 -2.25757776523031994464630107442723424E-33L,
  3.12499999999999790857640618332718621E-02L,
 -4.22479470489989916319395454536511458E-33L,
  3.51562499999999840753382405747597346E-02L,
  1.08459658374118041980976756063083500E-34L,
  3.90624999999999989384433621470426757E-02L,
 -7.41674226146122000759491297811091830E-33L,
  4.29687500000000107505739500500200462E-02L,
 -4.74689012756713017494437969420919847E-34L,
  4.68749999999999978700749928325717352E-02L,
 -1.06208165308448830117773486334902917E-32L,
  5.07812499999999815072625435955786253E-02L,
 -9.37038897148383660401929567549111394E-33L,
  5.46874999999999809511553152189867394E-02L,
  1.06642963074562437340498606682822123E-32L,
  5.85937500000000184331996330905145551E-02L,
 -1.76639977694797200820296641773791945E-34L,
  6.25000000000000021544696744852045001E-02L,
  1.68616371995798354366633034788947149E-32L,
  6.64062499999999965563110718495802889E-02L,
 -1.82463217667830160048872113565316215E-32L,
  7.03124999999999759989183341261898222E-02L,
 -1.07843770101525495515646940862541503E-32L,
  7.42187499999999898968873730710101412E-02L,
  1.28629441689592874462780757154138223E-32L,
  7.81249999999999957198938523510804668E-02L,
  1.13297573459968118467100063135856856E-33L,
  8.20312500000000199911640621145851159E-02L,
 -1.51161335208135146756554123073528707E-32L,
  8.59375000000000134175373433347670743E-02L,
  1.09763629458404270323909815379924900E-32L,
  8.98437500000000036533922600308306335E-02L,
  3.11459653680110433194288029777718358E-33L,
  9.37500000000000184977946245216914691E-02L,
 -4.66656154468277949130395786965043927E-33L,
  9.76562500000000237839723100419376084E-02L,
 -1.03028043424658760249140747856831301E-32L,
  1.01562500000000012345545575236836572E-01L,
  2.15755372310795701322789783729456319E-32L,
  1.05468749999999976493840484471911438E-01L,
  1.78771847038773333029677216592309083E-32L,
  1.09375000000000002267015055992785402E-01L,
  6.23263106693943817730045115112427717E-33L,
  1.13281250000000022354208618429577398E-01L,
  5.40514416644786448581426756221178868E-33L,
  1.17187500000000013252367133076817603E-01L,
 -7.12412585457324989451327215568641325E-33L,
  1.21093750000000020759863992944300792E-01L,
  6.26591408357572503875647872077266444E-33L,
  1.25000000000000004739659392396765618E-01L,
 -1.55611398459729463981000080101758830E-32L,
  1.28906249999999982360888081057894783E-01L,
 -1.77531518652835570781208599686606474E-32L,
  1.32812500000000010568583998727400436E-01L,
  2.12104021624990594668286391598300893E-32L,
  1.36718749999999998434125157367005292E-01L,
  2.50454798592543203967309921276955297E-32L,
  1.40625000000000015550032422969330356E-01L,
  7.80972982879849783680252962992639832E-33L,
  1.44531250000000012402535562111122522E-01L,
  2.79662468716455159585514763921671876E-32L,
  1.48437500000000007761020440087419948E-01L,
  2.15518492972728435680556239996258527E-32L,
  1.52343750000000001733189947520484032E-01L,
  8.34032236093545825619420380704500188E-33L,
  1.56249999999999988073295321246958484E-01L,
  2.44119337150624789345260194989620908E-32L,
  1.60156250000000002076894210913572460E-01L,
 -7.36124501128859978061216696286151753E-33L,
  1.64062500000000000950861276373482172E-01L,
 -4.80566184447001164583855800470217373E-33L,
  1.67968749999999989878071706155265999E-01L,
 -4.42154428718618459799673088733365064E-32L,
  1.71874999999999999459734108403218175E-01L,
 -3.29736288190321377985697972236270628E-32L,
  1.75781249999999997987525759778901845E-01L,
 -1.28800728638468399687523924685844352E-32L,
  1.79687500000000004929565820437175783E-01L,
  1.60624461317978482424582320675174225E-32L,
  1.83593750000000016873727045739708856E-01L,
 -3.83390389582056606880506003118452558E-32L,
  1.87500000000000013443068740761666872E-01L,
 -2.74141662712926256150154726565203091E-32L,
  1.91406249999999981494101786848611970E-01L,
  3.68992437075565165346469517256118001E-32L,
  1.95312499999999989069921848800501648E-01L,
  3.69712249337856518452988332367785220E-32L,
  1.99218750000000021148042946919300804E-01L,
  2.50142536781142175091322844848566649E-32L,
  2.03124999999999977732559198825437141E-01L,
 -2.41951877287895024779300892731537816E-32L,
  2.07031249999999996744030653771913124E-01L,
 -1.94346475904454000031592792989765585E-32L,
  2.10937500000000000251399259834392298E-01L,
 -1.33528748788094249098998693871759411E-33L,
  2.14843749999999993936323609611875097E-01L,
  1.14839877977014974625242788556545292E-32L,
  2.18750000000000015181732784749663837E-01L,
  1.42689085313142539755499441881408391E-32L,
  2.22656249999999992172647770539596569E-01L,
 -3.34421462850496887359128610229650547E-32L,
  2.26562499999999989595607223847082419E-01L,
 -3.08983588107248752517344356508205569E-32L,
  2.30468749999999979130462438434567117E-01L,
 -3.01407539802851697849105682795217019E-32L,
  2.34375000000000012194252337217891971E-01L,
 -8.46879710915628592284714319904522657E-33L,
  2.38281249999999982991877076137149870E-01L,
 -2.93563878880439245627127095245798544E-32L,
  2.42187499999999981447559841442773990E-01L,
 -4.56766746558806021264215486909850481E-32L,
  2.46093749999999991067720539980207318E-01L,
  2.14033004219908074003010247652128251E-32L,
  2.50000000000000016613825838126835953E-01L,
  2.57617532593749185996714235009382870E-32L,
  2.53906250000000013372004437827044321E-01L,
  7.20177123439204414298152646284640101E-32L,
  2.57812499999999995765234725413886085E-01L,
  6.51253187532920882777046064603770602E-32L,
  2.61718750000000007647689994011222248E-01L,
  3.02370610028725823590045201871491395E-32L,
  2.65624999999999986893899042596554269E-01L,
 -2.07683715950724761146070082510569258E-32L,
  2.69531249999999979842788204900639327E-01L,
  8.71465252506557329027658736641075706E-32L,
  2.73437500000000006712165837793818271E-01L,
 -6.62704045767568912140550474455810301E-32L,
  2.77343749999999994411329302988535617E-01L,
 -4.87273466291944117406493607771338767E-32L,
  2.81250000000000012677892447379453135E-01L,
 -8.55871796664700790726282049552906783E-32L,
  2.85156249999999998558643013736363981E-01L,
 -1.33068334720606220176455289635046875E-32L,
  2.89062500000000008831431235621753924E-01L,
 -9.34157398616814623985483776710704237E-32L,
  2.92968750000000019840235286110877063E-01L,
  4.99302093775173155906059132992249671E-33L,
  2.96875000000000015867911730971630513E-01L,
  7.86107787827057767235127454590866211E-33L,
  3.00781250000000015814100002286124758E-01L,
 -1.65419431293024229981937172317171504E-32L,
  3.04687499999999985213157159965287195E-01L,
  9.68753602893894024018934325652944198E-32L,
  3.08593749999999989969324338045156215E-01L,
  7.10268609610294706092252562643261106E-32L,
  3.12500000000000002971606591018488854E-01L,
  6.38924218802905979887732294952782964E-32L,
  3.16406250000000006594921047402056305E-01L,
  3.96079878754651470094149874444850097E-32L,
  3.20312500000000006713799366908329147E-01L,
 -1.86401314975634286055150437995880517E-32L,
  3.24218749999999987061246567584951210E-01L,
 -3.18643523744758601387071062700407431E-32L,
  3.28124999999999991782776266707412953E-01L,
 -4.46964199751314296839915534813144652E-32L,
  3.32031250000000000393816557756032682E-01L,
 -9.03246333902065439930373230002688649E-33L,
  3.35937499999999983810482995064392173E-01L,
  5.27742727066129518825981597650621794E-32L,
  3.39843750000000004310441349760912471E-01L,
 -3.85927263474732591932884416445586106E-32L,
  3.43749999999999990248130003997484364E-01L,
  9.62005170171527308106468341512327487E-34L,
  3.47656250000000004085726414568625697E-01L,
 -6.59664093705705297250259434519072507E-32L,
 -1.98364257812501251077851763965418372E-03L,
 -3.71984513103117734260309047540278737E-34L,
 -1.95312500000000378520649630233891879E-03L,
 -1.12194202736719050440745599339855038E-34L,
 -1.92260742187499397430259771221991482E-03L,
 -2.30068299876822157331268484824540848E-34L,
 -1.89208984375001137424603270262074989E-03L,
 -1.15012507244426243338260435466985403E-34L,
 -1.86157226562500172319250342061336738E-03L,
 -3.12438344643346437509767736937785561E-34L,
 -1.83105468749999505256246872355430379E-03L,
 -5.91130415288336591179087455220308942E-35L,
 -1.80053710937499445182387245573120522E-03L,
 -1.92396289352411531324908916321392100E-34L,
 -1.77001953125000387737631542516323906E-03L,
  7.91101758977203355387806553469731354E-36L,
 -1.73950195312500034854670281415554486E-03L,
  1.55906551582436824067407021178835755E-34L,
 -1.70898437499998955782591472611429852E-03L,
  8.22951661962611381718215899498500357E-35L,
 -1.67846679687500586652037711131708544E-03L,
 -8.96642618848426299713145894522897419E-35L,
 -1.64794921875000109499161354039904782E-03L,
 -2.88077905394253859590587789680486639E-34L,
 -1.61743164062501133830507079150388351E-03L,
 -3.68271725851639066312899986829350273E-34L,
 -1.58691406249999015546015764131101956E-03L,
  8.48197657099957029953716507898788812E-35L,
 -1.55639648437500317366570219290722587E-03L,
 -3.45156704719737676412949957712570373E-36L,
 -1.52587890625000568759013197767046039E-03L,
 -1.01902948542497496574967177677556729E-34L,
 -1.49536132812500945889014955936485340E-03L,
 -3.32264697086631598830366079048117140E-34L,
 -1.46484374999999931883259902869504725E-03L,
 -1.76487524793892929381101031660811433E-34L,
 -1.43432617187498876325946983333888768E-03L,
 -3.54550084538495708816233114576143814E-34L,
 -1.40380859374999215367421282192718062E-03L,
 -1.90585907028351204486765167064669639E-34L,
 -1.37329101562499692341771212945644892E-03L,
 -3.59631150411372589637918252836880320E-34L,
 -1.34277343749999137467356674296739172E-03L,
 -1.49571076125940368185068762485268117E-35L,
 -1.31225585937499247038404301859788734E-03L,
  3.10375845385355395586146533282311300E-34L,
 -1.28173828124999024755581675764821898E-03L,
 -1.98541096105909793397376077900810019E-34L,
 -1.25122070312500340204619591143332523E-03L,
  3.62884195935761446237911443317457521E-34L,
 -1.22070312499999591578388993012071279E-03L,
 -2.96756662615653130862526710937493307E-35L,
 -1.19018554687498821966212632349422735E-03L,
  1.44659971891167323357060028901142644E-34L,
 -1.15966796875000160938908064907298384E-03L,
  2.50088010538742402346270685365928513E-34L,
 -1.12915039062500267151512523291939657E-03L,
  7.56402096465615210500092443924888831E-35L,
 -1.09863281249998665006360103291051571E-03L,
  1.43982174467233642713619821353592061E-34L,
 -1.06811523437500522742248711752028025E-03L,
  5.41265133745862349181293024531133174E-35L,
 -1.03759765624999980942114138999770552E-03L,
  1.21525139612685854366189534669623436E-34L,
 -1.00708007812499602697537601515759439E-03L,
  1.00020246351201558505328236381833392E-34L,
 -9.76562499999992592487302113340463694E-04L,
 -1.64984406575162932060422892046851002E-34L,
 -9.46044921874989085824996924138179594E-04L,
 -9.29539174108308550334255350011347171E-35L,
 -9.15527343750013735214860599791540029E-04L,
  3.07557018309280519949818825519490586E-35L,
 -8.85009765625012292294986105781516428E-04L,
  4.77499983783821950338363358545463558E-35L,
 -8.54492187499986941239470706817188192E-04L,
 -1.60128240346239526958630011447901568E-34L,
 -8.23974609374996290174598690241743810E-04L,
  1.61677540391961912631535763471935882E-34L,
 -7.93457031249988696952538334288757473E-04L,
  1.22318577008381887076634753347515709E-34L,
 -7.62939453124996723316499040007097041E-04L,
 -1.03845161748762410745671891558398468E-34L,
 -7.32421874999998242520117923997325794E-04L,
  5.64005211953031009549514026639438083E-35L,
 -7.01904296874999772890934814265622012E-04L,
  5.90245467325173644235991233229525762E-35L,
 -6.71386718750008699269643939210658742E-04L,
 -5.20515801723324452151498579012322191E-35L,
 -6.40869140625005499535275057463709988E-04L,
 -6.69469163285461870099846471658294534E-35L,
 -6.10351562499999293780097329596079841E-04L,
 -1.16941808547394177991845382085515086E-34L,
 -5.79833984375000068291972326409994795E-04L,
  1.17885044988246219185041488459766001E-34L,
 -5.49316406249990904622170867910987793E-04L,
 -3.31875702128137033065075734368960972E-35L,
 -5.18798828125011293653756992177727236E-04L,
 -5.69971237642088463334239430962628187E-35L,
 -4.88281249999990512232251384917893121E-04L,
  1.02144616714408655325510171265051108E-35L,
 -4.57763671874997554564967307956493434E-04L,
 -8.25484058867957231164162481843653503E-35L,
 -4.27246093749991203999790346349633286E-04L,
 -3.51191203319375193921924105905691755E-35L,
 -3.96728515624986649402960638705483281E-04L,
 -5.51925962073095883016589497244931171E-36L,
 -3.66210937499999945095511981300980754E-04L,
 -2.11696465278144529364423332249588595E-35L,
 -3.35693359374992480958458008559640163E-04L,
 -8.58941791799705081104736787493668352E-35L,
 -3.05175781250009811036303273640122156E-04L,
 -8.61173897858769926480551302277426632E-35L,
 -2.74658203124987298321920308390303850E-04L,
  3.35152809454778381053519808988046631E-37L,
 -2.44140624999999992770514819575735516E-04L,
  3.54445837111124472730013879165516908E-35L,
 -2.13623046875012756463165168672749438E-04L,
  1.50050816288650121729916777279129473E-35L,
 -1.83105468749991323078784464300306893E-04L,
 -9.14919506501448661140572099029756008E-37L,
 -1.52587890625013337032336300236461546E-04L,
  2.84906084373176180870418394956384516E-35L,
 -1.22070312499990746786116828458007518E-04L,
  6.71618008964968339584520728412444537E-36L,
 -9.15527343750029275602791047595142231E-05L,
 -1.95753652091078750312541716951402172E-35L,
 -6.10351562499913258461494008080572701E-05L,
  5.69868489273961111703398456218119973E-36L,
 -3.05175781250092882818419203884960853E-05L,
  9.03341100018476837609128961872915953E-36L,
  0.00000000000000000000000000000000000E+00L,
  0.00000000000000000000000000000000000E+00L,
  3.05175781249814607084128277672749162E-05L,
  1.00271855391179733380665816525889949E-36L,
  6.10351562500179243748093427073421439E-05L,
  1.67231624299180373502350811501181670E-36L,
  9.15527343749970728685313252158399200E-05L,
  2.43665747834893104318707597514407880E-36L,
  1.22070312500027751961838150070880064E-04L,
 -1.73322146370624186623546452226755405E-35L,
  1.52587890624995916105682628143179430E-04L,
  1.23580432650945898349135528000443828E-35L,
  1.83105468750008670314358488289621794E-04L,
  4.30446229148833293310207915930740796E-35L,
  2.13623046875005741337455947623248132E-04L,
 -3.96110759869520786681660669615255057E-35L,
  2.44140624999981493573336463433440506E-04L,
 -1.39617373942387888957350179316792928E-35L,
  2.74658203124984920706309918754626834E-04L,
 -3.16168080483901830349738314447356223E-36L,
  3.05175781250008648918265055410966055E-04L,
  8.54421306185008998867856704677221443E-35L,
  3.35693359374988945462612499316774515E-04L,
  7.96443137431639500475160850431097078E-35L,
  3.66210937500027690542093987739604535E-04L,
  2.14507323877752361258862577769090367E-35L,
  3.96728515625003928083564943615052121E-04L,
  4.88358523466632050664019922448605508E-35L,
  4.27246093750017799227172345607351585E-04L,
  6.66520494592631402182216588784828935E-35L,
  4.57763671875002108342364320152138181E-04L,
  7.21799615960261390920033272189522298E-35L,
  4.88281249999999768797631616370963356E-04L,
 -5.30564629906905979452258114088325361E-35L,
  5.18798828124997339054881383202487041E-04L,
 -4.03682911253647925867848180522846377E-35L,
  5.49316406249980511907933706754958501E-04L,
 -2.08166843948323917121806956728438051E-35L,
  5.79833984374989593561576568548497165E-04L,
 -1.72745033420153042445343706432627539E-34L,
  6.10351562500008540711511259540838154E-04L,
  7.41889382604319545724663095428976499E-35L,
  6.40869140625020444702875407535884986E-04L,
 -4.47321009727305792048065440180490107E-35L,
  6.71386718750007531635964622352684074E-04L,
  5.13698959677949336513874456684462092E-35L,
  7.01904296875006634673332887754430334E-04L,
 -8.25665755717729437292989870760751482E-35L,
  7.32421874999998244664170215504673504E-04L,
 -5.64005234937832153139057628112753364E-35L,
  7.62939453125017456345986752604096408E-04L,
 -1.11084094120417622468550608896588329E-34L,
  7.93457031249987558617598988993908016E-04L,
 -1.22966480225449015129079129940978828E-34L,
  8.23974609374997378723747633335135819E-04L,
 -1.62270010016794279091906973366704963E-34L,
  8.54492187500023938282350821569920958E-04L,
 -1.39076361712838158775374263169606160E-34L,
  8.85009765624987932362186815286691297E-04L,
  4.07328275060905585228261577392403980E-35L,
  9.15527343749975579461305518559161974E-04L,
  1.16855112459192484947855553716334015E-35L,
  9.46044921875016761584725882821122521E-04L,
  9.51660680007524262741115611071680436E-35L,
  9.76562499999974118878133088548272636E-04L,
 -5.65271128977550656964071208289181661E-36L,
  1.00708007812498671732140389760347830E-03L,
 -1.43355074891483635310132767255371379E-34L,
  1.03759765625002637786192745235343007E-03L,
  2.95905815240957629366749917020106928E-34L,
  1.06811523437500860568717813047520763E-03L,
 -5.98328495358586628195372356742878314E-35L,
  1.09863281250001439958487251556220070E-03L,
  2.41371837889426603334113000868144760E-34L,
  1.12915039062501298413451613770002366E-03L,
 -1.28815268997394164973472617519705703E-34L,
  1.15966796874997272036339054191407232E-03L,
  1.02996064554316248496839462594377804E-34L,
  1.19018554687502744121802585360546796E-03L,
 -1.43453217726255628994625761307322163E-34L,
  1.22070312499997743541996266398850614E-03L,
 -1.41086259180534339713692694428211646E-34L,
  1.25122070312501024092560690174507039E-03L,
  3.84102646020099293168698506729765213E-34L,
  1.28173828124997986521442660131425390E-03L,
  1.44644589735033114377952806106652650E-34L,
  1.31225585937501665804856968749058137E-03L,
  1.67474574742200577294563576414361377E-34L,
  1.34277343749997290265837386401818888E-03L,
 -1.55650565030381326742591837551559103E-34L,
  1.37329101562497720784949380297774268E-03L,
  1.65279335325630026116581677369221748E-34L,
  1.40380859374999099958354100336136647E-03L,
  1.89919944388961890195706641264717076E-34L,
  1.43432617187497484122173130998160625E-03L,
  2.57638517142061429772064578590009568E-34L,
  1.46484374999999929342158925502052945E-03L,
  1.76487201934184070490166772482073801E-34L,
  1.49536132812502318451070466256902933E-03L,
  2.38068367275295804321313550609246656E-34L,
  1.52587890625000448053340248672949543E-03L,
  1.01174455568392813258454590274740959E-34L,
  1.55639648437501113499837053523090913E-03L,
 -2.82398418808099749023517211651363693E-35L,
  1.58691406249999937955142588308171026E-03L,
 -1.27361695572422741562701199136538047E-34L,
  1.61743164062498000531048954475329309E-03L,
 -1.22606548862580061633942923016222044E-34L,
  1.64794921875001835451453858682255576E-03L,
  1.39132339594152335892305491425264583E-34L,
  1.67846679687501263995029340691547953E-03L,
  6.67245854693585315412242764786197029E-35L,
  1.70898437500002646861403514115369655E-03L,
  6.87367172354719289559624829652240928E-36L,
  1.73950195312501174308226096992992128E-03L,
 -2.20824271875474985927385878948759352E-34L,
  1.77001953124997491747605207736194513E-03L,
  3.43123048533596296514343180408963705E-34L,
  1.80053710937497698911127570705069398E-03L,
  3.99231237340890073475077494556136100E-35L,
  1.83105468750002267094899598630423914E-03L,
 -3.22274595655810623999007524769365273E-34L,
  1.86157226562500499224728040579690330E-03L,
  3.07094985075881613489605622068441083E-34L,
  1.89208984374998234666824993196980949E-03L,
 -3.06287628722973914692165056776495733E-34L,
  1.92260742187501225343755557292811682E-03L,
  6.30049124729794620592961282769623368E-35L,
  1.95312499999998514894032051116231258E-03L,
 -6.14610057507500948543216998736262902E-35L,
  1.98364257812501222021119324146882732E-03L,
  3.71942298418113774118754986159801984E-34L,
  7.06341639425619532977052017486130353E-01L,
  7.09106182437398424589503065362805501E-01L,
  7.11881545564596485142772053222870454E-01L,
  7.14667771155948150507697391731198877E-01L,
  7.17464901725936049503573599395167548E-01L,
  7.20272979955439790478166628417966422E-01L,
  7.23092048692387218133958981525211129E-01L,
  7.25922150952408251622927082280511968E-01L,
  7.28763329919491220643124052003258839E-01L,
  7.31615628946641782803794740175362676E-01L,
  7.34479091556544505525749855223693885E-01L,
  7.37353761442226890432394270646909717E-01L,
  7.40239682467726090031590047146892175E-01L,
  7.43136898668758316688354170764796436E-01L,
  7.46045454253390638577059235103661194E-01L,
  7.48965393602715662213498148958024103E-01L,
  7.51896761271528629722027403659012634E-01L,
  7.54839601989007347171423134568613023E-01L,
  7.57793960659394638668118204805068672E-01L,
  7.60759882362683631518152083117456641E-01L,
  7.63737412355305483879774897104653064E-01L,
  7.66726596070820082262642358728044201E-01L,
  7.69727479120609181517664865168626420E-01L,
  7.72740107294572486917871856348938309E-01L,
  7.75764526561826289752232810315035749E-01L,
  7.78800783071404878477039801509818062E-01L,
  7.81848923152964780936002853195532225E-01L,
  7.84908993317491698871180005880887620E-01L,
  7.87981040258010162480317717381694820E-01L,
  7.91065110850296016042904057030682452E-01L,
  7.94161252153591734614934694036492147E-01L,
  7.97269511411324433014513601847284008E-01L,
  8.00389936051826789142893403550260700E-01L,
  8.03522573689060742863077280162542593E-01L,
  8.06667472123343942680406826184480451E-01L,
  8.09824679342079301047618855591281317E-01L,
  8.12994243520486992160556383169023320E-01L,
  8.16176213022339780422953481320291758E-01L,
  8.19370636400700819157449927843117621E-01L,
  8.22577562398664585696650419777142815E-01L,
  8.25797039950100647542896581398963463E-01L,
  8.29029118180400342863478613253391813E-01L,
  8.32273846407226292054559735333896242E-01L,
  8.35531274141265073440720811959181447E-01L,
  8.38801451086982535754188461396552157E-01L,
  8.42084427143382358016410194068157580E-01L,
  8.45380252404767357221615498019673396E-01L,
  8.48688977161503960155997106085123960E-01L,
  8.52010651900789478530029441571969073E-01L,
  8.55345327307422548246407245642330963E-01L,
  8.58693054264576483003423845730139874E-01L,
  8.62053883854575708767242758767679334E-01L,
  8.65427867359675251357487013592617586E-01L,
  8.68815056262843166123843730019871145E-01L,
  8.72215502248546159513864495238522068E-01L,
  8.75629257203538208242932228131394368E-01L,
  8.79056373217652342599848225290770642E-01L,
  8.82496902584595399599010079327854328E-01L,
  8.85950897802745995779361010136199184E-01L,
  8.89418411575955636383383762222365476E-01L,
  8.92899496814352794382685374330321793E-01L,
  8.96394206635150403439382671422208659E-01L,
  8.99902594363456265202927397695020773E-01L,
  9.03424713533086704009278378180169966E-01L,
  9.06960617887383580004723171441582963E-01L,
  9.10510361380034133338412516422977205E-01L,
  9.14073998175894436579724811053893063E-01L,
  9.17651582651815816982221463149471674E-01L,
  9.21243169397474526149949269893113524E-01L,
  9.24848813216204823639543519675498828E-01L,
  9.28468569125835141431224428743007593E-01L,
  9.32102492359527579068867453315760940E-01L,
  9.35750638366620729469147477175283711E-01L,
  9.39413062813475779888605643463961314E-01L,
  9.43089821584325888048638830696290825E-01L,
  9.46780970782128888929563004239753354E-01L,
  9.50486566729423443256052905780961737E-01L,
  9.54206665969188322362626308859034907E-01L,
  9.57941325265705301283958306157728657E-01L,
  9.61690601605425299247542625380447134E-01L,
  9.65454552197837823079851204965962097E-01L,
  9.69233234476344074348475032820715569E-01L,
  9.73026706099133165128733935489435680E-01L,
  9.76835024950062025261843245971249416E-01L,
  9.80658249139538557015427500118676107E-01L,
  9.84496437005408397968864164795377292E-01L,
  9.88349647113845042323276857132441364E-01L,
  9.92217938260243514925207364285597578E-01L,
  9.96101369470117486981664001177705359E-01L,
  1.00000000000000000000000000000000000E+00L,
  1.00391388933834757590801700644078664E+00L,
  1.00784309720644799091004983893071767E+00L,
  1.01178768355933151879000320150225889E+00L,
  1.01574770858668572692806719715008512E+00L,
  1.01972323271377413034244341361045372E+00L,
  1.02371431660235789884438872832106426E+00L,
  1.02772102115162167201845022646011785E+00L,
  1.03174340749910264936062276319717057E+00L,
  1.03578153702162378824169763902318664E+00L,
  1.03983547133622999947277776300325058E+00L,
  1.04390527230112850620713516036630608E+00L,
  1.04799100201663270004459604933799710E+00L,
  1.05209272282610977189420964350574650E+00L,
  1.05621049731693195106174698594259098E+00L,
  1.06034438832143151909548350886325352E+00L,
  1.06449445891785943185681162503897212E+00L,
  1.06866077243134810492719566354935523E+00L,
  1.07284339243487741866189821848820429E+00L,
  1.07704238275024494209120007326419000E+00L,
  1.08125780744903959851299646288680378E+00L,
  1.08548973085361949442173568058933597E+00L,
  1.08973821753809324563988525369495619E+00L,
  1.09400333232930546678574046381982043E+00L,
  1.09828514030782586896606289883493446E+00L,
  1.10258370680894224324930519287590869E+00L,
  1.10689909742365749645287564817408565E+00L,
  1.11123137799969046168868658241990488E+00L,
  1.11558061464248076122274255794764031E+00L,
  1.11994687371619722204840741142106708E+00L,
  1.12433022184475073235176978414529003E+00L,
  1.12873072591281087273529237791080959E+00L,
  1.13314845306682632219974493636982515E+00L,
  1.13758347071604959399593326452304609E+00L,
  1.14203584653356560174586320499656722E+00L,
  1.14650564845732405583333957110880874E+00L,
  1.15099294469117646722011727433709893E+00L,
  1.15549780370591653744227755851170514E+00L,
  1.16002029424032515603215642840950750E+00L,
  1.16456048530221917269855680387991015E+00L,
  1.16911844616950438835445424956560601E+00L,
  1.17369424639123270948104504896036815E+00L,
  1.17828795578866324378353169777255971E+00L,
  1.18289964445632783673900689791480545E+00L,
  1.18752938276310060494722620205720887E+00L,
  1.19217724135327157730657177125976887E+00L,
  1.19684329114762477708211463323095813E+00L,
  1.20152760334452030077656559114984702E+00L,
  1.20623024942098072687102217059873510E+00L,
  1.21095130113378179892436037334846333E+00L,
  1.21569083052054743854242246925423387E+00L,
  1.22044890990084875515009343871497549E+00L,
  1.22522561187730755216662714701669756E+00L,
  1.23002100933670455162882717559114099E+00L,
  1.23483517545109100499445276000187732E+00L,
  1.23966818367890557750499169742397498E+00L,
  1.24452010776609517384017067342938390E+00L,
  1.24939102174724003813111039562500082E+00L,
  1.25428099994668373895478907797951251E+00L,
  1.25919011697966698459794088194030337E+00L,
  1.26411844775346637881341393949696794E+00L,
  1.26906606746853711786826579555054195E+00L,
  1.27403305161966090564007458851847332E+00L,
  1.27901947599709753244923149395617656E+00L,
  1.28402541668774150540599521264084615E+00L,
  1.28905095007628295311619126550795045E+00L,
  1.29409615284637330434591717676084954E+00L,
  1.29916110198179535206719492634874769E+00L,
  1.30424587476763775839572190307080746E+00L,
  1.30935054879147461104338390214252286E+00L,
  1.31447520194454914310711046709911898E+00L,
  1.31961991242296217130558488861424848E+00L,
  1.32478475872886558573071624778094701E+00L,
  1.32996981967165983640200010995613411E+00L,
  1.33517517436919680440254865061433520E+00L,
  1.34040090224898678084031189428060316E+00L,
  1.34564708304941055283521222918352578E+00L,
  1.35091379682093615244298234756570309E+00L,
  1.35620112392734021300455538039386738E+00L,
  1.36150914504693443252136830778908916E+00L,
  1.36683794117379636690046140756749082E+00L,
  1.37218759361900544124779344201670028E+00L,
  1.37755818401188367960941150158760138E+00L,
  1.38294979430124120867162673675920814E+00L,
  1.38836250675662681297595213436579797E+00L,
  1.39379640396958309755959248832368758E+00L,
  1.39925156885490681313299887733592186E+00L,
  1.40472808465191417726103395580139477E+00L,
  1.41022603492571069194738697660795879E+00L,
  1.41574550356846662335641440222389065E+00L,
  9.98018323540573404351050612604012713E-01L,
  9.98048781107475468932221929208026268E-01L,
  9.98079239603882895082165305211674422E-01L,
  9.98109699029824021243584297735651489E-01L,
  9.98140159385327269125909310787392315E-01L,
  9.98170620670420977171843901487591211E-01L,
  9.98201082885133511579667242585856002E-01L,
  9.98231546029493238547658506831794512E-01L,
  9.98262010103528552029672482603928074E-01L,
  9.98292475107267818223988342651864514E-01L,
  9.98322941040739375573309644096298143E-01L,
  9.98353407903971645787066790944663808E-01L,
  9.98383875696992967307963340317655820E-01L,
  9.98414344419831761845429696222709026E-01L,
  9.98444814072516340086593800151604228E-01L,
  9.98475284655075123740886056111776270E-01L,
  9.98505756167536479006585636852832977E-01L,
  9.98536228609928799837547330753295682E-01L,
  9.98566701982280452432050310562772211E-01L,
  9.98597176284619802988373749030870385E-01L,
  9.98627651516975245460372434536111541E-01L,
  9.98658127679375173801901155457017012E-01L,
  9.98688604771847954211239084543194622E-01L,
  9.98719082794421980642241010173165705E-01L,
  9.98749561747125619293186105096538085E-01L,
  9.98780041629987291873504773320746608E-01L,
  9.98810522443035364581476187595399097E-01L,
  9.98841004186298203615379520670103375E-01L,
  9.98871486859804230684645176552294288E-01L,
  9.98901970463581839743127943620493170E-01L,
  9.98932454997659369233531378995394334E-01L,
  9.98962940462065268620861502313346136E-01L,
  9.98993426856827904103397486323956400E-01L,
  9.99023914181975669634994119405746460E-01L,
  9.99054402437536959169506189937237650E-01L,
  9.99084891623540138905212870668037795E-01L,
  9.99115381740013658307120181234495249E-01L,
  9.99145872786985911329082910015131347E-01L,
  9.99176364764485236413804614130640402E-01L,
  9.99206857672540083026291313217370771E-01L,
  9.99237351511178817364822180024930276E-01L,
  9.99267846280429861138827618560753763E-01L,
  9.99298341980321608302162417203362565E-01L,
  9.99328838610882452808681364331278019E-01L,
  9.99359336172140816367814863951934967E-01L,
  9.99389834664125092933417704443854745E-01L,
  9.99420334086863676459344674185558688E-01L,
  9.99450834440384988655026177184481639E-01L,
  9.99481335724717395718741386190231424E-01L,
  9.99511837939889374871071936468069907E-01L,
  9.99542341085929264554721385138691403E-01L,
  9.99572845162865514234695751838444266E-01L,
  9.99603350170726517864849824945849832E-01L,
  9.99633856109540669399038392839429434E-01L,
  9.99664362979336418302267475155531429E-01L,
  9.99694870780142130772816244643763639E-01L,
  9.99725379511986284031266336569387931E-01L,
  9.99755889174897216520321308053098619E-01L,
  9.99786399768903377704987178731244057E-01L,
  9.99816911294033217050269968240172602E-01L,
  9.99847423750315072998873233700578567E-01L,
  9.99877937137777450526954226006637327E-01L,
  9.99908451456448688077216502279043198E-01L,
  9.99938966706357262870241697783058044E-01L,
  9.99969482887531541104308985268289689E-01L,
  1.00000000000000000000000000000000000E+00L,
  1.00003051804379100575559391472779680E+00L,
  1.00006103701893306334724798034585547E+00L,
  1.00009155692545448346209013834595680E+00L,
  1.00012207776338379883185325525118969E+00L,
  1.00015259953274932014366527255333494E+00L,
  1.00018312223357958012925905677548144E+00L,
  1.00021364586590294498691378066723701E+00L,
  1.00024417042974783642605984823603649E+00L,
  1.00027469592514273166727889474714175E+00L,
  1.00030522235211605242000132420798764E+00L,
  1.00033574971069616488250630936818197E+00L,
  1.00036627800091160178652671675081365E+00L,
  1.00039680722279067381919048784766346E+00L,
  1.00042733737636191371223048918182030E+00L,
  1.00045786846165368766392589350289200E+00L,
  1.00048840047869447289485833607614040E+00L,
  1.00051893342751269111445822090900037E+00L,
  1.00054946730813676403215595200890675E+00L,
  1.00058000212059516886853316464112140E+00L,
  1.00061053786491632733302026281307917E+00L,
  1.00064107454112866113504765053221490E+00L,
  1.00067161214926059198404573180596344E+00L,
  1.00070215068934059710059614189958666E+00L,
  1.00073269016139709819412928482051939E+00L,
  1.00076323056545857248522679583402351E+00L,
  1.00079377190155338617216784768970683E+00L,
  1.00082431416971007198668530691065826E+00L,
  1.00085485736995705163820957750431262E+00L,
  1.00088540150232269132501983222027775E+00L,
  1.00091594656683552377884893758164253E+00L,
  1.00094649256352402622027852885366883E+00L,
  1.00097703949241650933643654752813745E+00L,
  1.00100758735354156137020709138596430E+00L,
  1.00103813614692760403102056443458423E+00L,
  1.00106868587260300351715613942360505E+00L,
  1.00109923653059629256034668287611566E+00L,
  1.00112978812093589287002259879955091E+00L,
  1.00116034064365022615561429120134562E+00L,
  1.00119089409876788066000585786241572E+00L,
  1.00122144848631711155917400901671499E+00L,
  1.00125200380632656260715407370298635E+00L,
  1.00128256005882454449107399341301061E+00L,
  1.00131311724383964545381786592770368E+00L,
  1.00134367536140017618251363273884635E+00L,
  1.00137423441153472492004539162735455E+00L,
  1.00140479439427171337584354660066310E+00L,
  1.00143535530963956325933850166620687E+00L,
  1.00146591715766680730226312334707472E+00L,
  1.00149647993838186721404781565070152E+00L,
  1.00152704365181316470412298258452211E+00L,
  1.00155760829798923250422149067162536E+00L,
  1.00158817387693849232377374391944613E+00L,
  1.00161874038868942138336137759324629E+00L,
  1.00164930783327055241471725821611471E+00L,
  1.00167987621071025161612055853765924E+00L,
  1.00171044552103705171930414508096874E+00L,
  1.00174101576427937443369842185347807E+00L,
  1.00177158694046569697988502412044909E+00L,
  1.00180215904962455208959681840497069E+00L,
  1.00183273209178441698341543997230474E+00L,
  1.00186330606697365785962006157205906E+00L,
  1.00189388097522080744994354972732253E+00L,
  1.00192445681655439848611877096118405E+00L,
  1.00195503359100279716642489802325144E+00L,
  1.00198561129859459173374602869444061E+00L,
};
static const long double C[] = {
 11356.523406294143949491931077970765L,
-11433.4627433362978788372438434526231L,
 59421121885698253195157962752.0L,
 30423614405477505635920876929024.0L,
 7788445287802241442795744493830144.0L,
 1.44269504088896340735992468100189204L,
 0.693147180559945309417232121457981864L,
-1.94704509238074995158795957333327386E-31L,
 1.0e-4900L,
 5.94865747678615882542879663314003565E+4931L,
 256,
 32768,
 0.5L,
 1.66666666666666666666666666666666683E-01L,
 4.16666666666666666666654902320001674E-02L,
 8.33333333333333333333314659767198461E-03L,
 1.38888888889899438565058018857254025E-03L,
 1.98412698413981650382436541785404286E-04L,
};
long double
my_expl (long double x)
{
  fprintf(stderr,"In expl\n");
  if (__builtin_isless(x, C[0]) && __builtin_isgreater(x, C[1]))
    {
      int tval1, tval2, unsafe, n_i;
      long double x22, n, t, result, xl;
      union ieee854_long_double ex2_u, scale_u;
      fenv_t oldenv;
      feholdexcept (&oldenv);
      fesetround (0x000000);
      n = x * C[5] + C[4];
      n -= C[4];
      x = x - n * C[6];
      xl = n * C[7];
      t = x + C[3];
      t -= C[3];
      tval1 = (int) (t * C[10]);
      x -= __expl_table[(2*89)+2*tval1];
      xl -= __expl_table[(2*89)+2*tval1+1];
      t = x + C[2];
      t -= C[2];
      tval2 = (int) (t * C[11]);
      x -= __expl_table[(2*(2*89) + 2 + 2*65)+2*tval2];
      xl -= __expl_table[(2*(2*89) + 2 + 2*65)+2*tval2+1];
      x = x + xl;
      ex2_u.d = __expl_table[((2*(2*89) + 2 + 2*65) + 2 + 2*65 + 89) + tval1]
  * __expl_table[(((2*(2*89) + 2 + 2*65) + 2 + 2*65 + 89) + 1 + 89 + 65) + tval2];
      n_i = (int)n;
      unsafe = abs(n_i) >= 15000;
      ex2_u.ieee.exponent += n_i >> unsafe;
      scale_u.d = 1;
      scale_u.ieee.exponent += n_i - (n_i >> unsafe);
      x22 = x + x*x*(C[12]+x*(C[13]+x*(C[14]+x*(C[15]+x*(C[16]+x*C[17])))));
      fesetenv (&oldenv);
      result = x22 * ex2_u.d + ex2_u.d;
      if (!unsafe)
 {
 fprintf (stderr,"(2) lrint FE_UNDERFLOW is %s\n", fetestexcept(8) ? "TRUE" : "FALSE");
 return result;
 }
      else
 {
   result *= scale_u.d;
   do { __typeof (result) force_underflow_tmp = (result); if (force_underflow_tmp < __builtin_choose_expr (__builtin_types_compatible_p (__typeof (force_underflow_tmp), float), 1.17549435082228750796873653722224568e-38F, __builtin_choose_expr (__builtin_types_compatible_p (__typeof (force_underflow_tmp), double), ((double)2.22507385850720138309023271733240406e-308L), 3.36210314311209350626267781732175260e-4932L))) { __typeof (force_underflow_tmp) force_underflow_tmp2 = force_underflow_tmp * force_underflow_tmp; ({ __typeof (force_underflow_tmp2) __x = (force_underflow_tmp2); __asm __volatile__ ("" : : "w" (__x)); }); } } while (0);
   fprintf (stderr,"(3) lrint FE_UNDERFLOW is %s\n", fetestexcept(8) ? "TRUE" : "FALSE");
   return result;
 }
    }
  else if (__builtin_isless(x, C[0]))
    {
      if (__builtin_isinf_sign (x))
 {
 fprintf (stderr,"(5) lrint FE_UNDERFLOW is %s\n", fetestexcept(8) ? "TRUE" : "FALSE");
 return 0;
 }
      else
 {
 fprintf (stderr,"(6) lrint FE_UNDERFLOW is %s\n", fetestexcept(8) ? "TRUE" : "FALSE");
 return C[8] * C[8];
 }
    }
  else
    {
    fprintf (stderr,"(9) lrint FE_UNDERFLOW is %s\n", fetestexcept(8) ? "TRUE" : "FALSE");
    return C[9]*x;
    }
}


int main()
{
	long double y;
	long double x = -0x1p-10000L;
	y = my_expl (x);
	if (fetestexcept(FE_INEXACT)) printf ("lrint raised FE_INEXACT\n");
	if (fetestexcept(FE_INVALID)) printf ("lrint raised FE_INVALID\n");
	if (fetestexcept(FE_OVERFLOW)) printf ("lrint raised FE_OVERFLOW\n");
	if (fetestexcept(FE_UNDERFLOW)) printf ("lrint raised FE_UNDERFLOW\n");
	printf("%Lf\n", y);
	return 0;
}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]