長倍精度

読み:ちょうばいせいど
外語:long double 英語
品詞:名詞

コンピューター内部における数値表現の方法の一つで、浮動小数点数の表現で用いられる。特定の呼称がなく、長倍精度、拡張倍精度、long doubleなど、様々に呼ばれている。

目次

x87、つまりx86FPU機能は、初期の8087の頃から現在まで、一貫して80ビット長の精度を持っている。

この精度を完全に利用するためには、Microsoft Windows用のC/C++実装で一般的な64ビット長の倍精度(double型変数)では足らないため、さらに長い表現が必要である。

四倍精度(128ビット)までは不要ながらこのx87の仕様である80ビット長を扱う必要が生じ、このため用意されたのが中間となる長さを持った長倍精度である。

仕様

Intel FPUの仕様においては、符号部1ビット、指数部15ビット(+16383のゲタをはかせるバイアス方式)、仮数部64ビット(基数2)の80ビット長である。但し後述するように仮数部は実質81ビットであり、有効桁数は10進数表現で19桁程度となる。

仮数部

80ビットの中に収められる仮数部の長さは64ビットだが、実際にはこの精度は65ビットとされている。

これは、0/NaN/∞などを除いて、正規化により「1.」の部分を暗黙的に定義することでビット数を稼ぎ、都合65ビットとしているためである。この「1.」は、「暗黙の整数ビット」や「implicit」などと呼ばれている。

「1.」が存在するが、0は0で別途、指数部=仮数部=0の場合に0として定義されており、表現することが可能である。

プログラミング

C/C++ではlong double型の変数を用いる。GCCclang/LLVMで対応するが、Visual C++では完全対応していない。GCC独自拡張で__float80型が存在する。

Javaには該当する型がない。Javaではjava.math.BigDecimalクラスが存在するが、長倍精度と対応するものではない。

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club