Annotation of lucent/sys/man/1/bc, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.