RealPiは、最高で最も興味深い円周率計算アルゴリズムのいくつかを提供します。このアプリは、AndroidデバイスのCPUとメモリのパフォーマンスをテストするベンチマークです。円周率の値を、指定した小数点以下の桁数で計算します。結果の数字のパターンを表示および検索して、円周率で誕生日を検索したり、「ファインマンポイント」(762桁目の位置に6つの9が並んでいる)などの有名な数字シーケンスを検索したりできます。桁数に厳しい制限はありません。フリーズが発生した場合は、以下の「警告」を参照してください。
100万桁のAGM + FFT式に円周率の計算時間でコメントを残します。また、あなたが計算できる最も多くの桁は、あなたの電話のメモリをテストします。著者のNexus6pは、100万桁で5.7秒かかります。 AGM + FFTアルゴリズムは2の累乗で機能するため、1,000万桁の計算には、1,600万桁と同じくらいの時間とメモリが必要です(内部精度は出力に表示されます)。マルチコアプロセッサでは、RealPiはシングルコアのパフォーマンスをテストします。正確なベンチマークタイミングを得るには、他のアプリケーションが実行されておらず、電話機がCPUをスロットルするのに十分な温度になっていないことを確認してください。
検索機能:
これを使用して、誕生日のような円周率のパターンを見つけます。最良の結果を得るには、AGM + FFT式を使用して少なくとも100万桁を計算し、[パターンの検索]メニューオプションを選択します。
使用可能なアルゴリズムの概要は次のとおりです。
-AGM + FFT式(算術幾何平均):これは、Piを計算するために使用できる最も高速な方法の1つであり、[開始]を押したときにRealPiによって使用されるデフォルトの式です。ネイティブC ++コードとして実行され、大浦拓也のpi_fftc6プログラムに基づいています。数百万桁の場合、大量のメモリが必要になることがあります。これは、計算できる桁数の制限要因になることがよくあります。
-Machinの式:この式は1706年にJohnMachinによって発見されました。AGM+ FFTほど高速ではありませんが、計算が進むにつれて円周率のすべての桁がリアルタイムで蓄積されます。設定メニューでこの式を選択し、[開始]を押します。 BigDecimalクラスを使用してJavaで記述されています。計算時間は約20万桁長くなる可能性がありますが、最近の電話では、忍耐強い場合はMachinを使用して100万桁を計算して表示できます。
-GourdonによるPi式のN番目の桁:この式は、前の桁を計算せずに「真ん中」のPiの10進数を計算することが(驚くべきことに)可能であり、メモリをほとんど必要としないことを示しています。 「N番目の桁」ボタンを押すと、RealPiは指定した桁位置で終わる円周率の9桁を決定します。ネイティブC ++コードとして実行され、XavierGourdonのpidecプログラムに基づいています。 Machinの式よりも高速ですが、AGM + FFTの式に勝るものはありません。
-BellardによるPi式のN番目の桁:PiのN番目の桁に対するGourdonのアルゴリズムは、最初の50桁には使用できないため、桁が50未満の場合は、代わりにFabriceBellardによるこの式が使用されます。
他のオプション:
「スリープ時に計算」オプションを有効にすると、RealPiは画面がオフの間も計算を続け、円周率の桁数を計算するときに役立ちます。計算していない間、または計算が終了した後、デバイスは通常どおり深いスリープ状態になります。
警告:
このアプリは、特に[スリープ時に計算]オプションがオンになっている場合、長時間の計算を行うとすぐにバッテリーを消耗する可能性があります。
計算速度は、デバイスのCPU速度とメモリによって異なります。桁数が非常に多い場合、RealPiが予期せず終了したり、応答が得られなかったりすることがあります。また、実行に非常に長い時間(年)かかる場合があります。これは、大量のメモリやCPU時間が必要なためです。計算できる桁数の上限は、Androidデバイスによって異なります。
「スリープ時に計算」オプションへの変更は、計算の途中ではなく、次のPi計算で有効になります。