2024-05-07

Qalculate! version 5.1.1 released

This version fixes a^(f(x)) = (a^b)^(g(x)), where b equals -1, 2/3, 2 or 3, and f(x) does not equals g(x). Only libqalculate has been updated.
2024-05-06

Qalculate! version 5.1 released

Changes:
- Support for solving equations containing if() function
- Support for solving root(a, x)=b (requires rational value for ln(a)/ln(b))
- New functions: powertower() and multiples()
- New units for solar radius, mass, and luminosity
- Ask for the desired interpretation the first time percent addition is used (e.g. 100 + 10% equals 110 or 100.1)
- Use parentheses for exponent using scientific notation (with power of 10)
- Support integer factorization of integers in matrix/vector, and of numerator and denominator in rational number
- Relaxed conditions for (x^a)^b = x^(a × b) and x^a × x^b = x^(a + b) when complex numbers are deactivated (fixes segfaults)
- Fix (ax + n)^2 > 1, where n is even and a is not 1, returning false
- Fix setbits() function
- Fix Number::equals(0, ..., true) when number is infinite (affects replace() function)
- Add two's complement input and binary bits to preferences, and preserve these settings when leaving programming keypad (GTK, Qt)
- Download button in dialog shown when new version is available, on Windows (GTK, Qt)
- Fix AltGr (primarily for input of operators) on Windows (GTK, Qt)
- Option to show parsed expression in result field (GTK)
- Portuguese (Portugal) translation (GTK)
- Fix updating of self-contained GNU/Linux binaries from GUI (GTK)
- Improved history list efficiency (Qt)
- Hide expression tooltip (after 300 ms) when input resumes, if delayed expression status is enabled (Qt)
- Minor bug fixes and feature enhancements

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

2023-11-27

Qalculate! version 4.9 released

Changes:
- Support for specifying a fixed denominator for display of fractions (e.g. "0.3 ft ➞ 1/8 ≈ (3 + 5/8) in")
- Return gcd of numerators divided by lcm of denominators in gcd() with non-integer rational numbers, and vice versa for lcm()
- Add units for mean Gregorian and tropical years
- Ignore underscore in number
- Replace defunct exchange rates source and fix bitcoin exchange rate
- Fix asin(x)=a, acos(x)=a, and atan(x)=a, when a contains an angle unit and default angle unit is set
- Fix output of value converted to unit expression with numerical multiplier in denominator, e.g. "➞ L/(100 km)"
- Fix segfault when trying to solve "(x*sqrt(x)-y*sqrt(y))/(sqrt(x)-sqrt(y))=x+sqrt(x*y)+y"
- Fix parsing of case insensitive object name ending with Unicode character when followed by another Unicode character in expression, e.g. "микрометр"
- Always add result to history (even if identical to previous) if expression contains a function generating a random number (GTK, Qt)
- Prefer capitalized function name (over name with underscore), when completing function name (GTK, Qt)
- Improve decision to (not) update calculate-as-you-type result when last character is an operator (GTK)
- Add percent and permille output options in rational number form menu (GTK)
- Fix keypad button (up/down) for cycling through expression history (GTK)
- Restore decimal number base after closing programming keypad (Qt)
- Improve appearance of conversion menu (Qt)
- Save position of main window even if size has not changed from the default (Qt)
- Fix custom middle click button action (Qt)
- Fix immediate calculation after selecting to-conversion completion (Qt)
- Add history command, listing expression history (CLI)
- Display all exponents 0-9 using Unicode superscript characters if these are the only exponents in the expression (CLI)
- Minor bug fixes and feature enhancements

2023-09-18

Qalculate! version 4.8.1 released

Changes:
- Fix besselj() and bessely()
- Fix display of matrices and vectors with complex number form other than rectangular (default)
- Fix conflict between decibel units (e.g. "0dB") and duodecimal 0d… syntax (now requires at least two digits)
- Fixes for title options in plot() function
- Add additional buttons and button menus to general keypad (Qt)
- Add option to show all functions, units, and variables in tool button menus (Qt)
- Add recently used objects to functions, units, and variables menus (Qt)
- Add option to bypass dialog for functions in menu (Qt)
- Add option, in context menu, to display text for tool buttons (Qt)
- Open functions, units, and variables tool button menus using long-press or right-click (in addition to arrow button), and add keyboard shortcuts (Qt)
- Use keypad tool button menu as context menu and show keypad type in title bar of keypad (Qt)
- Auto-update number bases above programming keypad when entering simple integers, even if calculate-as-you-type is deactivated (GTK)

2023-08-21

Qalculate! version 4.8 released

Changes:
- Concise (e.g. "1.2345(67)") and relative (e.g. "5+/-2%") notation for output and input (disabled by default for concise notation) of interval
- Optimize rest of unit expression when converting to partial (insufficient) expression (e.g. 18MA×100ns to J = 1.8 J/V)
- Round high precision intervals enclosing integers for integer arguments
- Add support for specifying position of sign bit in floating point functions
- New derived units: Debye, C·m, Daraf, F^-1, V/C, N/C, kcal, kcal/g, kJ
- Use international foot as base unit for rod
- Fix fibonacci() for non-integers and recursive use
- Fix conversion options presented for speed units (and possibly other)
- Update dialogs for editing of variables, functions, units, etc. to match the corresponding dialogs in the Qt UI (GTK)
- Show user-defined objects in a separate category in menus and dialogs (GTK)
- Add option to disable tooltips in keypad or everywhere (GTK, Qt)
- Add option to disable units and to interpret unrecognized symbols as variables (unknowns) to preferences (Qt)
- Make closing of application with Escape key optional and disabled by default (GTK, Qt)
- Hide name column in conversion list when applied to current result (Qt)
- Add temporary option to unknown variable edit dialog (GTK, Qt)
- Add Microship (PIC16/17) 24 and 32 bit floating point formats (GTK, Qt)
- Fix initial height of list and description in units window (GTK)
- Minor bug fixes and feature enhancements

2023-07-03

Qalculate! version 4.7 released

Changes:
- Support for custom default angle unit, e.g. turn, arcsec, arcmin
- Append default angle unit (instead of always radians) when converting value without unit to angle unit
- More consistent addition and removal of angle unit from function arguments
- Always interpret ./, .*, and .^ as entrywise operators if user intention is unclear
- Change order of operations to place entrywise and ordinary operators on the same precedence level
- Add function, kron(), for Kronecker product, and constants for Pauli matrices
- Add radius to planets dataset and update other properties
- Support replacement of unknown variables within variable values
- Fix besselj(0, 0)
- Fix incomplete calculation in tan() with try exact approximation
- Fix 0/0=0 equality (do not return true) and output of 2/0 (and similar)
- Fixes and improvements for newtonsolve() and secantsolve()
- Fix segfault when MathStructure is deleted after Calculator, and in destructor of calculated DynamicVariable (called from Calculator destructor)
- Do not save mode on exit if "-defaults" command line switch where used (CLI)
- Allow multiple actions for keyboard shortcuts (GTK, Qt)
- Add toggle precision, and min, max, or min and max decimals to available shortcut and button actions (GTK, Qt)
- Add option to exclude units for unformatted ASCII copy (GTK, Qt)
- Add optional value to copy result action, allowing expression copy and formatting selection (GTK, Qt)
- Fix copy unformatted ASCII when local digit group separator is same as selected decimal separator (GTK, Qt)
- Add option to automatically copy result (Qt)
- Always set (primary) selection clipboard contents when whole expression is selected or selection is cleared, e.g. after calculation (Qt)
- Improve support dark mode and high contrast modes, and change default style to Fusion, on Windows (Qt)
- Minor bug fixes and feature enhancements

2023-04-17

Qalculate! version 4.6.1 released

Changes:
- Fix segfault in Gnome shell search provider with GLib 2.76 (GTK)
- Improve abortion of slow calculations
- Fix segfault and inconsistent behaviour in calculation of a^n mod b when n is negative
- Add modular exponentiation function, powmod(), with support for calculation of modular inverse
- Do not make any difference between row and column vectors in magnitude(), norm(), and dot() functions
- Fix division and exponentiation of scalar by matrix/vector, e.g. 4./[8 4.5]
- Improve parsing of element-wise operators with comma as decimal separator
- Fix rref() with different units for different elements
- Fix segfault with empty vector in uncertainty calculation
- Fix segfault trying to solve cbrt(x)^(1/3)-x=0
- Fix segfault in handling of vector variable with uncertainty
- Fix segfault in function assignment with equals sign (e.g. F()=...), when an object with the same name already exists
- Fix segfaults in some corner cases
- Fix internal id does not exist error
- Fix erroneous simplification of sin(x)^2*y-cos(x)*sin(x)^2*y
- Do not try to calculate norm() and magnitude() for matrices
- Fix some memory leaks
- Fix order of argument titles in csum() function
- Fix abbreviation for variable units (varunits) command in information (CLI)
- Support WebKitGTK version in configure option, e.g. --with-webkitgtk=4.1 (GTK)

2023-03-06

Qalculate! version 4.6 released

Changes:
- Do not automatically by default set prefix higher than kilo for meter, gram, higher than 1 (no prefix) for second and litre, or lower than 1 for byte and bit
- Do not use recently introduced SI prefixes (R, Q, r, q) automatically by default
- Do not set automatic prefix if resulting multiplier is less than 1 or greater than 1000, with some exceptions (e.g. km)
- Default prefix unit property (use for gram, and few other units, instead of hard coded value)
- Option to change symbols used for output of digits 10 and 11 in duodecimal numbers (use A and B as default digits)
- Allow the same variable left and right of the equals sign (e.g. var=var+2), in variable assignment without colon, if the variable exists and the previous value is known
- Use Unicode symbol for minus in scientific e notation
- Do not show multiplier if exactly 1, in HTML output of scientific notation
- Prefer Nm (torque) over J when the result is a vector with three components
- Add "amp" abbreviation to ampere unit, and "thou" name for 1/1000 in (mil)
- More robust and consistent default language detection on Windows
- Fix unit order for Nm and Ws
- Fix conversion from ounce (interpreted as fluid ounce) to litre with prefix
- Fix automatic reactivation of global object after deletion of conflicting object
- Fix parsing of scientific e notation when the number is extremely large and exponentiation fails because of floating point overflow
- Fixes for output of scientific notation using number bases other than decimal
- Fix prefix selection in denominator when multiplier is higher than the value of the largest prefix
- Fix segfault in multisolve()
- Don't show anything on empty input (CLI)
- Support "help [OPTION]" and "help set [OPTION]" command to display description for a single set option (CLI)
- Option to change language on Windows (GTK, Qt)
- Minor bug fixes and feature enhancements

2023-01-04

Qalculate! version 4.5.1 released

Changes:
- Fix retrieval of exchange rates from mycurrency.net and add alternative secondary exchange rates sources
- Add m/s³, m/s⁴, m/s⁵, and m/s⁶ as derived units (improves automatic unit conversion)
- Check that the output of command, in command() function, is a reasonably sane expression
- Fix unit tests
- Align completion list to beginning of word (GTK, Qt)
- Do not reduce width of columns in visible list (Qt)
- Add option to not format output (Qt)

2022-12-19

Qalculate! version 4.5 released

Changes:
- Conversion to any type of expression (e.g. "1000 BTC to million USD")
- Use current status of limit implicit multiplication setting during parsing of conversion expression
- New SI prefixes (R, r, Q, q)
- New units: ounce force (ozf), rack unit (U)
- Use standard form (sorting) for polynomials
- Improve consistency of behaviour when global units are replaced
- More consistent addition of units to expression without units for unit conversion
- Improvements and fixes for arg() and atan2() functions
- Fix interpretation of Myr (megayear) and Gyr (gigayear)
- Fix milli- and centimeter of water units
- Fix genvector() with for negative step size or expression as step size/number of steps
- Fix randuniform() function
- Fix automatic/dual fraction format after conversion (e.g. "8 to score")
- Fix inconsistently displayed parsing of "7d 5h" and similar
- Use history font for RPN stack list (GTK, Qt)
- Fix factorization conversion specified in expression, and conversion performed using a separate expression (GTK)
- Fix unit names dialog (GTK)
- Use log() instead of log2() as alternative action on "ln" keypad button (Qt)
- Fix completion (including segfaults) and expression tooltip on Wayland (Qt)
- Fix RPN mode deactivated after application loses focus (Qt)
- Minor bug fixes and feature enhancements

2022-10-17

Qalculate! version 4.4 released

Changes:
- New prime number functions: primePi(), primes(), nthprime(), nextprime(), prevprime(), and isprime()
- New functions for intervals and uncertainties: upperEndpoint(), lowerEndpoint(), midpoint(), and errorPart()
- Add meter of water and related pressure units, and more derived flow rate units
- Support for vectors and matrices in uncertainty propagation calculation
- Proper support for uncertainty propagation in total(), sum(), product(), and for() functions
- Simplify display of parsed expression (primarily for quantities with units)
- Avoid parsing of implicit multiplication as nested multiplication
- Allow use of curly brackets as alternative parentheses
- Include +/- statement in function argument without parentheses
- Return values for approximate variables in exact mode in dimension() and elements()
- Improve parsing of quotation marks as feet/inch or arcmin/arcsec (e.g. do not parse s" as sin)
- Partial Georgian translation
- Fix exact calculation of re((a*i)^(n/2)) (wrong sign in some cases)
- Fix erroneous calculation in some cases with physical constants both outside and inside unit relations when interval calculation is set to interval arithmetic
- Fix segfault in Calculator destructor
- Fix segfaults in some corner cases
- Fix use of random numbers in iterative functions
- Fix writing beyond end of array during exchange rates check in some cases (results in activation of old style matrices)
- Fix automatic reactivation of deactivated global object if a function with the same name exists
- Do not convert function arguments which do not allow units (fixes "arcsin(0.5+/-0.1) to deg")
- Fix prefix after conversion to optimal unit when the optimal unit includes a prefix
- Fix exact calculation when function argument is an approximate vector variable (fail)
- Add "Clear history" to available keyboard shortcut and button actions (GTK, Qt)
- Show exchange rates source, and update time, for current calculation in tooltip (GTK, Qt)
- Fix "Set Prefix" for auto-calculated result (GTK)
- Fix copying of result during delay before calculate-as-you-type result is added to history (GTK)
- Fix removal of additional keyboard shortcuts, after first removal (Qt)
- Add option, in keypad button menu, to reset keypad position (Qt)
- Fix font dialogs when "Keep above other windows" is enabled (Qt)
- Fix saving of sub-function precalculate property (Qt)
- Minor bug fixes and feature enhancements

2022-08-22

Qalculate! version 4.3 released

Changes:
- Fix handling of Unicode powers for units in denominator, with adaptive parsing enabled (e.g. parse 10m/s² the same as 10m/s^2)
- Fix "+" ignored after "E" in number bases where "E" is a digit
- Fix scientific E notation with sign in argument when function is used without parentheses
- Fix lambertw() for values very close to zero
- Fix a × b^x + cx = d when a and c have different signs and d is non-zero
- Fix a^x × b^x = c when a and b is negative, and c is positive
- Fix segfaults in some corner cases
- Fix potential issues in handling of leap seconds (e.g. during subtraction of seconds from date)
- var = a syntax for variable assignment with calculated expression
- Replace ounce with fluid ounce during conversion to volume unit
- Solve a^x + b^x + … = c in more cases
- Improve remainder/modulus for numerators with large exponents
- Truncate number in output of parsed expression and end with ellipsis if unable to display all decimals
- Improved floating point calculation and output speed, particularly for simple expressions with very high precision
- New functions: clip(), qFormat(), qError()
- "clear history" command and option to clear (not save) history on exit (CLI)
- Replace selection (instead of wrap in parentheses) on operator input if selection ends with operator (GTK, Qt)
- Act as if two arguments are required when applying base-N logarithm to expression (GTK, Qt)
- When applying function to expression, exclude to/where expression and place cursor before closing parenthesis if operator is last in selection (GTK)
- Show padlock (or "[P]") after protected expression (Qt)
- Fix name field not working in argument edit dialog (Qt)
- Minor bug fixes and feature enhancements

2022-05-25

Qalculate! version 4.2 released

General changes:
- Option to plot real and imaginary parts separately (enabled by default)
- Variable spacing of x values in plot (unless step size is used)
- Updated plot() function with arguments for specification of plot options (in any order after the third argument)
- Polar plot style
- Ask the user for the desired sinc() variant (unnormalized or normalized)
- Support for binary-coded decimals (BCD)
- Show names with underscore capitalized and with underscore removed (with some exceptions)
- Additional information units
- Units for volumetric flow rate
- Tradtional numbers (e.g. dozen, score)
- Show warning when log() is used with a single argument, and always show second argument of log()
- Show single digit suffixes using Unicode subscript (CLI)
- Make names with a single character followed by digits case-sensitive with suffix by default
- Accept more than two arguments in gcd() and lcm()
- Interpret a single vector argument as a list of arguments if function requires more than one argument
- Include gnuplot with Windows binaries
- Fix limit of floor(), ceil(), and trunc()
- Fix plotting of derivatives and integrals
- Fix randpoisson()
- Fix reactivation of object, after object that caused deactivation is removed
- Minor bug fixes and feature enhancements

- Use formatted output in status display (GTK)
- Do not add separator line if history duplicate was prevented (GTK)
- Case-insensitive history search (GTK)
- Use different font sizes for expressions, messages, and results in history (GTK)
- Ellipsize long completion names list
- Insert minus instead of executing RPN operation, on key press, when last character is e
- Updated Tab key behaviour, e.g. cycle through completion items on subsequent tab key presses, and traverse items if tab key is unbound
- Fix action (e.g. conversion, factorization) on uncalculated expression (GTK)
- Fix scaling of result (when it does not fit) (GTK)
- Fix segfault when result is a currency with quantity of one (Qt)
- Fix copy keyboard shortcut in expression entry (Qt)

2022-04-04

Qalculate! version 4.1.1 released

General changes:
- Restrict use of reciprocal in unit conversion, e.g. invert in "5m/s to s/m" (= 0.2 s/m) but not in "500/lb to g" (= 1.1/g)
- New mHg unit (allows use with prefixes other than milli)
- Always display abbreviated unit name (symbol) with abbreviated prefix (when unit only has short name)
- Minor improvements to automatic unit conversion
- Fix display of (1 + f(x))/n
- Improve resolution and sizing of flag images (GUI)
- Do nothing when Enter is pressed if expression is empty (GUI)
- Save definitions on exit (only) if definitions has changed regardless of interactive mode status (CLI)

- Do not change result color when window loses focus
- Do not add separator line if history duplicate was prevented
- Do not convert empty expression
- Fix memory leak when updating result display
- Fix close to systrem tray for 32-bit (and potentially 64-bit) Windows binaries and remove icon before exit
- Fix small dot visible when expression is empty with some default fonts
- Fix segfault if result widget is not realized when first drawing
- Fix Unicode handling when ellipsizing during saving of long result
- Fix "Customize completion…" item in expression popup menu

2022-03-14

Qalculate! version 4.1 released

General changes:
- Use non-breaking narrow space as digit separator in reasonably short numbers, and between quantity and unit
- Update value of austronomical unit
- Fix segfault (when compiled with -D_GLIBCXX_ASSERTIONS) with local digit grouping when separator is empty (e.g. with ignore locale)
- Fix freezes and crashes with extrememly large vectors and matrices
- Fix segfault (when compiled with -D_GLIBCXX_ASSERTIONS) in matrix multiplication
- Minor bug fixes and feature improvements

- Add option to show only parsed or entered expression, or both, in history
- Add option to clear expression history
- Do not add duplicate results to history
- Improved result copying, with proper html format and ASCII option
- Do not replace *, -, / with Unicode operators if cursor is within quotation marks (apply same principles on paste)
- Improve window focus retrieval method on Windows
- Improve appearance of icons with display scaling (Qt)
- Fix display of result with quoted symbol in history (GTK)
- Improvements and fixes for interaction with history (GTK)
- Fix completion visible after expression cleared with key repetition (GTK)
- Do not perform automatic (continuous) conversion, from conversion view, if result contains no unit (GTK)

2022-02-14

Qalculate! version 4.0 released

General changes:
- New matrix syntax (column separated by space or comma, rows separated by semicolon, as in matlab)
- Do not make any difference between a vector and a matrix with a single row, or between a scalar and matrix with a single element
- Support input of functions, units, and variables with underscores omitted in names (e.g. µ0 = µ_0, FermiCoupling = fermi_coupling), with some exceptions
- Option to disable "simplified" percentage calculations (e.g. interpret 100 + 20% as 100 + 0.2 instead of 100 × 120%)
- Option to truncate numbers (instead of round to nearest) in result
- Convert K, Hz, and 1/m to J (and derived units) using conversion factor constants (e.g. 1/(550nm) to eV ≈ 2.25 eV)
- Allow use of M as 10^6 without unit
- New ksi unit
- New functions: divisors(), rate(), vertcat(), horzcat()
- New plastic number (ρ) constant, and new "hbar" name for reduced Planck constant, and add second Unicode codepoint for µ-sign in constants
- Allow zero (1st and/or 2nd argument) in comb() and perm(), and return zero if second argument (k) is greater than the first (n)
- Calculate statistical functions (e.g. mode(), min(), max(), percentile()) separately for each column of matrix
- Return the lowest value if there are multiple values with equal frequency in mode()
- Parse text argument as expression if concatenate function name is found in text string, and fix concatenate returning date
- Fix Unicode handling on platforms where char is not signed
- Fix bitrot()
- Fix segfault in multisolve() when initial order of equations is not optimal
- Fix segfault with empty sqrt inside sqrt, e.g. sqrt(1+sqrt())
- Fix incompletely calculated nounit(), e.g. in unit conversion
- Minor bug fixes and feature improvements (see the ChangeLog for more details)

- Programming and algebra keypads
- Customizable keypad
- Customizable keyboard shortcuts
- Option to hide number pad (right part of keypad)
- Workspace (mode, history, and temporary variables) can now be saved (to a single file)

- Enhanced formatting of history
- Make keypad in number bases dialog hidable
- Omit characters in the middle (ellipsize) of very long results (> 500 000 characters) instead of just showing an ellipsis, and show matrix dimension instead of result for very large matrices
- Iconify activated window first to bring it to the front with input focus
- Fix copy result when calculate-as-you-type result is not automatically added to history
- Fix output of a ≤ x ≤ b (on Windows, and possibly other platforms)
- Fix loading of keyboard shortcuts and custom buttons with space in value or label
- Fix segfault with extremely long results

- New layout for output of result of matrices and equations

2021-12-01

Qalculate! version 3.22 released

Changes in libqalculate:
- New functions: linearfit(), quadraticfit(), cubicfit(), ramlatency(), parallel()
- Improved and extended parallel operator (|| is interpreted as parallel if units are used)
- Allow nested subfunctions
- Solve x^(x^(-a))=b
- Fix pearson() and spearman()
- Fix display of incompletely solved equation with dual approximation in some cases
- Fix a*sin(x)+b*cos(x)=c
- Minor bug fixes and feature improvements (see the ChangeLog for more details)

- Unit and data set creation/editing
- Complete variable and functions editing
- Percentage calculation dialog
- Periodic table
- Show result in expression status tooltip (calculate-as-you-type)
- Horizontal toolbar with added units and plot buttons
- Favorite functions, units, and variables (shown in toolbar menus)
- Fix segfault with Qt 6.2
- Many feature enhancements and bug fixes (see the git log for more details)

- Minor improvements and fixes in data set, function, unit, and variable edit dialogs
- Avoid division by zero in percentage calculation dialog
- Use editable combo box for data object argument in insert function dialog
- Remove associated bookmark from menu when removing history item, and select the history row on go to bookmark
- Somewhat selectable history text (single click on selected item edits cell with non-editable entry)
- Increase the number of optional custom buttons from 5 to 20
- Fix plot expression with localized decimal separator, and add as multiple functions if plot expression results in matrix

- Support "--" as end of options
- New --defaults command line option
- Configurable SIGINT (Ctrl+C) action (exit orderly by default)
- Vertical space option (vspace)
- Clear command with Ctrl+L shortcut
- Fix "to unicode"

2021-10-13

Qalculate! version 3.21 released

List of changes:
- Ask (once) for correct interpretation of ambiguous implicit multiplication
- Improved simplification of radical expressions
- Improved Im(), Re(), and arg() functions
- Improved output of complex forms (other than the default rectangular) in exact mode
- Function for drill bit size conversion
- Improved history/result view, and other feature improvements and bug fixes, in the Qt GUI (see the release notes for details)
- Indicate number base of result/expression, in qalc, if not more or less obvious
- Fixes for equations with complex inverse trigonometric and hyperbolic functions with no solution
- Fixes for complex x^(ax)=b
- Fixes for localization on Windows
- Minor bug fixes and feature improvements

2021-07-29

Qalculate! version 3.20.1 released

List of changes:
- Fix segfault when Gnuplot is not installed (GUI)
- Save answer to dot and temperature questions in non-interactive mode and do not show the questions in non-interactive terse mode
- Fix saving of sub functions with default values

2021-07-28

Qalculate! version 3.20 released

This version includes a new interface using the Qt GUI toolkit. It is nearly feature complete (notably editing of units and data sets are not currently possible) but is likely not yet completely stable and reliable. At this moment the new user interface is only included in the official binary packages for Windows where the improved speed and compatibility should be particularly welcome.List of changes:

- New graphical user interface using Qt (qalculate-qt)
- Updated insert function dialog layout (GUI)
- Add description field to variables and units dialogs (GUI)
- Add customizable keyboard shortcut for insert result (GUI)
- Insert "smart parentheses" with right parenthesis key if expression has selection or text cursor is at start (GUI)
- Add language option to configuration file (GUI)
- Fix background color of expression entry in inactive window (GUI)
- Add translator credits to about dialog (GUI)
- Catalan translation
- Add support for function creation in save() function and with associated operator (e.g. func1():=x*y^2)
- Add operators (.', .*, ./, .^) and functions (replace multiply(), divide(), and pow()) for transpose and element-wise multiplication, division, and power
- Fix norm() and magnitude(), and add second argument, p, to norm() function
- New text operators: dot, cross, comb, and perm
- Add support for ^^ as XOR operator
- Fixes and improvements in multisolve() function
- Always return exact result in base() function, in exact mode
- Improve parsing of functions without parentheses
- Do not try to load data objects from global definitions dir if data set is local
- Interpret "±" at end of expression as "±0"
- Convert Celsius to Fahrenheit if no calculation was performed
- Add support for QALCULATE_USER_DIR environment variable and always check for "user" directory on Windows
- Output both original and factorized integer, and output abs(x) as |x| (CLI)
- Improved HTML output of mathematical expressions in libqalculate (used by the new GUI)
- Minor bug fixes and feature improvements

2021-05-24

Qalculate! version 3.19 released

List of changes:
- Customizable text color and button padding (GUI)
- Option to keep the main window above other windows (GUI)
- Activate first (or selected) completion item using Tab key (GUI)
- Ask (once) for the correct interpretation of dots, when comma is decimal separator
- Improve simplification of logical expressions (boolean algebra) and add boolean assumptions for unknown variables
- Add nand and nor operators and spelled out version of logical not operator ("not"), and interpret bitwise operators as logical in some cases
- New functions for inverse cumulative distributions: chisqdistinv(), fdistinv(), normdistinv(), and tdistinv()
- Add inverse incomplete beta function, betaincinv(), and improve betainc() (now returns
*regularized*incomplete beta function) - newtonsolve() and secantsolve() functions for solving equations using Newton's or secant method
- Do not return dot product when multiplication operator is used with vectors (use "." or dot() function instead)
- Russian and German translations
- Fix custom keyboard shortcuts without modifier (GUI)
- Fix cumulative t-distribution for X < 0
- Minor bug fixes and feature improvements

2021-04-05

Qalculate! version 3.18 released

List of changes:
- Improve handling of expressions with log-based units
- Improve conversion of expression with multiple units to a single unit (e.g. m/W to W)
- Output (kilo)gram instead of tonne with small prefix (e.g. kg instead of mt)
- New functions for statistical distributions: probit(), betadist(), cauchydist(), chisqdist(), expinv(), fdist(), gammadist(), tdist(), wblinv(), weibulldist()
- Improve functions for statistical distribution
- Improve sexagesimal input and output (including new sexa2, sexa3, latitude, latitude2, longitude, longitude2 bases), and add geodistance() for calculation of distance between two GPS coordinates
- Add command() function, which runs an external command and returns the output
- erfinv() function and support for solving equations with error functions
- Fix conversion with relative temperature units activated
- Fix gammainc() function
- Fix keyboard focus when run hidden automatically at startup
- Minor bug fixes and feature improvements

2021-02-15

Qalculate! version 3.17 released

List of changes:
- Temperature calculation modes (absolute, relative, hybrid)
- Allow prefixes, with full name, without units (e.g. kilo = 10^3)
- Save chain mode setting (GUI)
- Handle SIGTERM signal (GUI)
- System tray improvements (GUI)
- Add convert to mixed units to result context menu (GUI)
- Extended and improved simplified Chinese translation
- Save handle vector function argument property
- Fix never ending loop when calculating []*[]
- Minor bug fixes and feature improvements

2021-01-09

Qalculate! version 3.16.1 released

This version primarily fixes an issue which may cause the deletion of all user data for data sets. qalculate-gtk has not been updated.List of changes:

- Fix saving of local data objects (user data was deleted)
- Fix kWh unit
- Always place units with prefixes before other units
- Improve prefixes when expression contains both units that do and units that do not use prefixes
- Add daysInMonth() function

2021-01-04

Qalculate! version 3.16 released

List of changes:
- Redesigned expression, status, and result widgets (GUI)
- Chain mode (GUI) and syntax (e.g. 1+2*3=(1+2)*3=6)
- Configurable calculate-as-you-type add to history delay (GUI)
- Option to use a system tray icon (hides the application when the main window is closed) on Windows (GUI)
- Improved completion (GUI)
- Support for qalc commands in GUI (expression is interpreted as command if it begins with '/')
- Support for reading expressions and commands from file in GUI (as in qalc, using command line option -f/--file)
- Use arrow instead of "to" by default (GUI)
- French translation (GUI)
- Make all currency codes (except CUP and KGS) case insensitive
- Fixes for floating point format output
- Fix segfault on factorization in qalc
- Fix saving of local data objects
- Fix BYN exchange rate url
- Fix segfault when closing 32-bit Windows binaries
- Minor bug fixes and feature improvements

2020-11-23

Qalculate! version 3.15 released

List of changes:
- Replace equals button with a clickable icon in the upper right corner of the expression entry (GUI)
- Optional extra column of customizable keypad buttons (GUI)
- Use icons for "Value", "Text", and "Copy" in history view and hide all buttons when keypad is shown simultaneously (GUI)
- Add "Exact" menu item to result popup menu when appropriate (GUI)
- Automatic and dual approximation and fractions mode in qalc and Gnome shell search provider
- Do not ask before overwriting temporary variables in qalc
- Add keyboard shortcuts for approximation (Ctrl+E), fraction mode (Ctrl+F), and save variable (Ctrl+R) in qalc
- Add "precalculate expression" argument (default false) to save() function (this also changes the behaviour of ":=")
- Support multiple equivalent custom digits, separated by semicolon (e.g. "0;aA1;bB2;cC3"), and phoneword digit set in base() function
- Always place unit with prefix first (fixes kWh)
- Fix local time zone on Windows
- Fix matrix/vector multiplication with approximate matrix/vector variable
- Fix parsing of expression with multiple degree signs
- Fix segfault in unit manager (GUI)
- Minor bug fixes and feature improvements

2020-10-26

Qalculate! version 3.14 released

List of changes:
- Customizable keypad buttons—change labels and actions for all buttons on the right-hand side of the keypad (GUI)
- Support traditional calculator memory (MR/MC/MS/M+/M-)
- Notifications for invisible actions, e.g. result left-click copy (GUI)
- Use v1, v2, … as default variable names (GUI)
- Add Rutherford (Rd), millirem (mrem), mrem/s, and erg/g units
- Add yr and annus names for year unit, röntgen name for roentgen (R) unit, and rem for roentgen equivalent man
- Add matrix rank (rk) and reduced row echelon form (rref) functions
- Support for different character encodings in code() function
- Keep angle units in calculations involving both length and (plane) angle units (fixes lumen calculations)
- Improve plot speed for functions defined using expression
- Always perform conversion to optimal (SI) unit when the expression is a number multiplied by a unit and input equals output
- Improvements and fixes in insert function dialog (GUI)
- Improvements and fixes for qalc on Windows
- Compiled definitions without GIO and with support for out-of-tree builds
- Fix availability of many currencies before manual exchange rates update (global exchange rates file was not installed)
- Fix input of circumflex on Windows with dead circumflex without modifier, e.g. German and Swiss keyboard layouts (GUI)
- Fix programming keypad base conversion for negative integers (GUI)
- Minor bug fixes and feature improvements

2020-09-21

Qalculate! version 3.13 released

List of changes:
- Add abhenry (abH), cP, cStoke, mTorr, dyn/cm², and kph (or kmph) units, add biot (Bi) name for abampere, and replace J/T with A/m² as unit for current density
- Use B as abbreviation for byte instead of bel (dB is still used for decibel)
- Group digits after decimal separator (in groups of three, when standard digit grouping is active)
- Group hexadecimal digits
- Add binary prefixes zebi and yobi
- Do not use prefixes by default with most CGS units
- Do not use “$”, “dollar”, and “dollars” for USD (and do not use “£” as symbol for GBP) and remove cent, if the symbol is also used by the local currency
- Consider vectors as matrices with one column (column vector) in operations that expect a matrix (e.g. matrix multiplication)
- Increase default precision to 10
- Reduce time before GUI appears on load in some cases
- Add derived units without symbol (e.g. kg/m³) to completion (GUI)
- Option to remember window position (GUI)
- Only perform continuous conversion when convert tab is visible (GUI)
- Add "Copy result to clipboard" to Gnome shell search provider
- Fix cot(pi/2), coth(pi/2×i), arccot(0), arcsch(0), and arcoth(0)
- Fix conversion to ratio
- Fix logarithmic y scale in plot
- Fix unit conversion search entry losing focus (GUI)
- Fix potential precision loss when performing multiple consecutive unit conversions (GUI)
- Fix self-contained Linux binaries: change GUI binary name to qalculate (fixes install and update scripts), and fix check for updates at startup
- Minor bug fixes and feature improvements

2020-08-05

Qalculate version 3.12.1 released

This version includes some critical bug fixes.List of changes:

- Fix display of negative numbers with scientific notation (GUI)
- Fix BTC, BYN, and BYR exchange rates
- Fix exchange rates update time
- Fix parsing of negative power in function arguments without parenthesis
- Add arcsin, arccos, arsinh, arcosh, etc. as names for inverse trigonometric and hyperbolic functions
- Interpret sin^-1, cos^-1, etc. as inverse functions (arcsin, arccos, etc.)
- Add deftorad() and totient() functions

2020-07-27

Qalculate! version 3.12 released

List of changes:
- Option to hide left or right part of the keypad (GUI)
- Replace fraction mode combo box with a single toggle button (GUI)
- Disable prefixes by default in scientific, engineering, and pure modes, and change behaviour of composite modes when user changes separate options (GUI)
- Auto completion for objects and properites in data set functions (GUI)
- Split long numerical results in two lines and show bit position for binary number that does not fit in window (GUI)
- Improved text layout in result (GUI)
- Brazilian Portuguese (GUI only) and Spanish translations
- Improved exact simplification of roots (e.g. sqrt(2)-2/sqrt(2)=0)
- Only apply negative exponents option to units, and always use negative exponents instead of division for unit expressions with only negative exponents
- Support use of right arrow (including "->") as alternative to "to" for conversion (e.g. 5m->ft)
- Use middle dot instead of multiplication x in unit expressions
- Examples in manual
- Extended man page for qalc
- Fix Insert button in insert function dialog (GUI)
- Minor bug fixes and feature improvements

2020-06-26

Qalculate! is now avilable at Flathub

The flatpak package (for Linux) has now finally been added to Flathub (flathub.org/apps/details/io.github.Qalculate). To install the package follow the link or use the command *"flatpak install https://flathub.org/repo/appstream/io.github.Qalculate.flatpakref"*.

Flatpak users are adviced to replace previous installations. Note however that the app-id has changed. In order to preserve configuration and data you will have to manually copy the files (from

*~/.var/app/io.github.qalculate.Qalculate*to

*~/.var/app/io.github.Qalculate*).

For Windows users, Qalculate! was recently added to the Windows Package Manager (winget) community repository, making updates easier.

2020-06-22

Qalculate! version 3.11 released

List of changes:
- Allow multiple "to"-conversions in one expression (e.g. "5 m/s to hex to ft to h = 0xE6AF.1E*ft∕h)
- Support specification of number of bits for hexadecimal "to" conversion (4 to hex16 = 0004)
- Improvements and fixes for sexagesimal numbers and time format
- Support for +, -, (, ) Unicode superscripts, and N-Ary Summation symbol
- Syntax highlighting using colours in qalc
- Enable Unicode by default in qalc (on platforms other than Windows)
- Improved display of unit expressions
- Option to clear history on exit (GUI)
- Fix removal of history items, and move to top, when calculate-as-you-type is activated (GUI)
- Reduce the height of the result widget (GUI)
- Hide tooltip after keypad button click (GUI)
- Check for updates menu item (GUI)
- Slovenian translation (GUI)
- Support for automatic updates of self-contained binaries
- Fix segfault when parsing an expression that contains a prefix with more than one letter followed by a unit and an exponent without exponentiation operator
- Fix use of equals sign in qalc command line arguments (e.g. "qalc --base=16")
- Fixes for the Gnome shell search provider
- Minor bug fixes and feature improvements

2020-05-11

Qalculate! version 3.10 released

List of changes:
- Support for comments in expressions, using # (number sign)
- Gnome shell search provider
- History search (GUI)
- Configurable number of lines in expression entry (GUI)
- Add angle unit selection to sin, cos, and tan button menus and an new status popup menu, and make it possible to set keyboard shortcut for angle units (GUI)
- Improved keyboard shortcuts dialog (GUI)
- New parentheses and other improvements in display of result (GUI)
- Dark theme setting on Windows (GUI)
- Improved handling of vectors and matrices in insert function dialog (GUI)
- Configurable time limit for plot (GUI)
- Ellipsize long variable values used as title in completion popup (fixes segfault, GUI)
- Tau (2pi) constant
- Allow angle as argument in nextlunarphase()
- Fix automatic conversion to Newton
- Fix x^2=25m^2 when x is assumed positive (was evaluated as false), and similar in exact mode
- Fix display of repeating decimals
- Fix segfault with empty sin() or sinh() in equation
- Minor bug fixes and feature improvements

2020-04-13

Qalculate! version 3.9 released

List of changes:
- Persistent keypad option, which makes it possible to show the keypad and the history simultaneously (GUI)
- Minimal window mode, which hides everything but the expression entry and, when not empty, the result (GUI)
- Optional (disabled by default at compile time) internal help viewer using WebKitGTK (GUI)
- Fix segfault during calculation of atan(acos(x)), atan(asin(x)), and asin(atan(x)) when angle unit is degrees or gradians
- Fix order of prime factors
- Fix immediate closing of plot window if qalc is started in non-interactive mode (persistent parameter added to plot() function)
- New icon (v3.9.0a)
- Fix nextlunarphase(), for values > 0.8 and < 0.2 (v3.9.0a)
- Fix segfault when running qalc in non-interactive mode without gnuplot (v3.9.0a)
- Minor bug fixes and feature improvements

2020-03-02

Qalculate! version 3.8 released

List of changes:
- IEEE 754 floating point conversion: float(), floatBits(), floatError(), floatParts(), and floatValue() functions, and fp16, fp32/float, fp64/double, fp80, and fp128 "to" conversion
- Floating point conversion dialog (GUI)
- Option to enable/disable new version notification (GUI)
- Restore A and B (case insensitive) digits in input of duodecimal number, use 0d as prefix for input of duodecimal numbers, and always interpret expression as duodecimal if it contains duodecimal Unicode characters
- Modify behavior of floor(), ceil(), trunc and round(): mark result as exact, allow approximate calculation of argument in exact mode, return interval when appropriate, and add "number of decimals" and "round halfway to even" (defaults to away from zero) arguments to round()
- Fix 1kOhm||1kOhm (and similar)
- Fix rounding in some cases with max decimals set
- Fix segfault in solve() with AND and OR in solution
- Minor bug fixes and feature improvements

2020-01-20

Qalculate! version 3.7 released

List of changes:
- Configurable keyboard shortcuts (GUI)
- New functions: bernoulli(), erfi(), fresnels(), fresnelc()
- Improved zeta(), with exact values for negative and even integers, support for all real values, and optional second argument for calculation of Hurwitz zeta
- Support for complex numbers in Ei(), li(), Si(), Ci(), Shi(), and Chi()
- Support for all branches and complex numbers in lambertw()
- Extended argument support in Li()
- Add base units (or local currency) for unit conversion when units are missing in original expression (e.g. 5 to ft = 5 m to ft)
- Belarusian ruble (BYN)
- Improvements and fixes for integrals
- Fix crash when used in Cantor (caused by conflict with Poppler library)
- Minor bug fixes and feature improvements

2019-11-25

Qalculate! version 3.6 released

List of changes:
- Major improvements and fixes for integrals (note that the variable of integration argument has moved to 4th position, e.g.
*integrate(x^2, 1, 5)*instead of*integrate(x^2, x, 1, 5)*) - Automatic detection of variables for undefined symbolic arguments (e.g. for
*diff(y^2)*, the derivative is calculated with respect to*y*instead of defaulting to*x*) - Fix uncertainty propagation involving complex numbers (calculate imaginary and real uncertainty separately when using variance formula)
- Fix incorrect solutions to equations not removed
- New functions: dof() for photography depth of field calculation; awg() and awgd() for American Wire Gauge conversion; romberg() for numerical integration; randnorm(), randpoisson(), randrayleigh(), randexp(), and randuniform() for random numbers with different distributions; normdist(), expondist(), and binomdist() for distribution probability calculations
- New units: cmil and kcmil
- rand() (and related functions) now accepts an additional argument for specifying the number of random values to generate
- Option to select custom keypad or application font (GUI)
- Options to customize the window title: different modes selectable in preferences, command line option, and settitle() function (GUI)
- Minor bug fixes and feature improvements

2019-10-23

Qalculate! version 3.5 released

List of changes:
- Option to use binary prefixes by default for information units and "b?" syntax for conversion to optimal prefix (e.g. 8192 bits to b?byte = 1 kibibyte)
- Bijective base-26 support (including bijective() function)
- Option to use 'j' as default symbol for the imaginary unit (placed in front of the imaginary part)
- Angle/phasor notation for complex numbers
- poisson() function
- Fix for steradian conversion
- Fix and improve integral of abs(
*f(x)*) - Add calculate-as-you-type result to history after idle time (GUI)
- Negate, sum, and "LAST x" RPN buttons, keyboard shortcuts for RPN stack manipulation, and various other RPN improvements (GUI)
- Fix segfault when saving mode/settings (on exit) if history is empty (GUI)
- Minor bug fixes and feature improvements

2019-09-16

Qalculate! version 3.4 released

List of changes:
- "where"-syntax (e.g. "x+y where x=1 and y=2", or alternatively "x+y/.x=1,y=2", and "x^2=4 where x>0")
- Improvements to replace() function (now supports replacement functions and parts of polynomials)
- Fix local thousands separator on Windows when localeconv()->thousands_sep is a non-Unicode character > 127 (e.g. non-breaking space, 0xA0)
- Smarter comma interpretation (when defined as decimal separator, but used differently)
- Show warning when multiple decimal separators are used in a single number
- Man pages (documentation for Unix-like operating systems)
- Option to automatically calculate the current expression on each change, as you type (GUI)
- Fix segfault with command line expression (GUI)
- Option to delete selected history items (GUI)
- RPN stack drag and drop (GUI)
- Minor bug fixes and feature improvements

2019-07-22

Qalculate! version 3.3 released

List of changes:
- Support for number bases > 32, as well as negative and non-integer number bases
- Support for all number bases, including non-numerical, and specification of digits in base() function
- dBm and dBW units
- Support both micro sign and small mu as symbol for micro prefix
- New programming keypad icon
- Import definitions action in GUI
- Fix parsing of "0x80 mod 3" and similar
- Reduce length of expressions in warnings and errors (primarily when using high precision)
- Improved handling of interval arithmetic for cubic equations
- Minor bug fixes and feature improvements

2019-05-27

Qalculate! version 3.2 released

List of changes:
- Updated physical constants (CODATA 2018)
- Programming keypad (GUI) and programming mode (CLI)
- Bookmarks and protect (from disappearing of the end of the list) option for history (GUI)
- New and updated keypad buttons (GUI)
- Keypad in number bases dialog (GUI)
- bitrot() function for bit rotation
- Bitwise XOR, mod and rem operators, % as modulo, // and \ operators for integer division
- Change order of operations for logical and bitwise operators to better match C operator precedence
- Improved support for functions, variables and units with input base > 10
- Unicode support in char() and code()
- Simplification and factorization improvements
- RPN syntax improvements
- Recognize "factor" and "expand" commands at the beginning expressions
- For vector + scalar, add scalar to all components
- uptime variable
- Fix random segfault on automatic unit category selection (GUI)
- Fix display of number in sexagesimal base or time format (GUI)
- Fix abs(x)=a for complex x
- Minor bug fixes and feature improvements

2019-04-15

Qalculate! version 3.1 released

List of changes:
- Calculation of Si(), Ci(), Shi(), and Chi().
- Convert trigonometric arguments to selected angle unit, and hide angle unit in result.
- Hide optional arguments, with default value, in output.
- Add optional variable value argument to diff(), for calculation of derivative for a specific
*x*value. - Improved sinc() support.
- Improved output with show ending zeroes activated.
- Fix ignore system language on Windows.
- Fix atomic unit of velocity.
- Fix and improve keypad menus, and add dynamic convert to menu to result popup menu (GUI).
- Fix compilation errors because of erroneous limits.h inclusion.
- Fix "factorized result is wrong" error.
- Minor bug fixes and feature improvements.

2019-03-18

Qalculate! version 3.0 released

List of changes:
- Implement 2019 redefinition of SI base units (primarily affects physical constants and will not take effect until 20 May).
- Uncertainty propagation improvements/fixes.
- Separate use of interval arithmetic, to keep track of precision changes with approximate calculations, from selection of interval calculation algorithm (by default both interval arithmetic and uncertainty propagation using variance formula are now activated).
- uncertainty() function (can specify relative uncertainty of value).
- Improved polynomial gcd.
- Option to ignore system language (locale).
- Option to use two's complement also for hexadecimal numbers.
- Switch to exact decimal fractions (fixed) from decimal fractions mode (and vice versa) when exact mode is toggled.
- Restore lost signal handlers in the conversion GUI (fixes search, popup menu, etc.).
- Bug fixes and minor feature improvements.

2019-02-11

Qalculate! version 2.9.0 released

List of changes:
- Propagation of uncertainty using variance formula (if interval arithmetic is disabled).
- Improved and extended physical constants, now defined in relation to each other (e.g. R
_{K}= (μ_{0}c)/(2α)). - Natural, atomic, and Planck units.
- Reciprocal unit conversion (e.g. 5 m/s = 0.2 s/m, 60 mpg = 0.039 L/km).
- Updated elements and planets data sets.
- +/- syntax for non-numeric values.
- raid() function for RAID capacity calculation.
- UTC+/-hh[:mm] and CET time zone conversion (using "to").
- Fix convert button (GUI).
- Minor bug fixes and feature improvements.

2018-12-03

Qalculate! version 2.8.2 released

List of changes:
- Fix missing prefix for gram (and are) when unit exponent not one and automatic prefixes is off.
- Fixes for units with non-linear relation.
- Wrap lines and right align results in history (GUI).
- Improved line breaks (CLI).
- Minor bug fixes and feature improvements.

2018-11-07

Qalculate! version 2.8.1 released

List of changes:
- Interpret a character preceded by '\' as an unknown variable (same as in quotation marks).
- Do not show fractions with very large numerators or denominators, by default.
- Hectare and decare unit names (in addition to ha/da and hectoare/decaare).
- Always enable units for expressions that ends with "to [unit expression]", "to optimal", or similar.
- Fix (1x+ay)^b (was not expanded).
- Fix roman() when used for reversed conversion.
- Fix compilation without readline.
- Improve appearance of "x m/s" and similar.
- Proper line breaks and line count fixes (CLI).
- Shortcuts for set command options and descriptions for options in help (CLI).
- Replace text in quotation marks with italic text (CLI).
- Always interpret expression that begins with '/' as a command (CLI).
- Modified keypad layout (GUI).
- RPN stack buttons with icons (GUI).
- Use 'linked' widget style where appropriate (GUI).

2018-10-29

Qalculate! version 2.8 released

This version primarily includes a large number of stability and reliability improvements, thanks to automatic testing of hundreds of thousands of randomly generated mathematical expressions.List of changes:

- Equation solving and improved simplification for expressions with trigonometric functions.
- General improvements to simplification and equation solving.
- Improved factorization.
- New magnitude(), entrywise() and hadamard() functions, and new n variable (unknown integer).
- Parse |x| and ||x|| as abs(x) and magnitude(x).
- Use kilo as prefix for gram if automatic prefix is off.
- Many bug fixes and minor feature improvements.

2018-08-13

Qalculate! version 2.6.2 released

List of changes:
- Polar and exponential complex forms (changed with mode or with "to" operator/command)
- Fix f(x)+a=a (e.g. x+1=1, which returned false/zero).
- Fix ln(-i).
- Fix automatic unit conversion in RPN mode
- Allow conversion of the current result using standalone "to" expression (e.g. type "to m" to convert current result to meter) in GUI.
- Option to disable automatic conversion to local currency (when optimal conversion activated)
- Minor bug fixes.

2018-07-09

Qalculate! version 2.6.1 released

List of changes:
- Fix display of addition with negative non-integer number (show "x - a" instead of "x + -a")
- Minor bug fixes.

- Do not always download all sources during automatic exchange rates updates (updating of common currencies will be much faster).
- Configurable completion suggestions.
- Option to keep insert function dialog open for repeated function calculations.
- Minor bug fixes and feature enhancements.

2018-06-11

Qalculate! version 2.6 released

List of changes:
- Calendar conversion.
- 5'8" notation for feet and inches, 5°12'30" notation for degrees, arcminutes and arcseconds.
- Interpret 5m 7cm as 5m+7cm, and 3h 52min 20s as 3h+52min+20s, and similar.
- Improved ln() simplifications.
- Duodecimal, roman, base #, and partial fraction "to" conversion commands.
- Lunar phase functions.
- Fix secondary exchange rates source.
- Fix crashes with compiler flag "-D_GLIBCXX_ASSERTIONS".
- Simple Calclator::calculateAndPrint() function with support for all the "to"-conversions supported in qalc.
- Support for searching matching functions, variables and units using 'list' command in qalc.
- Minor bug fixes and feature enhancements.

- Calendar conversion dialog.
- Currency flags in completion suggestions list and result display.
- Extended completion suggestions, matching titles (and countries for currencies) when at least three characters are entered.
- Completion suggestions for prefixes and prefixed units.
- Completion suggestions for "to" commands.
- Add duodecimal and roman numerals to number base conversion dialog.
- Minor bug fixes and feature enhancements.

2018-05-15

Qalculate! version 2.5 released

List of changes:
- Improved interval arithmetic with dependent values (variables and function arguments). Most differentiable expressions do now return a properly narrow interval.
- Experimental limit() function.
- Two's complement representation for binary numbers.
- Improved currency titles.
- bitcmp() function.
- Allow all rational numbers for second argument of root().
- Fix segfault when prefix is set in some cases.
- Fix a^infinity when a > 1.
- Minor bug fixes.

- Currency flags.
- Context menu for conversion list, and middle click for adding unit to expression.
- Search entry for functions, units and variables.
- Improved convert to menu in unit manager.
- Workarounds for bugs in GTK+ themes.

2018-04-11

Qalculate! version 2.4 released

List of changes:
- Simplified percent calculation (e.g. 100 + 20% = 120).
- Direct date and time arithmetic (e.g. "2018-03-10" + 372 h = "2018-03-25T13:00:00"), with time zone support.
- Automatic conversion to local currency (in "optimal" conversion mode).
- Calculate each vector element (and each extra argument) separately in many functions (e.g. sin(5, 2, 3) = [-0.95892427, 0.90929743, 0.14112001]).
- Unit-like conversion for physical constants (using "to").
- Allow user to change decimal separator (and consquently argument separator) independantly of locale.
- Enhanced timastamp() and stamptodate().
- Fix function completion (GUI).
- Fix lambertw()/productlog().
- Fix display of parsed sexagesimal numbers.

2018-03-28

Qalculate! version 2.3 released

The main focus of version 2.3 is enhanced integration capabilities and basic solving of differential equations. Qalculate! should be much more usable for calculation of integrals now, even though it is still far from perfect.There is also some important plotting fixes, as well as many minor bug fixes and feature enhancements. For details see the changelog for libqalculate and qalculate-gtk.

2018-01-17

Qalculate! version 2.2.1 released

Version 2.2.1 includes bug fixes and minor feature enhancements.List of changes:

- Fix electric constant, magnetic constant, and characteristic impedance of vacuum.
- Fix handling of Unicode symbols in expressions with quotation marks.
- Fix segfault in solve() function.
- sinc() function.
- Fix never ending cell cycling with tab on last cell in matrix/vector dialogs (GUI).
- Add vacuum_permeability and vacuum_permittivity as alternative names for magnetic and electric constants.
- Add completion only names to enable completion of Greek letters from the Roman letter names.
- Suppress gnuplot output in terminal.

2017-12-07

Qalculate! version 2.2 released

The main focus of version 2.2 is interval arithmetic, which can be used for determination of the number of significant digits in the final result or direct calculation with intervals of numbers. Note that more work is needed to avoid unnecessary interval widening for non-trivial expressions with dependent variables.List of main changes:

- Interval arithmetic.
- Digit grouping.
- Enhanced display of parsed expression.
- Bitcoin support (frequent exchange rate updates are recommended).
- Use 'X' and 'E' (or appropriate unicode characters), instead of 'A' and 'B', in duodecimal numbers (base 12).
- Option to disable units in physical constants.
- Fixed engineering mode.
- Use 10^n instead of E-notation for main result display by default. (GUI)
- Various bug fixes and minor feature enhancements.

2017-10-02

Qalculate! version 2.1 released

The main focus of version 2.1 is consistent handling of roots of negative numbers and equation solving enhancements.List of main changes:

- Equation solving enhancements.
- root() and cbrt() now always returns the real root (e.g. cbrt(-8)=-2), while fractional powers return the principal root ((-8)^(1/3)=1+1,73i).
- Enhanced simplification.
- More than 100 additional currencies (using mycurrency.net).
- Fix automatic prefix for negative values.
- Fix optimal unit conversion for cbrt(L) and similar.
- Fix wrong partial calculation of square root in exact mode in some cases
- Highlighting of matching parentheses. (GUI)
- Proper display of roots and absolute value. (GUI)
- Minor bug fixes and feature enhancements.

2017-08-28

Qalculate! version 2.0 released

After a month of hard work Qalculate! version 2.0 is ready with removal of glib and cln dependencies from the library, a redesigned expression entry and keypad in the GUI, and a new feature complete Windows version.List of main changes:

- CLN has been replaced with GMP and MPFR for low-level numerical calculations.
- The Glib dependancy has been removed. It has partly been replaced with libiconv and icu. Libqalculate can be compiled without them and libiconv is only used the CLI application.
- GVFS and wget have been replaced by libcurl for exchange rates retrieval.
- Date functions have been rewritten and now support much larger numbers.
- Trigonometric functions with angle unit other than radians have been fixed.
- Functions with more than one argument can now also be applied to the RPN stack, and enter on empty expression duplicates the stack register at the top.
- New functions: airy(), arg(), besselj(), bessely(), conj(), digamma(), erf(), erfc()
- Redesigned keypad with a lot more functionality. (GUI)
- Multiline expression entry with undo/redo. (GUI)
- Alternative simplified function creation dialog. (GUI)
- Percentage calculation tool. (GUI)
- Binary installer for Microsoft Windows.
- Increased efficiency and many minor enhancements and bug fixes.

2017-08-09

Preview of the first official Windows version of Qalculate! released

Qalculate! has long been available for GNU/Linux and Mac OS X, but now it is finally also compatible with Microsoft Windows (although there is a fork by Cheng Sun with Windows compatibility, which has contributed code to this version). This pre-release version is likely not as stable as version 1.0.0 (although it does include some important bug fixes), but you are nevertheless invited to try it, report any issues you find and share you opinion.
Download the installer here: qalculate-1.0.99.msi.

2017-07-24

Qalculate! version 1.0 released

Qalculate! version 1.0 includes the following changes:
- Increased efficiency and stability. Slow calculations can in most cases now be terminated in a controlled manner and the application should no longer potentially crash when trying to calculate extremely large numbers.
- Enhanced factorization.
- Revised temperature unit handling.
- Enhanced automatic unit conversion, including a new default mode which keeps original non-SI units if no better alternative (that uses fewer units and exponents) is found.
- A long list of bug fixes and minor feature enhancements.

2017-05-29

Qalculate! version 0.9.12 released

Qalculate! version 0.9.12 includes fixes to unit parsing in *adaptive parsing mode*, build fixes and other minor bug fixes. The fork with support for Microsoft Windows has been merged (compilation on Windows has however not been tested).

2017-03-06

Qalculate! version 0.9.11 released

Qalculate! version 0.9.11 includes both some important bug fixes and a number of new features. Among other things mixed units conversion has been added and users of the graphical user interface will notice the new enhanced history view. The RPN functionality has received much needed attention and should now be more usable.
Changes:

- Mixed units conversion (e.g. "15 in = 1 ft + 3 in" and "3,2 h = 3 h + 12 min")
- Fixes to unit conversion (e.g. "1/(1 ns) to GHz")
- Fix slow calculation of exponentiations with big numerators in exponents (e.g. "2^0.333333333")
- Critical fixes for RPN syntax
- Fix degree sign
- Fix transformation of last arguments to vector, when only one last argument (fixes function("1+\x"; 1))
- Plot functions (makes possible plotting, using gnuplot, in qalc)
- "Swap, "pop", "copy", "rotate" and "move" commands for RPN stack manipulation in qalc
- Enable both (or one of) RPN stack and syntax with the "rpn" command in qalc
- New commands for creation of simple functions and variables (without calculation of the expression) in qalc
- Updated history view. The calculation log is now presented in an actual list. Buttons and functions have been added for calculation with previous expression and results (GTK+ UI)
- Enhanced RPN stack manipulation (swap, rotation and copy) and arithmetics buttons next to stack list and combine RPN options in a single menu (GTK+ UI)
- Calculation of text in spinboxes for integer function arguments (GTK+ UI)
- Option to use multiple instances by default (GTK+ UI)
- Various other minor enhancements and bug fixes...

2016-08-28

Qalculate! version 0.9.10 released

Qalculate! version 0.9.10 includes a small number of important bug fixes. Only libqalculate has been updated.
Changes:

- Unit conversion fixes (e.g. "1/s to ms" and "1/ns to GHz")
- Fixed parsing of degrees sign (used in defult symbol for temperature units)

2016-07-26

Qalculate! version 0.9.9 released

Qalculate! version 0.9.9 is a minor release with some important bug fixes, as well as a few new features.
Changes:

- libqalculate will no longer cause segmentation faults when using a locale unsupported by the users system
- Parsing of "today" fixed and "tomorrow" and "yesterday" added
- Qalculate! now compiles, without errors and warning, using clang
- Only a single instance of the GUI will run by default (use command line switch '-n' for old behaviour)
- New commands/options in qalc which list available variables, functions and units
- New command in qalc for deletion of variables

2016-06-15

Qalculate! version 0.9.8 released

After almost a decade of very little development, the project has been revived and during the last two months many improvements have been made, until it is now time to release a new version. Qalculate! version 0.9.8 includes many bug fixes, but due to limited testing some new bugs have probably been introduced. Any external applications using libqalculate need to be recompiled to function properly with the new version.
Changes:

- Lots of bug fixes and minor improvements
- Three different parsing modes can be chosen from (providing mainly different handling of implicit multiplication). The default 'adaptive' mode has been enhanced.
- By default prefixes will not be added to for example imperial units.
- Changed handling of degrees Celsius and Fahrenheit. Conversion will take place already during parsing.
- When converting to unit without prefix, no prefix will be added to the result unless the unit expression is prepended with '?' ('0' works in the opposite direction).
- Option to ignore commas in numbers (for use as thousands separator).
- Possibility to abort slow number printing without using crash prone thread cancellation (use Calculator::startPrintControl() and related functions).
- New function: fibonacci (Qalculate! can now tell you that the millionth fibonacci number is approximately 1,953282129 * 10^208987, although for obvious reasons the exact number cannot be displayed).
- New units: Hartree, Rydberg, Dalton (same as u).
- Physical constant have been updated with the CODATA values from 2014.
- Currencies have been updated to reflect the available data from ECB.
- Use ~/.local and ~/.conf to store configuration and definitions
- The GTK+ UI has been ported to GTK+ 3 and has been polished in the process.
- The convert dialog has been transformed into a tab page in the main window, with auto-selection of unit category and continuous conversion. (GTK+ UI)
- Less obtrusive display of errors and warnings. They are now shown as tooltips for an icon next to the expression entry. (GTK+ UI)
- Spinners show calculation/display progress and an icon in the expression entry halts the process, instead of a message dialog. (GTK+ UI)
- A tooltip for the result display will show the result in text format less open to interpretation. (GTK+ UI)
- Better resizing of main windows. Tabs will be resized instead of result display and keypad view will remember size independently of the history view. (GTK+ UI)
- 'to' can now not only be used for conversion to unit expressions. "to bin", "to oct", "to hex" and "to bases" changes number base displayed, "to factors" factorizes, "to fraction" displays as fraction, and "to base" and "to optimal" auto-converts units. (CLI and GTK+ UI)
- The KDE UI has been abandoned for now and is not included in this release.

2016-04-30

A new version coming soon...

The graphical user interface has been ported to GTK+ 3 (unfortunately the KDE version has been abandoned for now) and lots of bugs have been fixed. Even a few new features have been introduced in the process. Only few more fixes and a lot more testing are needed before I will release a shiny new version of Qalculate.2010-01-06

Qalculate! version 0.9.7 released

After a long time without updates, a new version of Qalculate! is available for download. This is a bug fix and build update release. Qalculate! should now compile and work on most modern systems.
Changelog:

- General build updates and bug fixes, including the ability to build against cln >= 1.2
- Bug fix for segfaults with some uses of integrate()
- New Simplified Chinese translation
- Fix crash with unsupported operator in RPN syntax
- Fix reduction of vector size

2007-06-17

Qalculate! version 0.9.6 released

A new version of Qalculate! providing enhanced stability and usability with bug fixes and feature enhancements is now available.
Changelog:

- Use Lambert W to solve more equations and avoid infinite loop when solving some equations
- More data on elements
- Fix simplification of (1-1/x)^3 and similar
- Fix clumsy mistakes in with prefixes leading to crashes
- Fix parsing of unit expressions (when converting) such as W/(m K)
- Add more exact values for sin() and cos() and avoid floating point underflow by, in approximate mode, checking against the value of pi
- Always input decimal separator sign on keypad separator press
- Fix crash when expression entry reclaims focus if compiled with optimizations (GTK+)
- New units: typographic units, pouce, pied du roi, grams of TNT and tons of TNT
- New functions: lambertW(), addDays(), addMonths(), addYear(), addTime(), isNumber(), isReal(), isRational(), isInteger(), representsNumber(), representsReal(), representsRational(), representsInteger()
- New variable: omega constant
- Other minor fixes and enhancements

2006-12-17

Qalculate! version 0.9.5 finally released

After a long time with sporadic development, here is a new version with many new features and bug fixes.
Changelog:

- French translation (not fully complete yet)
- Return value in save() and add "name := value" as shortcut
- Integer factorization
- Interpret 0x[0-9,a-f] as hexadecimal number (do not require first digit to be 0-9)
- Add "Engineering" display mode
- Several fixes to display of units and prefixes
- Show value for variables without title in expression completion
- New functions: cross(), heaviside(), rectangular(), triangular(), ramp() kronecker(), sigmoid(), and logit()
- Use radius as argument for circumference()
- Add optional upper and lower limit arguments to integrate() for definite integrals
- Fix precision in logn()
- Ability to set shortcuts for meta modes (KDE)
- Make separate options for "Sort Minus Last" and "Negative Exponents" in numerical display menu
- Add "Edit Expression", "Edit Result", and "Insert Result Variable" to history context menu (KDE)
- Global shortcut for show/hide (KDE)
- Use localized comma for insert matrix/vector
- Remove use of libgnomeui completely and add --with-libgnome configure option
- Fix parsing of "x!)!"
- Use Julian year for light-year value
- Add several accelerator keys (GTK+)
- Connect "Exp" button Exp RPN operation and add Ctrl+Shift+E shortcut
- Fixes for old KDE and Qt versions
- New command line options for qalc: -terse (-t), -nodefs (-n), -nocurrencies, -nodatasets, -nofunctions, -nounits, -novariables

2006-06-02

Qalculate! version 0.9.4 released

This version includes many enhancements, such as a true RPN mode, a Dutch translation, new icons, API documenation, and bug fixes.
Changelog:

- True RPN mode with stack manipulation
- Dutch translation (from Jaap Woldringh and the Dutch KDE translation team)
- New application icons (from Thomas Lübking)
- API documentation (approximately halfway)
- Enhanced edit matrix/vector dialogs, with widget for GTK+
- View/edit/insert matrix/vector menu items (GTK+)
- Combined dialog for number bases in result and expression (GTK+)
- Fix comma as decimal sign with KDE GUI
- "Convert to Best Unit" and "Convert to Base Units" was swapped (KDE)
- Ignore commas (with dot as decimal sign) in numbers and option to use dot as thousands separator
- Fix removal of factors in simplifaction ("1 kg m/s" was simplified to "1000 m/s")
- Fix libqalculate.so unresolved symbols (with patch from Thomas de Grenier de Latour)
- Fix bug that caused all number arguments to require numbers to be rational
- Interpret 0x..., 0o... and 0b... as hexadecimal, octal and binary numbers, respectively, when base is decimal
- Ability to represent numbers as 0x0feff (for HEX), 0b0011101010 (for BIN)
- Set vectors and matrices as the first argument by default (foremost changes some statistical functions)
- New functions: tetrahedron(), tetrahedron_sa(), tetrahedron_height(), sqpyramid(), sqpyramid_sa(), sqpyramid_height(), stack() and register()
- component() and components() removed (use element() and dimension())
- Fix integration
- New unit: psi
- New name format in data files for more flexible translations
- Change some dubious mathematical wordings
- ...and many more enhancements and fixes...

2006-03-24

KDE GUI updated

Version 0.9.3.1 of the KDE GUI for Qalculate! (only the qalculate-kde package has been updated) has been released. This version fixes session management and puts Qalculate! in the system tray by default. Also new are a combined dialog for number bases in result and expression, and a command line option to calculate the clipboard content.
2006-03-14

Qalculate! version 0.9.3 released

This is primarily a bug fix release with relatively few changes.
Changelog:

- Avoid floating point overflow and underflow (bug #1432571)
- Do not use "Read Precision" in plot (bug #1429523)
- cos(x*pi*rad) equals 1 if x is even, not -1 (bug #1416048)
- isodate(), localdate(), timestamp(), stamptodate() functions
- Fix show ending zeroes
- Fix prefixes with automatic simplification/factorization
- Approximate comparison
- ...and some more...

2005-12-22

Happy Yule to you all! Qalculate! version 0.9.2 released

This is a major release (hence the .2 increase) that focuses on the CAS functionality, with greatly enhanced factorization/simplification
and solving of equations and inequalities.
Changelog:

- Enhanced factorization, with square free factorization of rational multivariate polynomials
- New simplification using the enhanced factorization
- Much more efficient determinant and matrix inverse calculation
- Greatly enhanced and reworked solving of equations and inequalities
- More efficient evaluation avoiding recalculations
- Generally enhanced and more correct algebraic functionality
- Faster calculation of powers with large exponent and base close to one
- Option to automatically simplify or factorize
- Option to warn about denominators assumed non-zero
- Fix negative exponents with lower-case e
- Fix fetching of exchange rates with gnome-vfs < 2.10
- Polynomial functions: coeff(), lcoeff(), pcontent(), degree(), etc.
- Fix ln(e^x)
- Display "x < 3 && x > 1" as "1 < x < 3"
- Display "&&" and "||" as "and" and "or" by default
- Fix display of fractions in "Decimal (Try Exact)" mode
- Add "Clear" to history popup menu
- Add "Enable/Disable Completion", "Read Precision", "Limit Implicit Multiplication", "RPN Mode", and "Meta Modes" to expression entry popup menu (GTK+)
- Fix crash with newline character in pasted text (GTK+)
- Fix completion with or after unicode signs (KDE)
- Compile without errors or warnings with -pedantic and -Wextra
- Fix compilation with --enable-final (KDE)
- Status text fixes (GTK+)
- Unicode fixes
- ...and many more minor fixes and enhancements (and probably some new bugs)...

2005-11-03

Qalculate! version 0.9.0 released

This release includes many visual and non-visual enhancements. Users will first notice the redesigned main
window, and then the as-you-type parse and function hint display, and enhanced completion.
But there are more to be discovered...
Changelog:

- Redesigned GTK+ GUI with history view in the main window
- Redesigned keypad in the KDE GUI
- Display of as-you-type expression parsing and function hints
- Enhanced completion
- Scaling of result display to vertically fit the window
- Nicer history listing
- Enhanced result display in GTK+ GUI with much nicer parentheses
- Meta modes
- 67 new units: bel (B) and neper (Np), information units such as bit and byte, many convenience units (km/h, deciliter, etc), and more.
- Binary prefixes
- Some new variables and functions
- Fixed help display in new yelp
- Fixed compile with cln-1.1.10
- Fixed regressions in simplification
- Fixed f(x) return type analysis (ex. log(x) represents a real number if x represents a positive). This was by accident unused.
- ...and many more bug fixes and enhancements...

2005-10-11

Quick fix for result cropping in new pango

The gtk+ version of Qalculate! was updated to handle new behaviour
in pango >= 1.10.0.
2005-10-10

New Applications: Qalculate! Bases, Qalculate! Currency, Qalculate! Units

In some cases the big (bloated) Qalculate! application is not the most efficient and user friendly interface.
Why should you, for example, need to load and learn to use the full application just to convert a simple binary number to a decimal, or
to see what the price of a foreign product is in your national currency with the current exchange rates.
Therefore, I am now releasing three small utilities: Qalculate! Bases,
Qalculate! Currency, and Qalculate! Units.
The full libqalculate capabilities is of course available in these applications (arbitrary precision, expression evaluation, etc.), but in
graphical user interfaces more fine-tuned for the specific purposes. The screenshots should be self-explanatory.
2005-10-10

Qalculate! version 0.8.2

A new full release with mostly bug fixes.
Changelog:

- Use gnomevfs instead of wget if available
- Allow user to specify wget options
- Add -export-dynamic to LDFLAGS to fix libglade without libgnome
- Update currencies
- Close gnuplot and disable save button when no series defined (GTK+)
- Fix round halfway numbers to even menu item (KDE)
- Also process operators entered with keypad (KDE)
- System tray icon and close to system tray option (of by default, KDE)
- Do not create qalculate symlink to qalc (confusing when installing GUI in other location)

2005-09-22

libqalculate! version 0.8.1.2

This is a bug fix release of libqalculate.
Changelog:

- Fix (1/2)^n < 0.5 in equalities (bug #1265104)
- Fix transformation of unicode signs in expressions with quotes
- Fix conversion of 0 ºC to ºF
- New units: mph and mpg

2005-06-11

Qalculate! version 0.8.1.1

The purpose if this release is to check and lower the version numbers of required libraries.
Some additional enhancements did however sneak in... qalculate-gtk has not been updated but needs to
be recompiled if libqalculate is updated.
Changelog:

- Remove requirement glib-2.0 >= 2.4 and require libxml2 >= 2.3.8
- Do not use unicode prefix names for long names
- Add even(), odd() and shift() functions and operators "<<" and ">>"
- Compile with kdelibs and Qt >= 3.1 (KDE)
- Add glib-2.0 and libxml-2.0 to PKG_CHECK_MODULES (KDE)
- Display prefix in object info (KDE)
- Confirm overwriting result and plot image files (KDE)
- Use KIO instead of wget for fetching exchange rates (KDE)
- Close gnuplot and disable save button when no series defined (KDE)

2005-06-09

Qalculate! version 0.8.1

This release includes several major bug fixes and new features in the KDE interface. The new version also adds
support for bitwise operators (~, &, |). This means that '&&' or 'AND', and '||' or 'OR' must be used for
logical operations.
Changelog:

- Bitwise operators
- XOR function
- Update currencies (more added)
- Do not crash when saving data sets
- Put buttons on the right (KDE)
- Add web address to about data and correct bug address (KDE)
- Add tooltips (KDE)
- Base and numeric mode combo boxes should not be editable (KDE)
- Support QT without STL support (KDE)
- Insert matrix/vector dialogs (KDE)
- Many enhancements to result display (KDE)
- Add list items add the end of the list to get the right order (KDE)
- Allow only one instance (KDE)
- Display ampersands in menus for categorys and titles (KDE)
- Hide completion when expression is empty (KDE)
- Handle input keys ^+digit as "^"+digit (KDE)
- and more...

2005-06-01

Qalculate! version 0.8.0 released with new KDE interface

This release includes a completely new graphical user interface using KDE with all features of the old GTK+ GUI.
It features a redesigned main window, with new features such as a history view (instead of in its own window),
selectable result and tooltips for variables, functions and units in the result.
Note that this does NOT mean that the old interface will be abandoned.
The Qalculate! package has been split in three: liqalculate, qalculate-gtk and qalculate-kde.
Changelog:

- New KDE GUI
- Allow use of 'e' as well as 'E': 5e2 = 5E2 = 500
- Update solve2()
- Reenable message dialog without buttons for gtk+ >= 2.6.2
- Do not look at function arguments in contains... functions
- Update integration and differentiation (sin(x) != sin(x)*rad) after change in sin() and cos() behaviour
- Fix documentation typos
- Fix includes.h for gcc-4.0

2005-02-01

Qalculate! version 0.7.2

This release includes some requested feature enhancements and minor bug fixes.
Changelog:

- Show base (if not decimal, hexadecimal or non-standard) as subscript
- Use singular instead of abbreviated name for completion
- Fix "Convert result" button
- Use the last operator for leftover stack values
- Fix RPN crash and don't add lonely stack value to itself
- Workaround freeze with message dialog without buttons

2004-11-22

Qalculate! version 0.7.1

This is mainly a bug fix release.
Changelog:

- Only use unicode character if available in the used font. Fixes plus sign not displayed correctly in keypad (bug #933234, bug #932828 and debian bug #281096), and wide keypad (bug #1063474)
- Do not round exact integers not in exponential format. Fixes display of large numbers in non-decimal number bases (debian bug #278973)
- Fix crash on systems, such as amd64, where size_t is not long int (bug #1049570)
- Do not update plot data when not changed
- Rearrange plot dialog and make x variable separate for each plot function
- Generate vector function
- Fix some cases with nested trigonometric functions by adding option to set default angle unit to none, to allow angle unit in argument
- Try with assumptions set to unknown in solve function if not successful
- Be more picky in comparisons with units
- Fix comparison of unit with unknown
- Fix 0.5!

2004-10-18

Qalculate! version 0.7.0

This release includes some structural changes, a text-based interface, some major speed-ups and a number of bug fixes.
Libqalculate is now installed as a shared library and in addition to the now optional gtk+ GUI, there
is now a text-based/command line interface with an executable named qalc and access to the full functionality
of Qalculate!.
Changelog:

- New text interface: qalc
- Change package name to qalculate
- Install libqalculate as a shared library
- Make compilation of qalculate-gtk and qalc optional
- Drop support for gtk+ < 2.4
- Separate internationalization files for definitions
- Add appendix with auto generated function, variable and unit lists to documentation
- Make definitions loading more than twice as fast
- Calculation speed-ups, with some statistical functions now being many times faster with large vectors
- Add option to limit use of implicit multiplication when parsing expressions
- Support fractions of two in gamma function and do not transform to factorial for unsupported values
- Double-, multi-, hyper- and superfactorials
- Alternative to use step size instead of sampling rate for generation of plot data
- Ask if exchange rates shall be downloaded on first run
- Change promille to permille and add permille sign
- Lots of approximation indication fixes
- Fix: atan ignored selected angle unit
- Fix: large numbers displayed approximately was not reported as approximate
- Fix: read precision from zero with decimals
- Fix: x!! != (x!)!
- Fix: change non-unicode abbreviation for micro from n to u

2004-09-27

Qalculate! version 0.6.4

This release includes, in addition to a large variety of enhancements and bug fixes,
a new data set concept, to be able to handle large sets of variables, and significant algebraic enhancements.
Changelog:

- New data set concept
- Improve factorization
- Status text
- Ability to save result to image file (png)
- Simple integration
- Polynomial division and other division enhancements
- Enhanced equation solving
- Transform sqrt(54) to 3*sqrt(6) (and similar) in exact mode
- Alternative to assume that unknown denominators are non-zero
- Set unknowns dialog
- Finish system property of units
- Allow use of operation name instead of sign (ex. "5 meters per second" instead of "5 m/s")
- New variables: thousand, hundred, ans2, ans3, ans4 and ans5
- New units: day and year
- New functions: solve2(), multisolve(), integrate()
- Save and load accel map
- Better sorting
- Display error when plot data contains non-numerical elements
- Fix xy-xy=xy !
- Fix RPN mode
- Fix saving of unknowns entered with quotation marks
- Fix install over old installation
- Fix display of application icon
- Fix diff() with variables and functions that contains x
- Many additional minor enhancements and bug fixes

2004-08-16

Qalculate! version 0.6.3

A new exciting release of Qalculate! is ready with a lot of bug fixes
and some interesting new features, including a periodic table, lots of physical constants, and new more flexible internal
systems and user options for precision and object names (now case-insensitive).
Changelog:

- Periodic Table and functions to retrieve element data
- Non-abbreviated names are now case-insensitive
- Individual precision for approximate values
- Solve quadratic equations (note that Qalculate! is still not really a good tool for solving advanced equations)
- New system for variable, unit and function names which allows unlimited number of different names for each object, translation of all names, and suffixes
- New variables: lots of physical constants, and true (yes), false (no), undefined
- Option to show ending zeroes (to see actual precision)
- Option to interpret input numbers with decimals as approximate with a precision equal to the number of digits (after preceding zeroes)
- Optional automatic conversion to best unit or base units
- New units: atomic mass unit (u), stilb, phot, oersted, maxwell, gauss, dyne, poise, stokes, mass fraction (kg/kg)
- New functions: bmi(), atomic_weight(), atomic_name(), atomic_symbol(), atomic_number(), atom()
- Convert to best unit now only converts to SI units
- Fix insert complex unit ("m/s" instead of "m_p_s")
- Fix right parenthesis added before (but no left after) vector
- Remove arg() until it has been fixed, and remove quarter unit as it might be confusing
- Do not prefix currencies in all locales
- Fix parsing of numbers with base <10 and decimal point
- Result display fixes
- Numerous minor enhancements and bug fixes...

2004-07-29

Qalculate! ebuild now in portage

Qalculate! is now available in Gentoo.
Install with

`ACCEPT_KEYWORDS="~x86" emerge qalculate-gtk`

2004-07-19

Qalculate! version 0.6.2

The new version includes some urgent bug fixes and a number of feature enhancements.
Changelog:

- Fix segfault on exit
- Force use of -O2 instead of -Os
- Fix a^b^c = a^(b^c) not (a^b)^c
- Fix rounding and precision in display of numbers
- if(), function, error, warning, load, save and title functions were not activated (oops!)
- Fix parsing of default value of text argument
- Fix display of empty vector
- Fix import of CSV file to matrix
- Fix E in rpn mode
- Fix rad unit being dropped in unsolved sin/cos function
- Fix ! (NOT)
- Change -5^2 = (-5)^2 to = -(5^2)
- Variable edit fixes
- Display also the parsed and formatted expression in history window
- GUI for subfunctions
- GUI to show numbers in base between 2 and 36
- Alternative to use lower case letters in numbers
- Alternative to round halfway numbers to even in display
- Alternative disable complex and infinite results
- Ability set number base for whole expression and enter epxressions in base functions
- Export to CSV file
- Fetching exchange rates message and slightly changed behaviour
- Undefined, implicit unknowns disabled by default
- Make symlink from qalculate-gtk to qalculate
- Documentation updates
- ...

2004-07-10

Problems with -Os optimization

I have discovered that with "-Os" in CFLAGS/CXXFLAGS, Qalculate! will
crash on startup. Replace with "-O2".
2004-07-07

Qalculate! version 0.6.1

This release fixes some urgent bugs.
Changelog:

- Fix input of numbers in bases > 10
- Terminate threads before exit
- Fix compilation by including unistd.h in main.cc
- Follow ISO 8601 standard for week numbers (glib doesn't)
- Fix approximate integers
- Fix is approximate indication

2004-06-24

Quick fix

If you downloaded version 0.6 yesterday, you should try again today.
2004-06-23

Qalculate! version 0.6 finally released

This release features completely rewritten math structures, including how expressions are represented, simplified and calculated internally.
This means that all known bugs and mathematical errors have been fixed, and hopefully results in much improved reliability.
As almost no code was left untouched, a bunch of new bugs should however be expected.
User visible changes include

- Correct calculations :-)
- Selectable assumptions and definition of separate unknown variables
- Some infinity support
- Some new and changed variables and functions (some removed)
- New result drawing routines
- Exact mode -> "Always Exact", "Try Exact" and "Approximate" approximation choices
- Fixed plotting
- Multiplication sign selection
- New boolean entry
- Do not create a new thread (and stack space) for every calculation
- ...

2004-05-12

Status Update

Relatively long time has gone by since the last release, but this does not mean that development has stalled.
I am currently rewriting the core math code, including how expressions are represented, simplified and calculated internally.
The rewrite will take some time, but will hopefully result in much improved reliability. Some functionality will be lost in the process and some will be added, such as assumptions (although the current version makes some inconsistent on its own) and display of the actual expression calculated, but most user-visible features will remain unchanged. Also, the API will be closer to being ready for a separate library release.

I seriously considered fully moving to Giac, but found that it was still lacking the stability needed for a desktop application and I also felt that I was moving too far a way from the main purpose of Qalculate!, which is to be a user-friendly and efficient tool for a wide array of everyday and simple scientific calculations. Those who need a full CAS will probably be more efficient with the tools provided with Giac.

2004-04-06

Qalculate! version 0.5.1

This version includes some important bug fixes (mostly related to trigonometric functions and multiple roots)
and a new solve function.
Changelog:

- Fix multiple real roots as far as possible
- Fix polynomial division (sin() / tan() was broken)
- Fix trigonometric function units
- Equation solver independent of Giac and isolation of x in comparisons
- Fix comparison of approximate values
- Elasticity and extremum functions
- Do not display any extra trailing zeros
- Fix invocation of newly created function
- Minimal integrate function without Giac
- Nicer complex number display
- Fix precision dialog
- Additional minor bug fixes

2004-04-02

Multiple roots is broken

The mode for calculation of multiple roots is seriously broken. Make sure that you disable it!
2004-03-29

Qalculate! version 0.5

This version includes a relatively large number of feature enhancements and fixes.
The user interface has been partly redesigned (see screenshots) and does now have convenient completion for expressions.
Note that gtk+-2.4 is recommended for this release, as it is needed for some of the new features.
Changelog:

- Redesigned GUI with menubar, history window, etc.
- Full completion of variables, functions and units in the expression entry
- Context-sensitive popup menu for the result
- Customizable expression entry font.
- A new solution for languages with comma as decimal point that actually should be working
- Actions for automatic unit conversion: convert to best unit and convert to base units
- Allow use of [] for creation of matrices and vectors
- Polynomial division
- Imperial and U.S. capacity units
- New functions: sum (old sum renamed to total), product, area, code, char, cis, derangements, sec, re, im, time, week, weekday, year, month, day, asec, sech, asech, csc, acsc, csch, acsch, cot, acot, coth, acoth
- Use symbols for some common currencies in result and put them in front of the quantity, which is now fully supported in expressions
- Roman and sexagesimal numbers
- A new derivative function which does not depend on Giac
- Simple factorization without Giac
- A new convenient number class replaces fractions and integers internally
- Make use of the relations between e, pi and i to give exact results
- Define all trigonometric functions as expressions in relation to e and ln()
- Allow "today" for dates
- Fix ugly result display with gtk pixmap themes
- Fixes for newer Giac versions
- Some result display adjustments
- Fix some unit conversion cases
- Fix rem, mod and abs
- Fix trimmed, weighted and winsorized mean
- Fix date calculations with different basis
- Fix printing of exponent 1E...
- Some additional minor fixes

2004-03-10

Qalculate! version 0.4.2a: "Oops!"

Fixes compilation without Giac.
2004-03-09

Qalculate! version 0.4.2: Now with documentation!

This release includes a first manual draft. Please note that English is not my native language and this quite extensive manual was written during one hectic week.
Version 0.4.2 also includes some bug fixes and new features.
Changelog:

- Manual and a help menu item
- Load function for accessing data files directly in expressions
- Save history between sessions
- Expression history, accessed with Up and Down keys
- Calculate expression given in command line
- Yen, pound, dollar and cent signs
- Allow currencies to be put immediately before the quantity
- Move some options from preferences dialog to menus
- Fix unit conversion for ch^2 to acre and similar
- Fix log with negative result
- Fix exponential display in non-fractional mode with negative exponents
- Fix problem with Gnuplot labels and quotation marks
- Fix Gnuplot's dislike of local decimal points
- Fix abort when locale not supported by C library
- Fix some problems related to complex numbers

2004-02-26

Qalculate! version 0.4.1

This is a bug fix release that fixes all problems related to strptime (by not using it) and parsing of text/date arguments.Changelog:

- Replace strptime
- Fix parsing of text/date arguments
- Fix gtk warnings on start-up
- Use gtk's new file dialog

2004-02-18

Qalculate! version 0.4

This release adds complex numbers and optional support for Giac,
a computer algebra system. Even though some bug fixes have been made, this version is considered less stable than the previous.
Most changes dates back to early November before a long break and I'm still waiting for the time and motivation to do the necessary rewrite of the core math structures.Changelog:

- Complex numbers
- Preliminary Giac support, including derive, integrate, solve and a generic giac function, as well as the possibility to factorize the result
- Start with gnuplot absent
- "Copy Result" menu item
- Use of Newton's Binomial Formula to speed up symbolic calculations
- Show argument names in error messages
- Define trigonometric functions as non-builtins when possible
- Handle pi correcly in trigonometric functions
- Delay inexact calculations: sqrt(2)^2 is no longer approximate
- Permutations and combinations

2004-02-03

Binary packages available

Debian packages (by Martin Waitz) are now available.
2004-01-31

Minor bug fix release

Qalculate! version 0.3.1.1 foremost fixes crash on display of matrix and incorrect
calculation of division by root with multiple solutions.