在工作中,我们有MSVS2010 Ultimate,我正在编写一个程序,使用实数运行详尽的模拟。我得到了非平凡的舍入错误,我已经采取了合理的措施来确保我的算法尽可能在数值上稳定。
我想切换到128位四倍精度浮点数(long double,right?),看看它有多大差异。
我已将double
的所有相关实例替换为long double
,重新编译,然后再次运行我的虚拟模拟,但与完全相同。
根据我在C / C ++中的项目属性页面,这些是我的(调试)编译器选项:
/ ZI / nologo / W3 / WX- / Od / Oy- / D“_MBCS”/ Gm / EHsc / RTC1 / GS / fp:precise / Zc:wchar_t / Zc:forScope /Fp"Debug\FFTU.pch “/ Fa”Debug \“/ Fo”Debug \“/ Fd "Debug\vc100.pdb”/ Gd / analyze- / errorReport:queue
我的开发CPU是Core2 Duo T7300,但目标机器将是i7。这两个安装都是Windows 7 64位。
答案 0 :(得分:2)
您可以切换到非Microsoft编译器,例如gcc
,Borland或Intel。这些都将long double
识别为80位扩展精度,即8087的原生内部格式。