現代の私たちが f64::ln() や f64::atan() といった関数を一行で呼び出せる裏側には、350年以上前、微積分学が完成する一歩手前で「無限」という怪物に挑んだ先人たちの足跡があります。
今回は、Rustでの対数関数実装のヒントにもなった「グレゴリー・ライプニッツ級数」の数奇な歴史と、その数学的構造を紐解いていきましょう。
1. 1671年、スコットランドからの閃き

ジェームズ・グレゴリー
17世紀後半、まだニュートンやライプニッツによって「微積分学」が体系化される前のこと。スコットランドの数学者ジェームズ・グレゴリーは、ある驚異的な発見に到達します。
それは、円や曲線といった「幾何学的な対象」を、単なる四則演算の「無限の足し算」へと変換する魔法のような数式でした。
(ちなみに、彼は世界初の反射望遠鏡を制作するなど天文学の分野でも活躍しました。)
逆正接関数 (\(\arctan\)) の展開
\[\arctan(x) = x – \frac{x^3}{3} + \frac{x^5}{5} – \frac{x^7}{7} + \dots = \sum_{n=0}^{\infty} (-1)^n \frac{x^{2n+1}}{2n+1}\]
これが、後に「グレゴリー級数」と呼ばれるようになる式です。複雑な逆三角関数が、奇数の逆数を交互に足し引きするという、極めてシンプルな規則性に集約されたのです。
2. 円周率 \(\pi\) への架け橋:ライプニッツの公式
この発見から数年後、ゴットフリート・ライプニッツも独立して同じ級数に辿り着きました。彼はこの式に $x = 1$ を代入することで、数学史上最も美しいとされる数式の一つを導き出します。
\[\frac{\pi}{4} = 1 – \frac{1}{3} + \frac{1}{5} – \frac{1}{7} + \frac{1}{9} – \dots\]
円周率という、円の象徴である超越数が「すべての奇数の逆数」の和として現れる。この発見は当時の数学界に大きな衝撃を与えました。
【こぼれ話】実用性は……?
理論的には美しいこの公式ですが、実は収束が絶望的に遅いことで知られています。小数点以下5桁(3.14159…)まで求めるだけでも、数十万項の計算が必要です。現代の競技プログラミングでこれを使ったら、間違いなくTLE(実行時間制限超過)でしょう。
3. 現代の ln(x) 実装への応用
グレゴリー級数の真価は、円周率の計算だけではありません。実は、私たちがコンピュータで対数(\(\ln\))を計算する際の実装ベースとしても生き続けています。
逆正接(\(\arctan\))ではなく、逆双曲線正接(\(\text{artanh}\))を考えることで、対数関数の級数展開が得られます。
\[\text{artanh}(x) = \frac{1}{2} \ln\left( \frac{1+x}{1-x} \right) = x + \frac{x^3}{3} + \frac{x^5}{5} + \dots\]
ここで \(x = \frac{m-1}{m+1}\) と置くことで、任意の \(m\) に対して以下の式が成り立ちます。
\[\ln(m) = 2 \left( \frac{m-1}{m+1} + \frac{1}{3}\left(\frac{m-1}{m+1}\right)^3 + \frac{1}{5}\left(\frac{m-1}{m+1}\right)^5 + \dots \right)\]
Rustなどで低レイヤの数学ライブラリを実装する際、この級数が選ばれるのには理由があります。
- 項がすべてプラスなので計算が安定しやすい。
- 範囲を適切に絞る(Range Reduction)ことで、数項の計算だけで十分な精度が得られる。
4. 歴史の裏側:ジェームズ・グレゴリーという男
グレゴリーは、この偉大な発見をすぐには公表しませんでした。彼は非常に控えめな性格で、学術的な優先権争いを嫌ったとも言われています。(誰が見るでもない記事をネットの海に流し続けている私にはとても親近感がわきます。19世紀の孤高の科学者:キャベンディッシュも同じような性格みたいですね)
彼が1675年に36歳の若さで亡くなったとき、その功績の多くは未発表のままでした。もし彼がもっと長生きし、自身の成果を体系化していたら、微積分学の父としてニュートンと並び称されていたかもしれません。
結び:350年前の知恵をコンパイルする
私たちが今日, for ループを回して \(\ln\) や \(\pi\) を近似計算するとき、そのアルゴリズムの根底には1671年のグレゴリーの洞察が流れています。
「無限」を「有限の積み重ね」として捉え直した彼らの挑戦。その情熱は、現代のビットとバイトの世界でも、変わることなく息づいているのです。
では、また次の記事でお会いしましょう。 lumenHero
関連記事
バビロニア法・ニュートン法:平方根の導出展開、手動でも解ける差分アプローチ【バビロニア法・ニュートン法】
高次の近似手法 ハウスホルダー法 : (記事は現在利用できません: ID 6925)
Rustによる対数関数実装: 【Rustで作る電卓】浮動小数点数の構造をハックして対数関数(log)を実装する #15
ln自然対数の計算プログラム実装でzに置換する理由【ホーナー法・グレゴリー級数】
RustでのTUI電卓実装におけるlog関数の最適化を徹底解説。なぜ標準的なマクローリン展開では不十分なのか?変数変換 $z = (m-1)/(m+1)$ を用いた収束加速の理論から、f64精度をわずか12項で実現するホーナー法の活用まで、数値計算の裏側を解き明かします。