A RPN (Reverse Polish Notation) calculator. Once you get used to RPN you may never go back to a regular calculator. Has scientific, business and statistics modes,
and more. This is an excellent app for exploring RPN  - if you discover you prefer RPN as much I do and want an RPN calculator, they can be purchased at the HP
web site and elsewhere  (they appear to be unavailable at office supply stores such as Staples and computer vendors such as BestBuy). These RPN calculators can
also be used in the traditional mode.

GNU OCTAVE  (Linux, OS-X, Windows)
An excellent clone of Matlab but designed for Linux - the Windows version leaves a lot to be desired . Octave does an excellent conversion from Matlab codes.
I can confirm that my Matlab codes work perfectly on Octave, with occasional  minor modifications. Computation times are about the same time as Matlab. There are
two forms of Octave, only one of which should be used - avoid the QtOctave version (Mint has evidently dropped all support for QtOctave) . The present (5/16)
Octave default is a command line app. However its plotting functionality is inferior to Matlab. Be sure that Gnuplot-x11 is installed rather than gnuplot-qt.

(1) Functions files for Octave must have a .m suffix, exactly like Matlab. Amazingly, this is not stated in the Octave documentation.

(2) Matlab m-files must be written as, copied to, or saved as, a text file before being transferred to the working Octave directory (see (3)) below). Matlab files that
are directly copied are not recognized by Octave. The easiest way to do this is to open the Matlab m-file with the default text editor and then save-as to a text file in the
Octave directory.Once it is in this directory further editing to produce a viable Octave function file may be needed. For coding a new function it is easiest to open an
extant file and insert the new code after the first or second line (otherwise hidden beginnng characters screw up the interpreter) and then delete the intial lines.

(3) Function files can be stored in any directory. However if this directory is not in the same folder as the Octave program it must be identified with the command
[addpath("directoryname")] where both the () parentheses and the quotation marks must be included (" and ' both work). You need to run addpath every time you start Octave,
but this is not inconvenient because Octave remembers previous selections (use one of the up or down arrow keys).  I have always used a separate DATA partition for such
directories without difficulty in Octave running on Mint.

(4) Once Octave is installed additional packages must be installed to activate many (most?) of the commonly used functionalities. These are essentially equivalent to
Matlab's Toolboxes, except that many of them could be expected to be part of the initially installed Octave rather than add-ons. I install all packages that I think might be
relevant to my needs (for example Xterm, Gnuplot-X, io packages). Why these are not installed by default is beyond me.

(5) I have done successful optimizations using the unconstrained built-in function fminunc rather than Matlab's fminsearch - the input arguments are formatted
identical so that the call to fminsearch in Matlab is replaced by a call to fminunc in Octave, keeping everything else the same. Optimization times are about the
same. Alternatively, fminsearch can be used after installing the optimization packages.

(6) The function 'ginput'  (entering coordinates from a plot) works fine once the octave-plot package is installed and and gnuplot-x11 is installed  - Gnuplot-qt
creates problems

Another mathematical programming package. I tried this a decade or so ago and it worked but I have had so much success with Octave that I have not used it since. It has
a Matlab-to-Scilab converter, although my attempts at such conversions were not successful (perhaps this has improved).