diff options
Diffstat (limited to 'man/man1/bc.html')
-rw-r--r-- | man/man1/bc.html | 272 |
1 files changed, 272 insertions, 0 deletions
diff --git a/man/man1/bc.html b/man/man1/bc.html new file mode 100644 index 00000000..c4f7e7ba --- /dev/null +++ b/man/man1/bc.html @@ -0,0 +1,272 @@ +<head> +<title>bc(1) - Plan 9 from User Space</title> +<meta content="text/html; charset=utf-8" http-equiv=Content-Type> +</head> +<body bgcolor=#ffffff> +<table border=0 cellpadding=0 cellspacing=0 width=100%> +<tr height=10><td> +<tr><td width=20><td> +<tr><td width=20><td><b>BC(1)</b><td align=right><b>BC(1)</b> +<tr><td width=20><td colspan=2> + <br> +<p><font size=+1><b>NAME </b></font><br> + +<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + bc – arbitrary-precision arithmetic language<br> + +</table> +<p><font size=+1><b>SYNOPSIS </b></font><br> + +<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + <tt><font size=+1>bc</font></tt> [ <tt><font size=+1>−c</font></tt> ] [ <tt><font size=+1>−l</font></tt> ] [ <tt><font size=+1>−s</font></tt> ] [ <i>file ...</i> ]<br> + +</table> +<p><font size=+1><b>DESCRIPTION </b></font><br> + +<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + <i>Bc</i> is an interactive processor for a language that resembles C + but provides arithmetic on numbers of arbitrary length with up + to 100 digits right of the decimal point. It takes input from + any files given, then reads the standard input. The <tt><font size=+1>−l</font></tt> argument + stands for the name of an arbitrary precision math library. The + <tt><font size=+1>−s + </font></tt>argument suppresses the automatic display of calculation results; + all output is via the <tt><font size=+1>print</font></tt> command. + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + + The following syntax for <i>bc</i> programs is like that of C; <i>L</i> means + letter <tt><font size=+1>a</font></tt>-<tt><font size=+1>z</font></tt>, <i>E</i> means expression, <i>S</i> means statement.<br> + Lexical<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + comments are enclosed in <tt><font size=+1>/* */<br> + </font></tt>newlines end statements<br> + + </table> + + </table> + Names<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + simple variables: <i>L<br> + </i>array elements: <i>L</i><tt><font size=+1>[</font></tt><i>E</i><tt><font size=+1>]<br> + </font></tt>The words <tt><font size=+1>ibase</font></tt>, <tt><font size=+1>obase</font></tt>, and <tt><font size=+1>scale<br> + </font></tt> + </table> + + </table> + Other operands<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + arbitrarily long numbers with optional sign and decimal point.<br> + <tt><font size=+1>(</font></tt><i>E</i><tt><font size=+1>)<br> + sqrt(</font></tt><i>E</i><tt><font size=+1>)<br> + length(</font></tt><i>E</i><tt><font size=+1>)<br> + </font></tt>number of significant decimal digits<br> + <tt><font size=+1>scale(</font></tt><i>E</i><tt><font size=+1>)<br> + </font></tt>number of digits right of decimal point<br> + <i>L</i><tt><font size=+1>(</font></tt><i>E</i><tt><font size=+1>,</font></tt><i>...</i><tt><font size=+1>,</font></tt><i>E</i><tt><font size=+1>)<br> + </font></tt>function call<br> + + </table> + + </table> + Operators<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + <tt><font size=+1>+ − * / % ^ </font></tt> (<tt><font size=+1>%</font></tt> is remainder; <tt><font size=+1>^</font></tt> is power)<br> + <tt><font size=+1>++ −− <br> + == <= >= != < ><br> + = += −= *= /= %= ^=<br> + </font></tt> + </table> + + </table> + Statements<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + <i>E<br> + </i><tt><font size=+1>{</font></tt> <i>S</i> <tt><font size=+1>;</font></tt> ... <tt><font size=+1>;</font></tt> <i>S</i> <tt><font size=+1>}<br> + print</font></tt> <i>E<br> + </i><tt><font size=+1>if (</font></tt> <i>E</i> <tt><font size=+1>)</font></tt> <i>S<br> + </i><tt><font size=+1>while (</font></tt> <i>E</i> <tt><font size=+1>)</font></tt> <i>S<br> + </i><tt><font size=+1>for (</font></tt> <i>E</i> <tt><font size=+1>;</font></tt> <i>E</i> <tt><font size=+1>;</font></tt> <i>E</i> <tt><font size=+1>)</font></tt> <i>S<br> + </i>null statement<br> + <tt><font size=+1>break<br> + quit<br> + "</font></tt>text<tt><font size=+1>"<br> + </font></tt> + </table> + + </table> + Function definitions<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + <tt><font size=+1>define</font></tt> <i>L</i> <tt><font size=+1>(</font></tt> <i>L</i> <tt><font size=+1>,</font></tt> ... <tt><font size=+1>,</font></tt> <i>L</i> <tt><font size=+1>){<br> + auto</font></tt> <i>L</i> <tt><font size=+1>,</font></tt> ... <tt><font size=+1>,</font></tt> <i>L<br> + S</i> <tt><font size=+1>;</font></tt> ... <tt><font size=+1>;</font></tt> <i>S<br> + </i><tt><font size=+1>return</font></tt> <i>E + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + </i> + <tt><font size=+1>}<br> + </font></tt> + </table> + + </table> + Functions in<tt><font size=+1> −l</font></tt> math library<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + <tt><font size=+1>s(</font></tt><i>x</i><tt><font size=+1>)</font></tt>sine<br> + <tt><font size=+1>c(</font></tt><i>x</i><tt><font size=+1>)</font></tt>cosine<br> + <tt><font size=+1>e(</font></tt><i>x</i><tt><font size=+1>)</font></tt>exponential<br> + <tt><font size=+1>l(</font></tt><i>x</i><tt><font size=+1>)</font></tt>log<br> + <tt><font size=+1>a(</font></tt><i>x</i><tt><font size=+1>)</font></tt>arctangent<br> + <tt><font size=+1>j(</font></tt><i>n, x</i><tt><font size=+1>)<br> + </font></tt>Bessel function<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + + + </table> + + </table> + All function arguments are passed by value. + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + + The value of an expression at the top level is printed unless + the main operator is an assignment or the <tt><font size=+1>−s</font></tt> command line argument + is given. Text in quotes, which may include newlines, is always + printed. Either semicolons or newlines may separate statements. + Assignment to <tt><font size=+1>scale</font></tt> influences the number of digits to + be retained on arithmetic operations in the manner of <a href="../man1/dc.html"><i>dc</i>(1)</a>. Assignments + to <tt><font size=+1>ibase</font></tt> or <tt><font size=+1>obase</font></tt> set the input and output number radix respectively. + + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + + The same letter may be used as an array, a function, and a simple + variable simultaneously. All variables are global to the program. + Automatic variables are pushed down during function calls. In + a declaration of an array as a function argument or automatic + variable empty square brackets must follow the array name. + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + + <i>Bc</i> is actually a preprocessor for <a href="../man1/dc.html"><i>dc</i>(1)</a>, which it invokes automatically, + unless the <tt><font size=+1>−c</font></tt> (compile only) option is present. In this case the + <i>dc</i> input is sent to the standard output instead.<br> + +</table> +<p><font size=+1><b>EXAMPLE </b></font><br> + +<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + Define a function to compute an approximate value of the exponential. + Use it to print 10 values. (The exponential function in the library + gives better answers.) + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + + <tt><font size=+1>scale = 20<br> + define e(x) {<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + auto a, b, c, i, s<br> + a = 1<br> + b = 1<br> + s = 1<br> + for(i=1; 1; i++) {<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + a *= x<br> + b *= i<br> + c = a/b<br> + if(c == 0) return s<br> + s += c<br> + + </table> + }<br> + + </table> + }<br> + for(i=1; i<=10; i++) print e(i)<br> + </font></tt> +</table> +<p><font size=+1><b>FILES </b></font><br> + +<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + <tt><font size=+1>/usr/local/plan9/lib/bclib</font></tt> mathematical library<br> + +</table> +<p><font size=+1><b>SOURCE </b></font><br> + +<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + <tt><font size=+1>/usr/local/plan9/src/cmd/bc.y<br> + </font></tt> +</table> +<p><font size=+1><b>SEE ALSO </b></font><br> + +<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + <a href="../man1/dc.html"><i>dc</i>(1)</a>, <a href="../man1/hoc.html"><i>hoc</i>(1)</a><br> + +</table> +<p><font size=+1><b>BUGS </b></font><br> + +<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + No <tt><font size=+1>&&</font></tt>, <tt><font size=+1>||</font></tt>, or <tt><font size=+1>!</font></tt> operators. + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + + A <tt><font size=+1>for</font></tt> statement must have all three <tt><font size=+1>E</font></tt>s. + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + + A <tt><font size=+1>quit</font></tt> is interpreted when read, not when executed.<br> + +</table> + +<td width=20> +<tr height=20><td> +</table> +<!-- TRAILER --> +<table border=0 cellpadding=0 cellspacing=0 width=100%> +<tr height=15><td width=10><td><td width=10> +<tr><td><td> +<center> +<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a> +</center> +</table> +<!-- TRAILER --> +</body></html> |