Monday, 9 April 2012

ちょっとした計算

計算機アプリ立ち上げるの? いや、別にそれで構いませんが。

学生が紙に手計算しまくっていて。目の前に計算機あるのになんやってんだか、と思ったので。

自分で、よくやるのは、

% perl -de 0
main::(-e:1): 0
DB p sin(sin(10))
-0.517580767464773
DB

ってなやつ。16進変換で printf を打つのがめんどくさいが。

TeX の本も、いきなり計算機として使う例から載っているのがあった。LISP でもいいんだが、ちょっと重い。でも、多倍長計算が欲しい時は、Prolog 使うかも。

DB p 100000000000000000000000000000000000000000000000*12345*2340234234234234+1
2.88901916216216e+66

SICStus 4.1.0 (x86_64-darwin-10.2.0): Wed Dec 9 19:42:26 CET 2009
Licensed to SP4ie.u-ryukyu.ac.jp
| ?- X is 100000000000000000000000000000000000000000000000*12345*2340234234234234+1.
X = 2889019162162161873000000000000000000000000000000000000000000000001 ?


Unix user だったら、bc 使うよね。

%bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
100000000000000000000000000000000000000000000000*12345*2340234234234234+1
2889019162162161873000000000000000000000000000000000000000000000001
obase=16
.
1B6ED109D5B02C8A3249B8EB80D619696E88A3CDCC11000000000001


obase が便利。ibase は微妙なんだけど。ibase を使う時は perl で p 0x10 とかやります。

bc の便利なところは、vi から filter で呼び出せるところ。

1024*1024*1024

と書いて、!!bc

1073741824 = 1024*1024*1024

とか。bc は dc を呼び出しているはずですが、dc を使ったことはないんだよな。今のbcは、もうdcとは関係ないらしい。

iPhone 上では初期の頃に手に入れた HP 16C のパチモンを使ってます。RPN 電卓。使いやすいってわけでもないが、楽しいので。

IDE 上とかだと、どうするんだろう? Java 書いて compile & Run? まさかね。Xcode だと gdb で計算すればよいか。

(gdb) p (void*)123345
$1 = (void *) 0x1e1d1

x/20i とかよく使う。

Binary / Format 解析する時にはPerlで書いた自前の hexdump を使ってます。昔は xvi ってのを使ってたんだが、計算しにくいのと巨大なファイルを編集するのに困るので自分で書いた。そういえば、世界大百科を解析した人たちはツールは何を使ったんだろう? 昔は adb とか使っていたんだがな。

xd.pl http://www.ie.u-ryukyu.ac.jp/~kono/pub/software/xd.pl

そういえば、8bit 時代は GAME で毎回プログラム打っていた。

10 p=??
20 i=0,256 ??=p+i " " j=0,16 ?$=p[i+j] @=j+1 / @=i+16

とかじゃなかったか。あるいは monitor (ASSIT09) とかに入ってたかな。

う、なんか Emulator 上で ASSIT09 動かしたくなってきた :-p

No comments: