Erlang 有没有办法保证浮点计算的跨平台回归测试的结果?
有没有办法保证浮点计算的跨平台回归测试的结果 例如,当将相同的二进制值转换为十进制值时,不同的实现可能会返回不同的结果,如中所述:Erlang 有没有办法保证浮点计算的跨平台回归测试的结果?,erlang,floating-point,ieee-754,Erlang,Floating Point,Ieee 754,有没有办法保证浮点计算的跨平台回归测试的结果 例如,当将相同的二进制值转换为十进制值时,不同的实现可能会返回不同的结果,如中所述: 我对Erlang/OTP案例感兴趣,但欢迎使用其他语言和环境中的示例。Erlang依赖于底层系统的浮点实现 浮点行为测试相当困难。最为人所知的平台浮点行为测试可能是由编写的,称为“偏执狂” 它被移植到甚至是一个版本的 然而,这只是测试平台的基本浮点行为 您所指的是平台之间的strtod的不同C库行为。 这可能由C标准一致性测试软件进行测试 但是测试并不能保证你所要求
我对Erlang/OTP案例感兴趣,但欢迎使用其他语言和环境中的示例。Erlang依赖于底层系统的浮点实现 浮点行为测试相当困难。最为人所知的平台浮点行为测试可能是由编写的,称为“偏执狂” 它被移植到甚至是一个版本的 然而,这只是测试平台的基本浮点行为 您所指的是平台之间的
strtod
的不同C库行为。
这可能由C标准一致性测试软件进行测试
但是测试并不能保证你所要求的是不可能实现的。浮点软件中总会有细微的错误或差异,甚至
最好的方法是使用模块验证计算结果并编写浮点测试。原则上,如果我们看看C(在Erlang的引擎盖下使用),乘法、强制转换等基本操作。应在不同环境中保持一致。另一方面,标准库中的函数可能不会 注意,一些编译器,包括gcc,默认情况下会有一点欺骗,但提供了一个命令行选项来遵守规则