require '_h2ph_pre.ph';

no warnings qw(redefine misc);

unless(defined(&_ARM_IEEEFP_H_)) {
    eval 'sub _ARM_IEEEFP_H_ () {1;}' unless defined(&_ARM_IEEEFP_H_);
    require 'sys/featuretest.ph';
    if(defined(&_NETBSD_SOURCE) || defined(&_ISOC99_SOURCE)) {
	require 'arm/fenv.ph';
	if(!defined(&_ISOC99_SOURCE)) {
	    eval 'sub __FPE {
	        my($x) = @_;
    		eval q(($x));
	    }' unless defined(&__FPE);
	    eval 'sub __FEE {
	        my($x) = @_;
    		eval q(($x));
	    }' unless defined(&__FEE);
	    eval 'sub __FPR {
	        my($x) = @_;
    		eval q(($x));
	    }' unless defined(&__FPR);
	    eval 'sub __FER {
	        my($x) = @_;
    		eval q(($x));
	    }' unless defined(&__FER);
	    eval 'sub FP_X_INV () { &FE_INVALID;}' unless defined(&FP_X_INV);
	    eval 'sub FP_X_DZ () { &FE_DIVBYZERO;}' unless defined(&FP_X_DZ);
	    eval 'sub FP_X_OFL () { &FE_OVERFLOW;}' unless defined(&FP_X_OFL);
	    eval 'sub FP_X_UFL () { &FE_UNDERFLOW;}' unless defined(&FP_X_UFL);
	    eval 'sub FP_X_IMP () { &FE_INEXACT;}' unless defined(&FP_X_IMP);
	    eval("sub FP_RN () { FE_TONEAREST; }") unless defined(&FP_RN);
	    eval("sub FP_RP () { FE_UPWARD; }") unless defined(&FP_RP);
	    eval("sub FP_RM () { FE_DOWNWARD; }") unless defined(&FP_RM);
	    eval("sub FP_RZ () { FE_TOWARDZERO; }") unless defined(&FP_RZ);
	}
    }
}
1;
