BC(1) BSD Reference Manual BC(1) NNAAMMEE bbcc - arbitrary-precision arithmetic language and calculator SSYYNNOOPPSSIISS bbcc [--cc] [--ll] _f_i_l_e _._._. DDEESSCCRRIIPPTTIIOONN BBcc is an interactive processor for a language which resembles C but pro- vides unlimited precision arithmetic. It takes input from any files giv- en, then reads the standard input. Options available: --ll allow specification of an arbitrary precision math library. --cc BBcc is actually a preprocessor for _d_c _1, which it invokes automati- cally, unless the --cc compile only option is present. Here, the _d_c input is sent to the standard output instead. The syntax for bbcc programs is as follows; L means letter a-z, E means ex- pression, 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 return ( E ) } Functions in --ll 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 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 dc(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 vari- able 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. 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. FFIILLEESS dc(1) Desk calculator proper. SSEEEE AALLSSOO 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. HHIISSTTOORRYY The bbcc command appeared in Version 6 AT&T UNIX. BBUUGGSS No &&, ||, or ! operators. `For' statement must have all three E's. `Quit' is interpreted when read, not when executed. AT&T 7th Edition June 29, 1993 2