Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 11773] ファイルの概要

このコミットは、Go言語の標準ライブラリmathパッケージ内のドキュメント修正と参照リンクの更新に関するものです。具体的には、数学定数を定義するsrc/pkg/math/const.goファイルと、ガンマ関数を実装するsrc/pkg/math/gamma.goファイルの2つのファイルが変更されています。

コミット

commit 13443ccc2aa102cb57cdefd8a44d03257ae1777b
Author: Rob Pike <r@golang.org>
Date:   Fri Feb 10 15:56:51 2012 +1100

    math: fix gamma doc, link to OEIS
    
    Fixes #2940.
    
    R=golang-dev, dsymonds
    CC=golang-dev
    https://golang.org/cl/5645078

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/13443ccc2aa102cb57cdefd8a44d03257ae1777b

元コミット内容

math: fix gamma doc, link to OEIS

Fixes #2940.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/5645078

変更の背景

このコミットは、Go言語のmathパッケージにおけるドキュメントの正確性と参照の改善を目的としています。コミットメッセージにある Fixes #2940 から、GitHubのIssue #2940に関連する修正であることがわかります。

具体的な変更点は以下の2つです。

  1. src/pkg/math/const.goにおける参照URLの更新: 以前は数学定数の参照として http://www.research.att.com/~njas/sequences/Axxxxxx が指定されていましたが、これが http://oeis.org/Axxxxxx に変更されています。これは、参照先のウェブサイトが変更されたか、より適切な参照先としてOEISが選ばれたためと考えられます。
  2. src/pkg/math/gamma.goにおけるガンマ関数のドキュメント修正: Gamma関数のドキュメントにおいて、負の整数値に対する振る舞いの記述が Negative integer values equal ±Inf. から Zero and negative integer arguments return ±Inf. に修正されています。これは、ガンマ関数が0および負の整数で極を持つという数学的事実をより正確に反映するための修正です。

これらの変更は、Go言語の標準ライブラリのドキュメント品質を向上させ、ユーザーがより正確な情報を得られるようにするためのものです。

前提知識の解説

ガンマ関数 (Gamma Function)

ガンマ関数(Γ関数)は、階乗の概念を複素数に拡張した特殊関数です。通常、正の整数 n に対して階乗 n!n × (n-1) × ... × 1 と定義されますが、ガンマ関数はこれを非整数や複素数にまで拡張します。

ガンマ関数 Γ(z) の最も一般的な定義の一つは、オイラーの積分表示によるものです。 $$ \Gamma(z) = \int_0^\infty t^{z-1}e^{-t} dt $$ この積分は、実部が正の複素数 z に対して収束します。

重要な性質:

  • 階乗との関係: 正の整数 n に対して、Γ(n) = (n-1)! が成り立ちます。
  • 漸化式: Γ(z+1) = zΓ(z) という漸化式を満たします。この性質は、階乗の n! = n × (n-1)! という性質と類似しています。
  • 特異点: ガンマ関数は、z = 0, -1, -2, ... といった非正の整数において極(値が無限大になる点)を持ちます。これは、これらの点では関数が定義されないことを意味します。

ガンマ関数は、確率論、統計学、物理学、工学など、多くの科学技術分野で広く応用されています。

OEIS (On-Line Encyclopedia of Integer Sequences)

OEISは「On-Line Encyclopedia of Integer Sequences」の略で、日本語では「オンライン整数列大辞典」と訳されます。これは、整数列のオンラインデータベースであり、数学者、プログラマー、パズル愛好家など、幅広い分野の人々に利用されています。

OEISには、素数の列、フィボナッチ数列、カタラン数など、数千もの整数列が登録されており、それぞれの列には定義、性質、参考文献、関連する他の列へのリンクなどが記載されています。ユーザーは、数列の最初の数項を入力することで、その数列がOEISに登録されているかどうかを検索できます。

このデータベースは、数学的な研究や、特定のパターンを持つ数列を特定する際に非常に有用です。コミットで参照先がOEISに変更されたのは、数学定数や数列に関する情報源として、OEISが非常に信頼性が高く、包括的であるためと考えられます。

技術的詳細

このコミットでは、Go言語のmathパッケージ内の2つのファイルに対して、主にドキュメントと参照の更新が行われています。

src/pkg/math/const.go の変更

このファイルは、Go言語のmathパッケージで利用される様々な数学定数を定義しています。変更点は、これらの定数の参照元として記載されているURLの更新です。

--- a/src/pkg/math/const.go
+++ b/src/pkg/math/const.go
@@ -6,7 +6,7 @@
 package math
 
 // Mathematical constants.
