人気ブログランキング |

ブログトップ

電子工作やってみたよ

カテゴリ:HP電卓( 66 )

何人かの方に”Free42”がすごいと教えていただきましたが、やはり自分で実感して見ないとその凄さは解らない物ですね。
友達に教えてもらってSONYのスマホに入れてみました。
(恥ずかしながらスマホ まだ全然使えません)

スピードは下の表にある通り。
もう 今までのHP電卓とは別次元スピードですね。
まさに”スパコン” いやそれ以上と思います。

だからと言って、わたしはこれ使う気持ちは全然ありませんけれど。
やはりキータッチなど、HP電卓と呼べるしろものではありません。
だいいち 本物のHP電卓の様に、いじっていて楽しくありません。
まちがって触ってもキーがすぐに反応したりものすごく気を使うんです。

しかし計算速度は絶大なので、この前DM42で10時間かけてやった円周率のような計算には面白いかも。
単純比較するとDM42で10時間かかった円周率10000桁の計算が9分ほどで済むはずです。
オリジナルのHP42Sから見れば、312日かかる計算が9分で済むということですね。

これはもうやってみるしかありませんね。

左から HP42S  DM42  SONYのアンドロイドスマホ

c0335218_21490476.jpg


c0335218_21491649.jpg


by telmic-gunma | 2019-07-18 22:12 | HP電卓 | Trackback | Comments(0)

ちょっとガッカリ  DM15L

HP15C コンパチのDM15Lの演算スピードを計ってみました。
結果は表題に上げた通りです。
HP15C_LE の 1/ 7 しかありません。 ちょっとがっかり。
それでもオリジナルのHP15Cの22倍の速さだし、HP15C_LEのムシだったPSE命令(一時ポーズ)もちゃんと動作しますから。
これ 発売されたのHP15C_LEよりだいぶ後だし(?)DM42の技術があるのだから、あと一桁以上高速に出来ると思うのですが何故でしょうか。

スピード遅くて気力がなくなったので電池の消費電流は測ってありません。

HP電卓使って数学の勉強するのだから速度なんて関係ない、と思っていたのですが、DM42の円周率の計算やってからやはり速度は大切かなと感じてます。

c0335218_21360561.jpg

左上はHP15C_LE   右上は今回のDM15L   中央下はオリジナルのHP15Cです。
同じもの 3台も集めて何やる気。

c0335218_21361290.jpg

HP15C 3機種のみの比較表
c0335218_15152200.jpg


HP電卓 測定できた全機種の速度比較表
c0335218_15154003.jpg


測定プログラム  すべての機種はこの同一プログラムで動作させました。
一部の機種では、初期値の読み込みやラベル名などに違いがあります。

LBL A ’スタートのラベル
3       ’カウンターの初期値 3000(機種によりここを200に変えました)
0
0
0
STO 0     ’カウンターの初期値を変数0にストア

LBL B     ’ループ先頭のラベル
1       'カウンターから引く数を1にする
STO -0    ’カウンター 0から1を引く
RCL 0    ’減算されたカウンターの値をXレジスターへ読み込む
X キ 0    ’Xレジスターがゼロでないかチェックする
GTO B    'ゼロでないならばラベルBへ移動する
R/S      ’Xレジスターがゼロならば停止する


わずかこれで終わりです。
演算速度は命令の種類により当然変わるはずです。
ここではプログラムのループ内で使われている命令の平均時間ですね。
厳密には命令ごとの時間が必要ですが、機種ごとのスピード比較ならばこれで良いと思っています。


雨の中でも元気です。 アルストロメリア
c0335218_17050076.jpg

畑になっている、たった1本のブルーベリー
c0335218_17051550.jpg


ブルーベリー食べました。  うーん そんなに美味しいとは思えないんだけど。
c0335218_17052420.jpg




電子工作ランキング

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

by telmic-gunma | 2019-07-09 17:24 | HP電卓 | Trackback | Comments(2)

円周率 DM42で10000桁まで計算出来たのに、そのプログラムの動作がまだ解りません。
プログラム自体はこんなに短くて10000桁でも正しく計算出来るなんてすばらしいのに。
いつまでたっても解らないとそのうち気力が消えてしまいそう。

*最初の方法は、スタックや変数の内容を調べながらプログラムに並べて書いていったのですが、ループで動作するソフトなので追いきれません。 10000桁を出すときは180万回ループします。
試しで桁数10桁の最短にしても100回位まわります。(1ループ50ステップくらいなのでトータルでは最低でも5000ステップくらい。)

