名 称
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 の ス タ ッ ク に そ れ を 積 み ま す 。 レ ジ ス タ の 以 前 の 値 は 、 ア ク セ ス で き な く な り ま す 。 レ ジ ス タ r の ス タ ッ ク の 先 頭 の 値 を 取 り 出 し 、 そ れ を メ イ ン ス タ ッ ク に 積 み ま す 。 レ ジ ス タ r の ス タ ッ ク に あ っ た 以 前 の 値 が も し あ れ ば 、 lr コ マ ン ド を 使 っ て ア ク セ ス 可 能 と な り ま す 。 パ ラ メ ー タdc は 、 そ の 操 作 を 制 御 す る た め の 3 つ の パ ラ メ ー タ を 持 っ て い ま す : 精 度 と 、 入 力 の 基 数 、 出 力 の 基 数 で す 。 精 度 は 、 ほ と ん ど の 算 術 操 作 の 結 果 で 保 存 さ れ る 小 数 の 桁 数 を 指 定 し ま す 。 入 力 の 基 数 は 、 入 力 さ れ た 数 字 の 解 釈 を 制 御 し ま す 。 入 力 さ れ た す べ て の 数 字 は こ の 基 数 を つ か っ て い る と さ れ ま す 。 出 力 の 基 数 は 、 表 示 す る 数 字 で 使 わ れ ま す 。 入 力 と 出 力 の 基 数 は 、 分 離 さ れ た パ ラ メ ー タ で す 。 等 し く 設 定 し な く て も い い で す が 、 こ れ は 便 利 だ っ た り 紛 ら わ し か っ た り し ま す 。 入 力 の 基 数 は 2 か ら 16 の 範 囲 で な け れ ば な り ま せ ん 。 出 力 の 基 数 は 最 低 2 で な け れ ば な り ま せ ん 。 精 度 は 0 以 上 で な け れ ば な り ま せ ん 。 精 度 は 、 現 在 の 入 力 基 数 や 出 力 基 数 に 関 係 な く 、 い つ も 10 進 の 桁 数 で 決 め ら れ ま す 。
文 字 列dc
は 、 数 と 同 じ
よ う に 文 字 列
を 操 作 で き ま
す 。 文 字 列 に
対 し て で き る
唯 一 の こ と は
、 そ れ を 表 示
し 、 マ ク ロ と
し て 実 行 す る
こ と で す 。 マ
ク ロ と は 、 dc
コ マ ン ド と し
て 実 行 さ れ る
文 字 列 の 内 容
の こ と で す 。
す べ て の レ ジ
ス タ と ス タ ッ
ク は 文 字 列 を
保 存 で き ま す
。 そ し て 、 dc
は い つ も 、 与
え ら れ た デ ー
タ が 文 字 列 か
数 字 か を 知 っ
て い ま す 。 算
術 操 作 の よ う
な い く つ か の
コ マ ン ド は 、
数 を 必 要 と し
て お り 、 文 字
列 が 与 え ら れ
た 場 合 は エ ラ
ー が 表 示 さ れ
ま す 。 他 の コ
マ ン ド は 、 数
字 か 文 字 列 を
受 け 入 れ る こ
と が で き ま す
。 例 え ば 、 p
コ マ ン ド は 、
両 方 を 受 け 付
け る こ と が で
き 、 デ ー タ を
そ の 型 に 応 じ
て 表 示 し ま す
。 (左 右 の 釣 合 の と れ た 、 [ と ] で 囲 ま れ た ) characters と い う 文 字 列 を 作 り 、 そ れ を ス タ ッ ク に 積 み ま す 。 例 え ば 、 [foo]P は 文 字 列 foo を 表 示 し ま す (が 、 改 行 文 字 は 表 示 し ま せ ん )。
[1p]x は 、 マ ク ロ 1p を 実 行 し ま す 。 1p は 、 1 を ス タ ッ ク に 積 み 、 別 の 行 に 1 を 表 示 し ま す 。 マ ク ロ は 、 し ば し ば レ ジ ス タ に も 保 存 さ れ ま す 。 [1p]sa は 、 1 を 表 示 す る た め の マ ク ロ を レ ジ ス タ a に 保 存 し ま す 。 lax で こ の マ ク ロ は 実 行 で き ま す 。
と も と の ス タ ッ ク の 先 頭 が 大 き い 場 合 、 レ ジ ス タ r の 内 容 を 実 行 し ま す 。 し た が っ て 、 1 2>a は 、 レ ジ ス タ a の 内 容 を 実 行 し ま す が 、 2 1>a で は 実 行 し ま せ ん 。
な い 場 合 (2 番 目 の 値 以 下 で あ る 場 合 )、 マ ク ロ を 起 動 し ま す 。
2 番 目 の 値 よ り も 小 さ く な い 場 合 (2 番 目 の 値 以 上 で あ る 場 合 )、 マ ク ロ を 起 動 し ま す 。
ま す 。
さ れ ま す 。
q コ マ ン ド は dc を 終 了 し ま す 。
3Q は 、 3 つ の レ ベ ル を 終 了 し ま す 。 Q コ マ ン ド で は 、 dc を 終 了 す る こ と は あ り ま せ ん 。 状 態 の 問 い 合 わ せ
算 し 、 そ の 値 を ス タ ッ ク に 積 み ま す 。
0 が 積 ま れ ま す 。
z コ マ ン ド が 実 行 さ れ る 前 の ス タ ッ ク の デ ー タ 数 で す 。 そ の 他 の さ ま ざ ま な こ と
プ ) 。 コ マ ン ド !<, !=, !> の パ ー ズ が 優 先 し ま す の で 、 <, =, > で 開 始 す る コ マ ン ド を 起 動 し た い 場 合 に は 、 ! の 後 に 空 白 を 加 え る 必 要 が あ り ま す 。
2 つ の 値 を 取 り 出 し ま す 。 ス タ ッ ク の 先 頭 だ っ た 値 で 配 列 r を イ ン デ ッ ク ス し 、 ス タ ッ ク の 先 頭 か ら 2 番 目 だ っ た 値 を そ こ に 保 存 し ま す 。
す 。 配 列 か ら 選 ば れ た 値 は 、 そ の 後 で ス タ ッ ク に 積 ま れ ま す 。 バ グバ グ 報 告 は 、 bug-dc [AT] gnu.org に 電 子 メ ー ル で お 願 い し ま す 。 単 語 ’’dc’’ を ’’Subject:’’ フ ィ ー ル ド の ど こ か に 入 れ て お い て く だ さ い 。 |