J'ai été en utilisant isinf
, isnan
fonctionne sur les plates-formes Linux qui a parfaitement fonctionné.
Mais cela ne fonctionne pas sur OS-X, j'ai donc décidé d'utiliser std::isinf
std::isnan
qui fonctionne à la fois sur Linux et OS-X.
Mais le compilateur Intel ne veut pas le reconnaître, et je suppose que c'est un bug du compilateur intel selon http://software.intel.com/en-us/forums/showthread.php?t=64188
Alors maintenant, je veux juste éviter les tracas et de définir ma propre isinf
, isnan
mise en œuvre.
Personne ne sait comment cela pourrait être fait?
edit:
J'ai fait cela dans mon code source pour faire isinf
/isnan
de travail
#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;
}