サンプル・プログラムの実行例
サンプル・プログラム
pi.php | サンプル・プログラム本体。 |
pahooInputData.php | データ入力に関わる関数群。 使い方は「PHPでGET/POSTでフォームから値を受け取る」「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
バージョン | 更新日 | 内容 |
---|---|---|
1.0.0 | 2024/06/30 | 初版 |
バージョン | 更新日 | 内容 |
---|---|---|
1.5.0 | 2024/01/28 | exitIfExceedVersion() 追加 |
1.4.2 | 2024/01/28 | exitIfLessVersion() メッセージ修正 |
1.4.1 | 2023/09/30 | コメントの訂正 |
1.4.0 | 2023/09/09 | $_GET, $_POST参照をfilter_input()関数に置換 |
1.3.0 | 2023/07/11 | roundFloat() 追加 |
準備:初期値など
jQuery UI を使いたくなければ、USESPINNER を FALSE にする。
データ入力に関わる関数群 "pahooInputData.php" はinclude_pathが通ったディレクトリに配置すること。
解説:チュドノフスキーの公式を使って円周率を求める
チュドノフスキーの公式については「チュドノフスキーの公式 - C++ で円周率を計算する」をご覧いただきたい。
191: /**
192: * チュドノフスキーの公式を使って円周率を求める.
193: * @param int $digit 小数点以下の桁数
194: * @return string 素数/NULL:取得失敗
195: */
196: function compPiChudnovsky($digits) {
197: //精度の設定
198: $scale = $digits + 10; //指定桁数に余裕を持たせる
199: bcscale($scale);
200:
201: //初期値
202: $C = bcsqrt(10005, $scale);
203: $C = bcmul($C, 426880);
204:
205: $K = gmp_init(6);
206: $M = gmp_init(1);
207: $X = gmp_init(1);
208: $L = gmp_init(13591409);
209: $S = $L;
210:
211: //級数展開
212: for ($k = 1; $k <= $digits; $k++) {
213: $K = gmp_add($K, gmp_mul(12, $k));
214: $M = gmp_mul($M, gmp_div(gmp_pow($k, 3), $k));
215: $X = gmp_mul($X, -262537412640768000);
216: $L = gmp_add($L, 545140134);
217: $term = gmp_mul($M, $L);
218: $term = gmp_div_q($term, $X);
219: $S = gmp_add($S, $term);
220: }
221:
222: $pi = bcdiv($C, gmp_strval($S), $digits);
223: return bcsub($pi, 0, $digits);
224: }
参考サイト
- C++ で円周率を計算する:ぱふぅ家のホームページ