Bc
{{language |exec=interpreted |checking=static |hopl id=1854 }}
'''bc''' ("basic calculator") is the standard calculator for [[Unix]] systems.
bc boasts unlimited precision, to handle numbers with very many digits.
With the bc language, you can write programs that perform numeric calculations and print the results.
;See also :
- [[wp:Bc programming language|Bc programming language]] on Wikipedia
- [[:Category:Dc|dc]] - the unix '''d'''esktop '''c'''alculator.
bc has an interactive mode, which is convenient for brief calculations:
$ '''bc''' '''2 + 3''' 5 '''2 ^ 200''' 1606938044258990275541962092341162602522202993782792835301376 '''i = -5''' '''3 - i * 4''' 23 '''obase = 2''' '''i''' -101 '''ibase = 16''' '''FE80''' 1111111010000000
Division and sqrt will not give an infinite number of digits.
The special variable scale controls when to stop.
$ '''bc''' '''65.9 / 3''' 21 '''scale = 6''' '''65.9 / 3''' 21.966666 '''sqrt(2)''' 1.414213 '''scale = 60''' '''sqrt(2)''' 1.414213562373095048801688724209698078569671875376948073176679
bc language resembles [[C|C language]]: bc has most of the same operators and control structures ('if', 'while', 'for').
Expressions print themselves, unless they are assignments.
The newline is a statement separator, like the semicolon.
bc has excellent numeric operations, but is a poor language. The original bc, the "Bell Calculator" of Unix V7, translated the program to [[dc]] and inherited the limitations of [[dc]].
- Names of variables, and custom functions, may have only one letter.
- There is no 'else' branch of an 'if' statement.
- Relational operators (== <= => != < >) only work in the condition of an 'if', 'while' or 'for' statement.
- There are no boolean operators (! && ||).
Some newer implementations, like [[GNU bc]] and [[OpenBSD bc]], discard these silly limitations, but users can still feel their effects.
OpenBSD says, "a = b < c is interpreted as "(a = b) < c, which is probably not what the programmer intended," and "!a < b is interpreted as !(a < b)".
bc can only print a string, and has no other string operations, so bc cannot do tasks like [[reverse a string]].
bc has no way to read user input, except to go to interactive mode after loading a program.
[[Category:Mathematical programming languages]] [[Category:Utility]]