*次にやったのは、RPNプログラムを通常の数学の式に変換したものをプログラムに並べて書いてみました。
これで全体としてはかなり解ったのですが、ループで頭に戻って繰り返しの計算になるとまた解らなくなります。
このあたりが連分数の所なのでしょうか。
ある意味、再起呼び出しと同じ動作と言えるのでしょうね。
これになると私の頭では、ごちゃごちゃなってしまいます。

まあ ゆっくり、楽しみながら、諦めないで、あらゆる方向からトライしてみます。

c0335218_21032554.jpg

c0335218_21033187.jpg

c0335218_06272630.jpg

作業部屋の前に新しく作った花壇です。  たたみ一畳ちょっとです。
苗を買ってきて植えたあと一時枯れそうになりましたが、いまは元気になりました。
c0335218_06281295.jpg
不思議です。
花でも野菜の苗でも移植したあとは一度は枯れそうになりますが、そのあとに元気が出てきます。
何故でしょうか?  私の腕が悪いのかな。
c0335218_06281813.jpg




電子工作ランキング

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

by telmic-gunma | 2019-07-06 21:15 | HP電卓 | Trackback | Comments(4)

この歳でやっと「ガラケー」から「スマホ」に乗り換えました。
SONYの「エクスペリア」  その中で一番安いもの。それでも5万円以上しました。
だって一番高いの10万円以上するんだもの。携帯電話がこんなに高かったなんてビックリです。
支払いは3年ローンなどありましたが、借金は嫌なので現金でドンと払いました。(というほどでもないですか)

なぜSONYかと言えば、パソコンの時代からSONYのが大好きだから。
逆に韓国は大嫌いだから、いっぱい並んでいたけれど最初から考えに入れてません。

問題はうまく使いこなせるかですね。
小学生の孫のところに教わりに行こうかな。 授業料高くつきそうだな。

これ買ったからには当然 HP電卓ソフトを入れなくてはですね。

c0335218_18361897.jpg



朝 散歩の途中で見かけたリンゴ、 ちょうどピンポン位の大きさです。
c0335218_20533556.jpg

c0335218_20581346.jpg



日陰に移植した ミョウガ、  梅雨の雨のおかげで元気がいいですね。
c0335218_20592831.jpg



電子工作ランキング

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

by telmic-gunma | 2019-06-24 21:07 | HP電卓 | Trackback | Comments(5)

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 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 INT
30 STO(i)
31 ×
32 -
33 1
34 STO +II
35 R↓
36 RCL II
37 1005 ***** 54=> 1005   レジスタR1004まで計算する
38 -
39 X=0?
40 GTO 3
41 R↓
42 GTO 2

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

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



========


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

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

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


c0335218_07254309.jpg


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



電子工作ランキング

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





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

1レジスタ10桁表示がうまく行ったのでR99まで使って円周率を計算しました。
小数点以下970桁です。
時間は詳しく計っていなかったのですが電池動作で20分以下でした。
数値の確認は 先頭部、中央部、終端部を円周率表と照らし合わせて一致していました。
10桁単位の表示は円周率表と同じなので探すのが楽でした。
HP42Sは表示12桁内部演算15桁なので10桁表示がうまく動作したのかもしれません。
HP15Cの10桁演算10桁表示でうまく行くか判りません。
相変わらず、このプログラムの動作はまだ理解できていません。

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 )

01 LBL AA
02 SIZE 100 変数領域の確保 R0~R99(もっと大きく出来るがここまで)
03 FIX 00 小数点以下表示しない
04 CLRG 変数領域消去
05 3700 ***** 1017 =>3700 970桁計算に概略必要と思われる値
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 INT
30 STO(i)
31 ×
32 -
33 1
34 STO +II
35 R↓
36 RCL II
37 100 ***** 54=> 100   レジスタR99まで計算する
38 -
39 X=0?
40 GTO 3
41 R↓
42 GTO 2

*
43 LBL 3
44 2
45 STO 2
46 RCL 1
47 1
48 -
49 STO 1
50 X>0 ?
51 GTO 1
-------------------------------------
52 99 ***** 53 => 99 修正  
53 STO II
54 0 最初はキャリー無しから始まる

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


答えの 1レジスタに10桁表示。


R02 3,
R03 1,415,926,535
R04 8,979,323,846
R05 2,643,383,279  


