2013年10月29日火曜日

HP Prime ; 並行輸入版の販売が終了したのかな ?


hp Prime Graphing Calculator グラフ電卓 [並行輸入品] amazon.co.jp
http://www.amazon.co.jp/Prime-Graphing-Calculator-%E3%82%B0%E3%83%A9%E3%83%95%E9%9B%BB%E5%8D%93-%E4%B8%A6%E8%A1%8C%E8%BC%B8%E5%85%A5%E5%93%81/dp/B00F9SQN0E/ref=aag_m_pw_dp?ie=UTF8&m=A1RXEGCA5ZKFK6
昨日まで3台くらいあった筈なのですが、今見たら「現在在庫切れです。再入荷予定は立っておりません。」との事で、売り切ったのでしょうか。

すると、今度は日本語マニュアル(CD)付きが登場するのでしょうか。Julyさんでは10~11月と申しておりました。もうすぐ11月です。そろそろなのかな ?

追記 on 2013/11/12
この投稿のあと、何度か入荷しては売りきれております。割合売れているらしい。日本語マニュアル付きは、もう少し先になってしまうのかな ... 。

2013年10月19日土曜日

HP Primeにグラフのデモがあるそうです

MoHPCに、大変興味深い情報がありました。

HP Prime Graphic Demos? - MoHPC
http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/forum.cgi?read=253110#253110

Tim Wessman 氏によると、HP Primeにはビルトインのグラフデモがあるそうです。

1) Appsキーを押し、「Advanced Graphing」を選択
2) Plotキーを押す。数式を入れていない場合には、「No open sentences checked」という警告が出ますが、気にしないで「OK」
3) 画面ではない方の「Menu」キーを押します
4) 「4. Visit Plot Gallery」を選択します

カラーで描かれるグラフの世界を満喫できます。シミュレータでも、こんな具合です。実機をお持ちの方もお試し下さい。





そういや、Julyさんの並行輸入版も売りきれになっており、次回入荷が10/29になっております。そろそろ、日本語マニュアル付きにならないのかなぁ ... 。

2013年10月14日月曜日

SysRPLの例と、その解説

先日、HP PrimeでSierpinski Gasketsの実行例がYouTubeに上がっているというので、我がHP50gで同じ様なコードを動かして比較した、というネタを書いたのですが、ここで、そのコードの内、SysRPL版についての簡単な解説を出しておきます。こんなコードでした。


!NO CODE
!RPL
::

  CLEARLCD           (LCD クリア )
  TURNMENUOFF        (MENU 表示を OFF に)

  80 131 MAKEGROB    (画面の大きさのGROBを作成)
  GROB>GDISP         (作成したGROBをPICTに入れる)
  TODISP             (PICT を表示します)

  ' ID R PURGE       (一旦、変数を削除してから)
  %0 ' ID R CREATE   (変数を作り直す)
  ' ID X PURGE       (上記と同様)
  %1 ' ID X CREATE  
  ' ID Y PURGE      
  %1 ' ID Y CREATE  

  3000 0 DO          (3000 回のループ計算)
    %RAN %3 %* ' ID R STO    (変数Rに0以上3未満の乱数を入れる)
    ID R %1 %< ITF           (Rの中身が1未満ならば、)
      :: ID X %0.5 %* ' ID X STO  ID Y %0.5 %* ' ID Y STO ;
      (X=0.5*X; Y=0.5*Y; )
      :: ID R %2 %< ITF      (入れ子判定 ; Rが2未満ならば、)
        :: ID X %0.5 %+ %0.5 %* ' ID X STO  ID Y %1 %+ %0.5 %* ' ID Y STO  ;
        (X=(X+0.5)*0.5; Y=(Y+1)*0.5; )
        :: ID X %1 %+ %0.5 %* ' ID X STO    ID Y %0.5 %* ' ID Y STO  ;
        (Rが2以上の場合 ; X=(X+1)*0.5; Y=0.5*Y; )
      ;
    ID X %80 %* COERCE 25 #+ 80 ID Y %80 %* COERCE #-   (点を描く座標の計算)
    PIXON3  (PICT に点を打つ)
  LOOP

;
@

*  SysRPLが早いワケ

