2010年1月26日火曜日

HP35sで、円周率を計算してみたよ

前のエントリで紹介しました次の記事を参考に、HP35sで円周率を計算してみました。

Many Digits of Pi (HP32sii, HP-16c, HP-12c, HP-12cp, HP-19c, HP-30b)
http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=899

この記事のトップにある、HP32sii向けのコードが移植しやすく思われ、試行錯誤を重ねて移植、実行してみた所、およそ01:05時間程度で結果が得られました。
桁数は小数点以下200桁です。以下、オリジナルのコードを移植する際の「差分」について述べておきます。

1) 32siiの行番号は英文字1文字 + 数字2桁ですが、35sは英文字1文字 + 数字3桁と異なります。また、GTOなどのジャンプでは32siiの場合には数字部分を指定しません(出来ないらしい)が、35sでは指定する必要があります。

2) 変数のマッピングが異なります。

2-1) 32siiでは、変数A~Zが配列として、1~26の番号を用いて操作可能ですが、35sではA~Zは-1~-26で操作されます。
2-2) 32siiでは、配列操作のインデクスに、特殊変数「i」を用意していますが、35sでは「I」、「J」を用います。
2-3) 統計機能の変数として「n」(Σ+キーを使って入力した、データの個数)を使いますが、この場所が、32siiでは配列番号28でアクセスされるのに対し、35sでは-27となります。

以上を踏まえて、書き換えたものを載せておきます。

original author ; Katie Wasserman (許可は取っていない ... ; 英語出来ない)


P001 | LBL P
P002 | CLVARS
P003 | CLΣ
P004 | 1 ; Set up index to store variable 'A' (on 35s, it is assigned to index 0)
P005 | STO J
P006 | -27 ; Set up to store the iteration counter in register n
P007 | STO I
P008 | 26 ; calculate number of iterations needed = log-base-2(10) * N
P009 | 8
P010 | *
P011 | 2
P012 | LOG
P013 | /
P014 | IP
P015 | STO(I) ; Store in n
P016 | 2
P017 | STO(J) ; starting value
P018 | *
P019 | 3
P020 | +
P021 | Σ+ ; the SIGMAx register is used to store (iteration_counter x 2 + 1)

B001 | LBL B ; main loop
B002 | 1.026 ; set up for register loop
B003 | STO I
B004 | 0 ; initial carry

C001 | LBL C
C002 | 1E8 ; 100,000,000 this determines the number of digits per register
C003 | *
C004 | n
C005 | RCL*(I)
C006 | + ; multiply and add carry
C007 | ENTER
C008 | ENTER
C009 | Σx
C010 | /
C011 | IP ; divide by (iteration_counter x 2 + 1)
C012 | STO(I)
C013 | Σx
C014 | *
C015 | - ; remainder is the carry
C016 | ISG I
C017 | GTO C001
C018 | 2
C019 | STO+(J)
C020 | Σ- ; decrement iteration_counter by 1; and (2 x iteration_counter + 1) by 2
C021 | x>0?
C022 | GTO B001
C023 | 26 ; set up for register loop to carry overflows up one register,
C024 | STO I ; register value can never be more than 2 x 10^8

E001 | LBL E
E002 | RCL(I)
E003 | 1E8
E004 | -
E005 | x<=0?
E006 | GTO F001 ; no carry
E007 | STO(I)
E008 | 1
E009 | STO- I ; these 3 instructions add the carry forward
E010 | STO+(I)
E011 | STO+ I
E012 | GTO E001 ; this isn't really needed since the overflow can never be more than 1E8, ; but it's nice to have if other algorithms are used
F001 | LBL F
F002 | DSE I
F003 | GTO E001
F004 | RTN

S001 | LBL S
S002 | 1.027
S003 | STO I
S004 | VIEW(I)
S005 | ISG I
S006 | GTO S004
S007 | RTN


実行は[XEQ] P [ENTER]です。実行が終わったら、[XEQ] S [ENTER]で、計算結果が見られます。結果は、配列1~26に、8桁毎に入っていて、それを表示するだけです。

いわゆる「Quick hack」的な書き換えなので、実行効率などは判りません。もっと、良いコードになる可能性はあると思います。
しかし、32sii(40分)より35s(1時間5分)の方が遅いとは ... トホホ。一方、30bでは600桁以上計算するのに、40分掛からないとか。やはり、ARMベースで新しい関数電卓とか、出ないかな ?

2010年1月22日金曜日

HP30bについて

もうすぐ、新たなHPの金融電卓「HP30b」が発売されるそうです。

HPCC
http://www.hpcc.org/

ここにある「Richard Nelson's HP30b Fact Sheet」によると、工場出荷が2010/01/29、webでの扱い開始が2010/03/01となっています。もう少し先ですね。

HP30b - Educalc.net
http://www.educalc.net/1842484.page

既に、20bが販売されていますが、上記ソースによりますと、違いは次の様です。

HP30b Business Proffesional
HP20b Business Consultant

これは名前。

32KBのRAMが用意されている様です。100個の配列があり、50個のペアの回帰分析データや、出納データなどを収容出来ます。レジスタは10個で、番号によって呼び出され、レジスタ0は配列の指標としても利用されます。
30bには、プログラミング機能が付きました。プログラムはPrgm 0 - 9の10個の区画があり、それぞれに00 - 99までのラベルを利用可能。1区画辺り290バイトまでのプログラムが作成可能で、サブルーチンスタックは4段。RPNでプログラムを書き、Solvreにも使える様子。
金融関連の機能について拡充が図られたと言います。統計機能では二項分布が増えていて、IP(Integer Part)、FP(Fractional Part)が新設されている様です。マニュアルには「population deviation, standard error, forecasting」の項目があるので、ガウス分布などの計算機能がありそうです。三角関数や指数/対数もあり、ある程度は関数電卓としても利用可能な雰囲気です(20bと同じ)。


