Microsoft DirectX 8.0 (Visual Basic) |
ソース スカラーの逆数の平方根を計算する。
rsq vDest, vSrc0
次のコードは、rsq 命令によって実行される処理とデスティネーションへの結果の書き込みを示している。
SetDestReg(); SetSrcReg(0); float v = ABSF(m_Source[0].w); if( v == 1.0f ) { m_TmpReg.x = m_TmpReg.y = m_TmpReg.z = m_TmpReg.w = 1.0f; } else if( v == 0 ) { m_TmpReg.x = m_TmpReg.y = m_TmpReg.z = m_TmpReg.w = PLUS_INFINITY(); } else { v = (float)(1.0f / sqrt(v)); m_TmpReg.x = m_TmpReg.y = m_TmpReg.z = m_TmpReg.w = v; } WriteResult();
ソースに添字がない場合は、x 要素が使われる。入力が 1.0 の場合は、出力も 1.0 にならなければならない。
絶対値は処理の前に取得される。つまり、符号ビットは無視される。
(1.0, 4.0) の範囲を超えたエラーの精度は少なくとも 1.0/(222) 絶対値である。これは、通常の実装では仮数と指数が分離されるためである。0.0 のソースは無限大である。
次の例は、rsq 命令の使い方を示している。
rsq r1, r2 rsq r1, r2.y