Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all bug

名称

       dc - 任意精度の計算機

書式

       dc [-V] [--version] [-h] [--help]
          [-e scriptexpression] [--expression=scriptexpression]
          [-f scriptfile] [--file=scriptfile]
          [file ...]

解説

       dc は、逆ポーランド形式の無限精度の計算が行える卓上計算機です。 この電卓は、定義やマクロ呼
       び出しも行えます。 普通、dc は標準入力から読み込みます。  コマンドライン引数が与えられた時
       は、それはファイル名となり、  dc  はそのファイルを読み込み、ファイルの内容を実行した後で、
       標準入力から入力を取ります。  通常の出力はすべて標準出力へ、エラー出力はすべて標準エラー出
       力へ 送られます。

       逆ポーランド記法計算機は、数字をスタックに保存します。  数字を入力すると、それをスタックに
       積み上げます。 計算操作は、引数をスタックから取り出し、結果をスタックに積み上げます。

       数字を dc に入力するためには、数字 (小数点が有っても構いません) を入力します。  指数表現は
       サポートされていません。    負の数字を入力するためには、``_''   で始まる数字を入力します。
       ``-'' は減算の二項演算子として使われているので、 このために利用することはできません。 引き
       続いて   2  つの数字を入力するためには、あいだに空白文字か改行文字を  入力します。  これら
       は、コマンドとしての意味はありません。

オプション

       dc は、次のコマンドラインオプション付きで起動可能です:

       -V

       --version
              実行される dc のバージョンと著作権情報を表示し、終了します。

       -h

       --help これらのコマンドラインオプションを短くまとめたメッセージと   バグ報告アドレスを表示
              し、終了します。

       -e script

       --expression=script
              script 中のコマンドを、入力処理中に実行するコマンド集合に追加します。

       -f script-file

       --file=script-file
              ファイル script-file 中のコマンドを、入力処理中に実行するコマンド集合に追加します。

       上記オプションの処理後にコマンドラインパラメータが残った場合、  これらのコマンドラインパラ
       メータは処理対象の入力ファイル名として 解釈されます。 ファイル名 -  は、標準入力ストリーム
       を指します。 ファイル名を指定しないと、標準入力が処理されます。

表示コマンド

       p      スタックを変更することなく、スタックの先頭の値を表示します。 改行文字が、値の後に表
              示されます。

       n      スタックの先頭の値を表示し、スタックから取り出します。 改行文字は、後に表示されませ
              ん。

       P      スタックの先頭の値をスタックから取り出します。 値が文字列の場合、末尾の改行を付けず
              に、単に表示します。   そうでない場合、これは数値であり、数値の絶対値の整数部分が、
              "基数 (UCHAR_MAX+1)" のバイトストリームとして表示されます。 ここで (UCHAR_MAX+1) は
              256  を仮定すると  (ほとんどのマシンでは  8  ビットバイトなので)、文字列  KSK  0k1/
              [_1*]sx d0>x [256~aPd0<x]dsxx sxLKk もまたこの機能を実現しますが、 x レジスタを潰し
              てしまう副作用が違います。

       f      変更することなく、 スタックの内容全部を表示します。  これは、忘れてしまった時に使っ
              たり、あるコマンドがどのような効果を   もたらすのかを知りたい時には、良いコマンドで
              す。

