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