Genius is a calculator program that has both a command-line version and a GNOME GUI version. It should available in your distribution's package management system. For Debian-based distributions, the GUI version and the command-line version are two separate packages. Assuming that you want to install both, you can do so with the following command:
sudo apt-get install genius gnome-genius
If you use Ubuntu, be aware that the package gnome-genius doesn't appear to be in Bionic. It's in earlier versions (trusty, xenial and arty), and it appears to be in the next version (cosmic). I ran into this problem, and thought I'd mention it to save you some aggravation.
Starting the command-line version provides an interpreter that should be familiar to Python or R users.
Figure 1. When you start Genius, you get the version and some license information, and then you'll see the interpreter prompt.
If you start gnome-genius, you'll see a graphical interface that is likely to be more comfortable to new users. For the rest of this article, I'm using the GUI version in order to demonstrate some of the things you can do with Genius.
Figure 2. The GUI interface provides easy menu access to most of the functionality within Genius.
You can use Genius just as a general-purpose calculator, so you can do things like:
genius> 4+5 = 9
Along with basic math operators, you also can use trigonometric functions. This command gives the sine of 45 degrees:
genius> sin(45) = 0.850903524534
These types of calculations can be of essentially arbitrary size. You also can use complex numbers out of the box. Many other standard mathematical functions are available as well, including items like logarithms, statistics, combinatorics and even calculus functions.
Along with functions, Genius also provides control structures like
conditionals and looping structures. For example, the following code gives
you a basic
for loop that prints out the sine of the first 90
for i = 1 to 90 do ( x = sin(i); print(x) )
As you can see, the syntax is almost C-like. At first blush, it looks like
the semicolon is being used as a line-ending character, but it's actually
a command separator. That's why there is a semicolon on the line with
the sine function, but there is no semicolon on the line with the print
function. This means you could write the
for loop as the