R50 1,885,752,724
R51 8,912,279,381
R52 8,301,194,912
|
|
R97 9,375,195,778
R98 1,857,780,532
R99 1,712,268,066

最後小数点以下 970桁目


========




電子工作ランキング

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

by telmic-gunma | 2019-06-19 03:22 | HP電卓 | Trackback | Comments(2)

すがわらさんからのアイデアをいただいて1レジスタ 10桁表示をやってみました。
とりあえず答えは2行だけですが、すんなり出来ました。
ただこれはDM42(HP42S)での話でHP15Cで動作するかは試してありません。
全体の動作を理解できていないのに改造ばかりでいいのかな。

改造個所は以下の3か所です。
1E6 を 1E10 に変更しています。
12行、58行、62行

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 )

01 LBL AA
02 SIZE 100 変数領域の確保 R0~R99(もっと大きく出来るがここまで)
03 FIX 00 小数点以下表示しない
04 CLRG 変数領域消去
05 70 ***** 1017 =>70 修正 3レジスタしか計算しない
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 INT
30 STO(i)
31 ×
32 -
33 1
34 STO +II
35 R↓
36 RCL II
37 5 ***** 54=> 5   レジスタ3個しか計算しない
38 -
39 X=0?
40 GTO 3
41 R↓
42 GTO 2

*
43 LBL 3
44 2
45 STO 2
46 RCL 1
47 1
48 -
49 STO 1
50 X>0 ?
51 GTO 1
-------------------------------------
52 4 ***** 53 => 5 修正  
        桁上がり(キャリー)処理
        を後ろのレジスタ(4番目)より順に処理する
53 STO II
54 0 最初はキャリー無しから始まる

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


答えの 1レジスタに10桁表示。


R02 3,
R03 1,415,926,535
R04 8,979,323,846  

最後小数点以下 20桁目


========




電子工作ランキング

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

by telmic-gunma | 2019-06-19 01:53 | HP電卓 | Trackback | Comments(0)

まだ 計算式とプログラムの関係がよく解らないのですが、
いろい調べていて演算桁数を広げる方法が見えてきたので挑戦して見ます。
オリジナルのHP15Cでは変数領域はR00~R53を使用し円周率の計算結果をR02~R53まで使って306桁を出力していましたが
DM42の直接アドレス領域一杯のR02~R99までを使って582桁までやってみました。
間接アドレスを使えばさらに広い範囲をアクセスできますが、そこは次回に挑戦して見ます。
修正箇所は以下の3か所だけです。

37行  54 => 100
52行  53 => 99
5行  1017 => 2040

出力された答えは、 先頭部、中央部、終わりの所を円周率表と見比べて確認しました。

ここが同一ならば全体があっていると言ってもいいのですよね。

c0335218_14441607.jpg


全プログラムリスト 

円周率582桁全プログラムリスト

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 )

01 LBL AA
02 SIZE 100 変数領域の確保 R0~R99(もっと大きく出来るがここまで)
03 FIX 00 小数点以下表示しない
04 CLRG 変数領域消去
05 2040   ***** 1017 => 2040 修正
06 STO 01
*

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

*
11 LBL 02 レジスター計算ループの先頭
12 1E6
13 ×
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 INT
30 STO(i)
31 ×
32 -
33 1
34 STO +II
35 R↓
36 RCL II
37 100 ***** 54=> 100 ここを修正
38 -
39 X=0?
40 GTO 3
41 R↓
42 GTO 2

*
43 LBL 3
44 2
45 STO 2
46 RCL 1
47 1
48 -
49 STO 1
50 X>0 ?
51 GTO 1
-------------------------------------
52 53 ***** 53 => 99 修正  
        桁上がり(キャリー)処理
        を後ろのレジスタ(99番目)より順に処理する
53 STO II
54 0 最初はキャリー無しから始まる

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


答えは R3 から R99 までひとつのメモリーに6桁分づつ入っています。
この計算でキャリーのあるところは R32 R23 R19 R17 R11 R3 です。
円周率582桁の答えは以下の通りです。(書くまでもないですね。)
+
R02 3
R03 141592
R04 653589
R05 793238
R06 462643
R07 383279
R08 502884
R09 197169
R10 399375
R11 105820
R12 974944
R13 592307
R14 816406
|
|
R50 393607
R51 260249
R52 141273
R53 724586
|
|
R70 057270
R71 365759
R72 591953
|
|
R97 217176
R98 293176
R99 752384 最後小数点以下 582桁目

========



