ガウス＝ルジャンドルのアルゴリズム
a, b が希望する精度(桁数)になるまで以下の計算を繰り返す。小数第n位まで求めるとき log2 n 回程度の反復でよい。
a n + 1 = a n + b n 2 b n + 1 = a n b n t n + 1 = t n − p n ( a n − a n + 1 ) 2 p n + 1 = 2 p n {\displaystyle {\begin{aligned}a_{n+1}&={\frac {a_{n}+b_{n}}{2}}\\b_{n+1}&={\sqrt {a_{n}b_{n}}}\\t_{n+1}&=t_{n}-p_{n}(a_{n}-a_{n+1})^{2}\\p_{n+1}&=2p_{n}\end{aligned}}}