数表を使う方法は余り説明はいらないでしょう。 言うまでもないですが、とにかく速いけど 精度をあげると信じられないほどのメモリが必要になります。 単精度以上の精度が必要な場合は、 この方法だけで平方根を求めるのはほぼ絶望的となります。
精度として倍精度(53bit)が必要な場合、たいていニュートン法が使われます。 もちろん float2!!.x でもニュートン法を使っています。 ニュートン法というのは、万有引力の発見でお馴染みのニュートンが 考えた(とされる)方法で、f(x)=0 を満たす x を求める際に、 なんらかの方法で求めただいたいの解の値(一次近似)から、 ある種の計算を繰り返すことによって、 正確な解を求めるという方法です(詳しくは略)。
ただ、ニュートン法では、初期値を選ぶのが問題となります。 一般的に平方根の計算においては、相加相乗法則 (xy)^(1/2) <= (x+y)/2 に y=1 を代入した時の式 x^(1/2) <= (x+1)/2 を用いて、初期値を (x+1)/2 とすることが多いようです。 これは、この方法が簡単ながらかなり精度のよい近似値を与えるからだと思われます。
より高速に平方根を求めたい場合、初期近似をより正しく求める必要があります。 そこで、前述の数表を使う方法が「敗者復活」するわけです。 それほど大き過ぎず小さ過ぎない、ある程度の精度の平方根の表を用意し、 それを線形補間などによって補間するのが一般的と思われます。 f2hs.x ではこの方法を使っています。
ニュートン法で平方根を計算する場合, 一度の反復計算で精度がだいたい二倍になることがわかっています。 逆にいうと、それ以上の桁は間違っていることになります。 したがって、そのような桁に対しては計算を行う必要はないわけです。 f2hs.x , float2!!.x の平方根の計算においては、
さらに言うと、この方法はニュートン法を使う、 他の計算においても応用することが出来ます。 高精度の計算が必要なときも、最初から高精度で計算をするのではなく、 取りあえず倍精度ぐらいで計算してから、 その解をもとにより正確な解を計算するようにしたほうがいいでしょう。