Reduceは modified BSD license のオープンソースになりました。 FreeBSD-6.1 では https://sourceforge.net/projects/reduce-algebra から reduce-source-20090226.tar.bz2 を取得展開して、下記のようにコンパイル、 インストールすれば使えます。
cd openreduce-20090226 ./configure --with-csl gmake cd cslbuild/i386-unknown-freebsd6.1/csl cp reduce reduce.img /usr/local/binFreeBSD-8.0 では、ports/devel/subversion をインストールしてから、 http://www.reduce-algebra.com/downloading.htm に従って、
1) ソースコードを入手 svn co https://reduce-algebra.svn.sourceforge.net/svnroot/reduce-algebra reduce-algebra 2) コンパイル cd reduce-algebra/trunk ./configure --with-csl gmakeで reduce-algebra/trunk/bin/redcsl ができます。
FreeBSD-8.1 では reduce-algebra-20091021.tar.bz2 を取得、解凍して、
cd reduce-algebra/trunk ./configure --with-csl gmake cd cslbuild/i386-unknown-freebsd8.1/csl cp reduce reduce.img /usr/local/binで済みますが、csl の問題で、reduce を起動したら最初に
off fancy;を実行するか、
reduce -wとして実行しないと、数式の表示がおかしくなします。
2011-11-08 追記
2011-11-08 に FreeBSD-8.2 でコンパイルしてみたところ、 Linux と FreeBSD の違いを吸収するための、いくつかパッチが必要でした。
基本的な手順は http://reduce-algebra.com/downloading.htmに書いてありますが、
svn co https://reduce-algebra.svn.sourceforge.net/svnroot/reduce-algebra reduce-algebraでソースコードを取得した後、reduce-algebra ディレクトリで、 このパッチをあててから、
cd trunk ./configure --with-csl makeを実行すれば、 trunk/cslbuild/i386-unknown-freebsd8.2/csl ディレクトリに
reduce reduce.img reduce.fonts/ができますから、この3つ(reduce.fonts ディレクトリと src 以下を除くすべてのファイル)を /usr/local/bin にコピーすれば reduce コマンドとして起動できるようになります。 ドキュメントは reduce.doc/ にあります。 なお、新しいウインドウを開かずに、コマンドラインで使うときは、reduce -w として起動します。
パッチの内容はすぐわかると思いますが、FreeBSD では、
1)ことが原因です。で RLIM_SAVED_MAX, RLIM_SAVED_CUR が定義されていない 2) struct timeval が <sys/time.h> で定義されている 3) /bin/sh が bash ではない
2013-04-09 追記
FreeBSD-9.1 では、下記の操作だけでコンパイルできるようになりました。
cd trunk ./configure --with-csl gmake
以上のように、reduce がオープンドメインになった結果、 以下の情報は古くなりましたが、しばらく残しておきます。
PC-Unix の中でも Linux ですとユーザが多いため「Mathematica」を始めとして、 多くの数式処理システムが市販されていますが、FreeBSD については市販品がな く、しばらくの間、REDUCE (ZIB 社の製品) を動かすためだけに Linux を使って いたことがありました。
その後、イギリスの「Codemist Ltd」の Unix 汎用のソースを購入してみたとこ ろ、FreeBSD でも REDUCE が使えるようになりましたが、オリジナルのソースで は FreeBSD をサポートしていませんので、移植の注意点をまとめておきます。
http://www.codemist.co.uk/reduce/index.html を見て、「Professional Reduce」(REDUCE 3.7 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 で購入しました。3.6 のときは分厚い印刷された マニュアルが付いていて便利でしたが、3.7 からは HTML 版のマニュアルだけに なっています。
以下、ソースコードを展開する作業ディレクトリを /usr/local/r37 として説明 します。
1) 作業ディレクトリの作成 # mkdir /usr/local/r37 2) ソースコードの展開と行末コードの修正 入手したソースコードを /usr/local/r37 ディレクトリに展開します。3.6 のとき は、すべてのファイルの行末の CR+LF を LF に変換する必要がありましたが、3.7 では直っています。 3) makefile の用意 # cd /usr/local/r37/lisp/csl # mkdir bsd # cd bsd # cp ../linux/Makefile . # Linux 用 Makefile をコピー 4) パッチ # cd /usr/local/r37 で下記のパッチをあてます。 *** lisp/csl/cslbase/ORGcsl.c Wed Jul 12 11:52:23 2000 --- lisp/csl/cslbase/csl.c Wed Jul 12 15:58:58 2000 *************** *** 50,55 **** --- 50,59 ---- #include#endif + #ifdef __FreeBSD__ + #include <floatingpoint.h> + #endif + static int port_number, remote_store, current_users, max_users; SOCKET socket_server; int sockets_ready; *************** *** 585,590 **** --- 589,597 ---- * floating point exceptions. */ jmp_buf this_level, *save_level = errorset_buffer; + #endif + #ifdef __FreeBSD__ + fpsetmask(fpgetmask() & ~FP_X_INV); #endif tty_count = 0; while (YES) *** lisp/csl/linux/Makefile Wed Jun 16 17:48:19 1999 --- lisp/csl/bsd/Makefile Wed Jul 12 15:40:14 2000 *************** *** 22,29 **** # scanned in the link-phase. CC = gcc ! OPTFLAGS = -O3 ! MPIFLAGS = CFLAGS = -c $(OPTFLAGS) -ansi -I$(CSLBASE) $(MPIFLAGS) LIBS = -lm -lc -lcurses --- 22,29 ---- # scanned in the link-phase. CC = gcc ! OPTFLAGS = -O ! MPIFLAGS = -DBSD_LIB CFLAGS = -c $(OPTFLAGS) -ansi -I$(CSLBASE) $(MPIFLAGS) LIBS = -lm -lc -lcurses lisp/csl/bsd/Makefile については、REDUCE の image file を /usr/local/lib/reduce という名前に固定したいとき「-DPUBLIC」を追加、ダイナミックリンクライブラリの違い から起きる面倒を避けたいときは、-static を追加して static link にします。 lisp/csl/cslbase/csl.c のパッチは FreeBSD 固有の浮動小数点演算例外処理の対策 です。最近の FreeBSD はこの扱いが少しへそ曲がりになっています。 5) コンパイル lisp/csl/readme.txt を見ながらコンパイルすれば良いのですが、下記のようになり ます。 # cd lisp/csl/util # sh setexec # cd ../bsd を実行してから # make slowr37 # ../util/boot37 # ../util/profile # cp profile.dat ../csl-c/profile.dat # ../util/c-code37 # make r37 # ../util/full37 かなり長い処理時間がかかるステップがありますが、途中の進行状況を見たいときは # tail -f log/slowr37.log # tail -f log/boot37.log # tail -f log/profile.log # tail -f log/c-code.log # tail -f log/full.log 等と、log ディレクトリの下に作られる log file を監視します。 6) テスト # ./r37 で「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; 等をテストします。これで、とりあえずの動作確認ができますが、もっと完全な検査 をしたいときは、 # ../util/testall 等を使います。 7) バイナリのインストール # mv r37 /usr/local/bin/reduce # mv r37.img /usr/local/bin/reduce.img 以上で、「reduce」コマンドとして起動できるようになります。/usr/bin/reduce と /usr/local/lib/reduce 以外は消去してもかまいません。 Makefile で「-DPUBLIC」が指定されていれば、最後のステップで、r37.img が /usr/local/lib/reduce に移動しますので、 # mv r37 /usr/local/bin/reduce だけ実行してください。
なお、グラフィック表示には「gnuplot」を使うようになっていますので注意して ください。
FreeBSD 4.2 ではコンパイル不能になってしまいました。 原因は /usr/include/curces.h の boot の扱いが、以前の
#define bool charから
typedef char bool;に変わったため、CSL の
typedef int bool;との競合を避けるための r37/lisp/csl/cslbase/fasl.c の細工が効かなくなったこと にあって、とりあえず、下記のようにごまかしましたが、時間が取れたら、 もう少しましな方針を考えてみたいと思います。
1) /usr/include/curses.h を r37/lisp/csl/cslbase/curses_bsd.h にコピーして、 下記の変更を加える *** /usr/include/curses.h Mon Nov 20 20:58:52 2000 --- curses_bsd.h Fri Feb 9 16:12:38 2001 *************** *** 93,99 **** --- 93,103 ---- #if (!defined(__cplusplus) || !1) && (!0) #undef bool + #if 0 /* CLS */ typedef char bool; + #else + #define bool char + #endif #endif #ifdef __cplusplus 2) r37/lisp/csl/cslbase/fasl.c を下記のように変更する *** ORGfasl.c Fri Feb 9 15:45:55 2001 --- fasl.c Fri Feb 9 16:13:49 2001 *************** *** 3007,3015 **** #define bool alternative_bool #ifdef __FreeBSD__ ! #undef bool ! #endif #includeつまり、reduce のコンパイルのときだけ、curses.h を昔の bool 定義に戻している だけです。/* * In fact for the curses-Unix style interface I do not support a mouse, --- 3007,3016 ---- #define bool alternative_bool #ifdef __FreeBSD__ ! #include "curses_bsd.h" ! #else #include + #endif /* * In fact for the curses-Unix style interface I do not support a mouse, ---< cut >---
2004-04 に REDUCE 3.8 (Professional System) というアップデート版が出ましたが、 これを FreeBSD-4.9 にインストールする場合は、 下記のパッチをあてて、トップ・ディレクトリで、
# sh compile.shを実行するだけで済みます。
*** /cdrom/lisp/csl/cslbase/configure Mon Aug 16 20:41:30 2004 --- /var/local/src/r38/lisp/csl/cslbase/configure Sun Aug 29 15:03:20 2004 *************** *** 2114,2119 **** --- 2114,2124 ---- fi LDFLAGS="$LDFLAGS -L/usr/X11R6/$XLL" + case $host in + *-freebsd*) + LDFLAGS="$LDFLAGS -L/usr/X11R6/$XLL -pthread" + ;; + esac XLIBS="-lXext -lX11" ;; esac
FreeBSD-8.3 までは、これでコンパイルできますが、 FreeBSD-9.x/8.4 から /usr/X11R6 がなくなって /usr/local に移動しましたので、 下記のようにパッチします。
*** /cdrom/lisp/csl/cslbase/configure Mon Aug 16 20:41:30 2004 --- /var/local/src/r38/lisp/csl/cslbase/configure Sun Aug 29 15:03:20 2004 *************** *** 2114,2119 **** --- 2114,2124 ---- fi LDFLAGS="$LDFLAGS -L/usr/X11R6/$XLL" + case $host in + *-freebsd*) + LDFLAGS="$LDFLAGS -L/usr/local/$XLL -pthread" + ;; + esac XLIBS="-lXext -lX11" ;; esacコンパイルが終わったら、 lisp/csl/local-build/r38,r38.img の 2 つを /usr/local/bin のコピーすれば、 r38 として起動できます。 r38,r38.img を reduce, reduce.img に rename してもかまいません。
「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
インタネットでは下記のサイトがよくまとまっています。
http://www.reduce-algebra.com/ http://www.uni-koeln.de/REDUCE/ REDUCE ユーザーズマニュアル
念のため、上記の WEB サイトから連絡先を転記しておきます。
Codemist Limited "Alta", Horsecombe Vale Combe Down Bath BA2 5QR England Tel/Fax: +44-225-837430 Electronic Mail: jpff@codemist.tc or jpff@maths.bath.ac.uk
CSL/REDUCE 3.6 をお持ちのかたのために、 昔書いた情報 もしばらく残しておきます。
平林浩一