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