4.3BSD-UWisc/man/cat1/bc.1

Compare this file to the similar file:
Show the results in this format:




BC(1)               UNIX Programmer's Manual                BC(1)



NAME
     bc - arbitrary-precision arithmetic language

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

DESCRIPTION
     _B_c is an interactive processor for a language which resem-
     bles C but provides unlimited precision arithmetic.  It
     takes input from any files given, then reads the standard
     input.  The -l argument stands for the name of an arbitrary
     precision math library.  The syntax for _b_c 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
           break
           quit

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



Printed 12/27/86         April 29, 1985                         1






BC(1)               UNIX Programmer's Manual                BC(1)



                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 newlines may separate statements.  Assignment to
     _s_c_a_l_e influences the number of digits to be retained on
     arithmetic operations in the manner of _d_c(1).  Assignments
     to _i_b_a_s_e or _o_b_a_s_e 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 func-
     tion calls.  When using arrays as function arguments or
     defining them as automatic variables empty square brackets
     must follow the array name.

     For 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

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

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



Printed 12/27/86         April 29, 1985                         2






BC(1)               UNIX Programmer's Manual                BC(1)



     _B_c is actually a preprocessor for _d_c(1), which it invokes
     automatically, unless the -c (compile only) option is
     present.  In this case the _d_c input is sent to the standard
     output instead.

FILES
     /usr/lib/lib.b mathematical library
     dc(1)          desk calculator proper

SEE ALSO
     dc(1)
     L. L. Cherry and R. Morris, _B_C - _A_n _a_r_b_i_t_r_a_r_y _p_r_e_c_i_s_i_o_n
     _d_e_s_k-_c_a_l_c_u_l_a_t_o_r _l_a_n_g_u_a_g_e

BUGS
     No &&, ||, or ! operators.
     _F_o_r statement must have all three E's.
     _Q_u_i_t is interpreted when read, not when executed.





































Printed 12/27/86         April 29, 1985                         3