home *** CD-ROM | disk | FTP | other *** search
- .th BC I 2/20/75
- .sh NAME
- bc \*- arbitrary precision interactive language
- .sh SYNOPSIS
- .bd bc
- [
- .bd \-l
- ] [ file ... ]
- .sh DESCRIPTION
- .it Bc
- is an interactive processor for a language which resembles
- C but provides unlimited precision arithmetic.
- It takes input from any files given, then reads
- the standard input.
- The `\-l' argument stands for the name
- of a library of mathematical subroutines
- which contains sine (named `s'), cosine (`c'),
- arctangent (`a'), natural logarithm (`l'),
- and exponential (`e').
- The syntax for
- .it bc
- programs is as follows;
- E means expression, S means statement.
- .s3
- .lp +6 6
- Comments
- .br
- are enclosed in /* and */.
- .s3
- .lp +6 6
- Names
- .br
- letters a\-z
- .br
- array elements: letter[E]
- .br
- The words `ibase', `obase', and `scale'
- .s3
- .lp +6 6
- Other operands
- .br
- arbitrarily long numbers with optional sign and decimal point.
- .br
- ( E )
- .br
- sqrt ( E )
- .br
- <letter> ( E , ... , E )
- .s3
- .lp +6 6
- Operators
- .br
- + \- * / % ^
- .br
- ++ \-\- (prefix and postfix; apply to names)
- .br
- == <= >= != < >
- .br
- = =+ =\- =* =/ =% =^
- .br
- .s3
- .lp +6 6
- Statements
- .br
- E
- .br
- { S ; ... ; S }
- .br
- if ( E ) S
- .br
- while ( E ) S
- .br
- for ( E ; E ; E ) S
- .br
- null statement
- .br
- break
- .br
- quit
- .s3
- .lp +6 6
- Function definitions are exemplified by
- .br
- define <letter> ( <letter> ,..., <letter> ) {
- .br
- auto <letter>, ... , <letter>
- .br
- S; ... S
- .br
- return ( E )
- .br
- }
- .s3
- .i0
- .dt
- All function arguments are passed by value.
- .s3
- The value of a statement that is an expression is printed
- unless the main operator is an assignment.
- Either semicolons or newlines may separate statements.
- Assignment to
- .it scale
- influences the number of digits to be retained on arithmetic
- operations.
- Assignments to
- .it ibase
- or
- .it obase
- set the input and output number radix respectively.
- .s3
- The same letter may be used as an array name, a function name,
- and a simple variable simultaneously.
- `Auto' variables are saved and restored during function calls.
- All other variables are global to the program.
- When using arrays as function arguments
- or defining them as automatic variables
- empty square brackets must follow the array name.
- .s3
- For example
- .s3
- .nf
- scale = 20
- define e(x){
- auto a, b, c, i, s
- a = 1
- b = 1
- s = 1
- for(i=1; 1==1; i++){
- a = a*x
- b = b*i
- c = a/b
- if(c == 0) return(s)
- s = s+c
- }
- }
- .s3
- .fi
- defines a function to compute an approximate value of
- the exponential function and
- .s3
- .nf
- for(i=1; i<=10; i++) e(i)
- .fi
- .s3
- prints approximate values of the exponential function of
- the first ten integers.
- .sh FILES
- /usr/lib/lib.b mathematical library
- .sh "SEE ALSO"
- .it dc
- (I),
- C Reference Manual,
- ``BC \- An Arbitrary Precision Desk-Calculator Language.''
- .sh BUGS
- No &&, | | yet.
- .br
- .it for
- statement must have all three E's
- .br
- .it quit
- is interpreted when read, not when executed.
-