|
|
1.1 root 1: .TH BC 1 "1 April 1981"
2: .SH NAME
3: bc \- arbitrary-precision arithmetic language
4: .SH SYNOPSIS
5: .B bc
6: [
7: .B \-c
8: ] [
9: .B \-l
10: ] [ file ... ]
11: .SH DESCRIPTION
12: .I Bc
13: is an interactive processor for a language which resembles
14: C but provides unlimited precision arithmetic.
15: It takes input from any files given, then reads
16: the standard input.
17: The
18: .B \-l
19: argument stands for the name
20: of an arbitrary precision math library.
21: The syntax for
22: .I bc
23: programs is as follows;
24: L means letter a-z,
25: E means expression, S means statement.
26: .HP 6
27: Comments
28: .br
29: are enclosed in /* and */.
30: .HP 6
31: Names
32: .br
33: simple variables: L
34: .br
35: array elements: L [ E ]
36: .br
37: The words `ibase', `obase', and `scale'
38: .HP 6
39: Other operands
40: .br
41: arbitrarily long numbers with optional sign and decimal point.
42: .br
43: ( E )
44: .br
45: sqrt ( E )
46: .br
47: length ( E ) number of significant decimal digits
48: .br
49: scale ( E ) number of digits right of decimal point
50: .br
51: L ( E , ... , E )
52: .HP 6
53: Operators
54: .br
55: + \- * / % ^
56: (% is remainder; ^ is power)
57: .br
58: ++ \-\- (prefix and postfix; apply to names)
59: .br
60: == <= >= != < >
61: .br
62: = += \-= *= /= %= ^=
63: .br
64: .HP 6
65: Statements
66: .br
67: E
68: .br
69: { S ; ... ; S }
70: .br
71: if ( E ) S
72: .br
73: while ( E ) S
74: .br
75: for ( E ; E ; E ) S
76: .br
77: null statement
78: .br
79: break
80: .br
81: quit
82: .HP 6
83: Function definitions
84: .br
85: define L ( L ,..., L ) {
86: .br
87: auto L, ... , L
88: .br
89: S; ... S
90: .br
91: return ( E )
92: .br
93: }
94: .HP 6
95: Functions in
96: .B \-l
97: math library
98: .br
99: s(x) sine
100: .br
101: c(x) cosine
102: .br
103: e(x) exponential
104: .br
105: l(x) log
106: .br
107: a(x) arctangent
108: .br
109: j(n,x) Bessel function
110: .PP
111: .DT
112: All function arguments are passed by value.
113: .PP
114: The value of a statement that is an expression is printed
115: unless the main operator is an assignment.
116: Either semicolons or newlines may separate statements.
117: Assignment to
118: .I scale
119: influences the number of digits to be retained on arithmetic
120: operations in the manner of
121: .IR dc (1).
122: Assignments to
123: .I ibase
124: or
125: .I obase
126: set the input and output number radix respectively.
127: .PP
128: The same letter may be used as an array, a function,
129: and a simple variable simultaneously.
130: All variables are global to the program.
131: `Auto' variables are pushed down during function calls.
132: When using arrays as function arguments
133: or defining them as automatic variables
134: empty square brackets must follow the array name.
135: .PP
136: For example
137: .PP
138: .nf
139: scale = 20
140: define e(x){
141: auto a, b, c, i, s
142: a = 1
143: b = 1
144: s = 1
145: for(i=1; 1==1; i++){
146: a = a*x
147: b = b*i
148: c = a/b
149: if(c == 0) return(s)
150: s = s+c
151: }
152: }
153: .PP
154: .fi
155: defines a function to compute an approximate value of
156: the exponential function and
157: .PP
158: .nf
159: for(i=1; i<=10; i++) e(i)
160: .fi
161: .PP
162: prints approximate values of the exponential function of
163: the first ten integers.
164: .PP
165: .I Bc
166: is actually a preprocessor for
167: .IR dc (1),
168: which it invokes automatically, unless the
169: .B \-c
170: (compile only)
171: option is present.
172: In this case the
173: .I dc
174: input is sent to the standard output instead.
175: .SH FILES
176: .ta \w'/usr/lib/lib.b 'u
177: /usr/lib/lib.b mathematical library
178: .br
179: dc(1) desk calculator proper
180: .SH "SEE ALSO"
181: dc(1)
182: .br
183: L. L. Cherry and R. Morris,
184: .I
185: BC \- An arbitrary precision desk-calculator language
186: .SH BUGS
187: No &&, \(or\|\(or, or ! operators.
188: .br
189: .I For
190: statement must have all three E's.
191: .br
192: .I Quit
193: 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.