カタログ・ダウンロードページ

Featured-Packed and Programmable - HP 30b Business Professional - hp.com
http://h20195.www2.hp.com/v2/getdocument.aspx?docname=4AA2-7918ENUC.pdf

そんでもって、290バイト程度のプログラム領域で何が出来るの ? という向きには、どうやら、凄い話があります。700桁のπを計算可能らしいのです。

30b programming environment - HP Forum - The Museum of HP Calculators
http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/forum.cgi?read=161716#161716

ここでは、30bを使ってπの700桁計算を試したという話が出ていました。30bでのコードは出ておりませんが、 何と、掲載されておりました。

Many Digits of Pi (HP32sii, HP-16c, HP-12c, HP-12cp, HP-19c) - HP Forum - The Museum of HP Calculators
http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=899

には、12Cなどのコードがあります。おそらく、移植して実行した模様。20bと同じくARM系の石らしく、かなり速度が出る様子です。(しかし16Cで17時間掛かったというので、余り早くは計算出来そうもありません)

何だか、良いかな ? でも、こうした感じで関数電卓が出てくれれば、と思うのは、当方だけではない様です。「Gene Wright's HP30b review」(HPCCサイトを御参照)を御覧下さい。

2010年1月16日土曜日

HP35Sの電池を交換しました

買ってから先程まで、電池を交換した事がなかったのですが、今般、交換の止むなきに至りました。

数値積分とかすると、電池切れのインジケータが出てきて、計算が終わると電源がOFFになっていたのですが、手計算では特に出なかったので、普段から出るようになった所で交換しようと思っておりました。
しかし、手計算で使っていると、いきなり「MEMORY CLEAR」が点滅するじゃないの ! リセットも出来ず、電池を交換した次第です。もちろん、中身もパァになってしまいました。
まあ、大したものを入れていた訳ではないので、それほど困る事はありません。メモリーが消えてしまったので、却って新品を使う様でもあります。

【教訓】 一度でも電池切れインジケータをみたら、急いで電源をOFFにして、電池を交換しよう !

恐らく、こうすればメモリーを消さずに済むと思います。

しかし、HP35Sの電池は長く持ちます。

2010年1月4日月曜日

仕事始め ?

謹賀新年。
仕事でやっている訳ではないのですが、今年も電卓に関する情報が提供できましたらと言うことで、皆様、宜しくお願い申し上げます。
でも、最近はネットブークの話ばかりで、余り電卓の話題を書いておりませんねぇ。コレはアカン。反省して居ります。
新年早々、反省かいや ... 。

2009年12月22日火曜日

もう、そろそろ止めようかとは思う、ネットブックの話題

昨日、多くのメディアで報じられて居りますが、IntelがPineTrailプラットフォームを発表しました。
ASUSやDell、Fujitsuuが製品を発表していると言います。他にも出す所はある様子。
グラフィクスの性能は「若干」程度向上している様ですが、それよりも稼働時間と価格ですかね。グラフィクスについては、この3月にも出ると言われている "CedarTrail" に期待、と。もう、先の話に行っております。
一方、PineTraiについては当初、来年01/11に発売とされておりましたが、正式発表では1週間前倒しの01/04になりました。松の内。3ヵ日を終えた消費者に訴えるには良い時期ですかね。お屠蘇で酔った所に売りつけてしまうとか。でも、安ければそれもいいか。

2009年12月19日土曜日

またまた、ネットブークの話題

いよいよ、CESあたりでお披露目になりそうなPineTrailのネトブーキ。ASUSはEee PC 1005P/PEを出すという話です。
今まで、ASUSのEee PCは末尾に「E」が付くとエコノミイなのか、量販店で売っているモデルだったのですが、今度の1005PEの方は長時間駆動の上位機種になる様子です。

ASUS Eee PC 1005P Atom N450 netbook official shots; 1005PE boasts 12hr battery - Slashgear.com
http://www.slashgear.com/asus-eee-pc-1005p-atom-n450-netbook-official-shots-1005pe-boasts-12hr-battery-1866302/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+slashgear+%28SlashGear%29

によると、クロックは今までのAtomと同様で1.66GHz、他も代わり映えしない、もしくは無線LANなどスペックが落ちる傾向にありますが、上位機種の1005PEでは、なんと12時間以上の稼働時間となっています。奥さん、12時間ですってよ !
これで価格が安ければ、とは思うのですが、さすがにあまり安くはない様で、435$とのこと。ウーム、残念。量販店モデルに期待、出来るか ?

(おまけ)
余りにスパムコメントが非道いので、画像認証を付けました。申し訳ない。

2009年12月6日日曜日

巨大電卓を小学生にバラまけ !?

新党日本の田中代表が「ネットブックは原価1万円で作れる」と言ったそうで、「国民のIT能力向上のために、ネットブックをばらまけば良いのではないか」みたいな話をしたとか。
ロハでネットブックが入手できるとなるとウレシイ話ですが、それよりは先ず、小学生にばらまいてしまう、というのはどうでしょうか。OSはUbuntuあたりだと安くできますが、Windowsでも良いです。Windowsなら、Maximaをプリインストールしておき、巨大電卓として活用するのです。
Windows版のMaximaには、gnuplotも一緒になっているので、これを入れておくだけで、本当に便利な巨大電卓として活用できるはずです。もっとも、それを使いこなすには、先生も勉強しないとなりませんが。

でも、小学生がネットブックで「学校裏サイト」にアクセスしたら、目も当てられないなぁ。
やはり、普通の関数電卓の方が良いか ... 。