正規化された数値とは、指数 (オフセットを含む) と仮数の最上位ビットの両方がゼロ以外の数です。このような数では、仮数の全ビッドが精度を表わします。
ゼロより大きい、最も小さな単精度の正規化された浮動小数点数は、約 1.1754943-38 です。より小さな数値も可能ですが、これらの数値は、ゼロの指数と、最初のビットがゼロである仮数で表されなければならず、精度の低下を引き起こします。このような数値を非正規化された数、デノーマル数と呼びます (サブノーマルとも呼ばれる)。
デノーマル数の計算には、ハードウェアやオペレーティング・システム・リソースが必要で、数百クロックサイクルが費やされます。
IA-32 およびインテル(R) 64 アーキテクチャーをベースとしたプロセッサーでは、通常の計算より遥かに長い時間がかかります。
IA-64 アーキテクチャー・ベースのプロセッサーではソフトウェアで計算されます。通常、計算には数百クロックサイクル必要で、多くのカーネル時間が費やされます。
デノーマル数を処理し、アプリケーションのパフォーマンスを高める方法はいくつかあります。
値を正規化された数値範囲に変換する
より大きな動的範囲を持つ高い精度のデータ型を使用する
デノーマル数をゼロにフラッシュする
関連情報
『Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 1: Basic Architecture』(英語)
『インテル(R) Itanium(R) アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル 第 1 巻:アプリケーション・アーキテクチャ』
現在の浮動小数点規格と推奨事項に関する情報については、IEEE (Institute of Electrical and Electronics Engineers, Inc*) Web サイトを参照