円周率πを100万桁まで計算するプログラムを作ってみました。super pi もどきです。ソースコードと解説を載せます。 ソースコードは80行程度の非常に短いものですが、このような簡単な実装でも最近のPCなら100万桁の円周率が一分も掛らず計算できます。 ポイント 要点は、 計算精度が問題となるので、GMP(任意精度計算ライブラリ)を使う 計算アルゴリズムは、Square AGM *1と呼ばれるものを使う です。 GMPについては、http://d.hatena.ne.jp/pyopyopyo/20090303 をご覧下さい。 ソースコード /** * pi.cpp * * written by pyopyopyo at gmail dot com */ #include <math.h> #include <gmpxx.h> #include <iostream> // N桁の円周率を計
プログラミング時に注意すべき点の一つに,計算精度の問題があります. たとえばC/C++だと,doubleで計算しても有効桁数は15桁程度(10進数で)しかありません.その結果,以下のような状況で間違った計算結果が出てしまいます. 取り扱う数値が15桁を越える場合 取り扱う数値が7桁を越える場合 たとえば8桁同士の掛け算が行われるとその結果は最大16桁になります.double型の変数には15桁程度の情報しか保存できないので,下位1桁の情報は棄てられます. 取り扱う数値の最大値と最小値に,15桁の以上の差がある場合 たとえばC言語のdouble型で(1.0 + 1e-16)を計算すると結果は 1.0 になります. これら計算精度の問題を避ける方法の一つにGMPというライブラリを使う方法があります。以下ポイントをまとめます。 GMPとは GMP(GNU Multiple Precision li
Windowsが嫌われる要因の一つがレジストリにあると思う。アプリケーションをインストールして、すぐにアンインストールしても元の環境に戻らないのだ。そのため、アプリケーションをインストールしたり使っているうちに徐々にシステムが重たくなってくる。 比較 そうなってからアンインストールしても元の環境には戻らず、再インストールを余儀なくされる。それを防ぐためにもどのアプリケーションがどのレジストリを追加したか把握しておくのが良さそうだ。 今回紹介するフリーウェアはSpyMe Tools、レジストリ監視ツールだ。 SpyMe Toolsには二つのモードが存在する。まず通常のモードはレジストリのダンプを取り、次に取ったダンプと比較する機能だ。これによって追加されたレジストリなどが明確になり、そのレジストリがいるものかいらないものなのか判断しやすくなる。 リアルタイム監視 もう一つはレジストリのリアル
上山あゆみ 1963年 京都生まれ 1983年 少しでも悪筆を人目にさらす機会を減らすべく、ようやく普及し始めたパソコンを購入。ただし、Word はおろか、一太郎もまだ発売されていない頃だったため、なんとか簡単な自作プログラムで卒論を印刷できるよう工夫する。卒論は、「規定に、ペン書きで、と指定されていますので」とのことで、プリントアウト版の受理は却下されてしまったが、その頃から、言語学の研究のかたわら、時々、自分用のプログラミングをするようになる。 1985年 京都大学文学部卒業(言語学専攻) 1990年 京都大学大学院博士後期課程単位取得満期退学 1995年 この本で紹介している自動連番のマクロを使い始める。Word のマクロの体系が変わっていったが、このマクロプログラムの仕組みそのものは、当時から変わっていない。 1998年 南カリフォルニア大学博士号(言語学)取得 200
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く