人気ブログランキング |

ブログトップ

電子工作やってみたよ

DM42で円周率_10000桁 計算出来た

DM42で円周率10000桁の計算ができました。
演算時間はUSB電源で10時間 30分前はまだ動いていて10時間目に見たら停止していたので10時間弱ということですね。
これ HP42Sでやると10時間×750倍 => 7500時間 => 312日
電池ももたないし不可能ですね。

演算結果はまた円周率表と比較して正常でした。
(見たのはプログラムの下に示した 前部、中央部、後部についてです。)
ただキャリー処理の部分を停止してあったので直してやり直してみますけれど。
時間のかかるものは、動作の確認するだけでもたいへんですね。


いつもコメントくれるkusakaさんがたまたまそばにいたので「10000桁出来た」と言ったら
「それで」という返事。 
そうなんですよね、電卓や円周率に興味ない人にとっては、「それが どうしたの」という感じなのでしょうね。
わたしにとっては、ゲームセンターの機械よりは、はるかに面白いものですけど。

ここで使う電卓はやはりHP電卓でないとダメですね。
かっこの無いRPN(逆ポーランド法)だからこそ演算のひとつひとつの手順がはっきりとしているのですから。
これ数式通りの電卓やパソコンの数学ソフトでやったら、楽しみが半減すると思います。
こんなこと言っておきながら、わたしまだこのプログラムからどうして円周率が出てくるのか理解できないのです。

まだまだ楽しみは尽きないですね。


c0335218_14441607.jpg




全プログラムリスト 


全プログラムリスト

円周率 1レジスタに10桁表示

Many Digits of Pi by Katie Wasserman - MoHPC
www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=899

オリジナルの計算式

π = 2 + 1/3( 2 + 2/5( 2 + 3/7( 2 + ・・・ ( 2 + k/(2k+1)( 2 + ・・・)))・・・))


計算したのはDM42
  ここまでくると HP42S ではメモリーサイズR880が最大なので動作できない。

01 LBL "AA"
02 SIZE 1005 変数領域の確保 R0~R1004
         (この定義ではR1005をアクセスするとエラーとなる、
         もっと大きく出来るがここまでとする)
03 FIX 00 小数点以下表示しない
04 CLRG 変数領域消去
05 35E3 (35000) ***** 1017=>35000 10000桁計算に概略必要と思われる値
06 STO 01
*

07 LBL 1 mainループの先頭
08 2
09 STO "II"
10 0 CARRYの初期値

*
11 LBL 02 レジスター計算ループの先頭
12 1E10 ***** 1レジスタ10桁表示
13 ×     10,000,000,000倍する
14 RCL IND "II"
15 RCL 01
16 ×
17 +
18 ENTER
19 ENTER
20 ENTER
21 RCL 01
22 2
23 ×
24 1
25 +
26 ÷
27 LSTX
28 X<>Y
29 IP (INTのこと)
30 STO IND "II"
31 ×
32 -
33 1
34 STO +"II"
35 R↓
36 RCL "II"
37 1005 ***** 54=> 1005   レジスタR1004まで計算する
38 -
39 X=0?
40 GTO 03
41 R↓
42 GTO 02

*
43 LBL 03
44 2
45 STO 02
46 RCL 01
47 1
48 -
49 STO 01
50 X>0 ?
51 GTO 01
-------------------------------------
52 1004 ***** 53 => 1004  レジスター計算末尾  
53 STO "II"
54 0 最初はキャリー無しから始まる

*
55 LBL 04 ---桁上がり処理ループ先頭------------
56 STO+ IND "II" 上位のレジスタへキャリーを加算 0 or 1
57 RCL IND "II" O or 1 の加算されたレジスタを読み込む
58 1E10      E6 => E10 10,000,000,000で割り算
59 ÷
60 INT 11桁目(キャリー)を取り出す
61 STO 01 キャリーをR1にセーブしておく
62 1E10 ***** キャリーを10,000,000,000倍する
63 ×
64 STO- IND "II" キャリーを含んだ元の数値からキャリーのみ引く
65 RCL 01 キャリーをR1からXレジスターに戻す
66 DSE "II" インデックスポインター1を引いて 0でないならLBL4へ戻る
67 GTO 04
68 RCL 02 円周率の頭の3を読み込んで終わりとする
69 RTN


計算した答え

R02 2,         ミスでキャリー処理を止めていた。
             キャリーくれば3となり正常
R03 11,415,926,535  ここR03の最初の1が繰り上り
             R02に加算される
R04 8,979,323,846
R05 2,643,383,279  


R500 4,263,129,860
R501 8,099,888,687
R502 4,132,604,721
R503 5,695,162,396

|
|
R1000 9,596,881,592
R1001  560,010,165
R1002 5,256,375,678 最後の8が小数点以下 10000桁目
R1003 5,667,227,966 最後10010桁目
R1004 1,279,988,578 最後10020桁目
R1005 ここをアクセスすると サイズエラーとなる



========
修正 2019-7-26
プログラムの表記でHP42Sでは違うところがいくつか在りましたので訂正しました。



今年の田んぼアート まだ田植えしたばかりで苗が小さいですが何とか読めますね 「令和」と川場村の「カワタン」?だったかな
c0335218_07215930.jpg

この花だけは毎年すごく元気ですね。 いつもこうありたいですけれど。
c0335218_07240977.jpg

タマネギ 掘りました。
大きいのから小さいのまでいろいろあります。


c0335218_07254309.jpg


一番大きいやつです。 実物は大きいのですが写真で見るとそれほど大きく感じないですね。
c0335218_07275809.jpg



電子工作ランキング

にほんブログ村 その他趣味ブログ 電子工作へ
にほんブログ村





Commented by Kusaka at 2019-06-22 06:57 x
他人にはまったく興味のないことでも、本人にとっては楽しくてワクワクする。
これぞ趣味ですね。
3.14だけでも誤差は0.05%ですよ。 私にはこれで十分ですよ。
Commented by telmic-gunma at 2019-06-22 08:42
> Kusakaさん
朝早くからありがとうございます。
私もいま3.14/3.1415926535の計算してみたら精度0.05% 
精度すごく良かったのですね。いままで考えてみなかったです。
なぜ人類は何千年も前から円周率の計算やってきたのでしょうね。
名前
URL
画像認証
削除用パスワード

※このブログはコメント承認制を適用しています。ブログの持ち主が承認するまでコメントは表示されません。

by telmic-gunma | 2019-06-21 04:05 | HP電卓 | Comments(2)