# The &kcalc; Handbook

Bernd Johannes
Wuebben

    wuebben@kde.org

Pamela
Roberts

    pam.roberts@btinternet.com

Lauri
Watts

    vampyr@atconnex.net

Reviewer
2001
Bernd Johannes Wuebben, Pamela Roberts
&FDLNotice;
2001-03-11
1.03.01

&kcalc; is a scientific calculator for &kde;

KDE
KCalc
calculator

## Introduction

This document describes &kcalc; version 1.3.0.

&kcalc; offers many more mathematical functions than meet the eye on 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; has a trigonometric and a statistics mode.

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

- &kcalc; features a results-stack which let's you conveniently recall previous results.

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

- You can configure &kcalc;'s precision and the number of digits after the period.

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

Have fun with &kcalc;!

Bernd Johannes Wuebben

## Usage

General usage is straight forward 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 Up and Down arrow 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 the &LMB; on &kcalc;'s display will place the displayed number on to the clipboard.

  - Pressing the right or &MMB; on &kcalc;'s display will paste the clipboard content into the display if the content of the clipboard is a valid floating point number.

Statistical and Trigonometric Modes

  &kcalc; can run in Statistical or Trigonometric mode. Pressing F3 will toggle between the modes or you can set the mode with the Configuration dialog brought up by pressing the Configure button or with F2.

### Statistical Mode

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

Buttons | Function
--- | ---
N | Recall the number of data items entered
Inv N | Display the sum of all data items entered
Mea | Display the mean of the data items entered
Inv Mea | Display the sum of the square of all data items entered
Std | Display the standard deviation (n)
Inv Std | Display the population standard deviation (n-1)
Med | Display the median
Dat | Enter a data item
Inv Dat | Clear last data item entered
Cst | Clear the store of all data item entered

### Trigonometric 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(x)
Sin | Compute the sine
Inv Sin | Compute the inverse sine
Cos | Compute the cosine
Inv Cos | Compute the inverse cosine
Tan | Compute the tangent
Inv Tan | Compute the inverse tangent
Log | Compute the Log base 10
Inv Log | Compute 10 to the power of x
Ln | Compute the natural logarithm. That is the log to base e
Inv Ln | Compute e to the power of x

### 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).

Key | Function | Notes
--- | --- | ---
H | Hyp | Hyperbolic as in Hyp Sin , the sinh(x)
S | Sin |
C | Cos |
T | Tan |
N | Ln | log base e
L | Log | log base 10
I | Inv | Inverse, &eg; if you want arcsin(x) type `i s`
\ | +/- | Change sign
[ | x^2 |
^ | x^y |
! | x! | Factorial
< | Lsh | Left shift. Note: Inv Lsh is Right shift
& | And | Logical AND
* | * | Multiply
/ | / | Divide
D | Dat | Enter data item in statistical mode
O | Or | Logical OR. Note: Inv Or is XOR
R | 1/x | Reciprocal
= | = |
Enter | = |
Return | = |
Page Up | C | Clear
Esc | C | Clear
Prior | C | Clear
Page Down | AC | Clear all
Next | AC | Clear all
Del | AC | Clear all
F1 | ? | Help, brings up this manual
F2 | Configure | Bring up the configure dialog
F3 |  | Switch between Trigonometric and Statistical modes

## Comments on Specific Functions

### Mod and Inv Mod

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

Inv Mod does integer divison of the displayed number by the next input number.

  `22 Inv Mod 8 =` will give the result 2

  `22.345 Mod 8 =` also gives 2.

### &percnt;

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

- If the final operator is + or - show the result as a percentage of the final 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.

- If the final operator is x^y give the left operand raised to the power of the (right operand / 100).

- In all other cases the &percnt; key gives identical results to the = key.

Examples:

  `11 + 89 %` gives 112.35.. (89 + 11 = 100, and 100 is 112.35 percent of 89)

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

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

  `2 / 300 %` gives 8 (2 to the power (300/100))

### Lsh and Inv Lsh

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:

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

  `10.345 Lsh 3 =` also gives 80.

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

  `16 Inv Lsh 2 =` gives 4 (16 divided by 2 twice).

  `16.999 Inv Lsh 2 =` also gives 4.

### Cmp, And, Or and Inv Or

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

Inv Or performs the logical XOR (exclusive OR) operation.

  `101 Inv Or 110 =` gives 11

## Questions and Answers

How do I get pi=3.1415926...?

Simply type `Inv EE`.

How do I get e, the Euler number?

Type `1 Inv Ln`.

How do I get two fixed digits after the period?

Click on the Configure button, this will bring up the configuration dialog. Check Set fixed 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. Check &kcalc;'s About dialog (in the Configure dialog box) in order to find out what the fundamental data type for your copy of &kcalc; is.

Unless you have a libc and libmath of exceptionally high quality, you will be able to observe some interesting results when trying to execute computations such as: `123.22 - 123.21`, `2.01 - 2`, `123.88 - 123.87` and similar. However if you think this is bad I ask you to do the same computation on the windows calculator.

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.

## Credits and License

&kcalc; Program copyright 1996-2001 Bernd Johannes Wuebben.wuebben@kde.org

Additions by Espen Sand. espen@kde.org

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

Documentation copyright 2001:

- Bernd Johannes Wuebben. wuebben@kde.org

- Pamela Roberts pam.roberts@btinternet.com

&underFDL; &underGPL;

## Installation

&kcalc; is part of the kdeutils package within the &kde; project and will normally be provided as part of a &kde; installation. For more details about &kde; visit http://www.kde.org.

### Compilation and Installation

If you wish to compile &kcalc; by itself, source code can be found at ftp://ftp.kde.org/pub/kde/, the main &FTP; site of the &kde; project.

Compile and install with the usual:

    % ./configure
    % make
    % make install

### How to enable long double precision for &kcalc;

If your machine supports the C data type long double and if you have a working libc you can enable long double precison for &kcalc;.

Here is what to do:

1. Check `../config.h` and see whether HAVE&lowbar;LONG&lowbar;DOUBLE is defined, &ie; you should be able to locate a line saying:

       #define HAVE_LONG_DOUBLE 1

   If you can't find such a line your system doesn't support long double IEEE precision.

2. Edit the file `kcalctype.h` `configdlg.cpp` `kcalc.cpp` and `kcalc&lowbar;core.cpp` and remove the lines:

       #ifdef HAVE_LONG_DOUBLE
       #undef HAVE_LONG_DOUBLE
       #endif

3. Recompile &kcalc;.