更新情報

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としました。