在使用 icpx 编译时,NaN 被报告为 0,而不是 NaN



在运行此程序时,在输出中Nan&quot被报告为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"标志,指示编译器在实现浮点计算时严格遵循值安全优化。希望这能解决问题。

最新更新