1

私は 1 の結果を期待していませんでした:

ILArray<int> test = ILMath.ones<int>(20, 20);
test = test / 2;

結果は0だと思っていました。ILNumerics が Intel IPP ライブラリを使用している場合、IPP ライブラリが整数除算に対して返す結果は 1 だと思います。これが設計によるものである場合、私の最善の選択肢は、次のようなものを使用して整数除算の結果を取得することだと思います。

test = toint32(tosingle(test) / 2.0f);

コメントはありますか?質問?RTFM ポインタ? エリック

4

1 に答える 1

0

ILNumerics は、Matlab (およびどうやら IPP?) と同じ整数除算規則に固執します。結果の小数部分を切り捨てませんが、(中間点でゼロから離れて)丸め、データ型の境界で飽和させます。

個人的には、これにはあまり満足していません。初期の互換性の願望から生まれました。彩度は良好で直感に適合しますが、丸めは、.NET (およびすべての主要な汎用言語) が小数部分を単に切り捨てることによって整数除算を処理する方法と明らかに競合します。ここで動作の変更に投票できます: http://ilnumerics.net/mantis/view.php?id=188

ILMath.apply「C/.NET-Convention」の結果を取得するには、関数を代わりに使用できます。

ILArray<int> a = 1, b = 2; 
ILArray<int> c = a / b; //gives 1
c = ILMath.apply((_a,_b) => _a / _b, a, b);  // gives 0
于 2014-02-17T09:56:50.033 に答える