#define __WANT_LONG_DOUBLE_FORMAT__ 0
#include "math.h"
#undef __LIBMLDBL_COMPAT
#if 0
#define __LIBMLDBL_64(sym) __asm("_" __STRING(sym) "$LDBL64")
#define __LIBMLDBL_GLOB(sym) __asm(".text"); __asm(".align 4"); __asm(".globl " "_" __STRING(sym))
#define __LIBMLDBL_NO_DECOR(sym) __asm("_" __STRING(sym) ": b " "_" __STRING(sym) "$LDBL64")
#define __LIBMLDBL_COMPAT(sym) __LIBMLDBL_64(sym) ; __LIBMLDBL_GLOB(sym) ; __LIBMLDBL_NO_DECOR(sym)
#else
#define __LIBMLDBL_64(sym)
#define __LIBMLDBL_GLOB(sym) __asm(".text"); __asm(".align 4"); __asm(".globl " "_" __STRING(sym) "$LDBL64")
#define __LIBMLDBL_NO_DECOR(sym) __asm("_" __STRING(sym) "$LDBL64" ": b " "_" __STRING(sym))
#define __LIBMLDBL_COMPAT(sym) __LIBMLDBL_64(sym) ; __LIBMLDBL_GLOB(sym) ; __LIBMLDBL_NO_DECOR(sym)
#endif
extern double acosl( double ) __LIBMLDBL_COMPAT(acosl);
extern double asinl( double ) __LIBMLDBL_COMPAT(asinl);
extern double atanl( double ) __LIBMLDBL_COMPAT(atanl);
extern double atan2l( double, double ) __LIBMLDBL_COMPAT(atan2l);
extern double cosl( double ) __LIBMLDBL_COMPAT(cosl);
extern double sinl( double ) __LIBMLDBL_COMPAT(sinl);
extern double tanl( double ) __LIBMLDBL_COMPAT(tanl);
extern double acoshl( double ) __LIBMLDBL_COMPAT(acoshl);
extern double asinhl( double ) __LIBMLDBL_COMPAT(asinhl);
extern double atanhl( double ) __LIBMLDBL_COMPAT(atanhl);
extern double coshl( double ) __LIBMLDBL_COMPAT(coshl);
extern double sinhl( double ) __LIBMLDBL_COMPAT(sinhl);
extern double tanhl( double ) __LIBMLDBL_COMPAT(tanhl);
extern double expl( double ) __LIBMLDBL_COMPAT(expl);
extern double exp2l( double ) __LIBMLDBL_COMPAT(exp2l);
extern double expm1l( double ) __LIBMLDBL_COMPAT(expm1l);
extern double logl( double ) __LIBMLDBL_COMPAT(logl);
extern double log10l( double ) __LIBMLDBL_COMPAT(log10l);
extern double log2l( double ) __LIBMLDBL_COMPAT(log2l);
extern double log1pl( double ) __LIBMLDBL_COMPAT(log1pl);
extern double logbl( double ) __LIBMLDBL_COMPAT(logbl);
extern double modfl( double, double * ) __LIBMLDBL_COMPAT(modfl);
extern double ldexpl( double, int ) __LIBMLDBL_COMPAT(ldexpl);
extern double frexpl( double, int * ) __LIBMLDBL_COMPAT(frexpl);
extern int ilogbl( double ) __LIBMLDBL_COMPAT(ilogbl);
extern double scalbnl( double, int ) __LIBMLDBL_COMPAT(scalbnl);
extern double scalblnl( double, long int ) __LIBMLDBL_COMPAT(scalblnl);
extern double fabsl( double ) __LIBMLDBL_COMPAT(fabsl);
extern double cbrtl( double ) __LIBMLDBL_COMPAT(cbrtl);
extern double hypotl( double, double ) __LIBMLDBL_COMPAT(hypotl);
extern double powl( double, double ) __LIBMLDBL_COMPAT(powl);
extern double sqrtl( double ) __LIBMLDBL_COMPAT(sqrtl);
extern double erfl( double ) __LIBMLDBL_COMPAT(erfl);
extern double erfcl( double ) __LIBMLDBL_COMPAT(erfcl);
extern double lgammal( double ) __LIBMLDBL_COMPAT(lgammal);
extern double tgammal( double ) __LIBMLDBL_COMPAT(tgammal);
extern double ceill( double ) __LIBMLDBL_COMPAT(ceill);
extern double floorl( double ) __LIBMLDBL_COMPAT(floorl);
extern double nearbyintl( double ) __LIBMLDBL_COMPAT(nearbyintl);
extern double rintl( double ) __LIBMLDBL_COMPAT(rintl);
extern long int lrintl( double ) __LIBMLDBL_COMPAT(lrintl);
extern long long int llrintl( double ) __LIBMLDBL_COMPAT(llrintl);
extern double roundl( double ) __LIBMLDBL_COMPAT(roundl);
extern long int lroundl( double ) __LIBMLDBL_COMPAT(lroundl);
extern long long int llroundl( double ) __LIBMLDBL_COMPAT(llroundl);
extern double truncl( double ) __LIBMLDBL_COMPAT(truncl);
extern double fmodl( double, double) __LIBMLDBL_COMPAT(fmodl);
extern double remainderl( double, double ) __LIBMLDBL_COMPAT(remainderl);
extern double remquol( double, double, int * ) __LIBMLDBL_COMPAT(remquol);
extern double copysignl( double, double ) __LIBMLDBL_COMPAT(copysignl);
extern double nextafterl( double, double ) __LIBMLDBL_COMPAT(nextafterl);
extern double nexttoward( double, double ) __LIBMLDBL_COMPAT(nexttoward);
extern float nexttowardf( float, double ) __LIBMLDBL_COMPAT(nexttowardf);
extern double nexttowardl( double, double ) __LIBMLDBL_COMPAT(nexttowardl);
extern double fdiml( double, double ) __LIBMLDBL_COMPAT(fdiml);
extern double fmaxl( double, double ) __LIBMLDBL_COMPAT(fmaxl);
extern double fminl( double, double ) __LIBMLDBL_COMPAT(fminl);
extern double fmal( double, double, double ) __LIBMLDBL_COMPAT(fmal);
double acosl( double x ) { return (double)acos((double) x); }
double asinl( double x ) { return (double)asin((double) x); }
double atanl( double x ) { return (double)atan((double) x); }
double atan2l( double y, double x )
{ return (double)atan2((double) y, (double) x); }
double cosl( double x ) { return (double)cos((double) x); }
double sinl( double x ) { return (double)sin((double) x); }
double tanl( double x ) { return (double)tan((double) x); }
double acoshl( double x ) { return (double)acosh((double) x); }
double asinhl( double x ) { return (double)asinh((double) x); }
double atanhl( double x ) { return (double)atanh((double) x); }
double coshl( double x ) { return (double)cosh((double) x); }
double sinhl( double x ) { return (double)sinh((double) x); }
double tanhl( double x ) { return (double)tanh((double) x); }
double expl( double x ) { return (double)exp((double) x); }
double exp2l( double x ) { return (double)exp2((double) x); }
double expm1l( double x ) { return (double)expm1((double) x); }
double logl( double x ) { return (double)log((double) x); }
double log10l( double x ) { return (double)log10((double) x); }
double log2l( double x ) { return (double)log2((double) x); }
double log1pl( double x ) { return (double)log1p((double) x); }
double logbl( double x ) { return (double)logb((double) x); }
double modfl( double x, double *iptr )
{ return (double)modf((double) x, (double *)iptr); }
double ldexpl( double x, int n ) { return (double)ldexp((double) x, n); }
double frexpl( double x, int *exp ) { return (double)frexp((double) x, exp); }
int ilogbl( double x ) { return ilogb((double) x); }
double scalbnl( double x, int n ) { return (double)scalbn((double) x, n); }
double scalblnl( double x, long int n ) { return (double)scalbln((double) x, n); }
double fabsl( double x ) { return (double)fabs((double) x); }
double cbrtl( double x ) { return (double)cbrt((double) x); }
double hypotl( double x, double y )
{ return (double)hypot((double) x, (double) y); }
double powl( double x, double y )
{ return (double)pow((double) x, (double) y); }
double sqrtl( double x ) { return (double)sqrt((double) x); }
double erfl( double x ) { return (double)erf((double) x); }
double erfcl( double x ) { return (double)erfc((double) x); }
double lgammal( double x ) { return (double)lgamma((double) x); }
double tgammal( double x ) { return (double)tgamma((double) x); }
double ceill( double x ) { return (double)ceil((double) x); }
double floorl( double x ) { return (double)floor((double) x); }
double nearbyintl( double x ) { return (double)nearbyint((double) x); }
double rintl( double x ) { return (double)rint((double) x); }
long int lrintl( double x ) { return (long int)lrint((double) x); }
long long int llrintl( double x ) { return (long long int)llrint((double) x); }
double roundl( double x ) { return (double)round((double) x); }
long int lroundl( double x ) { return (long int)lround((double) x); }
long long int llroundl( double x ) { return (long long int)llround((double) x); }
double truncl( double x ) { return (double)trunc((double) x); }
double fmodl( double x, double y){ return (double)fmod((double) x, (double) y); }
double remainderl( double x, double y )
{ return (double)remainder((double) x, (double) y); }
double remquol( double x, double y, int *quo )
{ return (double)remquo((double) x, (double) y, quo); }
double copysignl( double x, double y )
{ return (double)copysign((double) x, (double) y); }
double nextafterl( double x, double y )
{ return (double)nextafter((double) x, (double) y); }
double nexttoward( double x, double y ) { return (double)nextafter((double) x, (double) y); }
float nexttowardf( float x, double y )
{
if ((double) x == y || y != y) return (float)y;
else if ((double)x > y) return nextafterf(x, -INFINITY);
else return nextafterf(x, INFINITY);
}
double nexttowardl( double x, double y )
{ return (double)nextafter((double) x, (double) y); }
double fdiml( double x, double y ) { return (double)fdim((double) x, (double) y); }
double fmaxl( double x, double y ) { return (double)fmax((double) x, (double) y); }
double fminl( double x, double y ) { return (double)fmin((double) x, (double) y); }
double fmal( double x, double y, double z )
{ return (double)fma((double) x, (double) y, (double) z); }