GNU MP では整数の桁数が大きいとき、再帰除算ではなく、除数の逆数を求めて乗算する方式へ切り替えます。GNU MP のニュートン−ラフソン法による逆数算出ロジックは Knuth 先生によるアルゴリズムの応用で、除算ロジックは Barrett 法に基づいているものの、乗算の桁数を減らす工夫をしてあります。ここでは、そうした工夫をせずにシンプルなやりかたに留め、Ruby で試してみます。 2014年10月15日修正: 被除数の桁数が除数の桁数の 2 倍を越える場合に桁ずらし除算をおこなうようにしました。 Knuth 先生の逆数を求めるアルゴリズムがおもしろいのは、整数である除数 b を 1 より小さな固定小数点数とみなして、 1 より大きな逆数を求めるところにあります。整数から逆数を求めようとすると、 1 より小さな小数点数を求めようと考えてしまうものですが、逆転の発想になっています。小数