require '_h2ph_pre.ph';

unless(defined(&_MATH_H)) {
    die("Never use <bits/mathinline.h> directly; include <math.h> instead.");
}
if(defined(&__cplusplus)) {
    eval 'sub __MATH_INLINE () { &__inline;}' unless defined(&__MATH_INLINE);
} else {
    eval 'sub __MATH_INLINE () { &extern  &__inline;}' unless defined(&__MATH_INLINE);
}
if(defined (defined(&__USE_ISOC99) ? &__USE_ISOC99 : 0)  && defined (defined(&__GNUC__) ? &__GNUC__ : 0)  && (defined(&__GNUC__) ? &__GNUC__ : 0) >= 2) {
    if( &__GNUC_PREREQ (2,97)) {
	eval 'sub isgreater {
	    local($x, $y) = @_;
    	    eval q( &__builtin_isgreater ($x, $y));
	}' unless defined(&isgreater);
	eval 'sub isgreaterequal {
	    local($x, $y) = @_;
    	    eval q( &__builtin_isgreaterequal ($x, $y));
	}' unless defined(&isgreaterequal);
	eval 'sub isless {
	    local($x, $y) = @_;
    	    eval q( &__builtin_isless ($x, $y));
	}' unless defined(&isless);
	eval 'sub islessequal {
	    local($x, $y) = @_;
    	    eval q( &__builtin_islessequal ($x, $y));
	}' unless defined(&islessequal);
	eval 'sub islessgreater {
	    local($x, $y) = @_;
    	    eval q( &__builtin_islessgreater ($x, $y));
	}' unless defined(&islessgreater);
	eval 'sub isunordered {
	    local($x, $y) = @_;
    	    eval q( &__builtin_isunordered ($x, $y));
	}' unless defined(&isunordered);
    } else {
	if(defined(&__i686__)) {
	    eval 'sub isgreater {
	        local($x, $y) = @_;
    		eval q(({  &register \'char\'  &__result;  &__asm__ (\\"fucomip %%st(1), %%st; seta %%al\\" : \\"=a\\" ( &__result) : \\"u\\" ($y), \\"t\\" ($x) : \\"cc\\", \\"st\\");  &__result; }));
	    }' unless defined(&isgreater);
	    eval 'sub isgreaterequal {
	        local($x, $y) = @_;
    		eval q(({  &register \'char\'  &__result;  &__asm__ (\\"fucomip %%st(1), %%st; setae %%al\\" : \\"=a\\" ( &__result) : \\"u\\" ($y), \\"t\\" ($x) : \\"cc\\", \\"st\\");  &__result; }));
	    }' unless defined(&isgreaterequal);
	    eval 'sub isless {
	        local($x, $y) = @_;
    		eval q(({  &register \'char\'  &__result;  &__asm__ (\\"fucomip %%st(1), %%st; seta %%al\\" : \\"=a\\" ( &__result) : \\"u\\" ($x), \\"t\\" ($y) : \\"cc\\", \\"st\\");  &__result; }));
	    }' unless defined(&isless);
	    eval 'sub islessequal {
	        local($x, $y) = @_;
    		eval q(({  &register \'char\'  &__result;  &__asm__ (\\"fucomip %%st(1), %%st; setae %%al\\" : \\"=a\\" ( &__result) : \\"u\\" ($x), \\"t\\" ($y) : \\"cc\\", \\"st\\");  &__result; }));
	    }' unless defined(&islessequal);
	    eval 'sub islessgreater {
	        local($x, $y) = @_;
    		eval q(({  &register \'char\'  &__result;  &__asm__ (\\"fucomip %%st(1), %%st; setne %%al\\" : \\"=a\\" ( &__result) : \\"u\\" ($y), \\"t\\" ($x) : \\"cc\\", \\"st\\");  &__result; }));
	    }' unless defined(&islessgreater);
	    eval 'sub isunordered {
	        local($x, $y) = @_;
    		eval q(({  &register \'char\'  &__result;  &__asm__ (\\"fucomip %%st(1), %%st; setp %%al\\" : \\"=a\\" ( &__result) : \\"u\\" ($y), \\"t\\" ($x) : \\"cc\\", \\"st\\");  &__result; }));
	    }' unless defined(&isunordered);
	} else {
	    eval 'sub isgreater {
	        local($x, $y) = @_;
    		eval q(({  &register \'char\'  &__result;  &__asm__ (\\"fucompp; fnstsw; testb $0x45, %%ah; setz %%al\\" : \\"=a\\" ( &__result) : \\"u\\" ($y), \\"t\\" ($x) : \\"cc\\", \\"st\\", \\"st(1)\\");  &__result; }));
	    }' unless defined(&isgreater);
	    eval 'sub isgreaterequal {
	        local($x, $y) = @_;
    		eval q(({  &register \'char\'  &__result;  &__asm__ (\\"fucompp; fnstsw; testb $0x05, %%ah; setz %%al\\" : \\"=a\\" ( &__result) : \\"u\\" ($y), \\"t\\" ($x) : \\"cc\\", \\"st\\", \\"st(1)\\");  &__result; }));
	    }' unless defined(&isgreaterequal);
	    eval 'sub isless {
	        local($x, $y) = @_;
    		eval q(({  &register \'char\'  &__result;  &__asm__ (\\"fucompp; fnstsw; testb $0x45, %%ah; setz %%al\\" : \\"=a\\" ( &__result) : \\"u\\" ($x), \\"t\\" ($y) : \\"cc\\", \\"st\\", \\"st(1)\\");  &__result; }));
	    }' unless defined(&isless);
	    eval 'sub islessequal {
	        local($x, $y) = @_;
    		eval q(({  &register \'char\'  &__result;  &__asm__ (\\"fucompp; fnstsw; testb $0x05, %%ah; setz %%al\\" : \\"=a\\" ( &__result) : \\"u\\" ($x), \\"t\\" ($y) : \\"cc\\", \\"st\\", \\"st(1)\\");  &__result; }));
	    }' unless defined(&islessequal);
	    eval 'sub islessgreater {
	        local($x, $y) = @_;
    		eval q(({  &register \'char\'  &__result;  &__asm__ (\\"fucompp; fnstsw; testb $0x44, %%ah; setz %%al\\" : \\"=a\\" ( &__result) : \\"u\\" ($y), \\"t\\" ($x) : \\"cc\\", \\"st\\", \\"st(1)\\");  &__result; }));
	    }' unless defined(&islessgreater);
	    eval 'sub isunordered {
	        local($x, $y) = @_;
    		eval q(({  &register \'char\'  &__result;  &__asm__ (\\"fucompp; fnstsw; sahf; setp %%al\\" : \\"=a\\" ( &__result) : \\"u\\" ($y), \\"t\\" ($x) : \\"cc\\", \\"st\\", \\"st(1)\\");  &__result; }));
	    }' unless defined(&isunordered);
	}
    }
    if( &__GNUC_PREREQ (2, 8)) {
    }
}
if( &__GNUC_PREREQ (2, 8)) {
    if(((!defined (defined(&__NO_MATH_INLINES) ? &__NO_MATH_INLINES : 0) || defined (defined(&__LIBC_INTERNAL_MATH_INLINES) ? &__LIBC_INTERNAL_MATH_INLINES : 0))  && defined (defined(&__OPTIMIZE__) ? &__OPTIMIZE__ : 0))) {
	if(defined (defined(&__USE_MISC) ? &__USE_MISC : 0) || defined (defined(&__USE_ISOC99) ? &__USE_ISOC99 : 0)) {
	    eval 'sub __inline_mathop {
	        local($func, $op) = @_;
    		eval q( &__inline_mathop_ ( &double, $func, $op)  &__inline_mathop_ ( &float,  &__CONCAT($func, &f), $op)  &__inline_mathop_ (\'long double\',  &__CONCAT($func, &l), $op));
	    }' unless defined(&__inline_mathop);
	    eval 'sub __inline_mathopNP {
	        local($func, $op) = @_;
    		eval q( &__inline_mathopNP_ ( &double, $func, $op)  &__inline_mathopNP_ ( &float,  &__CONCAT($func, &f), $op)  &__inline_mathopNP_ (\'long double\',  &__CONCAT($func, &l), $op));
	    }' unless defined(&__inline_mathopNP);
	} else {
	    eval 'sub __inline_mathop {
	        local($func, $op) = @_;
    		eval q( &__inline_mathop_ ( &double, $func, $op));
	    }' unless defined(&__inline_mathop);
	    eval 'sub __inline_mathopNP {
	        local($func, $op) = @_;
    		eval q( &__inline_mathopNP_ ( &double, $func, $op));
	    }' unless defined(&__inline_mathopNP);
	}
	eval 'sub __inline_mathop_ {
	    local($float_type, $func, $op) = @_;
    	    eval q( &__inline_mathop_decl_ ($float_type, $func, $op, \\"0\\" ( &__x)));
	}' unless defined(&__inline_mathop_);
	eval 'sub __inline_mathopNP_ {
	    local($float_type, $func, $op) = @_;
    	    eval q( &__inline_mathop_declNP_ ($float_type, $func, $op, \\"0\\" ( &__x)));
	}' unless defined(&__inline_mathopNP_);
	if(defined (defined(&__USE_MISC) ? &__USE_MISC : 0) || defined (defined(&__USE_ISOC99) ? &__USE_ISOC99 : 0)) {
	    eval 'sub __inline_mathop_decl () {( &func,  &op,  &params...)  &__inline_mathop_decl_ ( &double,  &func,  &op,  &params)  &__inline_mathop_decl_ ( &float,  &__CONCAT( &func, &f),  &op,  &params)  &__inline_mathop_decl_ (\'long double\',  &__CONCAT( &func, &l),  &op,  &params);}' unless defined(&__inline_mathop_decl);
	    eval 'sub __inline_mathop_declNP () {( &func,  &op,  &params...)  &__inline_mathop_declNP_ ( &double,  &func,  &op,  &params)  &__inline_mathop_declNP_ ( &float,  &__CONCAT( &func, &f),  &op,  &params)  &__inline_mathop_declNP_ (\'long double\',  &__CONCAT( &func, &l),  &op,  &params);}' unless defined(&__inline_mathop_declNP);
	} else {
	    eval 'sub __inline_mathop_decl () {( &func,  &op,  &params...)  &__inline_mathop_decl_ ( &double,  &func,  &op,  &params);}' unless defined(&__inline_mathop_decl);
	    eval 'sub __inline_mathop_declNP () {( &func,  &op,  &params...)  &__inline_mathop_declNP_ ( &double,  &func,  &op,  &params);}' unless defined(&__inline_mathop_declNP);
	}
	eval 'sub __inline_mathop_decl_ () {( &float_type,  &func,  &op,  &params...)  &__MATH_INLINE  &float_type  &func  &__THROW;  &__inline_mathop_declNP_ ( &float_type,  &func,  &op,  &params);}' unless defined(&__inline_mathop_decl_);
	eval 'sub __inline_mathop_declNP_ () {( &float_type,  &func,  &op,  &params...)  &__MATH_INLINE  &float_type  &func  &__THROW {  &register  &float_type  &__result;  &__asm  &__volatile__ ( &op : "=t" ( &__result) :  &params);  &return  &__result; };}' unless defined(&__inline_mathop_declNP_);
	if(defined (defined(&__USE_MISC) ? &__USE_MISC : 0) || defined (defined(&__USE_ISOC99) ? &__USE_ISOC99 : 0)) {
	    eval 'sub __inline_mathcode {
	        local($func, $arg, $code) = @_;
    		eval q( &__inline_mathcode_ ( &double, $func, $arg, $code)  &__inline_mathcode_ ( &float,  &__CONCAT($func, &f), $arg, $code)  &__inline_mathcode_ (\'long double\',  &__CONCAT($func, &l), $arg, $code));
	    }' unless defined(&__inline_mathcode);
	    eval 'sub __inline_mathcodeNP {
	        local($func, $arg, $code) = @_;
    		eval q( &__inline_mathcodeNP_ ( &double, $func, $arg, $code)  &__inline_mathcodeNP_ ( &float,  &__CONCAT($func, &f), $arg, $code)  &__inline_mathcodeNP_ (\'long double\',  &__CONCAT($func, &l), $arg, $code));
	    }' unless defined(&__inline_mathcodeNP);
	    eval 'sub __inline_mathcode2 {
	        local($func, $arg1, $arg2, $code) = @_;
    		eval q( &__inline_mathcode2_ ( &double, $func, $arg1, $arg2, $code)  &__inline_mathcode2_ ( &float,  &__CONCAT($func, &f), $arg1, $arg2, $code)  &__inline_mathcode2_ (\'long double\',  &__CONCAT($func, &l), $arg1, $arg2, $code));
	    }' unless defined(&__inline_mathcode2);
	    eval 'sub __inline_mathcodeNP2 {
	        local($func, $arg1, $arg2, $code) = @_;
    		eval q( &__inline_mathcodeNP2_ ( &double, $func, $arg1, $arg2, $code)  &__inline_mathcodeNP2_ ( &float,  &__CONCAT($func, &f), $arg1, $arg2, $code)  &__inline_mathcodeNP2_ (\'long double\',  &__CONCAT($func, &l), $arg1, $arg2, $code));
	    }' unless defined(&__inline_mathcodeNP2);
	    eval 'sub __inline_mathcode3 {
	        local($func, $arg1, $arg2, $arg3, $code) = @_;
    		eval q( &__inline_mathcode3_ ( &double, $func, $arg1, $arg2, $arg3, $code)  &__inline_mathcode3_ ( &float,  &__CONCAT($func, &f), $arg1, $arg2, $arg3, $code)  &__inline_mathcode3_ (\'long double\',  &__CONCAT($func, &l), $arg1, $arg2, $arg3, $code));
	    }' unless defined(&__inline_mathcode3);
	    eval 'sub __inline_mathcodeNP3 {
	        local($func, $arg1, $arg2, $arg3, $code) = @_;
    		eval q( &__inline_mathcodeNP3_ ( &double, $func, $arg1, $arg2, $arg3, $code)  &__inline_mathcodeNP3_ ( &float,  &__CONCAT($func, &f), $arg1, $arg2, $arg3, $code)  &__inline_mathcodeNP3_ (\'long double\',  &__CONCAT($func, &l), $arg1, $arg2, $arg3, $code));
	    }' unless defined(&__inline_mathcodeNP3);
	} else {
	    eval 'sub __inline_mathcode {
	        local($func, $arg, $code) = @_;
    		eval q( &__inline_mathcode_ ( &double, $func, ($arg), $code));
	    }' unless defined(&__inline_mathcode);
	    eval 'sub __inline_mathcodeNP {
	        local($func, $arg, $code) = @_;
    		eval q( &__inline_mathcodeNP_ ( &double, $func, ($arg), $code));
	    }' unless defined(&__inline_mathcodeNP);
	    eval 'sub __inline_mathcode2 {
	        local($func, $arg1, $arg2, $code) = @_;
    		eval q( &__inline_mathcode2_ ( &double, $func, $arg1, $arg2, $code));
	    }' unless defined(&__inline_mathcode2);
	    eval 'sub __inline_mathcodeNP2 {
	        local($func, $arg1, $arg2, $code) = @_;
    		eval q( &__inline_mathcodeNP2_ ( &double, $func, $arg1, $arg2, $code));
	    }' unless defined(&__inline_mathcodeNP2);
	    eval 'sub __inline_mathcode3 {
	        local($func, $arg1, $arg2, $arg3, $code) = @_;
    		eval q( &__inline_mathcode3_ ( &double, $func, $arg1, $arg2, $arg3, $code));
	    }' unless defined(&__inline_mathcode3);
	    eval 'sub __inline_mathcodeNP3 {
	        local($func, $arg1, $arg2, $arg3, $code) = @_;
    		eval q( &__inline_mathcodeNP3_ ( &double, $func, $arg1, $arg2, $arg3, $code));
	    }' unless defined(&__inline_mathcodeNP3);
	}
	eval 'sub __inline_mathcode_ {
	    local($float_type, $func, $arg, $code) = @_;
    	    eval q( &__MATH_INLINE $float_type $func  &__THROW;  &__inline_mathcodeNP_($float_type, $func, $arg, $code));
	}' unless defined(&__inline_mathcode_);
	eval 'sub __inline_mathcodeNP_ {
	    local($float_type, $func, $arg, $code) = @_;
    	    eval q( &__MATH_INLINE $float_type $func  &__THROW { $code; });
	}' unless defined(&__inline_mathcodeNP_);
	eval 'sub __inline_mathcode2_ {
	    local($float_type, $func, $arg1, $arg2, $code) = @_;
    	    eval q( &__MATH_INLINE $float_type $func ($float_type, $float_type)  &__THROW;  &__inline_mathcodeNP2_ ($float_type, $func, $arg1, $arg2, $code));
	}' unless defined(&__inline_mathcode2_);
	eval 'sub __inline_mathcodeNP2_ {
	    local($float_type, $func, $arg1, $arg2, $code) = @_;
    	    eval q( &__MATH_INLINE $float_type $func ($float_type $arg1, $float_type $arg2)  &__THROW { $code; });
	}' unless defined(&__inline_mathcodeNP2_);
	eval 'sub __inline_mathcode3_ {
	    local($float_type, $func, $arg1, $arg2, $arg3, $code) = @_;
    	    eval q( &__MATH_INLINE $float_type $func ($float_type, $float_type, $float_type)  &__THROW;  &__inline_mathcodeNP3_($float_type, $func, $arg1, $arg2, $arg3, $code));
	}' unless defined(&__inline_mathcode3_);
	eval 'sub __inline_mathcodeNP3_ {
	    local($float_type, $func, $arg1, $arg2, $arg3, $code) = @_;
    	    eval q( &__MATH_INLINE $float_type $func ($float_type $arg1, $float_type $arg2, $float_type $arg3)  &__THROW { $code; });
	}' unless defined(&__inline_mathcodeNP3_);
    }
    if(!defined (defined(&__NO_MATH_INLINES) ? &__NO_MATH_INLINES : 0)  && defined (defined(&__OPTIMIZE__) ? &__OPTIMIZE__ : 0)) {
	if(defined(&__FAST_MATH__)) {
	    if(defined(&__USE_GNU)) {
		eval 'sub __sincos_code () { &register \'long double __cosr\';  &register \'long double __sinr\';  &__asm  &__volatile__ ("fsincos\\n\\t" "fnstsw	%%ax\\n\\t" "testl	$0x400, %%eax\\n\\t" "jz	1f\\n\\t" "fldpi\\n\\t" "fadd	%%st(0)\\n\\t" "fxch	%%st(1)\\n\\t" "2: fprem1\\n\\t" "fnstsw	%%ax\\n\\t" "testl	$0x400, %%eax\\n\\t" "jnz	2b\\n\\t" "fstp	%%st(1)\\n\\t" "fsincos\\n\\t" "1:" : "=t" ( &__cosr), "=u" ( &__sinr) : "0" ( &__x)); * &__sinx =  &__sinr; * &__cosx =  &__cosr;}' unless defined(&__sincos_code);
	    }
	    eval 'sub __expm1_code () { &register \'long double __value\';  &register \'long double __exponent\';  &register \'long double __temp\';  &__asm  &__volatile__ ("fldl2e			# e^x - 1 = 2^(x * log2(e)) - 1\\n\\t" "fmul	%%st(1)		# x * log2(e)\\n\\t" "fst	%%st(1)\\n\\t" "frndint			# int(x * log2(e))\\n\\t" "fxch\\n\\t" "fsub	%%st(1)		# fract(x * log2(e))\\n\\t" "f2xm1			# 2^(fract(x * log2(e))) - 1\\n\\t" "fscale			# 2^(x * log2(e)) - 2^(int(x * log2(e)))\\n\\t" : "=t" ( &__value), "=u" ( &__exponent) : "0" ( &__x));  &__asm  &__volatile__ ("fscale			# 2^int(x * log2(e))\\n\\t" : "=t" ( &__temp) : "0" (1.0), "u" ( &__exponent));  &__temp -= 1.0;  &__temp +=  &__value;  &return  &__temp ?  &__temp :  &__x;}' unless defined(&__expm1_code);
	    eval 'sub __exp_code () { &register \'long double __value\';  &register \'long double __exponent\';  &__asm  &__volatile__ ("fldl2e			# e^x = 2^(x * log2(e))\\n\\t" "fmul	%%st(1)		# x * log2(e)\\n\\t" "fst	%%st(1)\\n\\t" "frndint			# int(x * log2(e))\\n\\t" "fxch\\n\\t" "fsub	%%st(1)		# fract(x * log2(e))\\n\\t" "f2xm1			# 2^(fract(x * log2(e))) - 1\\n\\t" : "=t" ( &__value), "=u" ( &__exponent) : "0" ( &__x));  &__value += 1.0;  &__asm  &__volatile__ ("fscale" : "=t" ( &__value) : "0" ( &__value), "u" ( &__exponent));  &return  &__value;}' unless defined(&__exp_code);
	}
	eval 'sub __atan2_code () { &register \'long double __value\';  &__asm  &__volatile__ ("fpatan" : "=t" ( &__value) : "0" ( &__x), "u" ( &__y) : "st(1)");  &return  &__value;}' unless defined(&__atan2_code);
	if( &__GNUC_PREREQ (2, 8)) {
	} else {
	}
	if(defined(&__FAST_MATH__)) {
	}
	if(defined(&__FAST_MATH__)) {
	}
	eval 'sub __ldexp_code () { &register \'long double __value\';  &__asm  &__volatile__ ("fscale" : "=t" : "0" , "u" (  &__y));  &return  &__value;}' unless defined(&__ldexp_code);
	if(defined (defined(&__USE_ISOC99) ? &__USE_ISOC99 : 0) || defined (defined(&__USE_MISC) ? &__USE_MISC : 0)) {
	    if(defined(&__FAST_MATH__)) {
	    }
	    eval 'sub __M_SQRT2 () {1.41421356237309504880;}' unless defined(&__M_SQRT2);
	}
	if(defined(&__USE_ISOC99)) {
	    if(defined(&__FAST_MATH__)) {
	    }
	    if(defined(&__FAST_MATH__)) {
	    }
	    eval 'sub __lrint_code () {\'long int __lrintres\';  &__asm__  &__volatile__ ("fistpl %0" : "=m" ( &__lrintres) : "t" ( &__x) : "st");  &return  &__lrintres;}' unless defined(&__lrint_code);
	    undef(&__lrint_code) if defined(&__lrint_code);
	    eval 'sub __llrint_code () {\'long long int __llrintres\';  &__asm__  &__volatile__ ("fistpll %0" : "=m" ( &__llrintres) : "t" ( &__x) : "st");  &return  &__llrintres;}' unless defined(&__llrint_code);
	    undef(&__llrint_code) if defined(&__llrint_code);
	}
	if(defined(&__USE_MISC)) {
	    if(defined(&__FAST_MATH__)) {
	    }
	}
	undef(&__atan2_code) if defined(&__atan2_code);
	if(defined(&__FAST_MATH__)) {
	    undef(&__expm1_code) if defined(&__expm1_code);
	    undef(&__exp_code) if defined(&__exp_code);
	    undef(&__sincos_code) if defined(&__sincos_code);
	}
    }
    if(defined(&__LIBC_INTERNAL_MATH_INLINES)) {
    }
}
1;
