次のページ 前のページ 目次へ

31. bugs

ベッセル(bessel)関数は複素数引数には対応していません.

ガンマ(gamma)関数は複素数引数には対応していません.

Sun OS (SunOS Sys4-3.2) の stdio ライブラリにはバグがあります. printf の "%g" が時々不正確な表示を行います(例: "2" となるべきところ を 200000.0 と表示する).これにより,Sun4 上の GNUPLOT では,座標軸の 刻の見出しが不正確になる場合があります.回避方法としては,データを定 数倍する方法と `set format` コマンドを使って刻の書式指定を "%7.0f" な どに変更する方法があります.この不具合は SunOS 4.0 では修正されている ようです.

バグがもう1つ: SunOS 4.0 で動いている Sun3 および,Sys4-3.2, SunOS 4.0 で動いている Sun4 において,'scanf' ルーチンが "00 12" という文字 列を "%f %f" で読み込む際に解析ミスを起こし,0, 12 と読み込むべきとこ ろを 0, 0 と読み込みます.これがデータ入力に影響を及ぼします.もしも データファイル中の x 座標値がゼロであるときにそれが '00', '000' など と表記されていると誤った y 座標値を読み込んでしまいます.データファイ ルを確認するか SunOS をバージョンアップするかして下さい.この不具合 は SunOS 4.1.1 では修正されているようです.

Microsoft C 5.1 では,printf の %g に関連してひどいバグがあります. "%.2g", "%.1g", "%.0g", "%.g" の中のいずれを使った場合,printf 関数は 1e-4 から 1e-1 の範囲にある数値を不正確に表示します.%f を使って %e の書式で出力されるべき数値を出力すると,小数点の後ろにつくゼロの数が おかしくなるという現象があります.

この不具合を回避するためには, %e や %f を明示的に指定して下さい.

Microsoft C でコンパイルされた GNUPLOT はテストに使われた2つの VGA ディスプレイで正しく動作しませんでした.Microsoft C のグラフィックラ イブラリを使うために CGA, EGA, VGA の各ドライバを書きなおす必要がある でしょう.Boland C++ でコンパイルされた GNUPLOT は Turbo C グラフィック ライブラリを使っていますが,こちらは VGA ディスプレイで正常に動作して います.

VAX/VMS 4.7 C compiler 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 compiler release 3.0 は release 2.4 に比べて %g の実装 状況が若干ながらよくなっています.末尾の小数点は取り除かれるようにな りました.しかし %g の指数表記での末尾のゼロは以前として残ります.

ULTRIX X11R3 には X11 用のドライバが全てのグラフをいつまでも表示し続 けるという現象を起こすバグがあります.このバグは DEC の X11R4 のリリー スで修正されたようなので,ULTRIX の新しいリリースではこのような不具合 は生じないようです.古いバージョンを持つサイトは,X11 ライブラリのアッ プデートから行う必要があります(DEC もしくは直接 MIT から).他に, x11.trm というファイルをコンパイルする際に,ULTRIX_KLUDGE を define するという回避方法もありますが,これはあまりお勧めできません.

NeXT OS 2.0 では定数 HUGE が不正な値に設定されています.HUGE は plot.h において 1e38 に設定されているべきです.この不具合は NeXT OS のバージョン 2.1 では修正されています.

HP プロッタの旧いモデルにはページ排出コマンド 'PG' が実装されていない ものがあります.現在の HPGL ドライバは HPGL_reset 中でこのコマンドを 使用しています.これらの旧モデルのために 'PG' コマンドを使わないよう にする必要があるかも知れません.現在の PCL5 ドライバは,HPGL/2 をグラ フィックだけでなくテキストにも使用しています.これはスケーラブルな PCL フォントを使用するように変更する必要があります.

Atari 版では,(`/dev/lp` を出力フェアルとして) 直接プリンタへ出力を 送ることができません.なぜなら,バイナリ出力において,復帰文字(CR)が 改行文字(LF)に付け足されてしまうからです.別の方法として,出力をファイルに 書き出して,後でシェルコマンドを使ってそれをプリンタにコピーして下さい.

バグが見つかったら bug-gnuplot@dartmouth.edu までご連絡下さい.


次のページ 前のページ 目次へ