IEEE_754
[Wikipedia|▼Menu]

IEEE 754(アイトリプルイーななごおよん、アイトリプルイーななひゃくごじゅうよん)は、別の表記では「IEEE Standard for Floating-Point Arithmetic」と書かれるものであり、1985年IEEEによって定められた、浮動小数点算術に関する標準規格である。
概説

GNU coreutilsのマニュアルで「Almost all modern systems use IEEE-754 floating point」と書かれている[1]ように、ほぼ全てのモダンなシステムが使っている浮動小数点方式(の仕様)である。プロセッサFPUなどのハードウェア、浮動小数点演算ライブラリなどのソフトウェアで採用されている。

なお、多くのプログラミング言語やその処理系の仕様書では、IEEE 754 に準拠した処理とはわざわざ明記していないことが多い。[注釈 1] つまり実機でIEEE 754準拠と明記していなくても実際にはIEEE 754準拠しているものは多い。他方、あまり多くはないが、JavaC#のように、言語仕様で「IEEE 754」の名を明記しているものもある(ただしそのような仕様を厳密に実装するのはそう簡単ではない場合もある[2])。
改定版

改定版としては、2008年8月に制定された IEEE 754-2008 がある。これには、1985年の IEEE 754 制定当初の規格である IEEE 754-1985(英語版)、ならびに基数非依存の浮動小数点演算の標準規格 IEEE 854-1987(英語版) の両者がほぼすべて吸収されている。IEEE 754-2008 は、正式に制定されるまでは、IEEE 754rと呼ばれた。

正式な規格名は、IEEE Standard for Floating-Point Arithmetic (ANSI/IEEE Std 754-2008)である。ISO/IEEEのPSDO(パートナー標準化機関)合意文書に基づき、JTC1/SC 25 を通して国際規格 ISO/IEC/IEEE 60559:2011 として採用され[3]、公表されている[4]
定義内容

この標準規格は、以下のようなことを定義している。

基本形式: 次の交換形式とは独立して抽象的な形で表現法を定めたもの。二進の他に十進形式もある。通常の「浮動小数点方式による数」の他、0、負の0非正規化数、正の無限と負の無限(拡大実数[5]、0.0 / 0.0 の結果のような「数ではない」状態を表現する NaN、についての表現がある。

交換形式: ビット列としての表現形式であり、ファイルや通信などによる交換の際に機種に依存しない表現形式として定めたもの。

丸めとその規則: 端数処理の仕方に関する種類と規定。

非正規化数に関する取り決め

例外的な処理: 例外的状態の扱い(ゼロ除算、オーバーフロー、など)。

四則演算: 四則演算は、両辺の値が正確にその値であるものとして数学的に正確に計算された値から、「指定された丸め」によって丸められなければならない[6]

その他の演算: その他の関数では、四則演算と同様の正確さを実現することは難しい場合がある[7]

またこの規格では、高度な例外処理、追加的な演算(三角関数など)、式評価、再現可能性などを強く推奨している。

IEEE 754-1985 から IEEE 754-2008 への改訂作業には、7年間かかった。改訂作業は Dan Zuras が指揮し、Mike Cowlishaw が編集責任者となった。IEEE 754-1985 にあった二進形式(単精度・倍精度)は、そのまま IEEE 754-2008 にも含まれている。さらに、IEEE 754-2008 では、新たに二進形式1つ、十進形式2つが加わり、計5つの基本形式が存在する。IEEE 754-2008 に「従っている」と主張する実装は、これらのうち少なくとも1つの基本形式を算術演算と情報交換のために実装しなければならない、とされている。
形式

IEEE 754において、浮動小数点数データを取り扱うための符号化が形式 (Formats) として定められている。その中では次のデータを表現できる。

2または10を基数とする有限数。各有限数は、符号s(0または1)、
仮数c、指数qの3つの整数で表現し、(?1)s × c × bqという値を意味する。bは基数で2または10である。例えば、符号が1(負数を意味する)、仮数が12345、指数が?3で、基数が10だった場合、?12.345という値を表す。

非正規数

0(+0と?0)


+∞と?∞。

2種類の非数 (NaN)。NaNにはクワイエットNaN (Quiet NaN) とシグナリングNaN (Signaling NaN) が存在する。どちらのNaNでも、追加情報を伝えられる余分のビットが設けられている。

所定の形式で表現可能な有限数値は、基数 (b)、仮数の桁数すなわち精度 (p)、指数に関するパラメータ emax によって決定される。

cは0からbp?1までの値でなければならない(例えばb = 10 かつ p = 7 ならば c は0から9999999の範囲を取る)。

qは1?emax ? q+p?1 ? emaxでなければならない(同様に、例えばp = 7 かつ emax = 96 ならばqは?101から90の範囲を取る)。

括弧内の例のパラメータを用いた場合、0以外で最も小さい値は1×10?101と表現され、最も大きい値は9999999×1090 (または9.999999×1096) と表現される。このうち、仮数の桁数が充分確保されているのは1000000×10?101(または1.000000×10?95) 以上の値であり、これらの数は正規数と呼ばれる。一方、正負の最も0に近い正規数である?1×10?95と1×10?95に挟まれた区間は、非正規数として表現される。例えば、1×10?101はこの例において表現できる最も0に近い正の値だが、仮数の桁数が1しかなく非正規数である。

ゼロは仮数が0の有限数である。符号が別に定義されているので、符号付の2種類のゼロ +0 と?0 が存在する。
基本形式

IEEE 754標準では、5種類の基本形式を定めており、基数や符号化して使用するビット数に応じて名前が付けられている。その内訳は、32/64/128ビットで表現する3種類の二進浮動小数点形式と64/128ビットで表現する2種類の十進浮動小数点形式からなる。このうち、二進形式の初めの2種は IEEE 754-1985 で単精度 (single)・倍精度 (double) と呼ばれた形式である。3つ目の二進形式は、四倍精度 (quad) とも呼ばれる。同様に、十進形式の2種も倍精度・四倍精度と呼ばれる。

基本二進形式の典型的な精度は実際に仮数部に保持されているビット数よりも1ビット分だけ高い。これは二進形式の正規化された浮動小数点数では最上位ビット(桁)が常に1であることを利用して符号化の際にそれを省いて表現しているからである(ケチ表現)。

形式名一般名基数
(b)桁・ビット数
(p)指数最小値
(emin)指数最大値
(emax)備考十進換算
桁数十進換算
emax
binary16半精度210+1?14+15交換形式であって、基本形式ではない3.314.51
binary32単精度223+1?126+1277.2238.23
binary64倍精度252+1?1022+102315.95307.95
binary128四倍精度2112+1?16382+1638334.024931.77
decimal32十進単精度107?95+96交換形式であって、基本形式ではない796
decimal64十進倍精度1016?383+38416384
decimal128十進四倍精度1034?6143+6144346144

十進換算の桁数は p × log10 b で得られる十進での桁数の近似値である。

十進換算の emax は emax × log10 b で得られる十進での指数最大値である。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:49 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef