Qalculate! – a multi-purpose cross-platform desktop calculator

Qalculate! is a very powerful and easy to use open source desktop calculator.

This utility is small and simple to use but with much power and versatility under the bonnet. Its features include customizable functions, units, arbitrary precision, plotting, and a graphical interface that uses a one-line fault-tolerant expression entry (although it supports optional traditional buttons).

The centre of attention in Qalculate! is the expression entry. Instead of entering each number in a mathematical expression separately, you can directly write the whole expression and later modify it. Just enter an expression as you would write it on paper, press Enter and voila!

Qalculate! also has some special tools to increase efficiency, including a number base conversion dialog and a simple plotting interface.

Plotting in Qalculate! is done through an external program, gnuplot.

Features include:

  • Graphical user interfaces implemented using KDE or GTK+-2.0 and Glade XML.
  • Flexible expression entry and separate result display.
  • Displays whether result is precise or not.
  • Small and … not so small mode.
  • Practical menus give fast access to all advanced features.
  • Calculation history.
  • Optional traditional calculator buttons.
  • Dialogs for management of and easy access to functions, variables and units (with quick conversion).
  • User friendly dialogs for functions, with description and entries for arguments.
  • Create/edit functions, variables and units.
  • Easy editing of matrices and vectors.
  • Easy interface to gnuplot.
  • Separate window for fast conversion between number bases.
  • Periodic table.
  • Small separate utilities for base, currency and unit conversion.
  • Additional text based interface with full functionality.
  • Enhanced completion.
  • Meta modes.
  • Calculation and parsing:
    • Basic operations and operators: + – * / ^ E () && || ! < > >= <= != ~ & | << >>.
    • Fault-tolerant parsing of strings: log 5 / 2 .5 (3) + (2( 3 +5 = ln(5) / (2.5 * 3) + 2 * (3 + 5).
    • Expressions may contain any combination of numbers, functions, units, variables, vectors and matrices.
    • Supports complex and infinite numbers.
    • Supports all number bases from 2 to 36, time format and roman numerals.
    • Ability to disable functions, variables, units or unknown variables for less confusion: ex. when you do not want (a+b)^2 to mean (are+barn)^2 but (“a”+”b”)^2.
    • Controllable implicit multiplication.
    • Matrices and vectors, and related operations (determinants etc).
    • Verbose error messages.
    • Arbitrary precision.
    • RPN mode.
  • Result display:
    • Supports all number bases from 2 to 36, plus sexagesimal numbers, time format and roman numerals.
    • Many customization options: precision, max/min.
      decimals, multiplication sign, etc.
    • Exact or approximate.
    • Fractions: 4 / 6 * 2 = 1.333… = 4/3 = 1 + 1/3.
  • Symbolic calculation:
    • Ex. (x + y)^2 = x^2 + 2xy + y^2; 4 “apples” + 3 “oranges”.
    • Factorization and simplification.
    • Differentiation and integration.
    • Can solve most equations and inequalities.
    • Customizable assumptions give different results (ex. ln(2x) = ln(2) + ln(x) if x is assumed positive).
  • Functions:
    • All the usual functions: sine, log, etc… : ln 5 = 1.609; sqrt(tan(20) – 5) = sqrt(-2.76283905578).
    • Lots of statistical, financial, geometrical, and more functions (approx. 200).
    • If..then..else function, optional arguments and more features for flexible function creation.
    • Can easily be created, edit and saved to a standard XML file.
  • Units:
    • Supports all SI units and prefixes (including binary), as well as imperial and other unit systems.
    • Automatic conversion: ft + yd + m = 2.2192 m.
    • Implicit conversion: 5m/s to mi/h = 11.18 miles/hour.
    • Smart conversion: can automatically convert 5 kg*m/s^2 to 5 newton.
    • Currency conversion with retrieval of daily exchange rates.
    • Different name forms: abbreviation, singular, plural (m, meter, meters).
    • Can easily be created, edit and saved to a standard XML file.
  • Variables and constants:
    • Basic constants: pi, e.
    • Lots of physical constants and elements.
    • CSV file import and export.
    • Can easily be created, edit and saved to a standard XML file.
    • Flexible, can contain simple numbers, units or whole expressions.
    • Data sets with objects and associated properties in database-like structure.
  • Plotting:
    • Uses gnuplot.
    • Can plot functions or data (matrices and vectors).
    • Ability to save plot to PNG image, postscript, etc.
    • Several customization options.

Support: Manual
Developer: Hanna Knutsson
License: GNU GPL v2


Qalculate! is written in C++. Learn C++ with our recommended free books and free tutorials.

Return to Calculators Home Page | Return to Financial Home Page

Read our complete collection of recommended free and open source software. The collection covers all categories of software.
Share this article


  1. why don’t these calculators have “memory” functions such as M+ M- MRC MC.

    not only is this useful, it is practically necessary for the simplest day-to-day budgetary or financial calculations.

    even the cheapest hand held calculators (like at the dollar stores?) ALL have this function

    and yet, and yet, almost NONE of these calculators, even the “advanced” calculators

    I hate to say it, but even Windows has this on their basic calculator. Did they get it right by accident?

    1. Qalculate has a “STO” button (similar to TI graphing calculators) which lets you assign a result to an arbitrary variable name. You can also use ‘:=’ (colon, equals) for variable assignment, as in ‘x:=x+1’.

      Anyway, Qalculate seems to be more of a “computer algebra system” than a “calculator” in the conventional sense that you’re looking for.

      Since every desktop environment I can think of has a built in calculator program (with memory functions), it’s hard to understand why you’d be frustrated by this.

      1. it is not at all difficult to understand why he is frustrated by the lack of the memory buttons. They are very handy to have available. My thought is why are YOU not concerned that the memory buttons are missing.

        1. It’s quite simple really. If you are so concerned by any missing functionality, you can:

          a) raise an issue on the project’s GitHub page, requesting the *missing* feature(s) are added. The developers will consider any request. They might decide to add what you want, or explain why they won’t.

          The fact that you don’t appear to have done this (or for that matter anyone else) indicates that the program’s userbase doesn’t consider the functionality in question to be important as you suggest.

          b) code the *missing* feature yourself. If the developer doesn’t accept the code…

          c) fork the project, apply the code, or pay someone to write the code if you are unable to develop, or don’t have the time to do so.

          That’s the beauty of open source.

          1. Wow. Genius. Whenever I see the “go fix it yourself” crowd surrounding an open-source project, I know to not use that b/c I can expect to implement every other standard missing feature & I might as well be maintaining my own software at that point.

  2. NICE!

    Thanks for this great article on “Qalculate!”. I have used Galculator for while now because of its being available through the usual repositories (and as a default on many Debian distros). However, being that I am very interested in custom functions for various technical uses, Galculator has me hitting my head at the ceiling of its limitations.

    Qalculate! sounds like the one for me and my needs for advanced technical mathematics. My main thing, I need to be able to craft and use functions that will probably require two or more inputs anyway, and it sounds like Qalculate! may again fit the bill?

    So, based on what I have read here, I am going to try it out.

    Once again, Thanks for fine article.

    – Jim S.

  3. Anyone know how to put a comment or whatever in before, during or after doing a calculation? If I calculated the partial volume of a cylinder (horizontal), which is good for knowing things like how much fuel is in a tank, it would be nice to have a comment before, during or after I made the calculation — so that when I was going through my history later, looking through 500 calculations, I could say “Yep, there that feller is!”. Since I don’t know that formula by heart, because I don’t work in a field where I do that calculation so I do it 50 times a day and have it memorized, but I did it once because it was important for some reason at the time, and I need to know how I did it again. As someone said in a comment on another site, you might not (gasp! horror!) have access to the Internet at the time, so you can’t just google “calculate partial volume of a cylinder” or “calculate remaining volume in a tank” or some such.

Share your Thoughts

This site uses Akismet to reduce spam. Learn how your comment data is processed.