Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows和Ubuntu之间的C#Math.Exp差异_C#_.net_Mono - Fatal编程技术网

Windows和Ubuntu之间的C#Math.Exp差异

Windows和Ubuntu之间的C#Math.Exp差异,c#,.net,mono,C#,.net,Mono,我有一个网络项目,它正在两个平台上成功开发:Windows和Ubuntu(Mono)。这是非常数学化的,尽管一切都按照预期进行,但我们确实发现结果中存在一些差异,影响到小数点后13位或14位。由于我们有一些自动测试来验证算法的正确性,这些测试往往会由于数字差异而失败 经过大量研究,我们将问题归结为Math.Exp在两个平台上为相同的输入提供不同的结果。结果并非100%不一致,但即使是某些输入的最小差异也会产生我们测试检测到的最终输出差异 首先,这种稍微不同的行为的原因是什么?Math.Exp不是

我有一个网络项目,它正在两个平台上成功开发:Windows和Ubuntu(Mono)。这是非常数学化的,尽管一切都按照预期进行,但我们确实发现结果中存在一些差异,影响到小数点后13位或14位。由于我们有一些自动测试来验证算法的正确性,这些测试往往会由于数字差异而失败

经过大量研究,我们将问题归结为
Math.Exp
在两个平台上为相同的输入提供不同的结果。结果并非100%不一致,但即使是某些输入的最小差异也会产生我们测试检测到的最终输出差异

首先,这种稍微不同的行为的原因是什么?
Math.Exp
不是直接在CPU上执行的吗?顺便说一句,这两个平台都是基于英特尔的

如果这无法纠正(我不知道怎么纠正),是否有一种替代的
Exp
实现(与
Math.Exp
一样快)可以在两个平台上使用

我知道我们可以使用
Math.Pow(Math.E,x)
,但快速搜索显示这比
Math.Exp
慢2倍。此外,它可能会遇到同样的问题。

(引用)“我知道我们可以使用Math.Pow(Math.E,x),但快速搜索显示这比Math.Exp慢2倍。此外,它可能会遇到同样的问题。”对此要务实。既然你不能(轻松地)让Windows和Ubuntu版本的Math.Exp进行完全相同的计算,那么你仍然可以尝试使用Math.Pow进行重构,自己测量并决定性能是否足够好HTH,(引用)“我知道我们可以使用Math.Pow(Math.E,x),但快速搜索显示这比Math.Exp慢2倍。此外,它可能会遇到同样的问题。”对此要务实。既然你不能(轻松地)让Windows和Ubuntu版本的Math.Exp进行完全相同的计算,那么你仍然可以尝试使用Math.Pow进行重构,自己测量并决定性能是否足够好嗯,,