


      BBBBCCCC((((1111))))                       ((((UUUUNNNNIIIIXXXX 5555....0000))))                      BBBBCCCC((((1111))))



      NNNNAAAAMMMMEEEE
           bc - arbitrary-precision arithmetic language

      SSSSYYYYNNNNTTTTAAAAXXXX
           bbbbcccc [ ----cccc ] [ ----llll ] [ file ... ]

      DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
           _B_c 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.
           The ----llll 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



      Page 1                                                   (9010-E)






      BBBBCCCC((((1111))))                       ((((UUUUNNNNIIIIXXXX 5555....0000))))                      BBBBCCCC((((1111))))



                      return ( E )
                 }

           Functions in ----llll 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 _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
           function calls.  When using arrays as function arguments or
           defining them as automatic variables empty square brackets
           must follow the array name.

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

      EEEEXXXXAAAAMMMMPPPPLLLLEEEE
           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                                                   (9010-E)






      BBBBCCCC((((1111))))                       ((((UUUUNNNNIIIIXXXX 5555....0000))))                      BBBBCCCC((((1111))))



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

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

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

      SSSSEEEEEEEE AAAALLLLSSSSOOOO
           dc(1).
           _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 in _R_O_S
           _U_t_i_l_i_t_y _G_u_i_d_e .

      BBBBUUUUGGGGSSSS
           No &&&&&&&&, |||||||| yet.
           _F_o_r statement must have all three E's.
           _Q_u_i_t is interpreted when read, not when executed.





































      Page 3                                                   (9010-E)



