【问题标题】:Bug in ilmath.min(a,b)?ilmath.min(a,b) 中的错误?
【发布时间】:2014-02-16 10:10:55
【问题描述】:

如果我将 ilmath.min() 函数与两个 1x1 双精度(未检查其他数据类型)矩阵一起使用,它将返回最大值而不是最小值。如果矩阵的大小大于 1x1,则一切正常。请确认以下代码返回 1.0 而不是 0.0 作为方面。对我来说,这看起来像是一个错误还是一个功能?

Console.WriteLine(ILMath.min(0.0,1.0));
Console.ReadKey();

提前致谢。

【问题讨论】:

  • 请参阅下面的 CodeCasters 答案。它确认这是一个错误以及如何修复/解决它。或者,如果仅使用系统标量值,则可以简单地使用 Math.Min(0.0,1.0)。

标签: c# min ilnumerics


【解决方案1】:

我为一个错误投票。 http://ilnumerics.net/mantis 有一个 bugtracker,您可以考虑在那里提交问题。

【讨论】:

    【解决方案2】:

    Functions\BuiltIn\min.cs 的第 4295 行仅用于标量值(即 1 个元素的输入大小):

    return array<double>(
        new double[1] 
        {
            (A.GetValue(0) > B.GetValue(0)) ? A.GetValue(0) : B.GetValue(0) 
        }
    );
    

    这似乎返回最大值,而不是最小值。将&gt; 更改为&lt;,它应该可以工作,但我在他们的下载中找不到任何相关的测试用例,所以我不知道这会破坏什么。

    【讨论】:

    猜你喜欢
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 2021-11-28
    相关资源
    最近更新 更多