日記 (2011年07月)。
$Id: 201107.php,v 1.30 2014/09/04 03:50:53 isaki Exp $

2011/07/01 (金)
[アニメとか] そういえば、「あの花」版 secret base 〜君がくれたもの〜 を買ってきたので、 お約束で10年前の ZONE の secret base と並べてみた。 こういう演出はいいね。

[カープ] ヤクルト戦。マエケン先発で 8回まで 1-1 だったのに、 9回上野が3ラン打たれて試合終了。つまんねー。

写真は何故か来てたつば九郎。

[XM6i] XM6i ver 0.31 リリースしました。 今回もいろいろ頑張りましたよ。 UI 側ばっかりやってたけど、 そんな中、さくっと FC2 ピンカット改造フラグを実装したので、 NetBSD/x68k の X が動くようになりました。

2011/07/02 (土)
[XM6i] XM6i で FC2 ピンカット改造を実装して、X を起動してみたものの 画面がブラックアウトしたまま何分待っても何も起きないので 動作確認はあきらめてたところ、 おおしまさんが X の起動を確認されたようだ。 X のルート画面が出るまでに約10分、 その後ウィンドウ一式が出揃うまでにもう10分かかるらしい。 えーーー。 計ってはないけど結構待ったつもりだったので、 実はもうちょっとで出るとかだったんだろうか。orz
[アニメとか] 駅前フタバレンタルコーナーの手書きポップが的確すぎて笑った。
けいおん!! → 「担当『あずにゃんが大好きですが何か?』」
まどマギ → 「とりあえず3話まで見ろ」
ハルヒ → 「早く3期やれ(願望)」
緋弾のアリア → 「借りないと風穴あけるわよ / 釘宮ファンには鉄板」
バカテス → 「秀吉かわいい。♂だけど…」
あの花 → 「これで泣かなきゃ何で泣くんだ?」
もしドラ、俺妹 → あらましのみw
フラクタル → ポップなしwww

2011/07/04 (月)
[XM6i] 忘れそうなのでメモ。XM6i で NetBSD/x68k の fdc(4) が動かない件について 筒井さんの見立てコメント。
fd.cppを見る限りコマンド実行中にFDDからのreadyが変化したときに割り込みをかける部分は追加実装が必要だと思います。他はuPD765のマニュアルをもう少し眺めないといけませんが……
2011-06-20 23:27 mikutterから
[アニメとか] 電波女と青春男。 野球回に中島君と花沢さんが登場するとかwww。 しかも花沢さん役が花澤香菜ちゃん (かなーん) だけど、わざと?
[アニメとか] シュタインズゲート #13。 なにこの鬱展開。 そしてこの流れ、春先にどこかで見た、ような…。とぅっとぅるー。

2011/07/05 (火)
[NetBSDとか] [XM6i] XM6i ver 0.31 の NetBSD/x68k で xeyes の目玉が動かないらしく (おおしまさん談)、 xeyes は sin()、cos() を使っているけど、 NetBSD/m68k の FPU エミュレーションが sin()、cos() を実装していないからじゃないか (筒井さん談) という話。 というか、「xeyes って sin()、cos() ばりばり使ってるんだよねー」というのと、 「NetBSD/m68k の FPU エミュレーションって sin()、cos() が動かないんだよねー」 という筒井さんレベルの知識をさも当たり前に持ち合わせていないと NetBSD/m68k ってまともに使えないレベルなのか…orz。 いや、まあついこないだ(5月)まで FPU エミュレーションにバグがあって FPU なしの m68k だと awk が動かなかったくらいだし、 そもそも FPU のない m68k マシンで NetBSD を動かして 浮動小数点演算してる人がここ10年の地球上に何人いるかって話だと 限りなく無視できるレベルなんだけど。
[NetBSDとか] ということでソース探訪。 xeyes のソース見ると、確かに sin()、cos() ばりばり使ってる。 てことは libm ね。
xsrc/xfree/xc/programs/xeyes/Eyes.c
 45 # include <math.h>
  :
