FreeBSD で動く Reduce

注意 -現在は BSD ライセンスに近い free になっています

PC-Unix の中でも Linux ですとユーザが多いため「Mathematica」を始めとして、 多くの数式処理システムが市販されていますが、FreeBSD については市販品がな く、しばらくの間、REDUCE (ZIB 社の製品) を動かすためだけに Linux を使って いたことがありました。

その後、イギリスの「Codemist Ltd」の Unix 汎用のソースを購入してみたとこ ろ、FreeBSD でも REDUCE が使えるようになりましたが、ちょっとしたコツがあ りますので、要点をメモしておこうと思います。

1. ソースコードの購入

http://www.codemist.tc/reduce/ を見て、「Professional Reduce」(REDUCE 3.6 system for Generic) を購入します。 価格は 350 pounds sterling でした。これには「Reduce」と「Codemist Standard LISP (CSL)」のソースコードが含まれていて、メディアは

  floppy disks
  DOS format CD-R
  DDS/DAT tape (2GB format)
  FTP
から選択できます。私は CD-R で購入しました。

2. インストール

以下、ソースコードを展開する作業ディレクトリを /usr/local/r36 として説明 します。

1) 作業ディレクトリの作成

  # mkdir /usr/local/r36

2) ソースコードの展開と行末コードの修正

入手したソースコードを /usr/local/r36 ディレクトリに展開し、全てのテキスト
ファイルの行末を、DOS 形式の CR+LF から、Unix 形式の LF のみに書き換えます。
DOS 形式のままだと、コンパイルできません。

3) makefile の用意

  # cd /usr/local/r36
  # mkdir cslbsd
  # cp csllinux/makefile cslbsds	# Linux 用 makefile をコピー

上記のコマンドを実行し、/usr/local/r36/cslbsd/makefile に下記のパッチを
あてます。gcc の最適化オプション「-O3」を FreeBSD で指定するとコンパイル
がうまくゆかずに、途中で止まってしまったり、core dump するといった不可解
な挙動に戸惑いますので注意してください。Linux では、この問題がありません。
「-DPUBLIC」は REDUCE の image file を /usr/local/lib/reduce という名前に
固定します。「-static」は、REDUCE のバイナリが多少大きくなっても、将来、
ライブラリが変更されたとき、再度コンパイルしなくても良いようにしようとい
うもので、共有ライブラリを使いたいときは外してください。

*** ../csllinux/makefile	Mon Feb  2 11:06:02 1998
--- makefile	Thu Jul 16 09:24:19 1998
***************
*** 12,18 ****
  # your system. Also if the system you are running on needs
  
  CC        = gcc
! OPTFLAGS  = -O3
  CFLAGS    = -c $(OPTFLAGS) -ansi -I$(CSLBASE)
  LIBS      = -lm -lc -lcurses
  
--- 12,18 ----
  # your system. Also if the system you are running on needs
  
  CC        = gcc
! OPTFLAGS  = -O -DPUBLIC -static
  CFLAGS    = -c $(OPTFLAGS) -ansi -I$(CSLBASE)
  LIBS      = -lm -lc -lcurses
  
***************
*** 30,37 ****
  ASMOBJ    =
  ASMOBJDEP = notused.obj
  SYS       = sysunix
! STORE     = -k6000
! XSTORE    = -k6000
  RM        = rm
  MKDIR     = mkdir
  COPY      = cp
--- 30,37 ----
  ASMOBJ    =
  ASMOBJDEP = notused.obj
  SYS       = sysunix
! STORE     = -k8000
! XSTORE    = -k8000
  RM        = rm
  MKDIR     = mkdir
  COPY      = cp
***************
*** 47,54 ****
  # file name conventions (in particular "/" as a directory separator) while
  # the second will (in some cases) be a host-specific translation.
  
- #UCSLBASE  = ~/r36/cslbase
- #CSLBASE   = ~/r36/cslbase
  UCSLBASE  = /usr/local/r36/cslbase
  CSLBASE   = /usr/local/r36/cslbase
  
--- 47,52 ----

4) コンパイル

  # make csl
  # make slowr36.img
  # make ccode
  # make r36.img

最後のステップで、r36.img が /usr/local/lib/reduce に移動します。FreeBSD
のメモリ管理に不適切なところがあるようで、極端な swap が発生して、途中で
止まってしまうことがありますが、その場合は次のような処置をとってください。

  a) X などを止めて、console だけでコンパイルしてみる
  b) メモリを 256MB 程度に増やす
  c) 途中で止まったら、ps で Reduce のコンパイルに関連したすべてのプロセ
	スを止めて、そのステップをやりなおす

