在运行此程序时,在输出中Nan"被报告为0,当使用icpx V2022.1构建时,它与其他编译器一起工作良好。
Compiling with the command: icpx -O3 -qmkl=sequential
#define ARMA_DONT_USE_WRAPPER
#include <armadillo>
int main() {
arma::Col<double> var;
var.randu(4);
var.print();
std::cout << std::endl;
var[0] = arma::datum::nan;
// Same with var[0] = std::numeric_limits<double>::quiet_NaN()
var.print();
return 0;
}
Intel编译器的默认优化设置是-O2。正如Peter Cordes在上面的注释中建议的那样,您可以使用命令"-fp-model=precise"标志,指示编译器在实现浮点计算时严格遵循值安全优化。希望这能解决问题。