Manpages

名 称

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 [AT] gnu.org に 電 子 メ ー ル で お 願 い し ま す 。 単 語 ’’dc’’ を ’’Subject:’’ フ ィ ー ル ド の ど こ か に 入 れ て お い て く だ さ い 。