#pragma once

#include_next <cmath>

#ifndef WAF_BUILD
#  ifdef __GNUG__
#    define _GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
#    if _GCC_VERSION >= 50300
#      ifndef HAVE_CMATH_ISFINITE
#        define HAVE_CMATH_ISFINITE
#        define NEED_CMATH_ISFINITE_STD_NAMESPACE
#      endif
#      ifndef HAVE_CMATH_ISINF
#        define HAVE_CMATH_ISINF
#        define NEED_CMATH_ISINF_STD_NAMESPACE
#      endif
#      ifndef HAVE_CMATH_ISNAN
#        define HAVE_CMATH_ISNAN
#        define NEED_CMATH_ISNAN_STD_NAMESPACE
#      endif
#    endif
#    undef _GCC_VERSION
#  endif
#endif

#if defined(HAVE_CMATH_ISFINITE) && defined(NEED_CMATH_ISFINITE_STD_NAMESPACE)
using std::isfinite;
#endif

#if defined(HAVE_CMATH_ISINF) && defined(NEED_CMATH_ISINF_STD_NAMESPACE)
using std::isinf;
#endif

#if defined(HAVE_CMATH_ISNAN) && defined(NEED_CMATH_ISNAN_STD_NAMESPACE)
using std::isnan;
#endif
