Я использовал функции isinf, isnan на платформах Linux, которые отлично работали.
Но это не сработало на OS-X, поэтому я решил использовать std::isinf std::isnan, который работает как на Linux, так и на OS-X.
Но компилятор Intel не распознает его, и я думаю, его ошибка в компиляторе Intel в соответствии с http://software.intel.com/en-us/forums/showthread.php?t=64188
Итак, теперь я просто хочу избежать проблем и определить свою собственную реализацию isinf, isnan.
Кто-нибудь знает, как это можно сделать?
изменить:
В итоге я сделал это в своем исходном коде для создания isinf/isnan
#include <iostream>
#include <cmath>
#ifdef __INTEL_COMPILER
#include <mathimf.h>
#endif
int isnan_local(double x) { 
#ifdef __INTEL_COMPILER
  return isnan(x);
#else
  return std::isnan(x);
#endif
}
int isinf_local(double x) { 
#ifdef __INTEL_COMPILER
  return isinf(x);
#else
  return std::isinf(x);
#endif
}
int myChk(double a){
  std::cerr<<"val is: "<<a <<"\t";
  if(isnan_local(a))
    std::cerr<<"program says isnan";
  if(isinf_local(a))
    std::cerr<<"program says isinf";
  std::cerr<<"\n";
  return 0;
}
int main(){
  double a = 0;
  myChk(a);
  myChk(log(a));
  myChk(-log(a));
  myChk(0/log(a));
  myChk(log(a)/log(a));
  return 0;
}