SysRPLでは、BINT (Binary Integer) という整数値 (5 nibble) を利用できます。整数値の計算は、BCDの十進数よりも計算の時間が少ないので、BINT を積極活用する事で、UserRPL よりも高速に動作するプログラムが作成できるのです。
また、システムのAPIを直接呼び出すので、UserRPLよりも早く動作します。
しかし、SysRPLでは、プログラムの作成、実行に少々手間が掛かるのも事実です。

コンパイラ(ASM コマンド)は、ソース中の整数値を自動でBINTとして解釈しますが、整数の演算には、#+, #-, #*, #/ の様に「#」を付けた命令を使います。BCDの電卓数値、演算は、%3 %4 %+ の様に「%」を付けて表現されます。

COERCE によって、スタックにあるBCD実数値をBINTに変換できます。


*  大域変数の作成

大域変数の作成には、CREATE が利用できます。スタックに変数の内容を積んでおき、変数名を指定して CREATE を実行します。
変数名の指定には、' ID [変数名] というシーケンスを書きます。最初のシングルクォートがないと、変数の読み出しとなってしまいます。
変数を作成するには、以上の操作で十分ですが、何度も CREATE で変数を作成すると、同じ変数名の変数が複数作成されます。変数の同一性を担保するには、作成前に変数を削除するのが確実です。変数の削除には、PURGE が使えます。
以上をまとめて、大域変数 R を作成するには、つぎの様にしました。

  ' ID R PURGE       (一旦、変数を削除してから)
  %0 ' ID R CREATE   (変数を作り直す)


*  分岐構造

分岐構造には、いくつかの方法がありますが、ここでは ITF (If Then False) を使用しています。

[condition] ITF [True block] [False block]

ブロックは、::  と  ;  で囲む事で成立します。
ITF は、ブロックを2つしか取れませんから、複数の分岐の場合、False block 中に、更に ITF による分岐を入れ子にする必要があります。


*  グラフィクスの扱い

大まかに、50gでは LCD (液晶画面) と、PICT の2 つのグラフィクスがあります。

特に何もしなければ、画面に表示されているのは液晶画面のハードウェア・グラフィクス・メモリです。プログラムの実行中はグラフィクスが表示されていますが、実行後は、スタック表示になって消えてしまいます。
PICTにグラフィクスを描けば、プログラムの実行後にもグラフィクスを呼び出せます。

プログラムで PICT を表示させるには、 TODISP が使えます。TODISP を実行すると、PICT を表示しながらグラフィクスに手を入れられます。

  CLEARLCD           (LCD クリア )
  TURNMENUOFF        (MENU 表示を OFF に)

  80 131 MAKEGROB    (画面の大きさのGROBを作成)
  GROB>GDISP         (作成したGROBをPICTに入れる)
  TODISP             (PICT を表示します)

PICT のクリアには、MAKEGROB にて 新しいGROB を作成し、GROB>GDISP で作成したGROB を GDISP (PICT) に入れてやります。

LCDに点を打つには PIXON 、PICTに点を打つには PIXON3 を使います。他のコマンドも多くあります。


なお、SysRPLの勉強には、

Introduction to System RPL and Assembly Language - hpcalc.org
http://www.hpcalc.org/details.php?id=7114

が大変参考になります。

HP Primeの大域変数について

先日、コメント欄に「数式中の変数が、英文字1文字の掛け算になってしまう」というお話をもらいました。シミュレータで動かしてみた所、確かにその様子。

デフォルトでは、A~Zの英文字1文字の変数が実数値変数として設置されているので、例えば適当な変数名を想定して、電卓にうち込んでも、英文字1文字の変数の掛け算と解釈されてしまう模様です。
これを回避し、必要な変数名として数式に盛り込むには、あらかじめ変数をユーザー変数として登録しておくと良い様です。ユーザー変数を登録しておく事で、数式中でもユーザー変数を識別して、英文字1文字変数の掛け算になる状態が回避される、らしい。

Solvreに使う英文字1文字変数があらかじめ設定されているかららしいのですが、この英文字1文字変数が「実数」変数となっている所も、少々苦しい。数値解Solvreで複素数解が得られんじゃないの。でも、数値解SolvreはNewton solvreではなく「はさみ打ち法」だったので、これは仕方の無い所だった、のか。ウーン。