憂鬱な午後のひととき


11月30日_
もう11月終わりか. 今月は2週間以上ダウンしてたからあっという間だった. 『風のガーデン』って録画はしてたが重たそうで見てなかったけど, 見始めると意外と笑いの場面あり緩急がよくてついつい見入ってしまった. 生前葬のシーンがかなり傑作だった.
11月29日_
JANT行ってきた. 店が無くて昼御飯に困った. なんか見たことある感じなんだけど知らない方だなあと思ったら前々職の後輩のお兄さん(弟さん?)だった. なるへそ.
divの存在意義
C99やC++0x(多分)以前のC/C++では負数の%が処理系依存だからdivがあるのは意味があった気がする.
__builtin_clz
これはVCの_BitScanForwardのインタフェースの方がよい. なぜなら引数0のときundefinedなので, たとえば
int func(int v)
{
    if (v) {
        return __builtin_ctz(v);
    }
    return foo();
}
みたいに必ず0でないことをチェックする必要があり, 出力コードは
func:
    movl    4(%esp), %eax
    testl   %eax, %eax
    jne .exit
    jmp foo
.exit:
    bsfl    %eax, %eax
    ret
の用にbsfを呼ぶ前にtestすることになってしまう. VCのインタフェースだと
int func(int v)
{
    unsigned long d;
    if (_BitScanForward(&d, val)) {
        return d;
    }
    return foo();
}
と書けてこれは
func:
    bsf   eax, dword ptr [esp+4]
    jne   .exit
    jmp   _foo
.exit:
    ret
と無駄の無いコードが出来上がる. これはbsfの引数が0のときZFが立つことを知ってないとできない.
11月28日_
F3193上のペアリングが0.73msec@Core2Duo 2.6GHz. 多分ソフト実装では最速. non-asmにしては上出来(数日でできたしね). ただコードはあまりに汚い. 整理しなきゃ. asm出力を見ると隔靴掻痒なところが散見されるので, もうちょい煮詰めてからXbyakに落としたい. あるいは一気にp = 503まで進むか. が, 帰宅時強烈な頭痛に我慢できず急遽整骨院へ. 頭と首の骨のゆがみが酷い, なかなかこうまではならんって. うーむ, 最適化は神経けずるからなあ.
11月27日_
p = 97の約2倍の193に挑戦. 最適化が完全なら処理時間は4~5倍だろうが, 今回は手抜きなので8倍程度に抑えたい. レジスタ数が8個では絶対足りないので32bit版よりも64ibt on 32bit VMwareの方が速度が出そうだな. intrinsic + templateでのVCの最適化は凄いんだけど定数ループは全て展開してほしいなあ. なんとかならんのか.
11月26日_
週末の発表で6月から全く進展が無いのもどうかと思って久しぶりにペアリングのコードを触る. うーむ, 綺麗さっぱり忘れているようだ. 最近は(風邪の前は)Unicodeとかそんなんばかりやったからなあ. しかも詰めに詰めまくって最適化したので全然いじれない. 今回は日和ってC++で行こう. てか, 東京理科大学野田キャンパスってめっちゃ遠いやん.
11月25日_
久しぶりにコード書いた.
宇宙エレベータの建設費は1~2兆円らしい. 定額給付金止めて作ったら凄いな.
11月21日_
・ようやく治ってきた. 今回は実に酷くて長かった.
・サクシンとサクシゾン
門外漢からするとそんなに似た名前なのに全然違う薬というのはいかにも間違いやすそうだ. 実際, 過去にも同様の事故があったようだ. サクシゾンを使わないという対策も取っていたようだが, 人間である以上うっかりミスは0にはできないのでエラーを極限まで減らす多重の対策を考えてほしい. たとえばせっかくコンピュータを使うなら「こんな間違いやすい例があります」と確認させるようにするとか. 昨今の風潮は, 安直で分かりやすいからと一つの原因のせいにして終わりとする印象があるけど, そんなことではまた同様の悲劇が繰り返される.
11月17日_
風邪が治らん. 参った.
11月13日_
酷い風邪を引いた. めっちゃ喉痛い.

御意見は光成滋生<herumi@nifty.com>までお願いします