前回の「逆数平方根の近似」の続きです。 逆数平方根の近似を利用して平方根関数を実装してみました。 今回の実装ではcrtのsqrt関数と同等にするため0以下の実数に対する処理を加え精度を上げています。 その状態でもcrtのsqrt関数よりかなり高速です。 ついでに逆数平方根関数にも同等の処理を追加しました。 sqrt float sqrt( const float& V ) { if( *(long*)&V <= 0 ) { if( ( *(long*)&V & 0x7FFFFFFF ) == 0 ) return V; long r_bits = 0xFFC00000; return *(float*)&r_bits; } long x_bits = *(long*)&V + 0xFF800000; long y_bits = 0x5F3759DF - ( *(long*)&V >> 1