bc.1 - 9base - revived minimalist port of Plan 9 userland to Unix | |
git clone git://git.suckless.org/9base | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
bc.1 (3756B) | |
--- | |
1 .TH BC 1 | |
2 .SH NAME | |
3 bc \- arbitrary-precision arithmetic language | |
4 .SH SYNOPSIS | |
5 .B bc | |
6 [ | |
7 .B -c | |
8 ] | |
9 [ | |
10 .B -l | |
11 ] | |
12 [ | |
13 .B -s | |
14 ] | |
15 [ | |
16 .I file ... | |
17 ] | |
18 .SH DESCRIPTION | |
19 .I Bc | |
20 is an interactive processor for a language that resembles | |
21 C but provides arithmetic on numbers of arbitrary length with up | |
22 to 100 digits right of the decimal point. | |
23 It takes input from any files given, then reads | |
24 the standard input. | |
25 The | |
26 .B -l | |
27 argument stands for the name | |
28 of an arbitrary precision math library. | |
29 The | |
30 .B -s | |
31 argument suppresses the automatic display | |
32 of calculation results; all output is via the | |
33 .B print | |
34 command. | |
35 .PP | |
36 The following syntax for | |
37 .I bc | |
38 programs is like that of C; | |
39 .I L | |
40 means letter | |
41 .BR a - z , | |
42 .I E | |
43 means expression, | |
44 .I S | |
45 means statement. | |
46 .TF length(E) | |
47 .TP | |
48 Lexical | |
49 .RS | |
50 .HP | |
51 comments are enclosed in | |
52 .B /* */ | |
53 .HP | |
54 newlines end statements | |
55 .RE | |
56 .TP | |
57 Names | |
58 .IP | |
59 simple variables: | |
60 .I L | |
61 .br | |
62 array elements: | |
63 .IB L [ E ] | |
64 .br | |
65 The words | |
66 .BR ibase , | |
67 .BR obase , | |
68 and | |
69 .B scale | |
70 .TP | |
71 Other operands | |
72 .IP | |
73 arbitrarily long numbers with optional sign and decimal point. | |
74 .RS | |
75 .TP | |
76 .BI ( E ) | |
77 .TP | |
78 .BI sqrt( E ) | |
79 .TP | |
80 .BI length( E ) | |
81 number of significant decimal digits | |
82 .TP | |
83 .BI scale( E ) | |
84 number of digits right of decimal point | |
85 .TP | |
86 .IB L ( E , ... ,\fIE\fP) | |
87 function call | |
88 .RE | |
89 .TP | |
90 Operators | |
91 .RS | |
92 .HP | |
93 .B "+ - * / % ^\ " | |
94 .RB ( % | |
95 is remainder; | |
96 .B ^ | |
97 is power) | |
98 .HP | |
99 .B "++ --\ " | |
100 .TP | |
101 .B "== <= >= != < >" | |
102 .TP | |
103 .B "= += -= *= /= %= ^=" | |
104 .RE | |
105 .TP | |
106 Statements | |
107 .RS | |
108 .br | |
109 .I E | |
110 .br | |
111 .B { | |
112 .I S | |
113 .B ; | |
114 \&... | |
115 .B ; | |
116 .I S | |
117 .B } | |
118 .br | |
119 .B "print" | |
120 .I E | |
121 .br | |
122 .B "if (" | |
123 .I E | |
124 .B ) | |
125 .I S | |
126 .br | |
127 .B "while (" | |
128 .I E | |
129 .B ) | |
130 .I S | |
131 .br | |
132 .B "for (" | |
133 .I E | |
134 .B ; | |
135 .I E | |
136 .B ; | |
137 .I E | |
138 .B ")" | |
139 .I S | |
140 .br | |
141 null statement | |
142 .br | |
143 .B break | |
144 .br | |
145 .B quit | |
146 .br | |
147 \fL"\fRtext\fL"\fR | |
148 .RE | |
149 .TP | |
150 Function definitions | |
151 .RS | |
152 .br | |
153 .B define | |
154 .I L | |
155 .B ( | |
156 .I L | |
157 .B , | |
158 \&... | |
159 .B , | |
160 .I L | |
161 .B ){ | |
162 .PD0 | |
163 .br | |
164 .B auto | |
165 .I L | |
166 .B , | |
167 \&... | |
168 .B , | |
169 .I L | |
170 .br | |
171 .I S | |
172 .B ; | |
173 \&... | |
174 .B ; | |
175 .I S | |
176 .br | |
177 .B return | |
178 .I E | |
179 .LP | |
180 .B } | |
181 .RE | |
182 .TP | |
183 Functions in | |
184 .B -l | |
185 math library | |
186 .RS | |
187 .TP | |
188 .BI s( x ) | |
189 sine | |
190 .TP | |
191 .BI c( x ) | |
192 cosine | |
193 .TP | |
194 .BI e( x ) | |
195 exponential | |
196 .TP | |
197 .BI l( x ) | |
198 log | |
199 .TP | |
200 .BI a( x ) | |
201 arctangent | |
202 .TP | |
203 .BI j( "n, x" ) | |
204 Bessel function | |
205 .RE | |
206 .PP | |
207 .DT | |
208 All function arguments are passed by value. | |
209 .PD | |
210 .PP | |
211 The value of an expression at the top level is printed | |
212 unless the main operator is an assignment or the | |
213 .B -s | |
214 command line argument is given. | |
215 Text in quotes, which may include newlines, is always printed. | |
216 Either semicolons or newlines may separate statements. | |
217 Assignment to | |
218 .B scale | |
219 influences the number of digits to be retained on arithmetic | |
220 operations in the manner of | |
221 .IR dc (1). | |
222 Assignments to | |
223 .B ibase | |
224 or | |
225 .B obase | |
226 set the input and output number radix respectively. | |
227 .PP | |
228 The same letter may be used as an array, a function, | |
229 and a simple variable simultaneously. | |
230 All variables are global to the program. | |
231 Automatic variables are pushed down during function calls. | |
232 In a declaration of an array as a function argument | |
233 or automatic variable | |
234 empty square brackets must follow the array name. | |
235 .PP | |
236 .I Bc | |
237 is actually a preprocessor for | |
238 .IR dc (1), | |
239 which it invokes automatically, unless the | |
240 .B -c | |
241 (compile only) | |
242 option is present. | |
243 In this case the | |
244 .I dc | |
245 input is sent to the standard output instead. | |
246 .SH EXAMPLE | |
247 Define a function to compute an approximate value of | |
248 the exponential. | |
249 Use it to print 10 values. | |
250 (The exponential function in the library gives better answers.) | |
251 .PP | |
252 .EX | |
253 scale = 20 | |
254 define e(x) { | |
255 auto a, b, c, i, s | |
256 a = 1 | |
257 b = 1 | |
258 s = 1 | |
259 for(i=1; 1; i++) { | |
260 a *= x | |
261 b *= i | |
262 c = a/b | |
263 if(c == 0) return s | |
264 s += c | |
265 } | |
266 } | |
267 for(i=1; i<=10; i++) print e(i) | |
268 .EE | |
269 .SH FILES | |
270 .B \*9/lib/bclib | |
271 mathematical library | |
272 .SH SOURCE | |
273 .B \*9/src/cmd/bc.y | |
274 .SH "SEE ALSO" | |
275 .IR dc (1), | |
276 .IR hoc (1) | |
277 .SH BUGS | |
278 No | |
279 .LR && , | |
280 .LR || , | |
281 or | |
282 .L ! | |
283 operators. | |
284 .PP | |
285 A | |
286 .L for | |
287 statement must have all three | |
288 .LR E s. | |
289 .PP | |
290 A | |
291 .L quit | |
292 is interpreted when read, not when executed. |