Qalculate!

- the ultimate desktop calculator

Qalculate! is a multi-purpose cross-platform desktop calculator. It is simple to use but provides power and versatility normally reserved for complicated math packages, as well as useful tools for everyday needs (such as currency conversion and percent calculation). Features include a large library of customizable functions, unit calculations and conversion, physical constants, symbolic calculations (including integrals and equations), arbitrary precision, uncertainty propagation, interval arithmetic, plotting, and a user-friendly interface (GTK, Qt, and CLI).

Qalculate! is free software, licensed under the GNU Public License v2 (or later).

Latest News

2024-03-11

Qalculate! version 5.0 released

Changes:
- Detection of potential spelling mistakes (a warning will be shown)
- Add support for n...m, j:k, and j:i:k syntax, for sequence of numbers, e.g. 1...3 = (1:3) = (1:1:3) = [1 2 3] (note that brackets may be required for colon syntax to avoid conflict with time format)
- Improved "where" operator, including improved output of parsed expression, support for previously undefined variable names, and assignments before expression (e.g. "a=2, b=2, a^b")
- New units: LightSecond, LightMinute, and LightHour
- New functions: bitget(), bitset(), setbits(), integerDigits(), digitGet(), digitSet(), flip(), colon(), and foreach()
- More rounding methods
- Support for hexadecimal floating-point literals using 0x...p... notation (0x1.4p3 = 0x1.4 * 2^3 = 10)
- Add support for "decimals" "to"-conversion (display as decimal fraction)
- Allow plot grid values higher than 1 (true) to specify line width
- Improve handling of zero solution and initial guess in newtonsolve() and secantsolve(), and check validity of solution
- Change handling a vectors in multiple function arguments (of non-vector type) - return vector instead of matrix, require equal number of elements, and use the same vector index for all arguments for each function instance (e.g. atan2([1 2], [3 4]) = [atan2(1, 3) atan(2 4)]
- Set handle vector property by default, for text, date, and boolean arguments, and for arguments, in global non-builtin functions, without specified type, and enable parsing of vectors for text arguments
- Do not apply "read precision" setting to integer exponents for values with units
- Change from line to point (or dot) plot style for data with many discontinuous points
- Use parentheses for number with scientific notation in more cases
- lambertw(x*e^x, 0)=x if x>=-1
- Fix dsolve(diff(y, x) = y), and similar
- Fix log(1, 1) (undefined)
- Fix "to"-conversion to prefix and add "prefix" conversion option (for optimal prefix)
- Fix segfault in newtonsolve() and secantsolve() when equation does not contain variable
- Fix conversion to angle unit for complex angle, cis and polar forms
- Exchange rates fixes
- Option to show scientific notation using 10^x, instead of E-notation (CLI)
- Add settings for two's complement input (short settings "twosin" and "hextwosin"), and default number of bits ("bits") (CLI)
- Add "keep" command, for making variables and functions non-temporary (CLI)
- Allow multiple options, separated by semicolon, with a single --set (-s) command line argument (CLI)
- Show error messages for command without argument, if not a reasonable expression, even if "/" is not used (CLI)
- Exit with error status code if command line expression generates error (CLI)
- Fix -no... command line options when using double dash, e.g. "--nocurrencies" (CLI)
- Click on binary digit in result/bases dock to flip bit (GTK, Qt)
- Fix x and y reversed for paired matrix when using plot dialog (GTK, Qt)
- Improvements/fixes to conversion completion and menus (GTK, Qt)
- Add retry and cancel buttons to error dialog after failure to save preferences, definitions, or workspace (GTK, Qt)
- Add last result to stack when pressing Enter with empty expression (was unintentionally disabled) (GTK, Qt)
- Selection of default number of bits for binary and hexadecimal numbers in programming keypad (GTK)
- Always show binary position numbers in result if numbers of bits are higher than 16, and improve appearance (GTK)
- Fix saving of handle vector function argument property (Qt)
- Fix saving of multiple names after editing of existing unit (QT)
- Fix saving of preferences when a workspace, other than the default, is currently open and the general preferences file does not exist (Qt)
- Minor bug fixes and feature enhancements