更新情報

5.3.38 (2009年4月1日) Visual C++ 2008に対応しました。
5.3.37 (2007年2月2日) インタプリタのloadコマンドについて,プリプロセッサの 出力ファイルを削除する情報を正しく表示するようになりました。 Bisonが純粋(再入可能)なパーサーを生成するようにしました。
5.3.36 (2007年2月1日) Visual C++ 2005版でhelpコマンド実行すると,停止する問題を解決しました。
5.3.35 (2006年8月31日) Visual C++ 2005に対応しました。
5.3.34 (2006年6月23日) Ode関数群によるシミュレーション計算で得られるデータの保存間隔に 関する判定条件をより厳しくしました。
5.3.33 (2005年11月30日) kbhit関数のLinuxでの実装方法をselect関数からioctl関数に変更しました。
5.3.32 (2005年11月9日) 虚数単位を「sqrt(-1)」として記述できるよう,「-整数定数」と 「-実数定数」を定数として扱うようにしました。
5.3.31 (2005年10月24日) Linuxカーネル2.6によるリアルタイム機能のAPI変更に対応しました。
5.3.30 (2005年6月9日) Windows版について,VisualC++やBorlandC++などのコンパイラがインストール されていない場合に呼び出されるcppへの引数の渡し方に問題があったので, 修正しました。
5.3.29 (2005年6月7日) Linux版について,IntelとAMDの64ビットCPU(X64アーキテクチャ) に対応しました。
5.3.28 (2005年6月7日) matcが定数文字列に関するコードを生成するとき,文字列オブジェクトを 生成する代りにC言語の文字列を生成するように変更しました。
5.3.27 (2005年2月3日) Linuxカーネル2.6によるリアルタイム機能を実現したリアルタイム制御 パッケージRTPに対応しました。
5.3.26 (2004年12月29日) 行列の成分代入において,メモリ管理の効率化処理を追加しました。
5.3.25 (2004年10月18日) リアルタイム処理中の判別を行う関数rtIsOneline()の名前を, マニュアル(help)中で紹介されている名前rtIsOnLine()に一致させました。 rtIsOnLine関数とrtIsRunning関数の動作が入れ替わって実装されていましたの で,マニュアル通りに動作するよう修正しました。
5.3.24 (2004年6月15日) ソースコードの行の先頭に"#"が現れた場合,スクリプトとして処理を試み, 次にCプリプロセッサが出力した行番号に関する情報として処理を試み, いずれにも該当しない場合,行末までを無視するようにしました。
5.3.23 (2004年5月21日) 行列エディタ内での移動をカーソルキーで行えるようになりました。 エディタを終了するには,ESCキーを2回連続入力するように変更しました。
5.3.22 (2004年4月19日) 多項式行列と有理多項式行列について,配列を引数とする評価(eval)に 誤りがあったので,修正しました。
5.3.21 (2004年4月9日) Solaris-(8|9)(gcc-3.3.x)に対応するための修正を行いました。
5.3.20 (2004年3月31日) Windows版でベル音が鳴るよう (エスケープシーケンスによる方法からWin32APIを使用する方法に変更) に修正しました。
5.3.19 (2004年3月23日) Itanium2(redhat)に対応しました。
5.3.18 (2004年1月7日) 固有分解(eig),特異値分解(svd),シュアー分解(schur), QZ分解(qz)では,計算結果が解に収束しない場合があります。 そこで,次のように計算の状態(flag)を返り値として,返すようにしました。

{D,X,flag} = eig(A)
Matrix D,X;
int flag;

{D,X,flag} = eig(A,B)
Matrix D,X;
int flag;

{U,D,V,flag} = svd(A)
Matrix U,D,V;
Matrix A;
int flag;

{U,T,flag} = schur(A)
Matrix U,T;
Matrix A;
int flag;

{AA,BB,Q,Z,X,flag} = qz(A,B)
CoMatrix AA;
Matrix BB,Q,Z,X;
Matrix A,B;
int flag;

