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ではなく「はさみ打ち法」だったので、これは仕方の無い所だった、のか。ウーン。

2013年9月27日金曜日

既に欧米版HP Primeが届いているそうです

匿名氏が、前のポストのコメントで、そう言っておりました。
一方、Julyさんからは、こんな話が。

hp Prime 日本向けパッケージ付属マニュアル続報 - July.co.jp
http://www.july.co.jp/?p=1202

紙のマニュアルではなく、CD収録の電子文書(PDFかなぁ)の模様。また、Quick Guideか本編なのか、その辺も不明だそうです。
電子文書ならば付録するのも容易でしょうから、早期の販売が期待されます。既に船便で出発しているのかな ?

一方、3Dのplot機能がない、と、Amazon.comのレビューには書かれているそうです。
しかし、これをプログラムで解決しようという試みが為されています。

Graph3D v2013.09.26 for HP Prime - MoHPC
http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/forum.cgi?read=251367#251367

当方の様に日本語版を待ちわびる方には、最新のシミュレータの在り処が、MoHPCに報告されています。

where can I get the HP Prime simulator? - MoHPC
http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/forum.cgi?read=251295#251295

その在り処は、

The ultimate Emulator Version, of Advanced HP PRIME GRAPHING CALCULATOR.
http://h30499.www3.hp.com/t5/Calculators/The-ultimate-Emulator-Version-of-Advanced-HP-PRIME-GRAPHING/td-p/6175211#.UkRsbvFs2EJ


追記 on 2013/09/28  02:06
Julyさん所のAmazon.co.jp 売り場、残り4台だそうです。

2013年9月23日月曜日

並行輸入版 HP Prime、価格下落

先日、July 溝江様からお知らせを戴きました、HP Primeの並行輸入版ですが、価格が下がっている様子。

HP Prime 並行輸入版 - Amazon.co.jp
http://www.amazon.co.jp/dp/B00F9SQKB6?tag=julycojp-22

確か、18,400円だったはずですが、今は 17,400 円となっております。英語マニュアル版でも、という強者は、予約してみてはいかがでしょうか。


2013年9月18日水曜日

どうやら、日本でも出るらしい

既に、Julyさんの所に、HP Primeのプレビュー版が届いている模様。

hp Primeプレビュー版 - July.co.jp
http://www.july.co.jp/?p=1174

また、アメリカでは既に販売されているそうです。

hp Prime Graphing Calculator アメリカ・アマゾンで販売開始
http://www.july.co.jp/?p=1176

MoHPC でも、以下のサイトで販売中という情報があります。

http://www.pcsuperstore.com/products/11910680-HP-NW280AAABA.html

一方で、Julyさんは

当然、日本版で付属予定の「Quick Start Guide日本語版(仮)」はアメリカ版には付属しません!
が、一刻も早く入手されたい方はどうぞ。

としています。これは即ち「Quick Start Guide日本語版(仮)」を準備中、という事でしょう。年末までには出ると期待して、待ちましょうか。

2013年9月16日月曜日

HP Primeはかなり早いらしい

SysRPLの勉強のため、50gで動く Sierpinski gasket のプログラムを書いてみました。

まずは、UserRPLでのコードから。

