# The &kcalc; Handbook

## Introduction

&kcalc; offers many more mathematical functions than meets the eye at a first glance. Please study the section on keyboard accelerators and modes in this handbook to learn more about the many functions available.

In addition to the usual functionality offered by most scientific calculators, &kcalc; offers a number of features, which I think are worthwhile pointing out:

- &kcalc; provides trigonometric functions, logic operations, and it is able to do statistical calculations.

- &kcalc; allows you to cut and paste numbers from/into its display.

- &kcalc; features a results-stack which lets you conveniently recall previous results.

- You can configure &kcalc;'s display colors and font.

- You can configure &kcalc;'s precision, the number of displayed digits and the number of digits after the period in the settings dialog.

- &kcalc; offers a great number of useful key-bindings, which make using &kcalc; without using a pointing device easy.

  Hint: pressing (and holding) the &Ctrl;-key, displays on every button,the corresponding key-binding.

&kcalc; uses Infix notation which enforces correct order of operations as taught in school; contrary to Immediate execution used by many simple calculators.

Have fun with &kcalc;!

&Bernd.Johannes.Wuebben;

## Usage

### General Usage

General usage is straightforward and similar to the way most simple scientific calculators operate, but take note of the following special &kcalc; features:

Result Stack

- Each time you &LMB; click on the = button or press your keyboard's &Enter; or = keys, the display result is written to &kcalc;'s result stack. You can navigate through the result stack with your keyboard's &Ctrl;Z and &Ctrl; &Shift;Z keys.

Percent Function

- The percent function works somewhat differently to that on most calculators. However, once understood, its enhanced functionality proves quite useful. See the section about the percent function for further details.

Cut and Paste

- - Pressing &Ctrl;C will place the displayed number onto the clipboard.

  - Pressing &Ctrl;V will paste the clipboard content into the display if the content of the clipboard is a valid floating point number.

  - It is still possible to copy/paste by clicking on &kcalc;'s display, but this may disappear in future versions.

Advanced functions

- When you start &kcalc; for the first time, the calculator will only display buttons for basic arithmetic computations.

  Under the menu entry Settings it is possible to select a mode for &kcalc;: it is possible to choose Simple or Science or Statistic or Numeral System mode. Please note, that these modes will slightly change as &kcalc; evolves.

Button Layout

- To give easy access to all the functions in advanced modes in &kcalc;, many keys have a second layout. Click on &Shift; or press the shortcut &Ctrl;2 to make the second layout of the buttons visible.

History

- The history area shows all the calculations done in &kcalc; for the active session of &kcalc;. Click on AC or press the shortcut Del to clear the content of the history. To activate or deactivate it, use the item Show History in the menu Settings of the menu bar, or press &Ctrl;H.

### Simple Mode

This mode contains only those buttons and functions, which are essential necessary for basic calculations.

If you just want to sum up all items on an invoice this mode may be your choice.

### Science Mode

In this mode the left column of buttons is allocated to trigonometric functions:

Buttons | Function
Hyp | Enter Hyperbolic sub mode. Hyp Sin for example is the hyperbolic sine: sinh
Sin | Compute the sine
&Shift; Sin or Asin | Compute the inverse sine
Cos | Compute the cosine
&Shift; Cos or Acos | Compute the inverse cosine
Tan | Compute the tangent
&Shift; Tan or Atan | Compute the inverse tangent
Log | Compute the Log base 10
&Shift; Log or 10x | Compute 10 to the power of x
Ln | Compute the natural logarithm. That is the log to base e
&Shift; Ln or ex | Compute e (the base of the natural logarithm) to the power of x

The second column has buttons for algebraic functions:

Buttons | Function
Mod | Compute the remainder in Euclidean division
&Shift; Mod or IntDiv | Integer division (integer part of the quotient)
1/x | Compute the reciprocal for a number
&Shift; 1/x or nCm | Compute the number of distinct second-operand-element subsets of it that can be formed for any set containing first operand elements (binomial coefficient)
x! | Compute the product of all positive integers less than or equal to the current integer operand (factorial)
x² | Compute the square of x
&Shift; x² or √x | Compute the square root of x
xʸ | x power y
&Shift; xy or x1/y | x power 1/y
x³ | Computes the third (cubic) power of x
&Shift; x³ or ∛x | Computes the third (cubic) root of x
x·10ʸ | Computes the product of the first operand and decimal exponent of the second operand

### Statistical Mode

In this mode the left column of buttons is allocated to statistical functions:

Most of the functionality in this mode is centered around the Dat button. To create a data list of numbers, enter a number into the calculator and press Dat. A sequentially increasing number is shown on the display indicating which position in the Data list the number occupies. A traditional calculator only stores three values for statistical functions: The number of discrete items in a list, the sum of the data items entered and the sum of the square of all data items in the list. &kcalc; differs by actually storing each discrete value, allowing you to calculate the median value of the data.

Buttons | Function
N | Recall the number of data items entered
&Shift; N or &Sgr;x | Display the sum of all data items entered
Mea | Display the mean of the data items entered
&Shift; Mea or &Sgr;x² | Display the sum of the square of all data items entered
&sgr;N | Display the standard deviation (n)
&Shift; &sgr;N or &sgr;N-1 | Display the population standard deviation (n-1)
Med | Display the median
Dat | Enter a data item
&Shift; Dat or CDat | Clear last data item entered
CSt | Clear the store of all data item entered

The next two columns hold the buttons with trigonometric and algebraic functions described in the Science mode section.

### Numeral System Mode

This mode contains buttons and functions to calculate in binary, hexadecimal, octal and decimal.

You select the base from the dropdown menu on the left. To insert a hexadecimal number for example, just do the following: Select Hex from the dropdown menu. Then enter a number and note that you can use the letters A to F for digits larger than 9. In the numeral system view, you can see the number converted to decimal, octal and binary.

Binary, octal and hexadecimal numbers can be displayed as groups of digits separated by whitespaces. Such grouping can improve readability of numbers. For example, hexadecimal number AF1C42 can be displayed as AF 1C 42 with separation every second digit. Grouping can be turned off or tweaked. Select Settings Configure &kcalc;... to bring up the configuration dialog and change the setting on the General page as appropriate.

You may want to select Show Bit Edit from the Settings menu to see selected bits.

There are logic operators available in this mode. These operators are:

Buttons | Function
AND | Two numbers are logically anded
OR | Two numbers are logically ored
XOR | Two numbers are logically exclusive ored
Lsh | Left shift the value
Rsh | Right shift the value
Cmp | Perform a 1's complement

The second column holds the buttons with algebraic functions described in the Science mode section.

The third column with the buttons A to F is enabled only in Hex mode.

### Memory Operations

&kcalc; supports the memory operations given by standard calculators plus six slots to hold constants.

#### Standard Memory Operations

&kcalc; can remember results of operations for you, and re-use them in later calculations. You can access these functions via several buttons labeled MR, MS, M+ and MC.

MS

- The MS button stores the currently displayed result in memory.

M+

- The M+ button adds the current result to the one in memory. So, if you had stored a 20, and the current result is a 5, your memory would contain 25 when you press it. If the memory is empty, it acts like MS and simply stores the result.

MR

- The MR button gets the value stored in memory and puts it in the display.

MC

- The MC button clears the memory.

If a value is stored in memory a M will appear in the status bar, next to the calculator mode indicator

#### Constants

The six constants buttons C1 to C6 will only be visible after activating the item Constants Buttons in the menu Settings of the menu bar. They are available in Science mode and Statistics mode

To see the value stored in each constant hover the button with the mouse pointer.

To store the number shown in the &kcalc; display in one of the six constants, first press &Shift; followed by the desired button key C1 up to C6.

To use the value stored in any of the constants in a calculation, just press the desired button (C1 to C6), and the corresponding number will appear in the display.

It is possible to change the label of the constants button to make it easier to remember which button holds which constant. Click with the right mouse button on one of the buttons C1 to C6. A popup menu appears, in which you select Set Name.

There are many (mostly physical) predefined constants, which can be put on any of the six buttons C1 - C6 by selecting the desired constant in the popup menu that appears after right clicking on one of the constant buttons and selecting Choose from List. Though the predefined constants can also be accessed via the Constants in the menu bar, storing it on a constants button is very handy, if the number is used frequently.

### Single Key Accelerators

To simplify entering calculations from the keyboard &kcalc; has single key accelerators for most functions. For example entering `7R` or `7r` will calculate the reciprocal of 7 (1/7).

During a computation, you can always press &Ctrl; to make each button display its key-binding.