ジャガイモの花
それなりにきれいですね。
c0335218_14594850.jpg
これもジャガイモ

c0335218_14595700.jpg

日陰のミョウガ   元気です。  まだ移植して数週間ですから。
c0335218_15015816.jpg

日向のミョウガ  こっちのが元気かな?  何年もこの場所だからね。
c0335218_15021878.jpg

これは何でしょうか?  地面がバックだと引き立たないですね。
c0335218_15081407.jpg

三角の形の白のアジサイ、まだ途中なのでこれからですね。
c0335218_15094637.jpg


電子工作ランキング

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

by telmic-gunma | 2019-06-15 14:45 | HP電卓 | Trackback | Comments(2)

インターネット上で電卓を使っての円周率の計算を発表している方がいましたので、
それらを参考にさせていただいてDM42(HP42S)でやってみました。

以下の方たちを参考にしました。ありがとうございます。(連絡してませんけれど)

1、「 高機能電卓の情報 」 akatukiさん
2、「 e-Gadge-プログラム関数電卓 」
3、「 Many Digits of Pi by Katie Wasserman - MoHPC 」
www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=899

3の中のHP15CのものをベースにしてDM42(HP42S)に移しました。
変更部分はわずかですが、わずか故にムシがなかなか見つかりませんでした。
下に同じ動作するソフト(15Cと42S)を併記してあります。

(結果)
円周率306桁の演算時間は以下の通りです。
やはり DM42は凄いです。
1分くらいなら気楽に挑戦できますけれど、10時間超えると電池が持つか心配になりますね。
ましてや40時間なんて、やった人いないのでしょうね。
そうそう デバッグして修正して確認するだけでも結果が出るのは明後日だよなんてやってられないでしょう。


DM42(USB駆動 電池の3倍速)   54秒       実測
HP42S               11時間15分位 計算にて予測

HP15C_LE             16分位      実測
HP15C               40時間位     計算にて予測


これだけスピードが速いと今まで出来なかったことも、いろいろとオモチャできますね。
どんなことがあるだろう。


今現在の状況 (2019年6月8日)

  Piを出す式は分かりました。
  プログラムは動きました。
  答えは出て、合っています。
  しかし どうして この式がこのプログラムになるのか理解できません。

ここからがHP電卓の楽しみかもしれませんね。
パズル、ちえの輪 HP電卓(RPN電卓とも言う)という名のゲームマシン 本領発揮ですね。
理解出来たら このリストにコメントをしっかり書きますね。

c0335218_10080924.jpg


全プログラムリスト 

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 + ・・・)))・・・))

    左側リスト       右側リスト
HP15C ( HP15C_LE ) DM42 ( HP42S )
オリジナルのもの HP15C用をHP42Sように修正したもの

