SlideShare une entreprise Scribd logo
1  sur  10
非正規化数の
FZ(FTZ)とDAZの違い
@ksmakoto(きしもと)
おさらい浮動小数点方式( 1/3)
● Knuth先生によればバビロニアには、
ある種の浮動小数点形式があった
(TAoCP§4.1)
● 一般的に、全て固定長の
 符号(sign)
 指数部(exponent)
 小数部(fraction) から成る(用語は揺れ有)
● 1970s以前は混沌、現在はIEEE754
● URR([Hamada1987] 適応的可変長)
おさらい浮動小数点方式( 2/3)
● 端から、NaN ・ ± ∞ ・ 一般的な数 ・
「非正規(化)数」・ ゼロ(・ マイナスゼロ)
● 一般的な場合の例
例: 1.602177e-19
 符号(sign):    +
 指数部(exponent): 10^(-19)
 小数部(fraction): 1.602177
おさらい浮動小数点方式( 3/3)
● 具体的に(IEEE754 binary64)
NaN : 0 11111111111 ......(全 0 以外)
∞ : 0 11111111111 000000......
DBL_MAX: 0 11111111110 111111......
1 : 0 01111111111 000000......(ケチ表現)
DBL_MIN: 0 00000000001 000000......
、(以下 非正規化数)
の最大 : 0 00000000000 111111.....( ケチ非 表現)
の最小 : 0 00000000000 000.......001
 0: 0 00000000000 000.......000
と非正規化数
gradual underflow
● アンダーフローとは
● 正規化数で表現できないくらい
絶対値が小さくなった
and・or厳密には非ゼロだがゼロになった
● そこで、可能ならゼロにせず非正規化数に
→ gradual underflow
●
ハードでの は だから いことも実装 大変 無
ソフトではもっと くなるから いことも遅 無
●
と のトレードオフだから、精度 速度
びたい こともある「選 」
SSEとgradual underflow
● 詳細はインテルの資料を参照
● SSE(およびIA-64)には速度重視のための
Flush-to-Zero (FZ (FTZ)) モードがある
● コード例はあとでアップロードします
FZとDAZ
● SSE2かSSE3以降には(資料とコードで違う)
Denormals-Are-Zero (DAZ) というモードもある
● どう違うのか
 → 次の図を見れば一発でわかります
FZとDAZ
FZ DAZ
x y x y
op op
出力で0に
入力で0に
x `op` y x `op` y
FZとDAZ
● コード例はあとでアップロードします
FZとDAZ
● コード例はあとでアップロードします

Contenu connexe

Plus de Makoto Kishimoto (8)

CHP survey
CHP surveyCHP survey
CHP survey
 
some SHA1 implementation
some SHA1 implementationsome SHA1 implementation
some SHA1 implementation
 
Visulan intro
Visulan introVisulan intro
Visulan intro
 
Shizuoka go lang csp
Shizuoka go lang cspShizuoka go lang csp
Shizuoka go lang csp
 
Tech oyaji ksmakoto_presen
Tech oyaji ksmakoto_presenTech oyaji ksmakoto_presen
Tech oyaji ksmakoto_presen
 
Subprocess no susume
Subprocess no susumeSubprocess no susume
Subprocess no susume
 
Node handson
Node handsonNode handson
Node handson
 
app-c.odp
app-c.odpapp-c.odp
app-c.odp
 

FZ and DAZ in denormals