ToDo:
CERNの4月の一般公開(LHC運転前の最後一般公開になる予定)を 前に飾り付けが行われていますが、なんかLHCのマグネットを Meyrinの街中に飾っている模様。
Meyrinのバス通り沿いのロータリーには、Quadrupole Magnetが出現
また、CERNの Receptionから Rue de Meyrinを渡った向かい側の 球体状の建物の前には、Dipole Magnetが出現
Mapに渡すために二つの行列の積を返す純関数を素直に
(#2.#1)&
と書いて、MapThreadに食わせてみたとこと、なぜか結果がおかしなことに...
演算結果を見る限り行列の要素毎の積になってるので、どうやら
(#2 #1)&
と解釈さているようです。何故... Orz
なんと、スロット演算子#に右結合するオペランドは実数らしい! つまり、最初の例では、(, #2., #1, ), &と 5個のトークンに分解されるようです。
対処としては、
((#2).#1)&
と書くか
(#2 . #1)&
のように明示的にwhitespaceを挿入すれば良いわけだが、 スロット演算子の意味付けから整数以外のものと結合する意味は 無いので、もう少し構文定義が改良できんものかねぇ
もっとも、SADの実装では構文定義から構文解析器を生成しているのではなく 直接構文解析器を書き下しているので、副作用が怖くて修正できん。 (この前の~演算子への修正で、予期しない構文定義への副作用が 発生していたのも、これが原因かと)
No | 入力 | SADの解釈結果 |
1 | (#1.6)& | (#&) |
2 | (#2.5e2)& | (#25&) |
3 | (#1.5.#2)& | ...#でプロンプト |
4 | (#-1)& | (-1+#)& |
6 | (#0)& | (#0&) |
5 | (#0.5)& | segmentation fault |
f = (#0)&;
を定義して、f[]とかf[0]とかやってみる。 なにが返ってくるのだろう...わくわく
って、なにこの味気の無い出力
In[1]:= f = (#0)& Out[1]:= (#0&) In[2]:= f[] ???General::slot: Undefined Slot #0 in (#0&)[] ???General::abort: Aborted: f[] ^ ???-FFS-Error-?Undefined command or element: F[] In[2]:= f[0] ???General::slot: Undefined Slot #0 in (#0&)[0] ???General::abort: Aborted: f[0] ^ ???-FFS-Error-?Undefined command or element: F[0] In[2]:=
General::Slotで適用時にエラーにするくらいなら、 純関数オブジェクト生成時に構文エラーにすべきでない?
2005年にChristopher K. Allenが SAD V1.0.8.x向けに書いた 3D RMS Beam Envelope Simulationを Extension module形式にして移植しました。 移植に当たっては、MatrixFunctions.nをすべてCで再実装することで オリジナル版に比べ 例題の 実行速度は約5倍に高速化されています。
使い方とか中身の原理に関しては、 http://www-linac.kek.jp/seminar/allen.htmlを参照
カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記