計算

       +      2  つの値をスタックから取り出し、加算を行い、結果をスタックに積みます。  結果の精度
              は、引数の値にだけによって決まり、十分正確です。

       -      2  つの値を取り出し、最初に取り出した値を  2  番目に取り出した値から 引きます。その
              後、結果をスタックに積みます。

       *      2  つの値を取り出し、かけ算を行い、結果をスタックに積みます。  結果の小数の桁数は、
              現在の精度値 (以下参照) と 2 つの引数の小数の桁数に依存します。

       /      2 つの値を取り出し、2 番目に取り出した値を最初に取り出した値で割り、 結果をスタック
              に積みます。 小数の桁数は、精度値によって指定されます。

       %      2 つの値を取り出し、  /  で計算された割算の余りを計算し、結果をスタックに積みます。
              計算される値は、文字列 Sd dld/ Ld*- で計算される値と同じです。

       ~      2 つの値を取り出し、2 番目に取り出した値を最初に取り出した値で割り、 その商を先にス
              タックに積み、続いて余りを積みます。 割算に使われる小数の桁数は、精度値によって指定
              されます。  (エラーチェック機構はわずかに異なりますが、文字列 SdSn lnld/ LnLd% もこ
              の機能と同様に働くでしょう。)

       ^      2 つの値を取り出し、最初に取り出した値を指数とし、 2 つめの値を底として指数計算しま
              す。 指数の小数点以下は無視されます。 精度値は、結果の小数の桁数を指定します。

       |      3 つの値を取り出し、べき剰余 (modular exponentiation) を計算します。 最初に取り出し
              た値は法 (reduction modulus) (この値は 0 以外の整数で なくてはいけません。) 、2  番
              目に取り出した値は指数 (この値は 非負の数字でなければならず、小数点以下は無視されま
              す。)、 3 番目に取り出した値は累乗される底として用いられます。 これは整数であるべき
              です。  小さな整数に関しては、この機能は文字列 Sm lble^ Lm% のように 働きます。しか
              し、^ を使う場合と違い、このコマンドは指数が 非常に大きくても働くはずです。

       v      1 つの値を取り出し、平方根を求め、結果をスタックに積みます。 精度値は、結果の小数の
              桁数を指定します。

       ほとんどの演算子は、``精度値''  に影響を受けます。 精度値は、 k コマンドで設定することがで
       きます。 デフォルトの精度値は 0 です。これは、足し算と引き算を除くすべての算術は  整数値の
       結果を出すことを意味しています。

スタックの制御

       c      スタックを消去し、空にします。

       d      スタック先頭の値を複製し、スタックに積みます。 したがって、``4d*p'' は 4 の自乗を計
              算し、表示します。

       r      スタック先頭の値と 2 番目の値の順番を入れ換えます。(交換します。)

レジスタ

       dc は、少なくとも 256 個のメモリレジスタを持っています。 各レジスタは、1  文字の名前を持っ
       ています。 数字や文字列をレジスタに保存し、後で取り出すことができます。

       sr     スタックの先頭から値を取り出し、レジスタ r に保存します。

       lr     レジスタ  r  の値を複製し、それをスタックに積みます。 これは、 r の内容を変更しませ
              ん。

       各レジスタは、それ自身のスタックを持っています。  現在のレジスタ値は、レジスタスタックの先
       頭です。

       Sr     (メイン) スタックの先頭の値を取り出し、レジスタ r のスタックにそれを積みます。 レジ
              スタの以前の値は、アクセスできなくなります。

       Lr     レジスタ r のスタックの先頭の値を取り出し、それをメインスタックに積みます。  レジス
              タ r のスタックにあった以前の値がもしあれば、 lr コマンドを使ってアクセス可能となり
              ます。

パラメータ

       dc は、その操作を制御するための 3 つのパラメータを持っています: 精度と、入力の基数、出力の
       基数です。 精度は、ほとんどの算術操作の結果で保存される小数の桁数を指定します。 入力の基数
       は、入力された数字の解釈を制御します。  入力されたすべての数字はこの基数をつかっているとさ
       れます。 出力の基数は、表示する数字で使われます。

       入力と出力の基数は、分離されたパラメータです。  等しく設定しなくてもいいですが、これは便利
       だったり紛らわしかったりします。 入力の基数は 2 から 16 の範囲でなければなりません。  出力
       の基数は最低 2 でなければなりません。 精度は 0 以上でなければなりません。 精度は、現在の入
       力基数や出力基数に関係なく、いつも 10 進の桁数で決められます。

       i      スタックの先頭から値を取り出し、入力基数を設定するために使います。

       o      スタックの先頭から値を取り出し、出力基数を設定するために使います。

       k      スタックの先頭から値を取り出し、精度を設定するために使います。

       I      現在の入力基数をスタックに積みます。

       O      現在の出力基数をスタックに積みます。

       K      現在の精度をスタックに積みます。

