2014-01-25 57 views
1

如果我只使用兩個1x1 double(其他數據類型未檢查)矩陣的ilmath.min()函數,它將返回最大值而不是最小值。如果矩陣的大小大於1x1,一切正常。請確認以下代碼返回1.0,而不是0.0。對我來說,這看起來像一個Bug或者它是一個功能?ilmath.min(a,b)中的錯誤?

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

在此先感謝。

+0

請參閱下面的CodeCasters答案。它證實,這是一個錯誤,以及如何修復/解決方法。或者,如果僅使用系統標量值,則可以簡單地使用Math.Min(0.0,1.0)。 –

回答

1

這條線,4295的Functions\BuiltIn\min.cs,僅用於標量值(即1個元件的輸入大小):

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

這似乎返回最大值,而不是分鐘。將>更改爲<,它應該可以正常工作,但我無法在其下載中找到任何相關的測試用例,因此我不知道這會中斷什麼。

+1

我在bugtracker中添加了這個bug:http://ilnumerics.net/mantis/view.php?id=185。它將在下一個版本中修復。上面提出的解決方法可以使用,直到它被釋放。 –

相關問題