4.4.1 Integer Arithmetic

Last-modified: 2025-03-20 (木) 20:25:39

4.4.1 整数演算

多くの数値計算は整数では実行できませんが、Octave は整数の加算や乗算などの基本的な演算をサポートしています。演算子+、-、.*、 は、./ 同じ型の整数に対して機能します。したがって、2 つの 32 ビット整数を加算することは可能ですが、32 ビット整数と 16 ビット整数を加算することはできません。

整数演算を行うときは、アンダーフローとオーバーフローの可能性を考慮する必要があります。これは、計算の結果を選択した整数型で表現できない場合に発生します。たとえば、符号なし整数を使用すると、 10 - 20の結果を表現することはできません。Octave は、整数計算の結果が実際の結果に最も近い整数になるようにします。したがって、符号なし整数を使用すると、 10 - 20の結果はゼロになります。

整数除算を行うと、Octave は結果を最も近い整数に丸めます。これは、結果が最も近い整数に切り捨てられることが多いほとんどのプログラミング言語とは異なります。したがって、 の結果は int32 (5) ./ int32 (8)です1。

: C = idivide (A, B, op)

異なる丸め規則による整数除算。

などの整数除算の標準的な動作は、 結果を最も近い整数に丸めることです。これは常に望ましい動作ではなく、opフラグによって決定される除算の小数部に対して異なる処理で整数要素ごとの除算を実行できます。op は、A ./ Bidivide次のいずれかの値を持つ文字列です。

"fix"

小数部分をゼロに向かって丸めて 計算します。A ./ B

"round"

小数部分を最も近い整数に丸めて 計算します。A ./ B

"floor"

小数部分を負の無限大に向かって丸めて 計算します。A ./ B

"ceil"

小数部分を正の無限大に向かって丸めて 計算します。A ./ B

opが指定されていない場合は、デフォルトで になります"fix"。これらの丸めルールを示す例を以下に示します。

idivide (int8 ([-3, 3]), int8 (4), "fix")
 ⇒   0   0
idivide (int8 ([-3, 3]), int8 (4), "round")
 ⇒  -1   1
idivide (int8 ([-3, 3]), int8 (4), "floor")
 ⇒  -1   0
idivide (int8 ([-3, 3]), int8 (4), "ceil")
 ⇒   0   1

See also: ceil, floor, fix, round, ldivide, rdivide.