計算が正常に終わった場合, flag == 0
計算が正常に終わらなかった場合,flag != 0
5.3.17 (2003年12月9日) UNIX系のOS(Linux, FreeBSD, Solaris)でmatcを使用するとき, 最適化オプションとデバッグオプションが正しく設定されない問題を 修正しました。
5.3.16 (2003年10月31日) 関数gotoxy()を含むプログラムをコンパイルしたとき,関数への引数が 正しくコードに反映されない問題を修正しました。
5.3.15 (2003年6月11日) リストの成分をまとめて変数に代入するコードをmatcでコンパイルして得られる コード中に定数が埋め込まれないように改良した。
5.3.14 (2003年4月21日) MXデータフォーマットのバージョンを5から6に上げた。 行列成分を書き込む順のデフォルトを列毎から行毎に変更した。
5.3.13 (2003年3月5日) バージョン5.3.9で行った配列型とスカラ型の加算と減算を配列演算子 「.+」と「.-」に関する修正の結果生じたmatcのバグ(coredump)を修正した。
5.3.12 (2003年1月18日) Windows MEで関数 accept() を使用すると,失敗する問題に対処しました。 (岩瀬@電機大さんに感謝)
5.3.11 (2003年1月18日) Borland C++版で数値(実数)を入力すると,文字列から数値に変換されるとき, 単精度で変換される問題を修正したとき(5.3.8),Visual C++版の精度に 影響を与えてしまった問題を修正しました。
5.3.10 (2003年1月10日) Windows ME/2000/XPでは,ソケットディスクリプタの数字が1024以上に なることがあり,その場合,util.h で定義されている MAX_FILE_NUMBER より 値が大きくなるので,ソケットのオープンに失敗します。 そこで,util.h の MAX_FILE_NUMBER を1024から4096に変更しました。 (西村@東芝さんに感謝)
5.3.9 (2003年1月9日) 配列型とスカラ型の加算と減算を配列演算子「.+」と「.-」を用いなくても 通常の加算演算子「+」と減算演算子「-」で計算できるようになりました。
5.3.8 (2003年1月7日) Borland C++版で数値(実数)を入力すると,文字列から数値に変換されるとき, 単精度で変換される問題を修正しました。(西村@東芝さんに感謝)

実シュア分解された結果から複素シュア分解を行う関数rsf2csf()を改良し, 分解の精度が向上しました。
5.3.7 (2002年11月28日) 行列の成分を行毎にソートする関数sort_row()および 行列の成分を列毎にソートする関数sort_col()で複素行列を ソートすると,0x0の指数が返されるバグを修正しました。
5.3.6 (2002年11月22日) QR分解

{Q,R,P} = qr_p(A);

について,行列Pの0であるべき成分が0でない値となるバグを修正しました。
5.3.5 (2002年10月4日) 浮動小数点数演算に関する,IEEE754の規格に従う現在の丸めのモードを 取得する関数を追加しました。

int fpu_round_state(void);
5.3.4 (2002年7月4日) 複素行列の特異値分解を関数svd()で求めると,誤った値が返されるバグを 修正しました。このバグは,5.2.25〜5.3.3に存在します。 なお,実行列の特異値分解には,関係ありません。
5.3.3 (2002年6月22日) Visual C++版およびBorland C++版のmatx(インタプリタ)で,プログラムの 実行中にCtrl-Cを入力しても処理を中断できない問題が見つかりました。 signal()関数で設定された処理が別スレッドで実行されるためです。 とりあえず,Ctrl-Cが入力されると,matx本体を終了するようにしました。 残念ながら、matxのコマンドラインに実行を戻せません。
5.3.2 (2002年5月11日) mgplotに,以下の関数を追加しました。
mgplot_ps()グラフをpsコードで保存
mgplot_psplus()グラフをps plusコードで保存 (gnupot+)
mgplot_eps()グラフをepsコードで保存
mgplot_epsplus()グラフをeps plusコードで保存 (gnupot+)
mgplot_fig()グラフをFIGコードで保存

