next up previous contents
Next: この文書について... Up: 4 Bugs Previous: 4 Bugs

39 Old_bugs

古い Sun の OS (SunOS Sys4-3.2) には、標準入出力 (stdio) ライブラリに バグがあります。'printf' の書式 "%g" は時々正しくない表示を行ないます (例えば "2" を 200000.0 と表示する)。よって、目盛りの見出しは、Sun4 上 の gnuplot では不正になる場合があります。回避方法としては、データの スケール変換 (定数倍する) を行なうこと、あるいはコマンド set format で目盛りの見出しの書式を "%7.0f" などの適当な物に変えることなどがあり ます。これは SunOS 4.0 では修正されているようです。

他のバグ: Sun3 上の SunOS 4.0, Sun4 上の Sys4-3.2 と SunOS 4.0 で、 'sscanf' ルーチンが、書式 "%f %f""00 12" を不正に解釈し、0 と 12 ではなく、0 と 0 のように読んでしまいます。これはデータの入力に影響を 与えます。もし、データファイルが x 座標として '00' や '000' のように書 かれたゼロを含んでいる場合、y の値は不正なものとなるでしょう。データフ ァイルをチェックするか SunOS をバージョンアップしてください。これは SunOS 4.1.1 では修正されているようです。

Sun は、大きな x に対する exp(-x) の計算で桁溢れを起こすようで、よって gnuplot は未定義値を取得することになります。一つの回避策は、ユーザ定 義関数として e(x) = x$<$-500 ? 0 : exp(x) のようなものを使うことです。こ れは、例えばガウス関数 (exp(-x*x)) の描画に影響を与えます。x*x は非常 に早く大きくなるからです。

Microsoft C 5.1 では 'printf' の %g 書式に関するひどいバグがあります。 "%.2g", "%.1g", "%.0g", "%.g" のような書式を使うと、'printf' は 1e-4 から 1e-1 の間の不正な数値を表示するでしょう。%e の書式で表示されるべ き数値は、 %f では小数点の後に間違った数のゼロがついた不正な数値になり ます。この問題を回避するには、%e や %f の書式を明示的に使用してくださ い。

Microsoft C でコンパイルされた gnuplot は、テストでは 2 つの VGA デ ィスプレイで正しく動作しませんでした。多分 CGA, EGA, VGA ドライバは Microsoft C グラフィックライブラリを使うように書き直すべきでしょう。 Borland C++ でコンパイルされた gnuplot は Turbo C グラフィックドライ バを使用し、これは VGA ディスプレイでちゃんと動作します。

VAX/VMS 4.7 C コンパイラ (release 2.4) の 'printf' の書式 %g の実装は 貧弱です。数は数値としては正しく表示されますが、要求した書式でないもの になり得ます。K&R 第 2 版には、書式 %g は、指数部が -4 より小さい場合、 あるいは指定精度以上になる場合は %e を使う、と書いてあります。しかし VAX は指数部が -1 より小さい場合に %e を使います。VAX では、1 より小さ い数に対して、%e と %f のどちらを使うのかを決定するときに精度が評価さ れていないようです。この問題を回避するには、%e, %f を明示的に使ってく ださい。VAX C 2.4 のリリースノートより: e,E,f,F,g,G の結果は常に小数点 を含みます。g と G に対しては、末尾のゼロは取り除かれません。

VAX/VMS 5.2 C コンパイラ (release 3.0) は release 2.4 よりも多少ましな 書式 %g の実装を持ちますが、さほどではありません。末尾の小数点は取り除 かれるようになりましたが、末尾のゼロは相変わらず %g の指数表記の数から は取り除かれていません。

これらの問題はコンパイラの問題ではなく、実際にはライブラリの問題です。 よって、DEC コンパイラ、または他のもの (例えば最新の gcc) を使って gnuplot をコンパイルしてももこの問題は起こるでしょう。

ULTRIX X11R3 は、X11 ドライバがグラフを "一つおき" に表示する、という ことを引き起こすバグがあります。このバグは、DEC の X11R4 では修正され たようで、新しいリリースの ULTRIX ではこの問題を起こさないようです。古 いサイトでの解決策は、X11 ライブラリをバージョンアップする (DEC から、 あるいは MIT から直接) か、または x11.trm ファイルのコンパイル時に ULTRIX_KLUDGE を定義してください。しかし、kludge は理想的な回避策では ないことに注意してください。

NeXT OS 2.0 では、定数 HUGE が不正な値に定義されています。HUGE は plot.h で 1e38 にセットされるのが正しいです。このエラーは NeXT OS の バージョン 2.1 では修正されています。

HP プロッタの古いモデルの中にはページの排出コマンド 'PG' を持たないも のがあります。現在の HPGL ドライバはこのコマンドを HPGL_reset で使用し ていますが、そのようなプロッタには、このコマンドを取り除く必要があるで しょう。現在の PCL5 ドライバは、グラフィックと同様にテキストにも HPGL/2 を使用しています。これはスケーラブル PCL フォントを使うように修 正されるべきでしょう。

Atari 版では、プリンタに直接出力を送れません (出力ファイルを /dev/lp としては)。それはバイナリ出力の LF (改行) に CR (復帰) が追加されるか らです。回避策としては、出力をファイルに書き出し、それをその後でシェル コマンドを使ってプリンタにコピーしてください。

AIX 4 では、データファイル中の文字 'NaNq' は、内部の '未定義' フラグと しては処理されず、内部の特殊な 非数値 として保存されてしまいます。回 避するには set missing 'NaNq' を使ってください。

リリース後のバグの最新のリストは以下の WWW ページにあります:

     http://www.cs.dartmouth.edu/gnuplot_info.html

バグがあったら bug-gnuplot@dartmouth.edu に報告してください。


next up previous contents
Next: この文書について... Up: 4 Bugs Previous: 4 Bugs
Shigeharu TAKENO
2003年 10月 21日