-// Reference: http://www.research.att.com/~njas/sequences/Axxxxxx
+// Reference: http://oeis.org/Axxxxxx
 const (
  E   = 2.71828182845904523536028747135266249775724709369995957496696763 // A001113
  Pi  = 3.14159265358979323846264338327950288419716939937510582097494459 // A000796
  • 変更内容: コメント行の // Reference: のURLが http://www.research.att.com/~njas/sequences/Axxxxxx から http://oeis.org/Axxxxxx に変更されました。
  • 技術的意味: これはコードの動作に影響を与えるものではなく、純粋にドキュメントの更新です。古いURLがもはや有効でないか、OEISがより公式で信頼性の高い参照先として認識されたため、更新されました。Axxxxxx の部分は、OEISにおける特定の数列のIDを示すプレースホルダーです。例えば、円周率Piのコメントには // A000796 とあり、これはOEISにおけるPiの数列のIDを示しています。

src/pkg/math/gamma.go の変更

このファイルは、ガンマ関数 Gamma(x float64) の実装を含んでいます。変更点は、この関数のドキュメントコメントにおける、特定の入力値に対する振る舞いの記述の修正です。

--- a/src/pkg/math/gamma.go
+++ b/src/pkg/math/gamma.go
@@ -116,7 +116,7 @@ func stirling(x float64) float64 {\n //\tGamma(±Inf) = ±Inf\n //\tGamma(NaN) = NaN\n // Large values overflow to +Inf.\n-// Negative integer values equal ±Inf.\n+// Zero and negative integer arguments return ±Inf.\n func Gamma(x float64) float64 {\n  const Euler = 0.57721566490153286060651209008240243104215933593992 // A001620\n  // special cases
  • 変更内容: コメント行の // Negative integer values equal ±Inf.// Zero and negative integer arguments return ±Inf. に変更されました。
  • 技術的意味: ガンマ関数は、数学的に0および負の整数において極(無限大)を持ちます。元のドキュメントでは「負の整数値」のみが言及されていましたが、この修正により「ゼロおよび負の整数引数」と明記され、数学的な正確性が向上しました。これは、関数の振る舞いに関するドキュメントが、実際の数学的定義と実装の挙動に完全に一致するようにするための重要な修正です。ユーザーがこの関数を使用する際に、0を引数として渡した場合の挙動についても明確に理解できるようになります。

コアとなるコードの変更箇所

diff --git a/src/pkg/math/const.go b/src/pkg/math/const.go
index 282561f98b..edb14f6fa4 100644
--- a/src/pkg/math/const.go
+++ b/src/pkg/math/const.go
@@ -6,7 +6,7 @@
 package math
 
 // Mathematical constants.
-// Reference: http://www.research.att.com/~njas/sequences/Axxxxxx
+// Reference: http://oeis.org/Axxxxxx
 const (
  E   = 2.71828182845904523536028747135266249775724709369995957496696763 // A001113
  Pi  = 3.14159265358979323846264338327950288419716939937510582097494459 // A000796
diff --git a/src/pkg/math/gamma.go b/src/pkg/math/gamma.go
index 2385a53b8a..7c6f421bad 100644
--- a/src/pkg/math/gamma.go
+++ b/src/pkg/math/gamma.go
@@ -116,7 +116,7 @@ func stirling(x float64) float64 {\n //\tGamma(±Inf) = ±Inf\n //\tGamma(NaN) = NaN\n // Large values overflow to +Inf.\n-// Negative integer values equal ±Inf.\n+// Zero and negative integer arguments return ±Inf.\n func Gamma(x float64) float64 {\n  const Euler = 0.57721566490153286060651209008240243104215933593992 // A001620\n  // special cases

コアとなるコードの解説

src/pkg/math/const.go の変更点

 // Mathematical constants.
-// Reference: http://www.research.att.com/~njas/sequences/Axxxxxx
+// Reference: http://oeis.org/Axxxxxx
 const (
  E   = 2.71828182845904523536028747135266249775724709369995957496696763 // A001113
  Pi  = 3.14159265358979323846264338327950288419716939937510582097494459 // A000796

この変更は、Go言語のmathパッケージ内で定義されている数学定数(例: オイラー数 E、円周率 Pi)に関するコメントの更新です。以前はAT&Tの研究サイトへのリンクが参照として示されていましたが、このコミットにより、より広く認知され、維持されている「On-Line Encyclopedia of Integer Sequences (OEIS)」へのリンクに変更されました。

  • 旧参照: http://www.research.att.com/~njas/sequences/Axxxxxx
  • 新参照: http://oeis.org/Axxxxxx

この変更は、コードの動作には影響を与えませんが、ドキュメントの正確性と保守性を向上させます。OEISは整数列に関する包括的なデータベースであり、数学定数の定義や関連する数列を調べる上で非常に有用な情報源です。

src/pkg/math/gamma.go の変更点

 //
 //	Gamma(±Inf) = ±Inf
 //	Gamma(NaN) = NaN
 // Large values overflow to +Inf.
-// Negative integer values equal ±Inf.
+// Zero and negative integer arguments return ±Inf.
 func Gamma(x float64) float64 {
  const Euler = 0.57721566490153286060651209008240243104215933593992 // A001620
  // special cases

この変更は、mathパッケージのGamma関数のドキュメントコメントの修正です。Gamma関数はガンマ関数を計算しますが、その数学的性質として、0および負の整数において無限大(極)となります。

  • 旧ドキュメント: // Negative integer values equal ±Inf.
    • これは「負の整数値は±無限大に等しい」と記述しており、負の整数に対する関数の振る舞いを説明しています。
  • 新ドキュメント: // Zero and negative integer arguments return ±Inf.
    • これは「ゼロおよび負の整数引数は±無限大を返す」と記述しています。

この修正により、ガンマ関数が0においても極を持つという数学的事実がドキュメントに正確に反映されました。これにより、Gamma関数を使用する開発者が、0を引数として渡した場合にも無限大が返されることを明確に理解できるようになります。これは、関数の正確な振る舞いをユーザーに伝える上で重要な改善です。

関連リンク

参考にした情報源リンク

  • OEIS (On-Line Encyclopedia of Integer Sequences) のウェブサイト
  • ガンマ関数に関する数学的な情報源 (Wikipedia, Wolfram MathWorldなど)
  • Go言語のIssue #2940に関する情報 (Go Code Reviewサイト)
  • Go言語のmathパッケージのソースコード