2019年7月16日火曜日

Maxima on Emacs

 同梱されているmaxima.elだと、数式はアスキーアートになる。

(%i3) expand ((x + y)^6);
           6        5       2  4       3  3       4  2      5      6
(%o3)     y  + 6 x y  + 15 x  y  + 20 x  y  + 15 x  y  + 6 x  y + x

 それをTeXで

 という風に、きれいに表示するimaxima.elもあるので、TeXをインストールした。そうしたらひどい目にあった。
 MacTeXをいれたのだが、ディスクが満杯になってしまったのだ。MacBook Airの動きがおかしくなる。いや、もしかしたらMacTeXのせいではなく、タイミングわるく別の何かがあったのかもしれないのだが——。
 結局、MacTeXインストール以前の過去にもどることにした。
 TimeCapsuleを使って。
 ——24時間以上かかった。24時間前にもどるのに24時間以上かかるとは。
 はあ。

 wxMaximaではなぜか、gnuplotがうまく動かないし。突然、ロシア語になるし。
 しかたないのでアスキーアートで使うか、といじっていたらdescribe()が効かないことに気づいた。

(%i33) describe(sum);
No exact match found for topic `sum'.
Try `?? sum' (inexact match) instead.

(%o33) false

 ——はい?
 試しにFreeBSDへいれてみたMaximaはちゃんと動く。imaximaもちゃんと動く。数式もきれいだ。もうFreeBSDでいいじゃないか、と思ったけれど、CPUパワーがちがいすぎるし、ネットごしだし、オフラインだと使えない。
 SBCLが見えるところにないことが原因か、と

brew install sbcl

 したり、

brew install --build-bottle maxima

 buildしなおしたりしたけれど、解決せず。
 FreeBSDでは出力されていないので原因は起動直後にでるこのwarningらしいのだが。

warning: ignoring an empty documentation index in /usr/local/Cellar/maxima/5.43.0/share/info/./

 わからん。なぜだ。
 Maximaでswankを動かしてslimeで裏から入って調べてみたりして——ソースを見てみるか、とbuildしたときにもってきたソースをのぞいたらinfoディレクトリの下にあるmaxima-index.lispのサイズが妙にちがう。いかにもな名前だし、このlispが動くことによってdescribe()のデータベースができるのだ、と当たりはつけていたのだけど。
 中身をコピーしてみた。
 立ち上げなおした。
 ——動いた。

(%i1) describe(sum);


 -- Function: sum (<expr>, <i>, <i_0>, <i_1>)

     Represents a summation of the values of <expr> as the index <i>
     varies from <i_0> to <i_1>.  The noun form ''sum' is displayed as
     an uppercase letter sigma.

【中略】

(%o1) true

 くそお。