1dnl Tries to determine if the isnan function exists in std namespace,
2dnl global namespace, or doesn't exist (in which case an appropriate
3dnl macro is generated).  The result is put into ax_cxx_isnan.
4dnl
5AC_DEFUN([AX_CXX_ISNAN], [
6AC_MSG_CHECKING([for isnan])
7AC_LANG_PUSH(C++)
8ax_cxx_isnan=
9AC_COMPILE_IFELSE([AC_LANG_SOURCE([#include <cmath>
10                   int main() {
11                     std::isnan(1.0);
12                     return 0;
13                   }])],
14                   [AC_MSG_RESULT(std::isnan)
15                    ax_cxx_isnan="std::isnan(x)"])
16if test "x$ax_cxx_isnan" = "x"; then
17  AC_COMPILE_IFELSE([AC_LANG_SOURCE([#include <cmath>
18                     int main() {
19                       ::isnan(1.0);
20                       return 0;
21                     }])],
22                     [AC_MSG_RESULT(::isnan)
23                      ax_cxx_isnan="::isnan(x)"],
24                     [AC_MSG_RESULT(none)
25                      ax_cxx_isnan="((x) != (x))"])
26fi
27AC_LANG_POP(C++)
28])
29