Linux の場合は何の問題もなくコンパイルできます。

5) テスト

  # ./r36

で「Reduce」を起動し、

  factorial 200;
  (x+y)^4;
  int(x^6*log x,x);
  z := mat((0,1),(1,1));
  z^40;
  solve(a*x^2+b*x+c,x);
  on rounded; precision 70;
  pi;
  bye;

等をテストします。

6) バイナリのインストール

  # mv r36 /usr/local/bin/reduce
 
以上で、「reduce」コマンドとして起動できるようになります。/usr/bin/reduce 
と /usr/local/lib/reduce 以外は消去してもかまいません。

なお、グラフィック表示には「gnuplot」を使うようになっていますので注意して ください。

3. 参考書

「Reduce」の参考書はたくさんありますが、手もとにあるものをリストしておきま す。始めての人には、 [1], [2], [3], [11] あたりがよいかもしれません。

[1] 広田良吾,伊藤雅明-「REDUCE 入門」
        (サイエンス社)ISBN 4-7819-0546-3

[2] 守谷良二,-「例題でわかる REDUCE」
        (海文堂出版) ISBN 4-303-72320-7

[3] 大河内茂美,- REDUCEで数学を
        (森北出版) ISBN4-627-83260-5

[4] 後藤英一,一松信,広田良吾編,- 計算機による数式処理のすすめ
        (共立出版)

[5] 落合豊行,永友清和,- REDUCEによる線形代数
        (近代科学社) ISBN4-7649-0164-1

[6] A.C.ハーン,- REDUCE ユーザーズマニュアル
        (マグロウヒル) ISBN4-89501-287-5

[7] A.C.ハーン,- Reduceユーザーズマニュアル
	(マグロウヒル出版) ISBN 4-89501-327-8

    いづれも少し前のバージョンですが、REDUCE のマニュアルの和訳です。
REDUCE のマニュアルはかなりのボリウムですが、TeX の原稿で配布されています。

[8] 佐々木建昭,元吉文男,渡辺隼郎,- 数式処理
	(昭晃堂)

[9] 守谷良二,-数式処理システムREDUCEによる数学入門 線形代数編
	(日本理工出版会) ISBN 4-89019-019-8

[10] 中村秀治,松井正一,- REDUCEによる構造力学の数式処理
	(技報堂出版) ISBN 4-7655-1491-9

[11] 小林英恒,- 高校数学によるREDUCE入門
	(サイエンティスト社) ISBN 4-914903-06-7 

[12] 大河内茂美,- REDUCEで数学を 〜数式処理ソフト〜
	(森北出版) ISBN 4-627-83260-5

[13] 牧野潔夫,- 整数論の数式処理
	(サイエンティスト社) 

[14] 下地貞夫,- 数式処理 叢書名:基礎情報工学シリ−ズ
	(森北出版) ISBN 4-627-80630-2

[15] 森本光生,- パソコンによる数式処
	(朝倉書店) ISBN 4-254-12072-9 

[16] 渡辺隼郎,- 微分方程式の数式処理 叢書名:シリ−ズ新しい応用の数学
	(教育出版) ISBN 4-316-37550-4 

[17] D.Stauffer,F.W.Hehl,N.Ito,V.Winkelmann,J.G.Zabolitzky,-
        Computer Simulation and Computer Algebra
                (Springer-Verlag) ISBN3-540-56530-2

[18] Malcolm A.H. MacCallum, Francis J. Wright,- Algebraic Computing
    With Reduce : Lecture Notes from the First Brazilian School
    on Computer Algebra
        (Oxford Science Publications)

[19] Gerhard Rayna,- Reduce : Software for Algebraic Computation
        (Springer Series Symbolic Computation-Artificial Intelligence)

[20] N. MacDonald,- Reduce for Physicists
	(Institute of Physics Publishing) ISBN 0-7503-0277-1

4. REDUCE の情報

インタネットでは下記のサイトがよくまとまっています。

  http://www.rrz.uni-koeln.de/REDUCE/

連絡先

念のため、上記の WEB サイトから連絡先を転記しておきます。

Codemist Limited "Alta", Horsecombe Vale Combe Down Bath BA2 5QR United Kingdom Phone and Fax: +44-1225-837430 Electronic Mail: jpff@codemist.tc or jpff@maths.bath.ac.uk

平林浩一