Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ bc(1) — Dell System V Release 4 Issue 2.2

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

dc(1)



bc(1)              UNIX System V(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
            for ( E ; E ; E ) S
            null statement


10/89                                                                    Page 1







bc(1)              UNIX System V(User Environment Utilities)              bc(1)


            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
                  }
            }
      defines a function to compute an approximate value of the exponential
      function and




Page 2                                                                    10/89







bc(1)              UNIX System V(User Environment Utilities)              bc(1)


            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.




































10/89                                                                    Page 3





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