Key | Function | Notes
H | Hyp | Hyperbolic as in Hyp Sin, the sinh
S | Sin |
C | Cos |
T | Tan |
N | Ln | log base e
L | Log | log base 10
Ctrl-2 | &Shift; | Second function for this button. ⪚ if you want arcsin type `Ctrl-2 s`
\ | +/- | Change sign
[ | x^2 |
^ | x^y |
! | x! | Factorial
E | x10y | Exponent
< | Lsh | Left shift
> | Rsh | Right shift.
& | AND | Logical AND
x or * | X | Multiply
/ | / | Divide
D | Dat | Enter data item in statistical mode
| | OR | Logical OR. Note: &Shift; OR is XOR
R | 1/x | Reciprocal
&Enter; | = |
Return | = |
&Backspace; | <= | Delete last number
PgUp | C | Clear
&Esc; | C | Clear
PgDown | AC | Clear all
Del | AC | Clear all
: | Mod | remainder of dividing
&Alt;+1 to &Alt;+6 | C1 | use the value stored in C1 to C6

## Comments on Specific Functions

### Mod and IntDiv

Mod gives the remainder of dividing the displayed number by the next input number.

- `22 Mod 8 =` will give the result 6

  `22.345 Mod 8 =` will give the result 6.345

&Shift; IntDiv does integer division of the displayed number by the next input number.

- `22 Shift IntDiv 8 =` will give the result 2

  `22.345 Shift IntDiv 8 =` also gives 2

### %

Used instead of the = key, % interprets the final operation carried out in the current calculation as follows:

- If the final operator is + or - the second argument is interpreted as percentage of the first operand.

- If the final operator is * divide the result of the multiplication by 100.

- If the final operator is / give the left operand as a percentage of the right operand.

- In all other cases the % key gives identical results to the = key.

Examples:

- `150 + 50 %` gives 225 (150 plus 50 percent of this amount)

  `42 * 3 %` gives 1.26 (42 * 3 / 100)

  `45 / 55 %` gives 81.81... (45 is 81.81.. percent of 55)

### Lsh and Rsh

Lsh left shifts the integer part of the displayed value (multiplies it by 2) n times, where n is the next input number, and gives an integer result (base is set to Bin):

- `10 Lsh 3 =` gives 80 (10 multiplied by 2 three times).

  `10.345 Lsh 3 =` also gives 80.

Rsh right shifts the value (performs an integer divide by 2) n times.

- `16 Rsh 2 =` gives 4 (16 divided by 2 twice).

  `16.999 Rsh 2 =` also gives 4.

### Cmp, And, Or and Xor

The Cmp, And and Or functions perform bitwise logical operations and therefore appear more meaningful if the base is set to Hex, Oct or Bin rather than Dec. In the following examples base is set to Bin.

Cmp performs a 1's complement (inverts the bits).

- `101 Cmp` gives 111...111010

AND does a logical AND.

- `101 AND 110 =` gives 100

OR does the logical OR.

- `101 OR 110 =` gives 111

XOR performs the logical XOR (exclusive OR) operation.

- `101 XOR 110 =` gives 11

## Questions and Answers

How do I get e, the Euler number?

Press `1 Shift ex` in the &kcalc; window, press `1 &Ctrl;2 N` on the keyboard or use the Constants Mathematics menu.

How do I get two fixed digits after the period?

Select Settings Configure &kcalc;... on the menu bar, this will bring up the configuration dialog. Check Set decimal precision and adjust the spin control so that it shows a 2.

What about Precision?

The main factor determining the precision of &kcalc; is whether your libc and libmath supports the C data type `long double`. If this is the case, &kcalc; will detect this at compile time and use it as its fundamental data type to represent numbers.

Adjust the Precision in &kcalc;'s Configure dialog so that the above computations work correctly. I recommend a precision of 14 if the fundamental data type for your copy of &kcalc; is `long double`, otherwise 8 or 10.

Higher precision doesn't necessarily lead to better results. Play with the precision and you will see what I mean.

&commands;

## Credits and License

&kcalc; Program Copyright ©:

&Bernd.Johannes.Wuebben; 1996-2000

The &kde; Team 2000-2008

&Evan.Teran; 2008-2013

- &Bernd.Johannes.Wuebben; &Bernd.Johannes.Wuebben.mail;

- &Evan.Teran; &Evan.Teran.mail;

- &Espen.Sand; &Espen.Sand.mail;

- &Chris.Howells; &Chris.Howells.mail;

- &Aaron.J.Seigo; &Aaron.J.Seigo.mail;

- &Charles.Samuels; &Charles.Samuels.mail;

- &David.Johnson; &David.Johnson.mail;

&kcalc; was inspired by Martin Bartlett's xfrmcalc, whose stack engine is still part of &kcalc;.

Documentation Copyright © 2001,2002,2005, 2006,2010:

- &Bernd.Johannes.Wuebben; &Bernd.Johannes.Wuebben.mail;

- &Pamela.Roberts; &Pamela.Roberts.mail;

- &J.Hall; &J.Hall.mail;

- &Anne-Marie.Mahfouf; &Anne-Marie.Mahfouf.mail;

- Eike Krumbacher eike.krumbacher@x-eike.de

&underFDL; &underGPL;