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