Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ bc(1) — Atari System V ue12

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

dc(1)





   bc(1)                  (User Environment Utilities)                   bc(1)


   NAME
         bc - arbitrary-precision arithmetic language

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

   DESCRIPTION
         bc is an interactive processor for a language that resembles C but
         provides unlimited precision arithmetic.  It takes input from any
         files given, then reads the standard input.  bc is actually a
         preprocessor for the desk calculator program dc, 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 sent to the standard output.

         -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


   7/91                                                                 Page 1









   bc(1)                  (User Environment Utilities)                   bc(1)


               for ( E ; E ; E ) S
               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 semicolons 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.
         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
                     }
               }


   Page 2                                                                 7/91









   bc(1)                  (User Environment Utilities)                   bc(1)


         defines a function to compute an approximate value of the 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).

   NOTES
         The bc command does not recognize the logical operators && and ||.

         The for statement must have all three expressions (E's).

         The quit statement is interpreted when read, not when executed.
































   7/91                                                                 Page 3





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