« 
  -.3125 1.3125 XRNG 0 1 YRNG
  { # 0d # 0d } PVIEW ERASE
  1 'X' STO 2 'Y' STO
  1 3000 START 
    RAND -> n «
      CASE
        'n<1 2="" br="" end="" sto="" then="" x="" y="">        'n<2 .5="" 1="" 2="" br="" end="" sto="" then="" x="" y="">        X 1 + 2 / 'X' STO Y 2 / 'Y' STO END
      X Y i * + PIXON
    »
  NEXT
»

これは、3000回のループを行います。ガベージ・コレクションの発生もあるので、一概に実行時間が決まりませんが、実行したら10分程度掛かります。
一方、同様の動作を行うSysRPLのコードです。

!NO CODE
!RPL
::

  CLEARLCD
  TURNMENUOFF

  80 131 MAKEGROB
  GROB>GDISP
  TOGDISP

  ' ID R PURGE
  %0 ' ID R CREATE
  ' ID X PURGE
  %0 ' ID X CREATE
  ' ID Y PURGE
  %0 ' ID Y CREATE

  3000 0 DO
    %RAN %3 %* ' ID R STO 
    ID R %1 %< ITE
      :: ID X %0.5 %* ' ID X STO ID Y %0.5 %* ' ID Y STO ;
      :: ID R %2 %< ITE
        :: ID X %0.5 %+ %0.5 %* ' ID X STO ID Y %1 %+ %0.5 %* ' ID Y STO ;
        :: ID X %1 %+ %0.5 %* ' ID X STO ID Y %0.5 %* ' ID Y STO ;
    ;

    ID X %80 %* COERCE 25 #+ 80 ID Y %80 %* COERCE #- 
    #2 NDUP PIXON PIXON3

  LOOP

;
@
こちらも3000回のループを行うのですが、実行時間は流石に早く、1分半程度になりました。
ちなみに、HP GCCならば、10000回ループにしても一瞬で描いてしまいます。

で、HP Primeではどうなのか ? 偶然ではありますが、MoHPC に、作業例が提示されて居りました。

Sierpinksi triangle on HP Prime - MoHPC
http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/forum.cgi?read=250281#250281

YouTube動画へのリンクもあり、これをみると実に早い。こちらのコードでは3000回ループなのに、HP Primeでは20000回ループだそうです。ウーン。

恐らくインタプリタであろう電卓言語で、ここまでの速度が得られる。恐るべし、HP Prime。確かに、単純にARM 75 MHz (12 MHzという話もありますが)と 400 MHz ですから、パワーは大きく違うのではありますが、ここまで見せつけられるとなると ... 欲しい。

2013年9月8日日曜日

コレジャナイ ...

まずは、こういう話があるのだそうだ。

教科書12社、『デジタル教科書』を共同開発へ(2014年春に実用化を目指す) - タブクル 様
tabkul.com/?p=34895

いわゆる「ちゃちな電子教育道具」を、今度は教科書として利用しようというハラ。しかし、何でまたこんな話が、と思ったら、

日本では2019年までに全生徒へタブレット型端末を配備する予定としており、『デジタル教科書』については2014年春の実用化を目指すとのこと。

なんだそうだ。高校生全員がタブレの洗礼を受ける事になるらしい。で、その実相が、つぎの話題から垣間見える。

県立高のタブレット端末 生徒負担は5万円 - 佐賀新聞
http://www.saga-s.co.jp/news/saga.0.2544580.article.html

県教育情報化推進室によると、端末の基本ソフトはウィンドウズ8に決まっているものの、ハードのメーカーや導入するデジタル教材、最終価格は入札で決定する。
ただ、「5万円を下回ることはない」(同推進室)ことから、生徒の自己負担額を5万円に設定した。

いわゆる教育利権というヤツです。「タブレットが悪い」とは言いません。しかし、最初から「端末の基本ソフトはウィンドウズ8に決まっている」となっているのが「?」なのです。一つには、競争入札で選定する、という「配慮」があるからなのですが、ならば「5万円を下回ることはない」とは、どういう事なのか。

昨今の電子百科事典が、この程度(5万円)の価格で販売されているから、という事もあってなのか、5万円を設定したのかも知れませんが、電子百科事典には、著作物の使用料金が含まれているのですから、ある程度高いのはやむを得ない所 (もっと安くして欲しいのですが)。しかし、教育用タブレ製品では、電子教科書もアプリケーション、コンテンツとして別途購入することになりましょうや。それも生徒負担。
紙の教科書には「落書き」の楽しみもありましたが、電子教科書には出来ない相談です。それは余計としましても、 デジタル教科書はどんなものになるのでしょうか。

Windows 8には、Intel版、ARM版の2つがあります。Intel版だとするならば、デバイスの中身はPCなんですから、「タブレット」とは言わず、もっと安価に供給できるWindows 7のノートPCでも良さそうです。大学に行っても使えるでしょう。一方、ARM版だとすると、アプリケーションが劇的に少なく、それこそ教育分野で使うには問題があるのではないか。

順当に、タブレを教育分野で使うというのならば、まずは使いやすいiPad、そして安価なAndroid、というあたりからではないか、と思うのですが、サガでは「コレジャナイ」製品が採用される事になりそうです。さて、他の都道府県ではどうなるのでしょうか。