Math Library

- Calculation and parsing:
- Basic operations and operators: + - * / mod ^ E () && || ! < > >= <= != ~ & | << >> xor
- Fault-tolerant parsing of strings: log 5 / 2 .5 (3) + (2( 3 +5 = ln(5) / (2.5 * 3) + 2 * (3 + 5)
- Expressions may contain any combination of numbers, functions, units, variables, vectors and matrices, and dates
- Supports complex and infinite numbers
- Propagation of uncertainty
- Interval arithmetic
- Supports all common number bases, as well as negative and non-integer radices, sexagesimal numbers, time format, and roman numerals
- Ability to disable functions, variables, units or unknown variables for less confusion: e.g. when you do not want (a+b)^2 to mean (are+barn)^2 but ("a"+"b")^2
- Customizable implicit multiplication
- Matrices and vectors, and related operations (determinants etc.)
- Verbose error messages
- Arbitrary precision
- RPN mode

- Result display:
- Supports all common number bases, as well as negative and non-integer radices, sexagesimal numbers, time format, and roman numerals
- Many customization options: precision, max/min decimals, complex form, multiplication sign, etc.
- Exact or approximate: sqrt(32) returns 4 * sqrt(2) or 5.66
- Simple and mixed fractions: 4 / 6 * 2 = 1.333... = 4/3 = 1 + 1/3

- Symbolic calculation:
- E.g. (x + y)^2 = x^2 + 2xy + y^2; 4 "apples" + 3 "oranges"
- Factorization and simplification
- Differentiation and integration
- Can solve most equations and inequalities
- Customizable assumptions give different results (e.g. ln(2x) = ln(2) + ln(x) if x is assumed positive)

- Functions:
- Hundreds of flexible functions: trigonometry, exponents and logarithms, combinatorics, geometry, calculus, statistics, finance, time and date, etc.
- Can easily be created, edit and saved to a standard XML file

- Units:
- Supports all SI units and prefixes (including binary), as well as imperial and other unit systems
- Automatic conversion: ft + yd + m = 2.2192 m
- Explicit conversion: 5 m/s to mi/h = 11.18 miles/hour
- Smart conversion: automatically converts 5 kg*m/s^2 to 5 N
- Currency conversion with retrieval of daily exchange rates
- Different name forms: abbreviation, singular, plural (m, meter, meters)
- Can easily be created, edited and saved to a standard XML file

- Variables and constants:
- Basic constants: pi, e, etc.
- Lots of physical constants (with or without units) and properties of chemical element
- CSV file import and export
- Can easily be created, edited and saved to a standard XML file
- Flexible - may contain simple numbers, units, or whole expressions
- Data sets with objects and associated properties in database-like structure

- Plotting:
- Uses Gnuplot
- Can plot functions or data (matrices and vectors)
- Ability to save plot to PNG image, postscript, etc.
- Several customization options

- and more...

User Interface

- Graphical user interfaces implemented using GTK or Qt
- Flexible expression entry with customizable completion, hints, and continious display of parsed expression
- Optional calculate-as-you-type mode (GTK)
- Small and ... not so small mode (GTK)
- Calculation history which allows the user to access the text and value of and apply operations to previous expressions and result
- Optional traditional calculator keypad, with quick access to most features, and a programming mode
- Practical menus give fast access to all advanced features
- Customizable meta modes for quickly switching between different settings (GTK)
- Dialogs for management of and easy access to functions, variables and units (with quick conversion)
- User friendly dialogs for functions, with description and entries for arguments
- Create/edit functions, variables and units
- Easy editing of matrices and vectors
- Various tools for fast conversion between number bases, floating point conversion, calendar conversion, and percentage calculation (GTK), and a period table (GTK)
- Convenient interface to gnuplot
- Configurable keyboard shortcuts (GTK)
- Additional text based interface with full functionality
- and more...