Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ bc(1) — Interactive 2.2

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

dc(1)



          BC(1)                INTERACTIVE UNIX System                BC(1)



          NAME
               bc - arbitrary-precision arithmetic language

          SYNOPSIS
               bc [ -c ] [ -l ] [ file ... ]

          DESCRIPTION
               The bc command is an interactive processor for a language
               that resembles C but provides unlimited precision arith-
               metic.  It takes input from any files given, then reads the
               standard input.  The bc(1) utility is actually a preproces-
               sor for dc(1), which it invokes automatically unless the -c
               option is present.  In this case the dc input is sent to the
               standard output instead.  The options are as follows:

               -c   Compile only. The output is send to the standard out-
                    put.

               -l   Argument stands for the name of an arbitrary precision
                    math library.

               The syntax for bc programs is as follows; L means letter
               a-z, E means expression, S means statement.

               Comments
                     are enclosed in /* and */.

               Names
                     simple variables: L
                     array elements: L [ E ]
                     The words ``ibase'', ``obase'', and ``scale''

               Other operands
                     arbitrarily long numbers with optional sign and
                     decimal point.
                     ( E )
                     sqrt ( E )
                     length ( E )   number of significant decimal digits
                     scale ( E )    number of digits right of decimal point
                     L ( E , ... , E )

               Operators
                     +   -   *   /   %   ^    (% is remainder; ^ is power)
                     ++   --   (prefix and postfix; apply to names)
                     ==   <=   >=   !=   <   >
                     =   =+   =-   =*   =/ =%   =^

               Statements
                     E
                     { S ; ... ; S }
                     if ( E ) S
                     while ( E ) S
                     for ( E ; E ; E ) S


          Rev. Base System                                           Page 1





          BC(1)                INTERACTIVE UNIX System                BC(1)



                     null statement
                     break
                     quit

               Function definitions
                     define L ( L ,..., L ) {
                          auto L, ... , L
                          S; ... S
                          return ( E )
                     }

               Functions in -l math library
                     s(x) sine
                     c(x) cosine
                     e(x) exponential
                     l(x) log
                     a(x) arctangent
                     j(n,x)    Bessel function

               All function arguments are passed by value.

               The value of a statement that is an expression is printed
               unless the main operator is an assignment.  Either semi-
               colons or new-lines may separate statements.  Assignment to
               scale influences the number of digits to be retained on
               arithmetic operations in the manner of dc(1).  Assignments
               to ibase or obase set the input and output number radix,
               respectively.

               The same letter may be used as an array, a function, and a
               simple variable simultaneously.  All variables are global to
               the program.  ``Auto'' variables are pushed down during
               function calls.  When using arrays as function arguments or
               defining them as automatic variables, empty square brackets
               must follow the array name.

          EXAMPLE
               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
                    }
               }

               defines a function to compute an approximate value of the


          Rev. Base System                                           Page 2





          BC(1)                INTERACTIVE UNIX System                BC(1)



               exponential function and

                    for(i=1; i<=10; i++) e(i)

               prints approximate values of the exponential function of the
               first ten integers.

          FILES
               /usr/lib/lib.b mathematical library
               /usr/bin/dc    desk calculator proper

          SEE ALSO
               dc(1).

          BUGS
               The bc command does not yet recognize the logical operators,
               && and ||.
               For statement must have all three expressions (E's).
               Quit is interpreted when read, not when executed.




































          Rev. Base System                                           Page 3



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026