5.3.1 (2002年2月12日) 共有ライブラリ中の関数を install で登録するとき, 3番目の引数に install("afo.so", "foo", "global")のように "global"を指定することで、ライブラリ中の外部シンボルを 他の共有ライブラリから参照できるように設定できるようになりました。 デフォルトでは、外部シンボルは他の共有ライブラリから参照できません。
5.3.0 (2002年2月10日) gcc を使用する環境で,共有ライブラリの動的読み込みができるようになりました。 共有ライブラリは,MM-ファイルから簡単に作成できます。 MM-ファイルをインタプリタで実行するより、共有ライブラリを作成して 実行する方が,高速に処理できます。 つまり,インタプリタの手軽さとコンパイラの高速処理の両方を合わせもつ 環境ができました。 簡単なゲートウェイ関数を準備することで、いろいろな共有ライブラリ中の 関数をMaTXのインタプリタから呼び出せます。

MM-ファイルafo.mmから共有ライブラリafo.soを作成するには,-so オプションを 次のように使用します。

matc -so -c afo.mm

作成した共有ライブラリをインタプリタに読み込むには,

load "afo.so"

を実行します。ファイルが読み込まれたことは,

which afo

または

what

で確かめられます。

共有ライブラリファイルが読み込まれると,自動的に 関数 afo() がインタプリタに登録され,組み込み関数と同様に使用できます。

1つの共有ライブラリに複数の関数が定義されている場合、関数 install() を用いて,選択的に関数をインタプリタに登録できます。例えば、 ファイル libafo.mm 中で定義されている関数 foo() と bar() をインタ プリタに登録したい場合,共有ライブラリファイル libafo.so を作成した 後で,次のようにします。

install("libafo.so", "foo");
install("libafo.so", "bar");

共有ライブラリへのゲートウェイ関数は「matc -so -mm」で生成される C言語のファイルを参照すれば、簡単に作成できます。
5.2.28 (2002年1月6日) 完全ガンマ関数の値を計算する関数gammac(), 不完全ガンマ関数の値を計算する関数gammai(), 引数の値に応じて(完全|不完全)ガンマ関数の値を計算する関数gammaf(), 誤差関数の値を計算する関数erf(),誤差関数の逆関数の値を計算する関数 inverf()が追加されました。

DJGPP版の開発環境を DJGPP-2.03 に移行しました。
5.2.27 (2001年12月22日) 同時にオープンできるファイルの数を100から1024へ変更しました。 ソケットのオープンに関するチェックを厳しくしました。
5.2.26 (2001年12月21日) 可変個引数をとる関数内でエラーが発生したとき、va_end()を呼び出していない 関数があったので,修正しました。(MaTXライブラリ内部の問題修正)

