2014-01-25 2 views
1

Если я использую функцию ilmath.min() только с двумя 1x1 двойными (другими типами данных не проверенными) матрицами, она возвращает максимальное значение вместо минимума. Все работает отлично, если размер матриц больше 1x1. Пожалуйста, подтвердите, что следующий код возвращает 1.0, а не 0.0 как аспект. Для меня это похоже на ошибку или это функция?Ошибка в 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: http://ilnumerics.net/mantis/view.php?id=185. Он будет исправлен в следующей версии. Предлагаемое решение проблемы может быть использовано до тех пор, пока оно не будет выпущено. –