We’ve opened a new **DevOps (Bash, LAMP and LEMP Stack)
Professional position**. Part-time and entirely remote, of
course.

# Command Line Calculators

Last updated: November 30, 2023

## 1. Introduction

In Linux, sometimes we need to perform mathematical tasks and operations directly from the command-line interface (CLI).

In this tutorial, we’ll delve into several command-line calculators, each with its own set of capabilities, to cater to our specific mathematical needs.

## 2. Using *bc*

The basic calculator (*bc*) is one of the most popular command-line calculators in Linux. It’s compliant with POSIX standards and required to build the Linux kernel.

In short, ** bc is a feature-rich arbitrary precision calculator that can handle complex mathematical operations**.

### 2.1. Basic Calculation

Let’s launch *bc* and perform basic arithmetic operations:

```
$ 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'.
x=7
y=3
z=5
(x+y)*z
50
```

Here, we define three variables: *x*, *y*, and *z*. Then, we input the expression *(x+y)*z*. After that, *bc* outputs *50* as the result from this computation.

### 2.2. Shell Operation

Of course, *bc* also accepts arguments, so we can call it directly in the shell:

```
$ bc <<< "3 * 5"
15
```

In this instance, we use the Bash <<< here-string feature to pass the string *“3 * 5”* as input to the *bc* calculator. Then, *bc* computes the result of the multiplication operation, and *15* is shown in the output immediately below the command.

### 2.3. Using Functions

We can also define our own functions for more complex calculations:

```
define circle_area(radius) {
return 3.14159 * radius * radius;
}
circle_area(5)
78.53975
```

In this case, we define a function named *circle_area()* that takes one parameter, the *radius* of a circle. Then, we call the function with *5* as the argument. Finally, we see the returned area of a circle which is *78.53975*.

## 3. Using *calc*

*calc* is a straightforward command-line calculator that provides a basic means of performing arithmetic calculations.

Its pros lie in its simplicity and ease of use, making it a quick solution for basic math operations. However, **it lacks advanced mathematical functions, interactive capabilities, and constants commonly needed in calculations**.

First, let’s install *calc* via *apt-get* and *sudo*:

`$ sudo apt-get install calc`

Once installed, we use *calc* to calculate:

```
$ calc
C-style arbitrary precision calculator (version 2.12.7.2)
Calc is open software. For license details type: help copyright
[Type "exit" to exit, or "help" for help.]
; (9*7)+(6/2)
66
```

In this instance, the input expression is *(9*7)+(6/2)* and the output is the result *66*. **The calc calculator uses ; as a prompt**.

Moreover, the command accepts direct arguments:

```
$ calc 33 * 22
726
```

The *calc* calculator evaluates the expression *33 *22*, performs the multiplication, and displays the result, which is *726*.

Of course, we can also define variables:

```
; x=2
; y=3
; (x^2)+(y^3)
31
```

In this case, we define *x* and *y*, *calc* evaluates the expression in the third line and prints the result, which is *31*.

## 4. Using *qalc*

*qalc* is a command-line calculator in Linux that provides an interactive mode to enter expressions in a natural, human-readable format. Hence, **we can use it to perform various mathematical operations and conversions, including trigonometric functions, logarithms, and more**.

First, let’s install *qalc*:

`$ sudo apt-get install qalc`

Once installed, we can use *qalc* to access a wide range of mathematical functions and conversions:

```
$ qalc
> sin(30 degrees)
sin(30 × degree) = 1/2 = 0.5
> rand(10)
rand(10) = 5
> 120 usd to euro
120 × USD ≈ €106.5814015
> now
now ≈ "2023-10-23T11:53:53"
> tomorrow - yesterday
tomorrow − yesterday = 2 d
> 55 to bin
55 = 0011 0111
```

As we can see, *qalc* is more like a shell than other calculators, as it’s more versatile than a basic calculator. The *qalc* calculator uses *>* as its prompt.

## 5. Using *octave*

*octave* is a numerical computing environment commonly used in Linux for performing mathematical and scientific calculations.

**In some respects, it’s similar to MATLAB and provides a powerful command-line interface for numerical analysis, data manipulation, and visualization**.

First, let’s install *octave*:

`$ sudo apt-get install octave`

