ToDo:
CERNが年末年始で閉鎖される間、日本に一時帰国していましたが、 本日スイスに戻ってきました。
今回は、フランクフルト-成田間の国際線は共同運航便で 機体は ANAの747-400でしたが、前に乗った Lufthansaの 機体より快適だった。
預け入れ荷物が約28kgなのですが、Lufthansaの規定だとエコノミーは 20kgを越えると重量超過なのですが...支払いを求められる額が 一定しないので現場の裁量で決まっている気がします。
2007/09/03の成田→フランクフルト→ジュネーブのフライト(LH711/LH3668)を Lufthansaのカウンターでチェックインしたときは、超過料金は14,600円。
2007/12/23のジュネーブ→フランクフルト→成田のフライト(LH3667/LH9790)を Swiss Airのカウンターでチェックインしたときは、超過料金は210CHF。
2008/01/06の成田→フランクフルト→ジュネーブのフライト(LH9791/LH3670)を ANAのカウンターでチェックインしたときは、そのまま通過。
iMacコンデンサ破裂 の話だが、KEKBだと24時間稼働がデフォルトになっていますが、 iMacを普通のオフィス製品だと考えた場合、1日平均8時間稼働かつ週末停止を 仮定して換算すると7年相当ぐらい...まあ製品寿命設計的には妥当と 言えなくもないが、コンデンサ破裂は明らかに部品不良若しくは回路設計設計 不良ですよね...
リコール対象ってことは、やはり不良コンデンサっぽいですねぇ
Random[] familyを RandomMT extension moduleベースのものに入れ換え
ただし、TRACKモジュール等で使われている iseed, tran(), tgauss()系は 既存のままなので、これらの疑似乱数列は SEED, \$SEED変数で制御される 点に注意
gfortranで不足している fseek intrinsicが、GCC 4.3.0から 実装されているので、SeekFile[]を復活させてみました。
g77だと、fseekは引数3個の整数を返す関数(fseek -> fseek_)なのだが gfortranだと 引数4個のサブルーチン(fseek -> _gfortran_fseek_sub) だったりするので、Fortranでの名前空間の衝突を避けつつ fseek_を 提供するために Fortran + Cの二段構えのラッパーになりました
まあ、使っているって話は聞かないけど、動かない機能があるのは 気持ち悪いので...
継続中
残っている iseed関連コード
また、\$SEED関係のコードはコモンブロックの iseed変数とは 一切関係ない独立した疑似乱数発生器になっていることが判った。 (アルゴリズムは tran()と同じだけど...)
_ 影達 [これからしばらくはLHC帝国の時代。ところでコミッショニングはいつごろからでしょうか? ホントのとこをよろしくお願い..]
LHCのコミッショニングは 何時始まるのか...私も知りたい(w
3月に、前に壊れた Triplet Qの試験が有るらしいので、 それで問題が出ると間違えなく延期だと思う。 あと、グループリーダーレベルでの話題に 秋死守(各国の偉い人を招いた LHCの完成記念式典があるらしい)という話が出ているとの噂を聞きましたが 真相は不明。 噂が事実なら予定よりも遅れる可能性が出てきているということでは?
長らく作業してきた、疑似乱数発生器の交換作業も大詰めです。 FFSコマンドで実装されてる iseed操作機能ですが、 nistack()で実装している iseedを蓄えるスタックを SeedRandom[]を使って Packages/NISTACK.nへ全ての疑似乱数発生器プラグインで使える形に 再実装した上で、
という形になりました(Rev.1325)
CVS MAIN trunkに random_* API周りと DateTAI extension moduleをバックポート完了
Random[]の入れ換えと iseed追い出しのバックポートは、 もう少しコードの改修とテストをしてから... 特に、大量に疑似乱数を使うときは arrayで生成させないと 性能が出ないはずですし...
iseed版はインライン展開だったのでそこそこの性能が出るはずですが、 random_* APIは plugin関数を呼び出すので個別に生成すると 関数呼び出しのオーバーヘッドが無視できない... Orz
最速を目指すなら、呼び出し元を Cで書いて random_* APIの生成系APIを マクロ展開にした上で、Random Plugin ABI変更して framework側に 疑似乱数列のバッファーを持たせるべきかも(マルチコア環境では、 さらにダブルバッファー化して feeder threadを置いてバックグラウンドで 疑似乱数列を生成するとか...)
実装してみるが、もらったLINX/Yファイルの TFSパースに失敗するので 入力ファイルに手を入れて動作を確認する。
どうやら、TFSパーサーがエラーになるのは貰ったLINX/Yファイル上での TFSフォーマットの出現順序が異なるからのようだが...
TFSフォーマットの正式な仕様をもらっていない(求めたけど簡単だから 口頭で説明すると言われて仕様書が出てこない)、フォーマットの 説明には出現順序の自由度に関するものが無かった上に、MADXの 出力をリファレンスにしろと言われたので、読めない件に関しては 仕様と言うことにする。
文句が有るなら、TFSの正式な仕様書を書いてもらうことにしよう(w
まず、version番号だが、前置単項演算子として実装されて来た ~演算子を、中置演算子としても作用可能にする仕様変更を 含んでいるので、major versionを変えるべきだと思う。
また、~を中置演算子として使った構文、a~bは 関数表現ではNot[a,b]と解釈され構文エラーとされるのは 個人的には謎仕様だと思う。
掲示板 にある conststentの意味するところは、
In[1]:= Not[a,b] ???General::narg: Number of arguments is expected 1 in (a~b) Out[1]:= (a~b)
に対する整合性だと思うのだが、整合性問題の本質は関数型で記述した 入力に対してエラーメッセージを表示する際に入力した構文 そのものではなく中置演算子表示に勝手に変換する インタープリター実装の問題と思われる。 原因は、構文解析器が吐き出す構文木に元の表現形(関数 or 演算子)が 記録されないためだが、ユーザーに何処で構文エラーが発生しているかを 正しく伝えるためには構文上意味を持たない空白文字を省略するならまだしも、 意味論的に同じだからと言って構文要素として異なる表現形で提示するのは あまり正しいとは思えない。
他の構文糖(syntax sugar)としての中置演算子表現を持つ関数でも同様の 表示上の問題を抱えている。さらに言えば、関数表現では単一の引数を 認めているが、対応する演算子に単項演算子が存在しない場合は 以下に示すように引数の数が変わった際の表示に一貫性が無い。
In[1]:= Plus[a] Out[1]:= Plus[a] In[2]:= Plus[a,b] Out[2]:= (a+b) In[3]:= Plus[a,b,c] Out[3]:= (a+b+c) In[4]:= Alternatives[a] Out[4]:= Alternatives[a] In[5]:= Alternatives[a,b] Out[5]:= (a|b) In[6]:= Alternatives[a,b,c] Out[6]:= (a|b|c)
カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記
_ 管理人A [コントロール棟会議室のiMacが立ち上がらなくなってしまったので、中をあけてみたら電解コンデンサが5個パンクしていま..]