如果我有两个使用双精度生成相同的程序,我可以假设两个程序都相同吗?

时间:2016-06-23 19:08:19

标签: c++ debugging double precision long-double

我正在编写一个C ++程序,并试图修复一个错误,我已将主程序的一部分隔离到一个单独的文件中。 我将主程序 Prog1 和分隔的部分 Prog2

我成功找到并修复了Prog2中的错误,并将更改复制到Prog1。当我运行所有内容时,两个程序输出相同的结果 IFF ,我在两个程序中使用的唯一数据类型是double类型。

我希望将所有双打更改为long double以提高精度,但这样做,Prog1的输出与Prog2略有不同。

我的想法是这是升级的问题,因为Prog1中的某些计算使用了长双打,而在Prog2中我偶尔会使用文字。例如:

PROG1:

long double num = 1.0;

value1 = num + 2.0;

PROG2:

value2 = 1.0 + 2.0;

value1value2的结果不完全相同(参见:Is floating point math broken?)。

现在我可以改变两个程序中的每个文字来键入long double(例如1.0L)然后查看输出是否匹配但不幸的是,这说起来容易做起来难得(有 很多 )。

所以我的问题是:

由于我的两个程序的输出在使用双精度时完全匹配,如果Prog2是正确的,假设Prog1正常运行是否安全?即使使用长双打时结果也不同?

0 个答案:

没有答案