不整合な大きさの行列を連結しようとしてエラーが発生すると、 動作が不安定になる問題を修正しました。
5.2.25 (2001年12月19日) RtMaTXを用いて複素行列の逆行列などを計算すると、ComplexValueDef() に関するエラーが発生する問題を解決するため 行列ライブラリの中で使用していたComplexValueDef()とComplexValueDestroy() を削除しました。 control/TFinv.mm と control/canon.mm を修正しました。
5.2.24 (2001年11月1日) メモリ管理の仕組みが改良され、メモリの再利用率が上がりました。
5.2.23 (2001年10月30日) 多項式のその次数以上の係数に値を代入すると,自動的に多項式の次数が 増加するようになりました。ただし,自動拡大機能を繰り返し用いると, 処理時間が長くなり、メモリ効率も悪くなるので,各係数に値を代入する場合は, 最大次数の係数から値を代入する方が良いです。
5.2.22 (2001年9月25日) 環境変数 STRING_table_MAX, POLYNOMIAL_table_MAX, COMPLEX_table_MAX, RATIONAL_table_MAX, MATRIX_table_MAX, LIST_table_MAX, によってガーベージコレクション表のサイズを設定しない場合、 ハードウェアやOSによる限界までオブジェクト(行列など)を 登録できるようになりました。たくさんの行列を含む関数の計算時間が 短くなるかもしれません。また,RtMaTXで長いコードを含む関数on_task() が実行可能になります。
5.2.21 (2001年9月24日) RtMaTXのクリティカルセクションの管理を厳しく行うようになりました。
5.2.20 (2001年9月7日) matc に -withlog オプションを指定すると,コンパイル中のエラー メッセージがログファイル MaTX.log (Windows の場合 MaTX_log.txt) に保存されるようになりました。これまでは,コンパイルで生成された 実行ファイルの実行中に発生するエラーメッセージのみがログファイルに 保存されていました。
5.2.19 (2001年9月6日) 環境変数設定のためのメモリバッファが足りなかったため, 環境変数MATXDIRやINCLUDEが長すぎると,プログラムが停止するバグ が修正されました。
5.2.18 (2001年9月6日) オプション -v を指定すると、環境変数の設定状況も表示するように なりました。
5.2.17 (2001年9月5日) Windows版について,Windows NT/2000 のレジストリの読み込みに関する バグが修正され,Visual C++ のインストールパス等が正しく設定される ようになりました。
5.2.16 (2001年8月2日) 行列を型変換関数Polynomial()で多項式に変換するとき、 ゼロ係数を消去するようになりました。
5.2.15 (2001年8月1日) matcにオプション-MMでMM-fileのパスを 指定しても,有効に機能しないバグが修正されました。
5.2.14 (2001年7月28日) 環境変数MATXCCで, matcが呼び出すCコンパイラを指定できるようになりました。
5.2.13 (2001年7月20日) LinuxPPC 2000 に対応しました。 LinuxPPC版の開発では,田島世貴様とアミュレット様 にお世話になりました。感謝致します。
5.2.12 (2001年7月18日) 成分毎の差を求める演算子 .- のオペレータの順が逆になるバグを 修正しました。
5.2.11 (2001年6月6日) matcがCコンパイラに渡す情報を入れるレスポンスファイルmatc.rsp を生成するとき,"matc is generating matc.rsp"というメッセージを 出力するようにしました。
5.2.10 (2001年4月9日) 最高次の係数が1でない複素多項式の根を関数 roots() で求めると, 誤った結果が得られるバグを修正しました。
5.2.9 (2001年3月26日) 定義済みマクロシンボルを無効化するオプション"-U"を追加しました。
5.2.8 (2001年3月18日) オプション -checkarg をつけて実行し,関数内で引数が書き換えられたとき, その引数だけでなく関数の名前も表示されるようになりました。
5.2.7 (2001年3月13日) read <- で0×0の行列をファイルから読み込むと,efree(0)というエラーが 発生する問題を修正しました。
5.2.6 (2001年2月27日) シミュレーション中に過去のデータを参照するための関数 OdeXY() の 機能が拡張されました。

OdeXY()過去の全てのデータ
OdeXY(t)(過去の)時刻tのデータ
OdeXY(t1,t2)(過去の)時刻t1〜t2のデータ

ただし,OdeXY()を多用すると計算時間が長くなり, メモリが大量に消費されます。
5.2.5 (2001年2月18日) 行列データをファイルから

read a << "file.mat"

