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