dc
is one of the oldest language on Unix.
It is using the reverse polish notation, which means that you are first stacking numbers, then operations. For example 1+1
is written as 1 1+
.
To print an element from the top of the stack use command p
echo '2 3 + p' | dc
5
or
dc <<< '2 3 + p'
5
You can print the top element many times
dc <<< '1 1 + p 2 + p'
2
4
For negative numbers use _
prefix
dc <<< '_1 p'
-1
You can also use capital letters from A to F
for numbers between 10 and 15
and .
as a decimal point
dc <<< 'A.4 p'
10.4
dc
is using abitrary precision which means that the precision is limited only by the available memory. By default the precision is set to 0 decimals
dc <<< '4 3 / p'
1
We can increase the precision using command k
. 2k
will use
dc <<< '2k 4 3 / p'
1.33
dc <<< '4k 4 3 / p'
1.3333
You can also use it over multiple lines
dc << EOF
1 1 +
3 *
p
EOF
6
bc
is a preprocessor fordc
.