文字列

       dc  は、数と同じように文字列を操作できます。  文字列に対してできる唯一のことは、それを表示
       し、マクロとして  実行することです。 マクロとは、dc コマンドとして実行される文字列の内容の
       ことです。 すべてのレジスタとスタックは文字列を保存できます。 そして、dc  はいつも、与えら
       れたデータが文字列か数字かを 知っています。 算術操作のようないくつかのコマンドは、数を必要
       としており、 文字列が与えられた場合はエラーが表示されます。 他のコマンドは、数字か文字列を
       受け入れることができます。 例えば、 p コマンドは、両方を受け付けることができ、データをその
       型に応じて 表示します。

       [characters]
              (左右の釣合のとれた、 [] で囲まれた )  characters  という文字列を作り、それをス
              タックに積みます。  例えば、 [foo]P は文字列 foo を表示します (が、改行文字は表示し
              ません)。

       a      スタック先頭の値を取り出し、それが数字なら、その低位バイトを 文字列に変換し、スタッ
              クに積みます。文字列なら、その最初の文字が スタックに積み戻されます。

       x      スタックから値を取り出し、マクロとして実行します。 普通、これは文字列です。数の場合
              は、単純にその値がスタックに 積み戻されます。 例えば、 [1p]x は、マクロ 1p を実行し
              ます。 1p は、 1 をスタックに積み、別の行に 1 を表示します。

       マクロは、しばしばレジスタにも保存されます。 [1p]sa は、 1 を表示するためのマクロを レジス
       タ a に保存します。 lax でこのマクロは実行できます。

       >r     スタックから 2 つの値を取り出し、それらを数と仮定して比較し、  もともとのスタックの
              先頭が大きい場合、レジスタ r の内容を実行します。 したがって、 1 2>a は、レジスタ a
              の内容を実行しますが、 2 1>a では実行しません。

       !>r    似ていますが、もともとのスタックの先頭が 2 番目の値よりも大きくない場合 (2 番目の値
              以下である場合)、マクロを起動します。

       <r     似ていますが、もともとのスタックの先頭が小さい場合にマクロを実行します。

       !<r    似ていますが、もともとのスタックの先頭が 2 番目の値よりも小さくない場合 (2 番目の値
              以上である場合)、マクロを起動します。

       =r     似ていますが、2 つの取り出された値が等しい場合にマクロが実行されます。

       !=r    似ていますが、2 つの取り出された値が等しくない場合にマクロが実行されます。

       ?      端末から行を読み込み、実行します。 このコマンドは、ユーザからの入力を要求するための
              マクロで使えます。

       q      マクロを終了し、それを呼び出したマクロからも終了します。 一番上のレベルか、一番上の
              レベルから直接呼ばれたマクロから呼ばれると、 q コマンドは dc を終了します。

       Q      スタックから値を取り出し、それを終了すべきマクロレベル数として、 その数のマクロを終
              了します。 したがって、 3Q は、3 つのレベルを終了します。 Q コマンドでは、dc を終了
              することはありません。

状態の問い合わせ

       Z      スタックから値を取り出し、その桁数 (文字列の場合は、文字数)  を計算し、  その値をス
              タックに積みます。

       X      スタックから値を取り出し、その小数点以下の桁数を計算し、   その値をスタックに積みま
              す。文字列の場合、スタックには 0 が積まれます。

       z      現在のスタックの深さを、スタックに積みます。 スタックの深さとは、 z  コマンドが実行
              される前のスタックのデータ数です。

その他のさまざまなこと

       !      行の末尾までをシステムコマンドとして実行します  (シェルエスケープ)  。 コマンド !<,
              !=, !> のパーズが優先しますので、<, =, > で開始する コマンドを起動したい場合には、!
              の後に空白を加える必要があります。

       #      行の末尾までをコメントとして取り扱います。

       :r     スタックから 2 つの値を取り出します。 スタックの先頭だった値で配列 r をインデックス
              し、スタックの先頭から 2 番目だった値をそこに保存します。

       ;r     スタックから値を取り出し、配列 r のインデックスとして利用します。  配列から選ばれた
              値は、その後でスタックに積まれます。

バグ

       バグ報告は、  bug-dc@gnu.org  に電子メールでお願いします。  単語  ``dc''  を  ``Subject:''
       フィールドのどこかに入れておいてください。