浮動小数点
MATLAB は、浮動小数点演算用のIEEE 標準 754を実装しています。この規格には、5 つの例外が定義されています。
- 無効な操作
- ゼロ除算
- オーバーフロー
- アンダーフロー
- 不正確
GNU C Libraryで指摘されているように、これらの例外はステータス ワードで示されますが、プログラムは終了しません。代わりに、例外に依存するデフォルト値が返されます。値は、実際の数値または特別な値の場合があります。MATLAB の特別な値は、、、、Inf
およびです。これらの MATLAB シンボルは、読みやすさと使いやすさのために、公式規格の予約済みバイナリ表現の代わりに使用されます (ちょっとした構文糖衣)。特別な値の操作は明確に定義されており、直感的な方法で操作できます。-Inf
NaN
-0
この情報があれば、質問に対する答えは次のようになります。
Inf
上記の例外のいずれか (つまり、1、2、または 3) を発生させる操作が実行されInf
、デフォルトの戻り値であると判断されたことを意味します。
プログラムの作成方法、C
使用されているコンパイラ、および存在するハードウェアにINFINITY
応じNaN
て、操作によって返される可能性のある特別な値ですC
。それは、IEEE-754 標準が実装されたかどうか、およびどのように実装されたかによって異なります。C99 には標準の一部として IEEE-754 実装がありますが、実装がどのように機能するかは最終的にはコンパイラ次第です (これは、積極的な最適化や丸めモードなどの標準オプションによって複雑になる可能性があります)。
Inf
またはの戻り値は-Inf
、オーバーフロー例外が発生した可能性があることを示しますが、無効な操作またはゼロ除算の可能性もあります。MATLAB がそれがどれであるかを教えてくれるとは思いません (ただし、コンパイルされた MEX ファイルを介してその情報にアクセスできるかもしれませんが、私はそれらに慣れていません)。
回答 1 を参照してください。
より楽しく詳細な例については、こちらの PDFをご覧ください。
整数
MATLAB では、整数は上記のように動作しません。指定されたビット サイズの整数に対する操作がそのクラスの最大値を超える場合、それは最大値に設定され、負の場合 (符号付きの場合) はその逆になります。つまり、MATLAB 整数はラップされません。