You can do a lot of things inside a Terminal window, even use a calculator. These are some calculator programs.

## Bash arithmetic expansion

You can perform arithmetic calculations without any external program, just englobe the operation with a `\$` and double parentheses. You can also use `expr`.

``````echo \$((5+8))
``````
``````expr 5 + 8
``````

## wcalc

You can run `wcalc` and a mathematical expression (use single quotes when adding the expression):

``````\$ wcalc 'log(8)'
= 0.90309
``````

Or you can only run `wcalc` and you will enter into interactive mode.

``````\$ wcalc
Enter an expression to evaluate, q to quit, or ? for help:
->
``````

Type `wcalc -P` and the number of decimals displayed for the results.

``````\$ wcalc -P20 pi
= 3.14159265358979323846
``````

Some examples of using `wcalc`:

``````-> 2*3
= 6
``````
``````-> sqrt(8)
= 2.82843
``````
``````-> ln 5
= 1.60944
``````

## bc

`bc` allows to add calculations on a file and run `bc <file>`. It also has an interactive mode and it can get the operations from stdin:

``````\$ echo "3.3+5.6" | bc
8.9
``````
``````\$ bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.

``````
• You can exit from this mode by pressing Q.

`bc -l` includes a math library with several basic functions included, like `l(x)` for the natural logarithm of ‘x’, or `s(x)`for the sine of ‘x’ (‘x’ is in radians).

`bc` has some predefined variables. One of them is ‘scale’ and it means the number of decimals displayed. You can modify it by typing `scale=<number>` inside `bc` interactive mode.

``````scale=2
1/3
.33
``````

Some examples of using `bc`:

``````4*(3+5)
32
``````
``````3^2
9
``````
``````# from decimal to binary
\$ echo "obase=2; 3" | bc
11
``````

## qalc

Powerful command line calculator (there is a GUI app called Qalculate!). Read its man page to find all the available features, but these are some examples. Start by running `qalc` (with no parameters) for interactive mode (exit from interactive mode by running `exit`) or `qalc '<calculation>'` (`>` symbol in the examples means we are running the command in interactive mode). :

• Basic calculations
``````  > 2+3

2 + 3 = 5
``````
``````  \$ qalc '2*(5-2)'
2 × (5 − 2) = 6
``````
• Ecuations:
``````  > 5x + 17 = 3

((5 × x) + 17) = 3

x = −14/5 = −2.8
``````
• Convert units:
``````  > 50MB to GB

50 × megabyte = 0.05 GB
``````
``````  > 300Mbit/s to MB/s

300 × (megabit / second) = 37.5 MB/s
``````
``````  > 5 minutes to hours

5 × minute ≈ 0.08333333333 h
``````
``````  > 5W to kW

5 × watt = 0.005 kW
``````
``````  > 8GB / (300Mbit / second)

(8 × gigabyte) / ((300 × megabit) / second) ≈ 3 min + 33.33333333 s
``````
• Calculate days:
``````  > "2023-01-01" - "now"

"2023-01-01" − "2022-08-30T19:34:25" = 123 d + 5 h + 25 min + 34.409016 s
``````
``````  > days("today","2023-01-01")

days("2022-08-30", "2023-01-01") = 124
``````

If you have any suggestion, feel free to contact me via social media or email.