如果我只使用兩個1x1 double(其他數據類型未檢查)矩陣的ilmath.min()函數,它將返回最大值而不是最小值。如果矩陣的大小大於1x1,一切正常。請確認以下代碼返回1.0,而不是0.0。對我來說,這看起來像一個Bug或者它是一個功能?ilmath.min(a,b)中的錯誤?
Console.WriteLine(ILMath.min(0.0,1.0));
Console.ReadKey();
在此先感謝。
如果我只使用兩個1x1 double(其他數據類型未檢查)矩陣的ilmath.min()函數,它將返回最大值而不是最小值。如果矩陣的大小大於1x1,一切正常。請確認以下代碼返回1.0,而不是0.0。對我來說,這看起來像一個Bug或者它是一個功能?ilmath.min(a,b)中的錯誤?
Console.WriteLine(ILMath.min(0.0,1.0));
Console.ReadKey();
在此先感謝。
我投票支持bug。在http://ilnumerics.net/mantis有一個bugtracker你可能會考慮在那裏提交一個問題。
這條線,4295的Functions\BuiltIn\min.cs
,僅用於標量值(即1個元件的輸入大小):
return array<double>(
new double[1]
{
(A.GetValue(0) > B.GetValue(0)) ? A.GetValue(0) : B.GetValue(0)
}
);
這似乎返回最大值,而不是分鐘。將>
更改爲<
,它應該可以正常工作,但我無法在其下載中找到任何相關的測試用例,因此我不知道這會中斷什麼。
我在bugtracker中添加了這個bug:http://ilnumerics.net/mantis/view.php?id=185。它將在下一個版本中修復。上面提出的解決方法可以使用,直到它被釋放。 –
請參閱下面的CodeCasters答案。它證實,這是一個錯誤,以及如何修復/解決方法。或者,如果僅使用系統標量值,則可以簡單地使用Math.Min(0.0,1.0)。 –