で読み込むとき,ファイルがMATフォーマット (1行目が「# 行数 列数」で始まる)でないとき,ファイル中のテキストと 同一の行列が生成されるようになりました。例えば
--------------
1 2 3
4 5 6
--------------
という内容のファイルを読み込むと
=== a (  2 x  3) Matrix ===
      ( 1)      ( 2)     ( 3)
( 1) 1.00000000E+00 2.00000000E+00 3.00000000E+00
( 2) 4.00000000E+00 5.00000000E+00 6.00000000E+00

が生成され
--------------
# 3 2
1 2 3
4 5 6
--------------
という内容のファイルを読み込むと
=== a (  3 x  2) Matrix ===
      ( 1)     ( 2)
( 1) 1.00000000E+00 4.00000000E+00
( 2) 2.00000000E+00 5.00000000E+00
( 3) 3.00000000E+00 6.00000000E+00

が生成されます。ただし,MATフォーマットでない ファイルの読み込みには,多少時間がかかります。特別な理由が無い限り, MATフォーマットを使用して下さい。
5.2.4 (2001年2月15日) Windows 版について,エラーメッセージや警告メッセージを出力する ファイルの名前がMaTX.logから MaTX_log.txtに変更されました。
5.2.3 (2001年2月5日) 関数fread()でデータを読み込むとき,1個もデータを読み込まずに, ファイルの終り(EOF)に達した場合は,警告メッセージを表示しない ようになりました。
5.2.2 (2001年2月2日) Borland C++ 版で,cpp32 の代わりに cpp を呼び出したとき, 発生するエラー「Can't open srcfile」に関するバグを修正しました。

Windows版に収録しているgnuplot を gnuplot-3.7+1.2.0 に更新しました。

デモ(demo.mm)に3次元プロットの例を追加しました。
5.2.1 (2001年2月1日) appendlist()を実行すると発生する「core dump」あるいは 「不正な処理をしました」に関するバグを修正しました。
5.2.0 (2001年1月30日) ソケットを 用いたネットワーク通信ができるようになりました。 UNIXでもWindowsでも同じ操作で,簡単にネットワーク通信ができます。 基本的には,C言語のソケットプログラミングと同じ手順です。 tcp_demo.mmudp_demo.mmhttp_get.mmが参考になります。

load "http_get.mm"
http_get("http://www.matx.org/MaTX.html")

で MaTX の Web ページのファイルを入手できます。
5.1.20 (2001年1月18日) 3次元空間に点または線をプロットする関数 mgplot3()と 3次元空間に平面を描く関数 mgplot3_surface()を追加しました。

5.1.19 (2001年1月16日) 一般化固有値問題を解く関数eig(A,B)とQZ分解をする関数qz(A,B) に非正則な行列Bを与えたとき,正しい固有値を返すが,誤った固有ベクトル を返すバグを修正しました。
5.1.18 (2001年1月6日) Visual C++ のコンパイラへのオプション -TC を -Tc に 変更しました。これは,Visual C++ 4.0 に対応するための変更です。
5.1.17 (2000年12月8日) Ode関数に渡す引数について,diff_eqs関数が行列型で, link_eqs関数を省略したとき,発生する問題を修正しました。
5.1.16 (2000年12月6日) パイプ(popen)による双方向通信に関するバグを修正しました。
5.1.15 (2000年11月19日) 浮動小数点数演算において,IEEE754の規格に従う丸めのモードを 指定する関数を追加しました。

void fpu_round_down(void); 下向きの丸め
void fpu_round_near(void); 最近点への丸め
void fpu_round_up(void); 上向きの丸め
void fpu_round_zero(void); ゼロへの丸め(切り捨て)
5.1.14 (2000年11月12日) 行列 A に対して,

norm(A,Inf) で最大ノルム
norm(A,"fro") でフロベニウスノルム

を計算できるようになりました。
5.1.13 (2000年11月11日) save コマンドに関する matc のバグを修正しました。
5.1.12 (2000年11月10日) フリーなコンパイラ Borland C++ 5.5.1 に対応しました。

Borland C++ 5.5.1 は, インプライズ社のWebページから入手できます。

また,C マガジン (2000年5月号)の付録CD-ROMに収録されています。 (インストール方法も説明されています)

「Borland C++ Compiler 5.5 FAQ」に詳しい説明があります。
5.1.11.1 (2000年11月9日) orth.mm に非正方の行列を引数に与えるエラーとなる問題を修正しました。 以下のファイルに置き換えてください。

MaTX/inputs/matrix/orth.mm
5.1.11 (2000年11月4日) Ode関数群関係のプロトタイプを修正しました。
5.1.10 (2000年10月31日) 関数 Z(), I(), ONE() に適当でない引数を渡すと,プログラムが暴走 する問題を修正しました。

リファレンスマニュアルとユーザーズマニュアルのhtmlファイルを 参照する関数 void man() を追加しました。
5.1.9 (2000年10月28日) mgplotが起動する gnuplot へのオプションを環境変数 MGPLOT_OPTIONSで 設定できるようになりました。オプションを設定する関数 mgplot_options を併用すると,両方のオプションが gnuplot へ渡されます。
5.1.8 (2000年10月27日) MaTXのソースコードの関数定義をK&R型からANSI型に変更しました。
5.1.7 (2000年10月24日) 関数呼び出しに関連するメモリリークの問題を解決しました。

野中@武蔵工業大学さんの提案で,MaTXに関連するファイル (.mm ファイルと .mat ファイル)にいくつかの関連付けを行いました。

この機能を使えば,DOS窓を開いて,コマンドラインでコマンドを 入力しなくても,MaTXのプログラミングができます。

関連付けされる機能は以下の通りです。

  1. .mm ファイル の右クリックで,以下のメニューが選択できます。

    「matxで実行」 (これはダブルクリックと同じ)
    「エディタで編集」 (環境変数 MATXEDITOR で指定されたエディタが起動)
    「matcでコンパイル」 (1個のファイルしかコンパイルできません)
  2. .mat ファイル の右クリックで,以下のメニューが選択できます。

    「matedで編集」 (これはダブルクリックと同じ)
    「エディタで編集」 (環境変数 MATXEDITOR で指定されたエディタが起動)

    「エディタので編集」を選択したとき,DOS窓がオープンされる場合があり ます。その場合は,DOS窓のプロパティの「プログラム」の設定で

    (a) 実行時の大きさ --->最小化の状態
    (b) プログラム終了時にウィンドウを閉じる---> チェック

    のように設定してください。

また,以下の変更を行いました。

  1. スタートメニューからmatxを実行した場合の,作業フォルダは 環境変数 MATXHOME で指定されたフォルダになります。 デフォルトの値は以下の通りです。
        Windows95/98:
          MATXHOME=\My Documents
    
        WindowsNT:
          MATXHOME=%USERPROFILE%\Personal
    
  2. インストール時,デスクトップに、"matx"へのショートカットが 置かれます。

    ※アンインストールすると,このショートカットは削除されます。
5.1.6.3 (2000年10月23日) Windows版に含まれる bench.mm の文字コードが EUC となっていたので,SJIS に変更しました。
5.1.6.2 (2000年10月23日) MaTX/inputs/control/lyap.mm の計算に誤りがありました。 バージョン 5.1.0 以降に含まれる lyap.mm を以下の修正版に置き換えてくだ さい。

MaTX/inputs/control/lyap.mm
5.1.6.1 (2000年10月22日) bench.mm に全角のスペースが含まれていたので削除しました。
5.1.6 (2000年10月19日) fread がデータの読込みに失敗すると,警告を出力するようになりまし た。
5.1.5 (2000年10月4日) VC++版について,環境変数 MATXCPP に 'cl' が設定されている場合は, cl を Cプリプロセッサとして使用するようにしました。MaTX本に書かれてい る仕様に合わせました。(5.1.3で生じた仕様とのギャップを修正しました。)
5.1.4 (2000年10月2日) 複素数の代入文をmatcでコンパイルすると正しいコードが生成されない 問題を修正しました。
5.1.3 (2000年9月15日) WindowsのVC++版のデフォルトのCプリプロセッサをclにしました。
5.1.2 (2000年9月14日) Ode関数群の引数として Matrix 型の diff_eqs や link_eqs を渡すと, 関数の実行後に,無名シンボルが残る問題を修正しました。
5.1.1 (2000年8月30日) WindowsのVC++版でCプリプロセッサとして,clを正しく 呼び出せるようになりました。
5.1.0 (2000年8月29日) ディレクトリ MaTX/inputs 以下のMM-ファイルを大幅に整理し, バージョンを5.1.0に変更しました。
5.0.27 (2000年8月22日) 関数diag()に正方でない行列も渡せるようになりました。
5.0.26 (2000年8月4日) 文字列中の文字を位置を後ろから調べる関数strrchr()を追加 しました。
5.0.25 (2000年7月26日) 関数isinf()がmatcで,正しく動作しないバグを修正しました。
5.0.24 (2000年7月22日) Cプリプロセッサが出力した付加情報行の次の行で parse エラーが 発生すると,付加情報行もいっしょに表示されるバグを修正しました。

matc のインタラクティブモードで,tab のコードが含まれると 動作がおかしくなる問題を修正しました。
5.0.23 (2000年7月21日) 実行列の成分に,(複素数|多項式|有理多項式)を代入できるように なりました。また,複素行列への(多項式|有理多項式)の代入, 多項式行列への有理多項式の代入もできるようになりました。 なお,実行列のある成分に(複素数|多項式|有理多項式)を代入すると, その行列は(複素|多項式|有理多項式)行列に変換されます。

A = Z(2,2);
s = Polynomial("s");
A(1,1) = 1;         // A は実行列
A(1,2) = (0,1);       // A は複素行列に変換される
A(2,1) = s;         // A は多項式行列に変換される
A(2,2) = 1/s;        // A は有理多項式行列に変換される
5.0.22 (2000年7月20日) MaTXに関連するファイルを 1 個も指定しないで matc を起動すると, エラーメッセージを出力し,終了するようになりました。 ただし,引数が 0 個のとき,プロンプトを出力し, インタラクティブモードで起動します。
5.0.21 (2000年7月19日) (行列|配列|指数)の出力フォーマットを改良し, 型(行列|配列|指数)を表示するようになりました。
5.0.20 (2000年7月2日) マイナス無限大が -Inf と表示されるようになりました。
5.0.19 (2000年6月30日) mgplot内部の文字列管理を改良し,mgplotの高速化を行いました。
5.0.18 (2000年6月29日) インタープリタ matx において,関数 error() の引数に 長さが0の文字列を渡しても,プログラムが停止するバグを修正しました。
5.0.17 (2000年6月29日) インタープリタ matx において,関数 error() で プログラムを停止できないバグを修正しました。
5.0.16 (2000年6月29日) ブロック行列の参照 AA(区間,整数,ピース行列)とAA(整数,区間,ピース行列) で, 正しい大きさの行列が得られないバグを修正しました。
5.0.15 (2000年6月28日) LaTeX ライクな文字や日本語をラベルとして含むグラフをポスト スクリプトファイルに出力する関数 mgplot_psplus()を追加しました。 (gnuplot+ の機能を用いる)
5.0.14 (2000年6月26日) 行列 A を

read A <- "A.mx";

で読み込むコード含むファイルを matc でコンパイルすると,

file.c:123: `MAT_T' undeclared (first use in this function)

というエラーが発生するバグを修正しました。
5.0.13 (2000年6月23日) 行列 A を

print A -> "A.mx";

で保存するコード含むファイルを matc でコンパイルすると,

file.c:123: `MAT_T' undeclared (first use in this function)

というエラーが発生するバグを修正しました。
5.0.12 (2000年6月4日) fopen()のモードに文字 b を付けると, 「テキスト」ではなく「バイナリ」モードでファイルをオープン できるようになりました。

【例題】
5 個の int 型のバイナリデータを読み込む。

fd = fopen("data", "rb");
B = fread(fd, 5, "int");
fclose(fd);

行列 A を int 型のバイナリデータとして保存する。

A = [1 2 3 4 5];
fd = fopen("data", "wb");
fwrite(fd, A, "int");
fclose(fd);

5.0.11b (2000年5月21日) fsolve()で連立非線形方程式を解くと

pm(2x1)((1x2)) : Index is out of range in MatGetVecSubMatrix(). Error was found in neconest() from nemodel() from fsolve() from main().

のようなエラーが発生するバグを修正しました。具体的には, 関数 neconest() で使用するベクトル pm の大きさを考慮するように しました。 以下のファイルを修正版に置き換えてください。

MaTX/inputs/matrix/fsolve.mm
5.0.11a (2000年5月21日) gammac()の引数が実数のとき,大きな誤差が生じる。

というバグを修正しました。これは,実数で割り算をすべきなのに 整数で割り算をしていた箇所があったためです。 以下のファイルを修正版に置き換えてください。

MaTX/inputs/matrix/gammac.mm
5.0.11 (2000年5月7日) 行列のメモリ管理に関するバグを修正しました。

行列の計算中に core dump する場合は,このバージョンをお試し下さい。
5.0.10 (2000年5月3日) 関数 error() を引数無しで呼び出すと動作が おかしくなるバグを修正しました。
5.0.9a (2000年3月22日) fsolve.mmの例題を実行すると,

"file.mm", nelnsrch(List), Incorrect arguments Error was found in fsolve().

というエラーが発生するバグを修正しました。これは, fsolve から呼ばれる nelnsrch の呼び出しの時, btrack という行列が未定義なところから起きていたからです。 以下のファイルを修正版に置き換えてください。

MaTX/inputs/matrix/fsolve.mm
5.0.9 (2000年3月18日) 複素数型の関数を定義すると,

"func(Undefine)", Redeclaration of function (Class)

というエラーが発生するバグを修正しました。これは, ダイナミックリンク導入準備で混入したバグであり, ver. 5.0.7 と ver. 5.0.8 に存在します。
5.0.8 (2000年3月15日) Windowsで,mgplotが環境変数MATXGNUPLOTを参照する代りに gnuplotを呼び出すためのラッパーpgnuplotが環境変数 MATXGNUPLOTを参照するように変更しました。 以下のファイルを修正版に置き換えてください。

MaTX/bin/pgnuplot.exe
MaTX/inputs/graph/mgplot.mm
5.0.7 (2000年3月14日) 相関係数を求める関数corrcoef_col()とcorrcoef_row() が正しい結果を返すよう修正しました。 以下のファイルを修正版に置き換えてください。

(Windows用)
MaTX/inputs/matrix/corrcoef.mm
MaTX/inputs/ja/matrix/corrcoef.mm

(Unix用)
MaTX/inputs/matrix/corrcoef.mm
MaTX/inputs/ja/matrix/corrcoef.mm

標準偏差を求める関数 std(), std_col(), std_row() について,データの個数 N ではなく,N-1 で平均偏差の和を 割るよう修正しました。標本分散から不偏分散に変更しました。
5.0.6 (2000年2月19日) ヘッダファイルのディレクトリを指定するオプション -MM をWindows版で指定したとき,ロングファイル名 からショートファイル名への変換が正しくできない 場合があったので修正しました。

大きな行列などを作成しようとしてメモリが足り 無い場合でも,プログラムを終了せず,エラー リカバリーするようになりました。
5.0.5 (2000年1月28日) ファイルを削除する関数 remove() とファイルの名前を 変更する関数 rename() を追加しました。 ディレクトリを作成する関数 mkdir(),ディレクトリを 削除する関数 rmdir() を追加し,ディレクトリを変更する コマンド chdir を関数 chdir() に変更しました。 mgplot.mmのsystem("rm " + file)をremove()を使うよう 修正しました。データファイルの削除が高速化されたはず?
5.0.4 (2000年1月25日) ユーティリティ関数の名前を統一するため組み込み関数の 内部関数の名前をmatx_name()からfunc_name()に変更しました。
5.0.3 (2000年1月18日) (VC++版) Windows NT で一般ユーザがレジストリにアクセス できるようにするため,レジストリをオープンする際の lpClassをKEY_ALL_ACCESSからKEY_QUERY_VALUEに変更しました。
5.0.2 (2000年1月18日) DJGPP版の開発環境を DJGPP-2.02 に移行しました。
5.0.1 (2000年1月14日) Visual C++ 6.0に対応。matxとmatcのバージョンを統一。 バージョン番号を3桁で表すことにしました。 Solaris版のパッケージのインストール時に大量の警告が出る問題を 解決しました。
5.0 (2000年1月6日) MaTX本の発売に合わせて,バージョンを5.0としました。