199 static TPoint computePupil (
200     int     num,
201     TPoint  mouse)
202 {
  :
209     double  cosa, sina;
  :
218         angle = atan2 ((double) dy, (double) dx);
219         cosa = cos (angle);
220         sina = sin (angle);
で、src/lib/libm/Makefile 読むと、 m68k の場合 <math.h> の sin(3) に対応するのはどうやらこれ(↓)っぽい。
要するに FPU 命令呼んで (から結果を %d0,%d1 に入れて) 終わり。
src/lib/libm/arch/mc68881/s_sin.S
 43 ENTRY(sin)
 44     fsind   %sp@(4),%fp0     // fsin.d  4(sp),fp0
 45 #ifndef __SVR4_ABI__
 46     fmoved  %fp0,%sp@-       // fmove.d fp0,-(sp)
 47     movel   %sp@+,%d0        // move.l  (sp)+,d0
 48     movel   %sp@+,%d1        // move.l  (sp)+,d1
 49 #endif
 50     rts
FPU ありの場合、ここの fsin.d で sin の演算が行われるので万事問題なし。 一方 FPU がない場合、fsin.d で F ライン未実装例外が発生して、 例外ハンドラである trap() に来る(↓)。
src/sys/arch/x68k/x68k/trap.c
256 void
257 trap(struct frame *fp, int type, unsigned code, unsigned v)
258 {
  :
410     case T_FPEMULI|T_USER:  /* unimplemented FP instruction */
411     case T_FPEMULD|T_USER:  /* unimplemented FP data type */
412 #ifdef FPU_EMULATE
413         if (fpu_emulate(fp, &pcb->pcb_fpregs, &ksi) == 0)
414             ; /* XXX - Deal with tracing? (fp->f_sr & PSL_T) */
415         break;
416 #elif defined(M68040) || defined(M68060)
fpu_emulate() が fpu_emul_arith() をコールし、 fpu_emul_arith() が fpu_sin() をコールする(↓)。
src/sys/arch/m68k/fpe/fpu_emulate.c
 87 int
 88 fpu_emulate(struct frame *frame, struct fpframe *fpf, ksiginfo_t *ksi)
 89 {
  :
185         } else {
186             DPRINTF(("%s: other type0\n", __func__));
187             /* all other type0 insns are arithmetic */
188             sig = fpu_emul_arith(&fe, &insn);
189         }
  :
556 static int
557 fpu_emul_arith(struct fpemu *fe, struct instruction *insn)
558 {
  :
742     case 0x0E:      /* fsin */
743         res = fpu_sin(fe);
744         break;
で、この fpu_sin() てのが FPU なしの時の sin() の実態。
src/sys/arch/m68k/fpe/fpu_trig.c
 67 struct fpn *
 68 fpu_sin(struct fpemu *fe)
 69 {
 70   /* stub */
 71   return &fe->fe_f2;
 72 }
アーッ!! Σ((((゜Д゜ ))))

2011/07/07 (木)
[航空] 広島空港に B787 がテスト飛行に来たので行ってみた。
朝は結構な雨だったけど昼にはやんで、 この時間の天候は雨上がりぐらい。

787 の飛来(到着)予定は 16 時半で、 それにあわせて 16 時からは展望デッキが無料開放される。 15 時半の時点で無料開放待ち(?)みたいな人が数人いたけど、 きっと場所取り優先なので、普通に 100円払って入場。 ざっとこんな感じ。 もちろんこれでもやっぱり多いなーという印象だけど。

ベスポジゲットの図。 飛行機の着陸を撮る場合、どっちから降りて来るかが最大の問題で、 この日は 23005KT くらいの風だったので、 通常東京方面から来たら R/W 28 に降りるだろうし、 実際 16時頃に降りてきた JAL 便は R/W 28 だった。 でも、この風ならどっちからでも降りれるはずなので (知らんけど)、 「きっと ILS のテストも兼ねるはずだから R/W 10 じゃね?」という 事前の某ちゃんねる情報により、迷わず R/W 10 に一番近い展望スペースへ。 アクリルで囲まれた半円スペースで、 ここにも本格カメラの人も含め10人くらいいたけど、みんな無線機も持ってなく、 駐機場が見える側のスペースを確保してるようだったので、 見事ガラ空きの R/W 10 エンドがクリアに見渡せる最前列を確保。 経験値だな。

そうこうしてると、このすぐ隣、一般人立入禁止スペースに 報道陣御一行様が施設関係者に案内されてやってきた。 で、施設関係者が報道陣に
「こちらから降りてくる予定ですが、変わったらすぐにお知らせしますので」
なるほど。R/W 10 で正解のようだ。ちょっと拍子抜け。

16時10分頃、羽田発の B777 が普通に降りて来た。 こっちは当然無線聞いて知ってるので、カメラテスト気分で撮ってたわけだが、 急にアンガールズみたいなキモいお兄ちゃんがコンデジ片手に割り込んできて、 うぇるかむー、うぇるかむーとうなされながらこの B777 を撮影して帰ってった。 いろんな意味でキモい…。
16時17分、誰かの歓声で見上げると B787 がちょうど滑走路上を斜めに横切っていってるところだった。 雲の切れ目からたまーに見える程度だったけどよく撮れたもんだ。
16時24分、R/W 10 アプローチ。見えた。(照明塔のすぐ横ね)
関係者も気になるようです。
16時25分。いよいよやってきた。 近くの本格カメラの連写音が響く。 そして、 翼すげーしなってるなー、というのがみんな同じ感想。
到着。

ズームもトリミングも適当なので、 上の B777 の写真との縮尺は考慮してません。

駐機中の B787 と、向こうは B777。

すっかり到着して駐機してるのに、老夫婦が 「お父さん、これでしょう、あそこ後ろに 787 って書いてあるがね、 ほら、これでしょ」 と、(たぶん、これじゃないんじゃないかと言い張るじいさんを説得している) ばあさんの会話。 おいおい、目の前で見ても B787 が分からないのに何しに来たんだwww

ドアのところ、EXPERIMENTAL。
マニアと年寄りくらいだったところ、徐々に学生や 仕事帰りにちょっとここまで来てみたみたいなサラリーマン風の人も増えて、 わりと広島空港ではありえないレベルの盛況ぶり。
19時、プッシュバック開始。

ほんとは 19時には帰る予定だったんだけど、 フローコントロールのため20分遅れた。

19時16分、離陸。 さすがに18時くらいからは会社帰りみたいな人がどんどん増えてきてて、 場所取りもしてなかったし、 もう暗くなってきてたので、 素人の俺様の腕前で離陸機を撮るのはこのくらいが限界。 このサイズに縮小すると分からないけど、ピントがまったく合ってない。 右端の黒いのは柵。
夕焼け。

19時半撤収。

[アニメとか] 某氏の影響でこないだから何気なく見始めた「けいおん!」が面白い。orz

2011/07/09 (土)
[NetBSDとか] [XM6i] てことで、とりあえず調べてみた。
NetBSD/m68k の FPU_EMULATE オプションによる FPU 命令エミュレーションの対応状況
命令 機種   NetBSD/m68k
FPE の対応状況
 68881  68040  68060 
 FABS  ○ 
 FADD  ○ 
 FBcc  ○ 
 FCMP  ○ 
 FDIV  ○ 
 FMOVE  ○ 
 FMUL  ○ 
 FNEG  ○ 
 FNOP  ○ 
 FSQRT  ○ 
 FSUB  ○ 
 FTST  ○ 
 FDBcc SP ○ 
 FGETEXP SPSP ○ 
 FGETMAN SPSP ○ 
 FINT SP ○ 
 FINTRZ SP ○ 
 FLOG10 SPSP ○ 
 FLOG2 SPSP ○ 
 FLOGN SPSP ○ 
 FLOGNP1 SPSP ○ 
 FMOD SPSP ○ 
 FMOVECR SPSP ○ 
 FMOVEM (※1) ○ 
 FREM SPSP ○ 
 FSCALE SPSP ○ 
 FScc SP ○ 
 FTRAPcc SP ○ 
 FSABS/FDABS  対応不要 
 FSADD/FDADD  対応不要 
 FSDIV/FDDIV  対応不要 
 FSMOVE/FDMOVE  対応不要 
 FSMUL/FDMUL  対応不要 
 FSNEG/FDNEG  対応不要 
 FSSQRT/FDSQRT  対応不要 
 FSSUB/FDSUB  対応不要 
 FACOS SPSP × → ○ (※3) 
 FASIN SPSP × → ○ (※3) 
 FATAN SPSP × → ○ (※3) 
 FATANH SPSP × → ○ (※3) 
 FCOS SPSP × → ○ (※2) 
 FCOSH SPSP × → ○ (※2) 
 FETOX SPSP × → ○ (※3) 
 FETOXM1 SPSP × → ○ (※3) 
 FSGLDIV SPSP △ (FDIV で代用) 
 FSGLMUL SPSP △ (FMUL で代用) 
 FSIN SPSP × → ○ (※2) 
 FSINCOS SPSP × → ○ (※2) 
 FSINH SPSP × → ○ (※2) 
 FTAN SPSP × → ○ (※2) 
 FTANH SPSP × → ○ (※2) 
 FTENTOX SPSP × → ○ (※3) 
 FTWOTOX SPSP × → ○ (※3) 
 FRESTORE  × (未調査) 
 FSAVE  × (未調査) 
 
機種欄
: ハードウェアがサポートしている命令
SP: FPSP によるソフトウェアサポート
: 実装していない命令
まず最初の FABS から FTRAPcc までの1グループが、 現在の NetBSD/m68k の FPU エミュレーション (FPE) で対応しているもの。 ただし、ほんとにどのくらい対応してるかまでは調べてない。 ※1 の 68060 の FMOVEM は、オペランドか何かによって ハードウェアで対応する場合とソフトウェアで対応する場合があるとか そういうことなんかな。 よく分からんけど、どっちみち目先には関係ないので放置。

次の FSABS/FDABS から FSSUB/FDSUB までは、 68881 にはなく 68040/68060 ではハードウェアでサポートしている命令なので FPE で考慮する必要はない。

最後の FACOS から FTWOTOX までが 68881 がサポートしているのに FPE がサポートしていない命令。 このうち FSGLDIV と FSGLMUL は FDIV と FMUL で代用しちゃえ、 ないよりましだろう、とソースに書いてあるように見えるので 一応△印にしといたが、○のグループではなく × のグループに含める。 FRESTORE、FSAVE についてはよく知らんけど、とりあえず今回の主題でないので放置。

で、これをどうしろと…。orz

(2011/10/16 追記) 表中※2:三角関数、双曲線関数をサポートしました。
(2013/04/20 追記) 表中※3:逆三角関数、FATANH、指数関数、べき乗関数をサポートしました。


2011/07/10 (日)
[アニメとか] アニメ「快盗天使ツインエンジェル」1話目を見てみた。 なにこのセーラームーンwww

2011/07/12 (火)
NHK のニュースに山田洋次とかいう映画監督らしい人が対談で出てた。 こっちも洗い物しながらだったのでかじりついて一語一句見てたわけじゃないけど、 蒸気機関車がテーマの映画か何かを撮ったらしく、 「蒸気機関車なんていうのはすごく分かりやすかったが、 原発なんてなんだかよく分からない。ああいう人智を越えたものはイクナイ」 (意訳) ようなことを仰っていた。おいおい、まじか、このジジイ…。 お前の (自分が知ってるか知らないかで判断する) 理屈でいうと、 俺もそんな映画監督の名前は聞いたことないので、 まあ大した監督じゃないんだろう、 老後に趣味で自主映画でも撮ってるじいさんかなー。

それはさておき、 原子力発電の仕組みがよく分からないのは、お前の知識がないだけ。 というか、なんなら春先からもっともホットな話題の一つで テレビつければ連日 (池上彰が :-) 解説してたし、 本屋に行けば仕組みについて書いた本なんていくらでもあるし、 そもそも電気系の高専、大学レベルならたぶん普通に習う (選択科目だったので自分は取ってないけど)。 分からないのはお前がバカか専門外だからで分かろうとする努力をしてないからだよ。 てか、大抵、この手の幼稚な反対派のやり口ってのはこの程度なんだよね。 自分が知らないから何だか嫌だと騒ぎ立てる。 まあ他の発電方法と同様、原子力発電にも長所と短所はあるわけで、 そこをちゃんと理解できないようでは議論のスタートラインに立ててない。 あと、蒸気機関(車)に本当になんのデメリットもなかったか?。

SL は別に好きでも嫌いでもないけど、 蒸気機関車がイイモノダナーとか言ってるのはただのノスタルジー。 蒸気機関車なんてただの骨董だし、 吉永小百合も歳のわりにきれいなただの老婦だろ。 現実を直視しろ。それが嫌なら大分麦焼酎二階堂の CM でも見とけ。 それに、ちゃんと原理知ってたら分かるはずだけど、 原子力発電も蒸気機関もある意味似たようなもんだろ。 熱でお湯沸かして云々っていうあたりな (端折りすぎだけどなw)。 よく分からない発電方法なら、 お前らバカどもが今最も持ち上げてる 太陽光発電のほうがよっぽどよく分からんだろ。 半導体に適度に不純物を混ぜて(中略)した P 型と N 型をくっつけた PN接合ダイオードに 外部からエネルギーとして光を与えると電子が励起してフェルミ準位を(中略)して 電流が流れるとか、よっぽど「よく分からん」発電方法だろ。 太陽光発電もよく分からんから危ないかもしれないナー。 バカかお前。 年金やるから自主映画でも撮ってろ。 (あ、吉野家テンプレで作ればよかったのか)

別に原発賛成派でも推進派でもなくて、 この程度の知識しかないバカやこういう老害が何の知識も得ようとせず 原発反対とだけ言えば知識人みたいな風潮がとても怖い。


2011/07/13 (水)
[カープ] 横浜戦。 0-0 の6回表二死三塁で先発中村恭がボークしてしまい 1-0。 続く7回表は二死一三塁、打者がピッチャーの場面で、 三塁走者渡辺直がホームスチールを敢行。 中村恭がセットで構えて長ーく持ってたらいきなり走ってきた感じ。 ぎりぎりで気付いてホームに送球、 倉がブロックしてアウトにしたからよかったけど、ホームスチールて…。 倉はベテランだけど中村恭は今年の大卒ルーキー。 横浜はあれだな、ケツの青い左投手には仕掛けてくるなー。 こちらも参照 → 2009/07/15 の日記。 ってちょうど2年前か。 この時期、ぺーぺーには暑さが堪えてるだろうから仕掛け時とかそういうことか?。 結局ボークによる 1-0 で負け。 しょうもなさすぎる… (中村恭がじゃなくてチームが)。

2011/07/14 (木)
なんやかんやあって、光になりますた。
なんか、関東人には絶対に手をさしのべてはいけない気がしてきた。
3月:  輪番停電を計画 → 需給を見て停電を回避 → 「停電するっつったのにしねーじゃねーか」
7月:  15%の節電要請 → 広野火力一部復旧で余裕が → 「節電しろっつったのに電気余ってんじゃねーか」

2011/07/15 (金)
[NetBSDとか] FPE 続き、その3。 030 FPE の未実装関数はすべて 040 用の FPSP では実装されてるので FPSP を流用してみる案。 とりあえず FPE の fpu_sin() から asm 文を使って FPSP の ssin をコールしてみる。 FPSP は 040 用なので、 FMOVE や FADD などの基本的な命令は存在しているし、 FP0 などの FPU レジスタも存在している前提なので、 ssin の中でもそれらの命令が多用してある。
src/sys/arch/m68k/fpsp/ssin.sa
194     xdef    ssin
195 ssin:
196 *--SET ADJN TO 0
197     CLR.L       ADJN(a6)
198     BRA.B       SINBGN
  :
205 SINBGN:
206 *--SAVE FPCR, FP1. CHECK IF |X| IS TOO SMALL OR LARGE
208     FMOVE.X     (a0),FP0    ...LOAD INPUT
例えば ssin に入ってすぐ 208行目に FMOVE.X があり、 FPU のない環境ではここで F ライン例外が起きる。 ユーザ空間での F ライン例外は FPE 処理に飛ぶようになっているが、 カーネル空間での F ライン例外は (FPU プローブ時の例外を除いて) panic するようになっているため、このまま流用しても動作しない。 カーネル内の F ライン例外で FPE を起動するにしても、 FPE はユーザ空間での FPU 命令のエミュレーションだけをターゲットにしており、 後続の命令ワードもユーザ空間から取得するように書かれている。 この辺まで (両空間に対応するように?) 書き直さないといけないので、 FPE から FPSP を流用するのは流用程度の簡単さではなさそう。

2011/07/18 (月)
[NetBSDとか] ただの じつは浮動小数点演算には興味ありません。 この中に、IEEE754、MC68881/2、NetBSD/m68k の FPE について詳しい人がいたら あたしのところに来な…ではなく来て頂けませんか。(´・ω・`)
[NetBSDとか] FPE 続き、その4。 FPSP を流用するにあたり、 FMOVE.X などの 040 には存在して 030 に存在しない命令を 事前のアセンブラソースレベルで別のものに書き換えておく案。 実はそもそもこの ssin.sa など 040FPSP のアセンブラソースは モトローラ書式(?)なため GCC では扱えず、 そのため sed の本領発揮しすぎによって その場で GCC 書式に変換してからアセンブルしている。 なんという労力…。 なので、sed にもうちょっと手を入れればこの FMOVE.X (a0),fp0 を適当な別の関数呼び出しに 書き換えることはたぶんそんなに難しくない (いや知らんけど)。 イメージこんな感じ。
(アセンブラ側の FMOVE.X (a0),fp0 の代わりに)
pea.l	(a0)
move.l	#FP0を示す定数,-(sp)
jbsr	fpe_fmove_x_ea_fp
addq.l	#8,sp

(C 側)
void
fpe_fmove_x_ea_fp(int dstreg, void *srcea)
{
}
この fpe_fmove_x_ea_fp() 関数 (仮名) が FPE との連絡をとってくれればいい。 しかしこの方法だとサイズ、オペランド方向などの組み合わせもあって ssin を実現するだけでも 20個ほど関数を書かないといけないし (まあ一つ書ければあとは似たようなもんだろうけど)、 FMOVE や FMUL くらいならなんとかなるかも知れない想像はつくけど、 FMOVEM とかでオペランドに -(sp) とか指定されたらどきどきするし、 FBcc とか頭痛が痛くなりそう。

2011/07/19 (火)
[NetBSDとか] FPE 続き、その5。 そもそも三角関数くらいなら自分でテイラー展開しちゃえばいいんだよね、 というのは解法としては最初から聞いてたんだけど、 それでは全部の FPE 未実装命令が解決しそうにないので放置してた。 けど、久しぶりに見た sin()cos() のテイラー展開が意外とシンプルだったのと (→ 三角関数の級数展開 - Wikipedia)、 FPE のコード眺めてたら意外となんとかなりそうだったので、 さくっと実装してみた。 浮動小数点演算とかアルゴリズムとか苦手なので、 まだ演算精度とか打ち切りとか最適化とか何もしてないけど、 XM6i 上で FSIN.D、FCOS.D 命令の F ライン例外が それぞれ体感で 0.5秒近くかかる (ちゃんと計ってはない)。FTAN.D 命令は tan(x) = sin(x)/cos(x) の公式をそのまま実装してて 要するに sin() と cos() それぞれ計算するので体感で約1秒かかる。 うーむ、実装できはしたものの、 カーネル内の例外処理が1秒近く帰ってこないとか大丈夫なんだろうか。

2011/07/20 (水)
[カープ] 阪神戦。
4回裏、 気付くとスコアボードの安打数が 0本と 1本に。 バグったのかミスったのか知らないけど、 2分後すぐに戻ったの図。 どんなシステムなんだろう。
19時40分、 「銀色のハーモニー」って感じの夕焼け。

試合のほうは 7回二死三塁で、 石原が内野ゴロを一塁ヘッドスライディングで内野安打にして 1-1 の同点。 8回、満塁で代打前田の2点タイムリーで勝ち。 いい試合だったんだけど、 隣のグループがうちらの席に割り込んできてボード広げ出したり、 応援団さんに文句言ってたりして、後味悪い。


2011/07/21 (木)
[アニメとか] アニメ「けいおん!」(第1期、全14話)見終えた。 面白かった。 4人(5人)全員がボケ&ツッコミ担当なんだな。 唯と澪かわゆし。 アニメも原作もまったく見たことない時点で唯グッズに 手を出してしまったが (2011/06/24 の日記参照)、間違ってはなかったようだ。 ただ、唯の潜在能力が異常に高すぎてワロタ。 スカウター壊れるレベルじゃね。 あと、憂って名前おかしくね? いい意味の字じゃないし。 まあだいぶん慣れたけど。
[NetBSDとか] FPE その6。 遅いのは sysinst (INSTALL カーネル) でテストしてて 最適化が -Os だったからのようだ。 -O2 にしてみたら気持ち速くなったような気がするけど、 そろそろちゃんと測定したほうがいいな。

2011/07/22 (金)
今朝の中国新聞の「LED の仕組み」の説明がヤバいw。 「(+)と(−)がぶつかると光を発します」。 ナ、ナンダッテー!!。

おいおい、嘘はいかんよ、嘘は。 LED (発光ダイオード) の原理のどこをどう解釈してもそうはならんだろwww。 そもそも(+)、(−)とかないし、ぶつかってもないしなあ。 言うとすれば電子が転がり落ちてるとでも言うほうが近いだろうけど、 どっちみちここだけ切り取って1行で説明するとか無理ゲーじゃね?。 てか、電子ぶつけて光るとかどこのブラウン管だよ。

しかしこれが新聞連中が必死で売り込んでる「教育に新聞を」のレベルだと思うと、 こんなデタラメを教えられる子供たちの心配をしてしまうわ。


2011/07/23 (土)
クヌース先生 + Google 先生の人類最強コンボで数式が表示できるらしい。 スゲー。わけがわからないよ。
ソースはこんな感じ。 他にもパラメータがいろいろあるっぽい。
<img src="http://chart.apis.google.com/chart?cht=tx&
 chl=\displaystyle{sin%28x%29%3d\sum^{\infty}_{n%3d0}
 \frac{(-1)^n}{(2n%2b1)!}x^{(2n%2b1)}}">
URL エンコードしてあると読みにくいけど chl= の中は例のこれね。 LaTeX か、何もかも皆(ry
\displaystyle{sin(x)=\sum^{\infty}_{n=0}\frac{(-1)^n}{(2n+1)!}x^{(2n+1)}}
しかし、ちょっと文字のバランスが悪いような気がするけど、 こんなもんだったっけ。 あと、このサービス未来永劫続いてくれないと、 この日記ある日急にイミフになるな…。
[NetBSDとか] FPE その7。 三角関数は 2πでの周期関数なので、入力値(の絶対値)が 2πを越えると 2π以内になるようにはしてある。 んだけど、2π近傍では n=28 項あたりまで計算しているようで、 π/2 付近なら n=14 項程度で計算終わるっぽい。 この差が結構大きそうだったので、 定番の公式使って必ず π/2 以内に収めるようにしてみた。 で、早速その数式 :-)
これで入力 x がどの範囲にあっても 0 〜 π/2 の範囲のみを計算すればよくなるので、(確か) n=14 項程度で必ず終わる。 0 〜 2π までの値の tan() = sin()/cos() 10個を計算して表示させた場合の ベンチマークは約 6.5秒から約 3.2秒に短縮。おー、結構効くもんだね。 条件分岐を計3回 (2π、π、π/2) やっててこれが地味に行数かかるから ソースコードの長さは倍になってるけどなー。 てか、なんか既視感あると思ったら FPE ってアセンブラっぽいな。 f1、f2 レジスタに値をロードしてから演算して、 結果を退避しといての繰り返し。

2011/07/24 (日)
[NetBSDとか] FPE その8。 ところで、src/lib/libm/src/k_sin.c とか見ると (組み合わせが複雑なのでこれがどこで使われてるのかよく分からんけど)、 こいつは級数展開のうち n=6 固定にしてある。 double の場合は n=6 で精度が十分足りるということかな。 おまけに n=6 程度なので階乗部分 (-1)^n / (2n+1)! を定数で用意してある。 あー、そりゃそうか。 更に x^2 は隣と共通項だわなー。 てか、毎回 n の階乗と x の n 乗を計算しててすみませんでした(汗。 このために階乗と、実数の整数乗のサブルーチンを書いたのは秘密(ぉ。 n=28 ていうと最終項は 57 の階乗 (= 約 4.0×1076) と x の 57乗 (x≒2πとすると約 3.1×1045) を計算してたんだな。 n=14 でも最後は 29 の階乗 (= 約8.8×1030) か。そりゃ遅いわ…。

てことで、数式でいえばこうすればいいのかな。

これなら、 x^2 は累乗じゃなく乗算で出来るし最初に1回計算しとくだけだし、 一つ前の Sn を次に持ち込めば、後は乗算と除算1回ずつ程度の演算で済む。 分母の定数化の件はいろいろ面倒だし、 ここまで来るとメリット薄いかなあ。 これでも tan() 10回が 3.2秒から 0.94秒に。はえーw

この 0.94秒は time(1) による手抜き測定だったので、 gettimeofday() 使ってもう少し真面目に計ってみた。 いずれも10回ループ時の値で、 sin() が 0.23秒、cos() が 0.21秒、tan() が 0.44秒。 一番時間のかかる FTAN.D 命令でも1回あたり 0.04秒なので、 これなら悪くないか。

マシンが速いとどんなアホアルゴリズムでも爆速で計算してしまって 痛くも痒くもないけど、 遅いマシンだとパフォーマンス (のオーダー) を 改善したことが目に見えて分かるので重要。苦手だけどw

アナログ放送終了。
11時59分、高校野球の途中ですが…w
NHK2局と在広民放4局分の終了のお知らせ。 テレビ画面をケータイで撮ったので細かいことは気にしない。

2011/07/25 (月)
[NetBSDとか] FPE その9。 三角関数の級数展開が出来れば、 双曲線関数は親戚つーか三角関数より簡単なので一瞬で出来た。 動作確認パターンを書くほうがめんどくさいレベル。

2011/07/28 (木)
[アニメとか] アニメ「緋弾のアリア」(全12話)。 まあ別に面白かったし釘宮成分補給も出来たからいいけど、 最終回あんな感じでいいの? 結局何の話だ。 原作読んでないから分からないけど、これじゃただのツンデレアニメだよな。
[アニメとか] アニメ「電波女と青春男」(全12話)。 まあ別に面白かったし、エリオもリュウシさん(リュウコやっちゅーに)も かわいかったからいいけど、 最終回あんな感じでいいの? 結局何の話だ。 原作読んでないから分からないけど、これじゃただのハーレムアニメだよな。

2011/07/29 (金)
[カープ] 中日戦。6時半すぎには球場入りしたのに 最上段二列目より下が全部埋まってたというくらいの大入り。 金曜日とは思えない。 夏休みだからか、それとも今年はマツダが木金休みだからか。

試合のほうはしょうもなく 6-3 で負け。 おまけにドアラは今日は出ないんだな…。 ドアラ目当てで来たのになんか損した気分だわ。orz


2011/07/30 (土)
[カープ] 中日戦。予定外のまさかの2連戦。 16時頃球場に着いてみたら当日券売り場は誰も並んでないし、 というか 10個くらいある窓口も半分しか開けてない。 球場入ってみてもガラガラ。えっと、夏休みで土曜日ですけど、 マツダが土日操業してる影響なんすかね。

ということで試合始まるまで延々中村さんとアニヲタ話で過ごす。

試合は、篠田が8回無失点で 3-0 で勝ち。 てか、中日エラー多すぎ。高校野球の一回戦かよ。

[カープ] 7月は5試合見て 2勝3敗。 今季通算は 15試合7勝6敗1分1雨天中止。

井崎のホームページへ戻る
isaki@NetBSD.org