01    LBL AA        42.21.11       01    LBL AA
02 5 5 02 SIZE 100 変数領域の確保 R0~R99
03 3 3
04 DIM(i) 42.23.24
05 FIX 0 42. 7. 0 03 FIX 00 小数点以下表示しない
06 CLR REG 42.34 04 CLRG 変数領域消去
07 1 1 05 1017
08 0 0
09 1 1
10 7 7
11 STO 1 44.1 06 STO 01
12    LBL 1         42.21.1         07    LBL 1       mainループの先頭
13 2 2 08 2
14 STO II 44.25 09 STO II
15 0 0 10 0 CARRYの初期値
16    LBL 2         42.21.2        11    LBL 02      レジスター計算ループの先頭
17 EEX 26 12 1E6
18 6 6
19 × 20 13 ×
20 RCL(i) 45.24 14 RCL IND II
21 RCL 1 45.1 15 RCL 01
22 × 20 16 ×
23 + 40 17 +
24 ENTER 36 18 ENTER
25 ENTER 36 19 ENTER
26 ENTER 36 20 ENTER
27 RCL 1 45.1 21 RCL 01
28 2 2 22 2
29 × 20 23 ×
30 1 1 24 1
31 + 40 25 +
32 ÷ 10 26 ÷
33 LSTX 43.36 27 LSTX
34 X<>Y 34 28 X<>Y
35 INT 43.44 29 INT
36 STO(i) 44.24 30 STO(i)
37 × 20 31 ×
38 - 30 32 -
39 1 1 33 1
40 STO +II 44.40.25 34 STO +II
41 R↓ 33 35 R↓
42 RCL II 45.25 36 RCL II
43 5 5 37 54
44 4 4
45 - 30 38 -
46 X=0? 43.20 39 X=0?
47 GTO 3 22.3 40 GTO 3
48 R↓ 33 41 R↓
49 GTO 2 22.2 42 GTO 2
50    LBL 3      42.21.3           43    LBL 3
51 2 2 44 2
52 STO 2 44.2 45 STO 2
53 RCL 1 45.1 46 RCL 1
54 1 1 47 1
55 - 30 48 -
56 STO 1 44.1 49 STO 1
57 X>0 ? 43.30.1 50 X>0 ?
58 GTO 1 22.1 51 GTO 1
-------------------------------------
59 5 5 52 53 桁上がり(キャリー)レジスターを
60 3 3 後ろのレジスタ(53番目)より順に処理する
61 STO II 44.25 53 STO II
62 0 0 54 0 最初はキャリー無しから始まる
63    LBL 4      42.21.4          55    LBL 4      ---桁上がり処理ループ先頭------------
64 STO +(i) 44.40.24 56 STO +(i) 上位のレジスタへキャリーを加算 0 or 1
57 RCL (i) 45.24 57 RCL (i) O or 1 の加算されたレジスタを読み込む
66 EEX 26 58 E6 1000000で割り算
67 6 6
68 ÷ 10 59 ÷
69 INT 43.44 60 INT 7桁目(キャリー)を取り出す
70 STO 1 44.1 61 STO 1 キャリーをR1にセーブしておく
71 EEX 26 62 E6 キャリーを1000000倍する
72 6 6
73 × 20 63 ×
74 STO -(i) 44.30.24 64 STO -(i) キャリーを含んだ元の数値からキャリーのみ引く
75 RCL 1 45.1 65 RCL 1 キャリーをR1からXレジスターに戻す
76 DSE II 42.5.25 66 DSE II インデックスポインター1を引いて
0でないならLBL4へ戻る
77 GTO 4 22.445.2 67 GTO 4
78 RCL 2 45.2 68 RCL 2 円周率の頭の3を読み込んで終わりとする
79 RTN 43.32 69 RTN

(注) HP15Cでは変数 I は 1 と判りやすくするため II と書いています。

答えは R3 から R53 までひとつのメモリーに6桁分づつ入っています。
この計算でキャリーのあるところは R32 R23 R19 R17 R11 R3 です。
円周率306桁の答えは以下の通りです。(書くまでもないですね。)

R02    3
R03 141592
R04 653589
R05 793238
R06 462643
R07 383279
R08 502884
R09 197169
R10 399375
R11 105820
R12 974944
R13 592307
R14 816406
|
|
|
R52 141273
R53 724586

========



今年も咲きました。 アルストロメリア  一年たつの早いですね。
c0335218_19443212.jpg


c0335218_19525419.jpg


なでしこ   手入れも何もしていません。去年のままですけれど綺麗に咲きます。

c0335218_19454947.jpg



c0335218_19535951.jpg



新しい場所に植えたイチゴ、大きいのも少しありましたが、ほとんどは小さいままでした。
数は圧倒的に少なくなりました。
移植したせいか、場所が悪かったのか、なにもしない方が良かったみたい。
野菜、くだもの、花 などの生き物を育てるのも難しいですね。
何が悪いと教えてくれるわけでなく、ただ枯れていくだけ。
そして結果が出るのにとても時間がかかり、失敗に気がついて修正しても結果がでるのは1年先とか。
c0335218_19514809.jpg




c0335218_19545676.jpg



電子工作ランキング

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

by telmic-gunma | 2019-06-08 20:06 | HP電卓 | Trackback | Comments(8)

最近、毎日がジタバタしてシヌーという感じ。
仕事では客先で新型商品が出るというのでそれに対応した試験機のハード、ソフトを請け負ってアップアップ
個人的には村の役を引き受けたので、人間関係を含めてガチャガチャ
わたしの脳みそは、ボケかかり。  どうしたらいいんだ。

そうそう ブログでは 「人の悪口と愚痴は書くな」と言われたけどつい出ちゃう。  
やばいやばい。

c0335218_10495804.jpg
パイを計算するのに級数展開というのがあるそうです。
今回 比較的わかり易そうな下図二つ目のライプニッツ級数の式でやってみました。
左辺のパイの下にある4を右辺に移して、左辺は パイ= の形にしました。
しかし こうするとパイがでる、なんてどうして考え付いたのでしょうね。 すごい頭ですね。


c0335218_19244143.jpg



全プログラムリスト 
DM42(HP42Sと同じ) 動作はUSBで電源供給なので電池の3倍速で動いています。

パイを求めるライプニッツ級数
使用変数
00  現時点でのパイ
01 現在の項の分母
02 演算回数 2000 を減算して=> 0
03 1回前のパイ
04 1回前の分母

LBL "AA" ソフトスタート
LCRG   変数オールクリア
1
STO 01  最初の分母 1を設定
4     最初のパイの値を設定     
STO 00
LBL "BB"
2000   途中経過表示のカウンタ(演算2000回ごとに表示)
STO 02
4      項の分子の読み込み
ENTER
2      項の分母の階差の読み込み
RCL + 01 今までの分母に階差を加算する
STO 01  現在の分母をしまう
÷     分子(4)÷分母
STO - 00  過去のパイの演算結果から今の値を引く
RCL 00     現時点のパイの値を一時退避
STO 03
RCL 01  現時点の項の分母を一時退避
STO 04
LBL "CC"
4      項の分子の読み込み
ENT
2      項の分母の階差の読み込み
RCL + 01 今までの分母に階差を加算する
STO 01  現在の分母をしまう
÷     分子(4)÷分母
STO + 00 過去のパイの演算結果から今の値を引く
RCL 03      1回前のパイ
RCL 04  1回前の項の分母
PSE    2000回ごとに引き算の時の値を表示する
RCL 00  現時点のパイ
RCL 01  現時点の項の分母
PSE    2000回ごとに足し算の時の値を表示する
RCL 02  演算回数を読み込む
1
-     演算回数を
X キ 0   演算回数がゼロかチェック
GTO "CC"  ゼロでないなら"CC"へ行く
GTO "BB"  ゼロならば"BB"へ行き2000をセットし直し
END    ソフト 終わり

結果
R/S で演算を停止させたときのレジスタ X,Y,Z,Tを書きます。

T 3.14159254855
Z 19,039,999 元のミスの値 1903999
Y 3.14159275863
X 19,040,001 元のミスの値 1904001

TとYの値は加算する項と減算する項の違いで正解を挟んで上下の値。
計算ごとに段々近づくのですね。
Xはこの時の項の分母となります。
すなわち 演算回数はXの値の約半分の950万回(元ミス95万回)となります。
これだけ計算しても有効桁数は 3.141592 の 7桁しかありません。
とても手計算で出来るやり方ではないですね。

=====================================
追記 2019-04-30
計算を続けてやってみました。

T 3.14159258965
Z 31,279,999
Y 3.14159271753
X 31,280,001

精度は上がらず上下の位置がずれました。
ゆえに 演算桁数を上げずに計算項数を増やしても精度は上がらないと思います。


=====================================
=====================================
追記 2019-04-30
すがわらさんからコメントいただいたのでここに返事を書いてみます。

すがわら氏
横入りすいません。VS入れたのでテストとしてC#で計算させました。FORTRANと違って桁数が少ないので大して精度が出ないのですね。ライプニッツ式で1000万項計算させて、 3.1415926035897882384621752928が得られました。100万項だと、 3.1415921535892932379938932832でした。 無限級数の和は積分に置換できるので、積分からの逆変換じゃないですかね。π/4だからarctanの計算が怪しいかな。

高井
すがわらさんの ライプニッツ式で1000万項計算させて、
3.1415926035897882384621752928
これの9桁目の0は5の移し間違えでないですか、
このままだと3.1415926の計8桁しか有効でありませんね。
ここに5を置くと 3.1415926535897 までの計14桁まで正しくなりますね。

私思うのですがこのライプニッツ式ではいくら演算の項を増やしても精度は上がらないきがします。
右辺2項目の1/3(あるいは4/3)の所で0.333333333333で最後切り捨てられるので演算ソフトの有効桁数以上の精度は出ないでしょう。
HP42Sの場合 12桁(内部演算15桁)でやってますから良くてそこどまりでしょう。

外国のサイトでHP15CやHP32SiiのRPN法でパイを級数を解いているところがありました。
そこ調べてどんなことやってるのか調べて載せてみますね。
ひとの作ったソフトの解析するのを楽しいと感じているうちはまだボケていないのかな。


参考サイト 2個
https://akatuki-724.blogspot.com/2014/05/hp-prime.html

www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=899

========


もう 疲れたので とりあえずここまで。 あとで追加します。
****************************************************************


電子工作ランキング

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

by telmic-gunma | 2019-04-29 19:28 | HP電卓 | Trackback | Comments(6)