Then, we can perform a numerical computing:

```
$ octave
...
octave:1> % Set the number of Fibonacci numbers to generate
octave:1> n = 10;
octave:2> % Initialize the first two Fibonacci numbers
octave:2> fib = zeros(1, n);
octave:3> fib(1) = 0;
octave:4> fib(2) = 1;
octave:5> % Calculate the Fibonacci sequence
octave:5> for i = 3:n fib(i) = fib(i-1) + fib(i-2); end
octave:6> % Display the Fibonacci sequence
octave:6> disp(fib);
0 1 1 2 3 5 8 13 21 34
```

As we can see, octave uses *octave:#>* as its prompt.

In this instance, we calculate and display the first *10* numbers in the Fibonacci sequence, which is a series of numbers where each number is the sum of the two preceding ones.

The main advantage of *octave* is its sophisticated syntax that allows for complex expressions and control structures just like a scripting programming language.

## 6. Using *wcalc*

*wcalc* is a command-line calculator tool for Linux designed for quick and straightforward arithmetic calculations and expression evaluation. ** wcalc is lightweight and easy to use for basic mathematical operations**.

Moreover, *wcalc* provides a wide range of constants, including mathematical constants like pi, physics constants, atomic and nuclear constants, and more.

First, let’s install *wcalc*:

`$ sudo apt-get install wcalc`

Then, we can use *wcalc* in shell mode:

```
$ wcalc
Enter an expression to evaluate, q to quit, or ? for help:
-> \radians
Now Using Radians
-> x=45
display_val
xdisplay_val
= 45
-> cos(x)/sin(x)*ln(4)
= 0.855856
```

As we can see, *wcalc* uses *->* as a prompt.

In this case, we input */radians* to switch the calculator into radians mode. Then, we assigned *45* to the variable *x*. Finally, we evaluated a complex mathematical expression *cos(x)/sin(x)*ln(4)* with trigonometric functions and saw the result is *0.855856*.

## 7. Using *awk*

*awk* is a powerful text processing tool available on the command line in Linux.

**While awk isn’t a dedicated calculator, it can be used to perform mathematical calculations, manipulate data, and generate reports from text data**.

Let’s see how we can use *awk* to perform calculations:

```
$ echo "10 4" | awk '{print $1 - $2}'
6
$ echo "3 7" | awk '{print $1 * $2}'
21
$ echo "12 4" | awk '{print $1 / $2}'
3
```

In this case, we used *echo* to generate text containing pairs of numbers. Then, we pipe that text to *awk*. In every *awk* command variant, we extract the numbers from the text, perform a specific mathematical operation on them, and then print the result.

As a full-fledged programming language, AWK can do much more than just calculate mathematical expressions.

## 8. Using Bash

We can perform calculations directly from the command line using a variety of methods. One of the most straightforward ways is by using double parentheses *$((…))* for arithmetic operations.

Let’s see how we can use Bash for basic calculations:

```
$ echo $(( 10 * 15 ))
150
```

In this case, we used *echo* to display the result of the calculation. To do so, we entered a calculation within *$((…))*.

## 9. Using *genius*

*genius* is a powerful tool that can be used from the command line in Linux.

One of the notable features of the *genius* calculator is its support for arbitrary precision arithmetic. This means that **it can handle very large numbers and perform calculations with extremely high precision**.

First, let’s install *genius*:

`$ sudo apt-get install genius`

Then, we can use *genius* to calculate a large number:

```
$ genius
Genius 1.0.27
Copyright (C) 1997-2021 Jiří (George) Lebl
This is free software with ABSOLUTELY NO WARRANTY.
For license details type `warranty'.
For help type `manual' or `help'.
genius> x = 1234567890123456789012345678901234567890
= 1.23456789012e39
genius> x * 2
= 2.46913578025e39
```

Notably, *genius* uses *genius>* for a prompt.

In this case, the input is a large number multiplied by *2* and the result is *2.46913578025e39*.

## 10. Conclusion

Linux offers a variety of command-line calculators, each with its own set of features and capabilities. Some calculators are designed for simple arithmetic operations, while others can handle more complex mathematical and scientific calculations.

In this article, we’ve explored various command line calculators available in Linux CLI, outlining their benefits and drawbacks.