aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man1/dc.1
blob: ff057edc369d674c06fc7c47d3f4e784b71a7829 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
.TH DC 1 "07 Apr 1994" "GNU Project"
.\" jpman %Id: dc.1,v 1.4 1997/07/26 21:29:52 horikawa Stab %
.ds dc \fIdc\fP
.ds Dc \fIDc\fP
.SH 名称
dc \- 任意精度の計算機
.SH 書式
dc
.SH
解説
.PP
\*(dc は、逆ポーランド形式の無限精度の計算が行える卓上計算機です。
この電卓は、定義やマクロ呼び出しも行えます。
普通、 \*(dc  は標準入力から読み込みます。
コマンドライン引数が与えられた時は、それはファイル名となり、
\*(dc はそのファイルを読み込み、ファイルの内容を実行した後で、
標準入力から入力を取ります。
全ての正常な出力は標準出力へ送られます。
全てのエラー出力は標準出力へ送られます。
.PP
逆ポーランド記法計算機は、数をスタックに保存します。
数字を入力すると、それをスタックに積み上げます。
計算操作は、引数をスタックから取り出し、結果をスタックに積み上げます。
.PP
数字を
.IR dc 
に入力するためには、数字 (小数点が有っても構いません) を入力します。
指数表現はサポートされていません。
負の数字を入力するためには、 ``_'' で始まる数字を入力します。
``-'' は減算の二項演算子として使われているので、
このために利用することはできません。
引き続いて 2 つの数字を入力するためには、あいだに空白文字か改行文字を
入力します。
これらは、コマンドとしての意味はありません。
.PD
.SH
表示コマンド
.TP
.B p
スタックを変更することなく、スタックの先頭の値を表示します。
改行文字が、数値の後に表示されます。
.TP
.B P
スタックの先頭の値を表示し、スタックから取り出します。
改行文字は、後に表示されません。
.TP
.B f
変更することなく、
.ig
全てのレジスタの内容と
..
スタックの内容全部を表示します。
これは、忘れてしまった時に使ったり、あるコマンドがどのような効果を
もたらすのかを知りたい時には、良いコマンドです。
.PD
.SH
計算
.TP
.B +
二つの値をスタックから取り出し、加算を行い、結果をスタックに積みます。
結果の精度は、引数の値にだけによって決まり、十分正確です。
.TP
.B -
二つの値を取り出し、最初に取り出した値を 2 番目に取り出した値から
引きます。その後、結果をスタックに積みます。
.TP
.B *
二つの値を取り出し、かけ算を行い、結果をスタックに積みます。
結果の小数の桁数は、現在の精度値 ( 以下参照 ) によって制御され、
かけ算を行った値には依存しません。
.TP
.B /
二つの値を取り出し、最初に取り出した値を 2 番目に取り出した値で割り、
結果をスタックに積みます。
小数の桁数は、精度値によって指定されます。
.TP
.B %
二つの値を取り出し、
.B /
で計算された割算の余りを計算し、結果をスタックに積みます。
割算は、精度値で指定された小数の桁数で行われ、
余りも同じ小数の桁数で計算されます。
.TP
.B ^
二つの値を取り出し、最初に取り出した値を指数とし、
2 つめの値を底として指数計算します。
指数の小数点以下は無視されます。
精度値は、結果の小数の桁数を指定します。
.TP
.B v
一つの値を取り出し、自乗根を求め、結果をスタックに積みます。
精度値は、結果の小数の桁数を指定します。
.PP
ほとんどの演算子は、 ``精度値'' に影響を受けます。
``精度値'' は、
.B k
コマンドで設定することができます。
デフォルトの精度値はゼロです。これは、足し算と引き算を除く全ての算術は
整数値の結果を出すことを意味しています。
.PP
剰余演算
.B %
には、少し説明が必要です。
引数 ``a'' と ``b'' にて ``a - (b * (a / b))'' を計算しますが、
``a / b'' は現在の精度値に基づいて計算されます。
.SH
スタックの制御
.TP
.B c
スタックを消去し、空にします。
.TP
.B d
スタック先頭の値を複製し、スタックに積みます。
したがって、 ``4d*p'' は 4 の自乗を計算し、表示します。
.SH
レジスタ
.PP
\*(dc は、256 個のメモリレジスタを持っています。
各レジスタは、一文字の名前を持っています。
数字や文字列をレジスタに保存し、後で取り出すことができます。
.TP
.BI s r
スタックの先頭から値を取り出し、レジスタ
.IR r 
に保存します。
.TP
.BI l r
レジスタ
.I r
の値を複製し、それをスタックに積みます。
これは、
.IR r 
の内容を変更しません。
.PP
各レジスタは、それ自身のスタックを持っています。
現在のレジスタ値は、レジスタスタックの先頭です。
.TP
.BI S r
( メイン ) スタックの先頭の値を取り出し、レジスタ
.IR r 
のスタックにそれを積みます。
レジスタの以前の値は、アクセスできなくなります。
.TP
.BI L r
レジスタ
.IR r 
のスタックの先頭の値を取り出し、それをメインスタックに積みます。
レジスタ
.IR r 
のスタックにあった以前の値がもしあれば、
.BI l r
コマンドを使ってアクセス可能となります。
.ig
.PP
.B f
コマンドは、全ての内容が保存されているレジスタのリストを、
その内容ともに表示します。
各レジスタの現在の内容 ( つまりレジスタスタックの先頭 ) 
だけが表示されます。
..
.SH
パラメータ
.PP
\*(dc は、その操作を制御するための 3 つのパラメータを持っています:
精度と、入力の基数、出力の基数です。
精度は、ほとんどの算術操作の結果で保存される小数の桁数を指定します。
入力の基数は、入力された数字の解釈を制御します。
入力された全ての数字はこの基数をつかっているとされます。
出力の基数は、表示する数字で使われます。
.PP
入力と出力の基数は、分離されたパラメータです。
等しく設定しなくてもいいですが、これは便利だったり紛らわしかったりします。
入力の基数は 2 から 36 の範囲でなければなりません。
出力の基数は最低 2 でなければなりません。
精度はゼロ以上でなければなりません。
精度は、現在の入力基数や出力基数に関係なく、いつも 10 進の桁数で決められます。
.TP
.B i
スタックの先頭から値を取り出し、入力基数を設定するために使います。
.TP
.B o
スタックの先頭から値を取り出し、出力基数を設定するために使います。
.TP
.B k
スタックの先頭から値を取り出し、精度を設定するために使います。
.TP
.B I
現在の入力基数をスタックに積みます。
.TP
.B O
現在の出力基数をスタックに積みます。
.TP
.B K
現在の精度をスタックに積みます。
.SH
文字列
.PP
\*(dc は、数と同じように文字列を操作できます。
文字列に対してできる唯一のことは、それを表示し、マクロとして
実行することです。 
マクロとは、 \*(dc コマンドとして実行される文字列の内容のことです。
全てのレジスタとスタックは文字列を保存できます。
そして、 \*(dc はいつも、与えられたデータが文字列か数字かを
知っています。
算術操作のようないくつかのコマンドは、数を必要としており、
文字列が与えられた場合はエラーが表示されます。
他のコマンドは、数字か文字列を受け入れることができます。
例えば、
.B p
コマンドは、両方を受け付けることができ、データをその型に応じて
表示します。
.TP
.BI [ characters ]
(左右の釣合のとれた、
.B [
と
.B ]
で囲まれた
)
.I characters
という文字列を作り、それをスタックに積みます。
例えば、
.B [foo]P
は文字列
.B foo
を表示します (が、改行文字は表示しません)。
.TP
.B x
スタックから値を取り出し、マクロとして実行します。
普通、これは文字列です。数の場合は、単純にその値がスタックに
積み戻されます。
例えば、
.B [1p]x
は、マクロ
.B 1p
を実行します。
.B 1p
は、
.B 1
をスタックに積み、別の行に
.B 1
を表示します。
.PP
マクロは、しばしばレジスタにも保存されます。
.B [1p]sa
は、
.B 1
を表示するためのマクロを
レジスタ
.BR a 
に保存します。
.B lax
でこのマクロは実行できます。
.TP
.BI > r
スタックから 2 つの値を取り出し、それらを数と仮定して比較し、
もともとのスタックの先頭が大きい場合、レジスタ
.I r
の内容を実行します。
したがって、
.B 1 2>a
は、レジスタ
.BR a 
の内容を実行しますが、
.B 2 1>a
では実行しません。
.TP
.BI < r
似ていますが、もともとのスタックの先頭が小さい場合にマクロを実行します。
.TP
.BI = r
似ていますが、二つの取り出された値が等しい場合にマクロが実行されます。
.ig
これは、二つの文字列の等価性を比較するためにも使うことができます。
..
.TP
.B ?
端末から行を読み込み、実行します。
このコマンドは、ユーザからの入力を要求するためのマクロで使えます。
.TP
.B q
マクロを終了し、実行されたマクロからも終了します。
一番上のレベルか、一番上のレベルから直接呼ばれたマクロから呼ばれると、
.B q
コマンドは \*(dc を終了します。
.TP
.B Q
スタックから値を取り出し、それを終了すべきマクロレベル数として、
その数のマクロを終了します。
したがって、
.B 3Q
は、 3 つのレベルを終了します。
.B Q
コマンドでは、 \*(dc を終了することはありません。
.SH
状態の問い合わせ
.TP
.B Z
スタックから値を取り出し、その桁数 (文字列の場合は、文字数) を計算し、
その値をスタックに積みます。
.TP
.B X
スタックから値を取り出し、その小数点以下の桁数を計算し、
その値をスタックに積みます。文字列の場合、スタックには
.\" -1.
0
が積まれます。
.TP
.B z
現在のスタックの深さを、スタックに積みます。
スタックの深さとは、
.B z
コマンドが実行される前のスタックのデータ数です。
.SH
その他のさまざまなこと
.TP
.B !
与えられた行をシステムコマンドとして実行します ( シェルエスケープ ) 。
.\"(訳注)シェルエスケープは、訳者が付け足しました。
.\" 2.2.1R 対象(1997/05/04) Takeshi MUTOH <mutoh@info.nara-k.ac.jp>
.TP
.B #
与えられた行をコメントとして取り扱います。
.TP
.BI : r
スタックから 2 つの値を取り出します。
スタックの先頭から 2 番目だった値で配列
.IR r 
をインデックスし、スタックの先頭だった値をそこに保存します。
.TP
.BI ; r
スタックから値を取り出し、配列
.IR r 
のインデックスとして利用します。
配列から選ばれた値は、その後でスタックに積まれます。
.SH
注釈
.PP
配列操作
.B :
と
.B ;
は、普通
.IR bc 
の歴史的な実装だけで使われます
( GNU の
.I bc
は、自分でそれを含んでおり、 \*(dc を実行する必要はありません) 。
コメント操作
.B #
は、歴史的な
.IR dc 
の実装には含まれない、新しいコマンドです。
.SH
バグ
.PP
バグ報告は、
.BR bug-gnu-utils@prep.ai.mit.edu 
に電子メールでお願いします。
単語 ``dc'' を ``Subject:'' フィールドのどこかに入れておいてください。
.SH 歴史
.I dc
コマンドは、
Version 1 AT&T UNIX
から導入されました。