<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN" "dtd/kdedbx45.dtd" [
  <!ENTITY % addindex "IGNORE">
  <!ENTITY % English "INCLUDE" > <!-- change language only here -->
  <!ENTITY commands SYSTEM "commands.docbook">
]>

<book id="kcalc" lang="&language;">
<bookinfo>
<title>The &kcalc; Handbook</title>

<authorgroup>
<author>
&Bernd.Johannes.Wuebben; &Bernd.Johannes.Wuebben.mail;
</author>

<author>
&Pamela.Roberts;&Pamela.Roberts.mail;
<!-- <affiliation><jobtitle>Handbook maintainer</jobtitle>
</affiliation> -->
</author>
<author>
&Anne-Marie.Mahfouf;&Anne-Marie.Mahfouf.mail;
<!-- <affiliation><jobtitle>Handbook maintainer</jobtitle>
</affiliation> -->
</author>
<!-- TRANS:ROLES_OF_TRANSLATORS -->
</authorgroup>

<copyright>
<year>2001</year> <year>2002</year> <year>2005</year>	<year>2006</year>
<holder>&Bernd.Johannes.Wuebben;, &Pamela.Roberts;,
&Anne-Marie.Mahfouf;</holder>
</copyright>

<legalnotice>&FDLNotice;</legalnotice>

<date>2016-07-25</date>
<releaseinfo>Applications 16.08</releaseinfo>

<abstract><para>&kcalc; is a calculator for your desktop environment. In the simple mode it can 
be used for basic arithmetic operations, but provides advanced modes for scientific, 
statistical and numeral system calculations.</para></abstract>

<keywordset>
<keyword>KDE</keyword>
<keyword>KCalc</keyword>
<keyword>calculator</keyword>
</keywordset>
</bookinfo>

<chapter id="introduction">
<title>Introduction</title>

<para>&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.</para>

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

<itemizedlist>
<listitem>
<para>&kcalc; provides trigonometric functions, logic operations, and it is
able to do statistical calculations.</para>
</listitem>
<listitem>
<para>&kcalc; allows you to cut and paste numbers from/into its display.</para>
</listitem>
<listitem>
<para>&kcalc; features a <firstterm>results-stack</firstterm> which lets
you conveniently recall previous results.</para>
</listitem>
<listitem>
<para>You can configure &kcalc;'s display colors and font.</para>
</listitem>
<listitem>
<para>You can configure &kcalc;'s  precision, the number of displayed digits and the number
of digits after the period in the settings dialog.</para>
</listitem>
<listitem>
<para> &kcalc; offers a great number of useful  <link linkend="key-accels">
key-bindings</link>, which make using &kcalc; without using a pointing device easy.</para>
<para>Hint: pressing (and holding) the &Ctrl;-key, displays on
every button,the corresponding key-binding.</para>
</listitem>
</itemizedlist>

<!--see https://bugs.kde.org/show_bug.cgi?id=326481-->
<note><para>&kcalc; uses <ulink url="https://en.wikipedia.org/wiki/Calculator_input_methods#Infix_notation">Infix 
notation</ulink> which enforces correct order of operations as taught in school; contrary to  
<ulink url="https://en.wikipedia.org/wiki/Calculator_input_methods#Immediate_execution">Immediate execution</ulink>
used by many simple calculators.
</para></note>

<para>Have fun with &kcalc;!</para>

<para>&Bernd.Johannes.Wuebben;</para>

</chapter>


<chapter id="usage">
<title>Usage</title>
<sect1 id="general-usage">
<title>General Usage</title>

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

<variablelist>
<varlistentry>
<term>Result Stack</term>
<listitem><para>Each time you &LMB; click on the
<guibutton>=</guibutton> button or press your keyboard's
&Enter; or <keysym>=</keysym> keys, the display result is
written to &kcalc;'s result stack. You can navigate through the result
stack with your keyboard's
<keycombo action="simul">&Ctrl;<keycap>Z</keycap></keycombo>
and <keycombo action="simul">&Ctrl; &Shift;<keycap>Z</keycap></keycombo>
keys.</para> 
</listitem>
</varlistentry> 

<varlistentry>
<term>Percent Function</term>
<listitem>
<para>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 <link
linkend="percent">percent</link> function for further details.</para>
</listitem></varlistentry>
      
<varlistentry>
<term>Cut and Paste</term>
<listitem>
<para><itemizedlist>
<listitem>
<para>Pressing <keycombo action="simul">&Ctrl;<keycap>C</keycap></keycombo>
will place the displayed number onto the clipboard.</para>
</listitem>
<listitem>
<para>Pressing <keycombo action="simul">&Ctrl;<keycap>V</keycap></keycombo>
will paste the clipboard content into the display if the content of the
clipboard is a valid floating point number.</para>
</listitem>
<listitem>
<para>It is still possible to copy/paste by clicking on &kcalc;'s display,
but this may disappear in future versions.</para>
</listitem>
</itemizedlist>
</para></listitem></varlistentry>

<varlistentry>
<term>Advanced functions</term>
<listitem>
<para>When you start &kcalc; for the first time, the calculator will only
display buttons for basic arithmetic computations.</para>
<para>Under the menu entry <guimenu>Settings</guimenu> it is possible to select a mode for &kcalc;:
it is possible to choose
<link linkend="simple-mode">Simple</link> or
<link linkend="science-mode">Science</link> or
<link linkend="statistical-mode">Statistic</link> or
<link linkend="numeral-system-mode">Numeral System</link> mode. Please note, that these modes will
slightly change as &kcalc; evolves.</para> 
</listitem>
</varlistentry>

<varlistentry>
<term>Button Layout</term>
<listitem>
<para>To give easy access to all the functions in advanced modes in &kcalc;, many keys have a second layout. Click
on <guibutton>&Shift;</guibutton> or press the shortcut <keycombo action="simul">&Ctrl;<keycap>2</keycap></keycombo> to make
the second layout of the buttons visible.</para> 
</listitem>
</varlistentry>

<varlistentry>
<term>History</term>
<listitem>
<para>The history area shows all the calculations done in &kcalc; for the active session of &kcalc;.
Click on <guibutton>AC</guibutton> or press the shortcut <keycap>Del</keycap> to clear the content of the history.
To activate or deactivate it, use the item <guilabel>Show History</guilabel> in the menu <guimenu>Settings</guimenu> of the
menu bar, or press <keycombo action="simul">&Ctrl;<keycap>H</keycap></keycombo>.</para>
</listitem>
</varlistentry>

</variablelist>
</sect1>


<!-- describing MODES here -->

<sect1 id="simple-mode">
<title>Simple Mode</title>
<para>This mode contains only those buttons and functions, which are essential necessary for basic calculations.</para>
<para>If you just want to sum up all items on an invoice this mode may be your choice.</para>
</sect1>


<sect1 id="science-mode">
<title>Science Mode</title>

<para>In this mode the left column of buttons is allocated to trigonometric
functions:</para>

<informaltable><tgroup cols="2">
<thead>
<row><entry>Buttons</entry>
<entry>Function</entry></row>
</thead>
<tbody>
<row><entry><guibutton>Hyp</guibutton></entry>
<entry>Enter Hyperbolic sub mode. Hyp Sin for example is the hyperbolic sine:
sinh</entry></row>

<row><entry><guibutton>Sin</guibutton></entry>
<entry>Compute the sine</entry></row>

<row><entry>&Shift; <guibutton>Sin</guibutton> or <guibutton>Asin</guibutton></entry>
<entry>Compute the inverse sine</entry></row>

<row><entry><guibutton>Cos</guibutton></entry>
<entry>Compute the cosine</entry></row>

<row><entry>&Shift; <guibutton>Cos</guibutton> or <guibutton>Acos</guibutton></entry>
<entry>Compute the inverse cosine</entry></row>

<row><entry><guibutton>Tan</guibutton></entry>
<entry>Compute the tangent</entry></row>

<row><entry>&Shift; <guibutton>Tan</guibutton> or <guibutton>Atan</guibutton></entry>
<entry>Compute the inverse tangent</entry></row>

<row><entry><guibutton>Log</guibutton></entry>
<entry>Compute the Log base 10</entry></row>

<row><entry>&Shift; <guibutton>Log</guibutton> or 10<superscript>x</superscript></entry>
<entry>Compute 10 to the power of x</entry></row>

<row><entry><guibutton>Ln</guibutton></entry>
<entry>Compute the natural logarithm. That is the log to base e</entry></row>

<row><entry>&Shift; <guibutton>Ln</guibutton> or e<superscript>x</superscript></entry>
<entry>Compute e (the base of the natural logarithm) to the power of x</entry></row>

</tbody></tgroup></informaltable>

<para>The second column has buttons for algebraic functions:</para>

<informaltable><tgroup cols="2">
<thead>
<row><entry>Buttons</entry>
<entry>Function</entry></row>
</thead>
<tbody>
<row><entry><guibutton>Mod</guibutton></entry>
<entry>Compute the remainder in Euclidean division</entry></row>

<row><entry><guibutton>&Shift;</guibutton> <guibutton>Mod</guibutton> or <guibutton>IntDiv</guibutton></entry>
<entry>Integer division (integer part of the quotient)</entry></row>

<row><entry><guibutton>1/x</guibutton></entry>
<entry>Compute the reciprocal for a number</entry></row>

<row><entry><guibutton>&Shift;</guibutton> <guibutton>1/x</guibutton> or <guibutton>nCm</guibutton></entry>
<entry>Compute the number of distinct second-operand-element subsets of it that can be formed for any set containing first operand elements (binomial coefficient)</entry></row>

<row><entry><guibutton>x!</guibutton></entry>
<entry>Compute the product of all positive integers less than or equal to the current integer operand (factorial)</entry></row>

<row><entry><guibutton>x²</guibutton></entry>
<entry>Compute the square of x</entry></row>

 <row><entry><guibutton>&Shift;</guibutton> <guibutton>x²</guibutton> or <guibutton>√x</guibutton></entry>
<entry>Compute the square root of x</entry></row>

<row><entry><guibutton>xʸ</guibutton></entry>
<entry>x power y</entry></row>

<row><entry>&Shift; x<superscript>y</superscript> or x<superscript>1/y</superscript></entry>
<entry>x power 1/y</entry></row>

<row><entry><guibutton>x³</guibutton></entry>
<entry>Computes the third (cubic) power of x</entry></row>

<row><entry><guibutton>&Shift;</guibutton> <guibutton>x³</guibutton> or <guibutton>∛x</guibutton></entry>
<entry>Computes the third (cubic) root of x</entry></row>

<row><entry><guibutton>x·10ʸ</guibutton></entry>
<entry>Computes the product of the first operand and decimal exponent of the second operand</entry></row>

</tbody></tgroup></informaltable>

</sect1>


<sect1 id="statistical-mode">
<title>Statistical Mode</title>

<para>In this mode the left column of buttons is allocated to statistical
functions:</para>
<para> Most of the functionality in this mode is centered around the <guibutton>Dat</guibutton>
 button. To create a data list of numbers, enter a number into the calculator and press
 <guibutton>Dat</guibutton>. A sequentially increasing number is shown on the display indicating
 which position in the Data <quote>list</quote> 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.
</para>

<informaltable><tgroup cols="2">
<thead>
<row><entry>Buttons</entry>
<entry>Function</entry></row></thead>

<tbody>
<row><entry><guibutton>N</guibutton></entry>
<entry>Recall the number of data items entered</entry></row>

<row><entry><guibutton>&Shift;</guibutton> <guibutton>N</guibutton> or <guibutton>&Sgr;x</guibutton></entry>
<entry>Display the sum of all data items entered</entry></row>

<row><entry><guibutton>Mea</guibutton></entry>
<entry>Display the mean of the data items entered</entry></row>

<row><entry><guibutton>&Shift;</guibutton> <guibutton>Mea</guibutton> or <guibutton>&Sgr;x²</guibutton></entry>
<entry>Display the sum of the square of all data items entered</entry></row>

<row><entry>&sgr;<subscript>N</subscript></entry>
<entry>Display the standard deviation (n)</entry></row>

<row><entry><guibutton>&Shift;</guibutton> &sgr;<subscript>N</subscript> or &sgr;<subscript>N-1</subscript> </entry>
<entry>Display the population standard deviation (n-1)</entry></row>

<row><entry><guibutton>Med</guibutton></entry>
<entry>Display the median</entry></row>

<row><entry><guibutton>Dat</guibutton></entry>
<entry>Enter a data item</entry></row>

<row><entry><guibutton>&Shift;</guibutton> <guibutton>Dat</guibutton> or <guibutton>CDat</guibutton></entry>
<entry>Clear last data item entered</entry></row>

<row><entry><guibutton>CSt</guibutton></entry>
<entry>Clear the store of all data item entered</entry></row>

</tbody></tgroup></informaltable>

<para>The next two columns hold the buttons with trigonometric and algebraic functions described in the
<link linkend="science-mode">Science</link> mode section.</para>

</sect1>


<sect1 id="numeral-system-mode">
<title>Numeral System Mode</title>
<para>This mode contains buttons and functions to calculate in binary, hexadecimal, octal and decimal.</para>

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

 <para>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 <emphasis>AF1C42</emphasis> can be displayed as <emphasis>AF 1C 42</emphasis> with separation every second digit. Grouping can be turned off or tweaked. Select <menuchoice><guimenu>Settings</guimenu><guimenuitem>Configure &kcalc;...</guimenuitem></menuchoice> to bring up the configuration dialog and change the setting on the <guilabel>General</guilabel> page as appropriate.</para>

<para>You may want to select <guimenu>Show Bit Edit</guimenu> from the <guimenu>Settings</guimenu> menu to see selected bits.</para>

<para>There are logic operators available in this mode. These operators are: 
<informaltable><tgroup cols="2">
<thead>
<row><entry>Buttons</entry>
<entry>Function</entry></row></thead>
<tbody>
<row><entry><guibutton>AND</guibutton></entry>
<entry>Two numbers are logically anded</entry></row>

<row><entry><guibutton>OR</guibutton></entry>
<entry>Two numbers are logically ored</entry></row>

<row><entry><guibutton>XOR</guibutton></entry>
<entry>Two numbers are logically exclusive ored</entry></row>

<row><entry><guibutton>Lsh</guibutton></entry>
<entry>Left shift the value</entry></row>

<row><entry><guibutton>Rsh</guibutton></entry>
<entry>Right shift the value</entry></row>

<row><entry><guibutton>Cmp</guibutton></entry>
<entry>Perform a 1's complement</entry></row>

</tbody></tgroup></informaltable>
</para>

<para>The second column holds the buttons with algebraic functions described in the
<link linkend="science-mode">Science</link> mode section.</para>

<para>The third column with the buttons <guibutton>A</guibutton> to <guibutton>F</guibutton> is
enabled only in <guilabel>Hex</guilabel> mode.
</para>
</sect1>

<!-- end of MODES -->


<sect1 id="memory-operations">
<title>Memory Operations</title>

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

<sect2 id="standard_memory">
<title> Standard Memory Operations</title>

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

<variablelist>
<varlistentry>
<term><guibutton>MS</guibutton></term>
<listitem><para>The <guibutton>MS</guibutton> button stores the currently
displayed result in memory.</para></listitem>
</varlistentry>

<varlistentry>
<term><guibutton>M+</guibutton></term>
<listitem><para>The <guibutton>M+</guibutton> 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 <guibutton>MS</guibutton> and simply stores the
result.</para></listitem>
</varlistentry>

<varlistentry>
<term><guibutton>MR</guibutton></term>
<listitem><para>The <guibutton>MR</guibutton> button gets the value stored
in memory and puts it in the display.</para></listitem>
</varlistentry>

<varlistentry>
<term><guibutton>MC</guibutton></term>
<listitem><para>The <guibutton>MC</guibutton> button clears the
memory.</para></listitem>
</varlistentry>
</variablelist>

<para>If a value is stored in memory a <guilabel>M</guilabel> will appear in
the status bar, next to the calculator mode indicator</para>
</sect2>

<sect2 id="constant_buttons">
<title>Constants</title>

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

<para>To see the value stored in each constant hover the button with the mouse pointer.</para>

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

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

<para>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 <guibutton>C1</guibutton> to <guibutton> 
 C6</guibutton>. A popup menu appears, in which you select <guilabel> 
 Set Name</guilabel>. </para>

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

</sect2>

</sect1>

<sect1 id="key-accels">
<title>Single Key Accelerators</title>

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

<para>During a computation, you can always press &Ctrl; to make each
button display its key-binding.</para>
<!-- Shift works like Caps Lock-->
<informaltable><tgroup cols="3">
<thead>
<row><entry>Key</entry>
<entry>Function</entry>
<entry>Notes</entry></row>
</thead>
<tbody>

<row><entry><keycap>H</keycap></entry>
<entry><guibutton>Hyp</guibutton></entry>
<entry>Hyperbolic as in Hyp Sin,
the sinh</entry></row>

<row><entry><keycap>S</keycap></entry>
<entry><guibutton>Sin</guibutton></entry>
<entry></entry></row>

<row><entry><keycap>C</keycap></entry>
<entry><guibutton>Cos</guibutton></entry>
<entry></entry></row>

<row><entry><keycap>T</keycap></entry>
<entry><guibutton>Tan</guibutton></entry>
<entry></entry></row>

<row><entry><keycap>N</keycap></entry>
<entry><guibutton>Ln</guibutton></entry>
<entry>log base e</entry></row>

<row><entry><keycap>L</keycap></entry>
<entry><guibutton>Log</guibutton></entry>
<entry>log base 10</entry></row>

<row><entry><keycap>Ctrl-2</keycap></entry>
<entry> <guibutton>&Shift;</guibutton></entry>
<entry>Second function for this button. &eg; if
you want arcsin type <userinput>Ctrl-2 s </userinput></entry></row>

<row><entry><keysym>\</keysym></entry>
<entry><guibutton>+/-</guibutton></entry>
<entry>Change sign</entry></row>

<row><entry><keysym>[</keysym></entry>
<entry><guibutton>x^2</guibutton></entry>
<entry></entry></row>

<row><entry><keysym>^</keysym></entry>
<entry><guibutton>x^y</guibutton></entry>
<entry></entry></row>

<row><entry><keysym>!</keysym></entry>
<entry><guibutton>x!</guibutton></entry>
<entry>Factorial</entry></row>

<row><entry><keysym>E</keysym></entry>
<entry>x10<superscript>y</superscript></entry>
<entry>Exponent</entry></row>

<row><entry><keysym>&lt;</keysym></entry>
<entry><guibutton>Lsh</guibutton></entry>
<entry>Left shift</entry></row>
<!-- no "<" on Lsh key only ">" on Rsh key-->
<row><entry><keysym>&gt;</keysym></entry>
<entry><guibutton>Rsh</guibutton></entry>
<entry>Right shift.</entry></row>
<row><entry><keysym>&amp;</keysym></entry>
<entry><guibutton>AND</guibutton></entry>
<entry>Logical AND</entry></row>

<row><entry><keysym>x</keysym> or <keysym>*</keysym></entry>
<entry><guibutton>X</guibutton></entry>
<entry>Multiply</entry></row>

<row><entry><keysym>/</keysym></entry>
<entry><guibutton>/</guibutton></entry>
<entry>Divide</entry></row>

<row><entry><keycap>D</keycap></entry>
<entry><guibutton>Dat</guibutton></entry>
<entry>Enter data item in statistical mode</entry></row>

<row><entry><keycap>|</keycap></entry>
<entry><guibutton>OR</guibutton></entry>
<entry>Logical OR. Note: <guibutton>&Shift;</guibutton>
<guibutton>OR</guibutton> is XOR</entry></row>

<row><entry><keycap>R</keycap></entry>
<entry><guibutton>1/x</guibutton></entry>
<entry>Reciprocal</entry></row>

<row><entry>&Enter;</entry>
<entry><guibutton>=</guibutton></entry>
<entry></entry></row>

<row><entry><keycap>Return</keycap></entry>
<entry><guibutton>=</guibutton></entry>
<entry></entry></row>

<row><entry>&Backspace;</entry>
<entry><guibutton>&lt;=</guibutton></entry>
<entry>Delete last number</entry></row>

<row><entry><keycap>PgUp</keycap></entry>
<entry><guibutton>C</guibutton></entry>
<entry>Clear</entry></row>

<row><entry>&Esc;</entry>
<entry><guibutton>C</guibutton></entry>
<entry>Clear</entry></row>
<!--
<row><entry><keycap>Prior</keycap></entry>
<entry><guibutton>C</guibutton></entry>
<entry>Clear</entry></row>
-->
<row><entry><keycap>PgDown</keycap></entry>
<entry><guibutton>AC</guibutton></entry>
<entry>Clear all</entry></row>
<!--
<row><entry><keycap>Next</keycap></entry>
<entry><guibutton>AC</guibutton></entry>
<entry>Clear all</entry></row>
-->
<row><entry><keycap>Del</keycap></entry>
<entry><guibutton>AC</guibutton></entry>
<entry>Clear all</entry></row>

<row><entry><keycap>:</keycap></entry>
<entry><guibutton>Mod</guibutton></entry>
<entry>remainder of dividing</entry></row>

<row><entry>&Alt;+<keycap>1</keycap> to &Alt;+<keycap>6</keycap></entry>
<entry><guibutton>C1</guibutton></entry>
<entry>use the value stored in C1 to C6</entry></row>

</tbody></tgroup></informaltable>

</sect1>
</chapter>

<chapter id="comments-on-specific-functions">
<title>Comments on Specific Functions</title>

<sect1 id="mod">
<title>Mod and IntDiv</title>

<variablelist>
<varlistentry>
<term><guibutton>Mod</guibutton> gives the remainder of dividing the displayed
number by the next input number.</term>
<listitem><para><userinput>22 Mod 8 = </userinput> will give the result
<emphasis>6</emphasis></para>
<para><userinput>22.345 Mod 8 = </userinput> will give the result
<emphasis>6.345</emphasis></para>
</listitem></varlistentry>

<varlistentry>
<term><guibutton>&Shift;</guibutton> <guibutton>IntDiv</guibutton> does integer
division of the displayed number by the next input number.</term>
<listitem><para><userinput>22 Shift IntDiv 8 = </userinput> will give the result
<emphasis>2</emphasis></para>
<para><userinput>22.345 Shift IntDiv 8 = </userinput> also gives <emphasis>2</emphasis>
</para></listitem></varlistentry>
</variablelist>

</sect1>


<sect1 id="percent">
<title>&percnt;</title>

<para>Used instead of the <guibutton>=</guibutton> key,
<guibutton>%</guibutton> interprets the final operation carried out in  the
current calculation as follows:</para>

<para><itemizedlist>
<listitem>
<para>If the final operator is + or - the second argument is interpreted as percentage of the first operand.
</para>
</listitem>
<listitem>
<para>If the final operator is * divide the result of the multiplication by 100.
</para>
</listitem>
<listitem>
<para>If the final operator is / give the left operand
as a percentage of the right operand.
</para>
</listitem>
<listitem>
<para> In all other cases the &percnt; key gives identical results to the = key.
</para>
</listitem>
</itemizedlist></para>

<variablelist>
<varlistentry>
<term>Examples:</term>
<listitem>
<para><userinput>150 + 50 %</userinput> gives <emphasis>225</emphasis> (150 plus 50 percent of this amount)</para>
<para><userinput>42 * 3 %</userinput> gives
<emphasis>1.26</emphasis>  (42 * 3 / 100)</para>
<para><userinput>45 / 55 %</userinput> gives
<emphasis>81.81...</emphasis> (45 is 81.81.. percent of 55)</para>
</listitem>
</varlistentry>
</variablelist>

</sect1>

<sect1 id="lsh-rsh">
<title>Lsh and Rsh</title>
<variablelist>
<varlistentry>
<term><guibutton>Lsh</guibutton> 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 <guibutton>Bin</guibutton>):</term>
<listitem><para><userinput>10 Lsh 3 =</userinput> gives <emphasis>80</emphasis>
(10 multiplied by 2 three times).</para>
<para><userinput>10.345 Lsh 3 =</userinput> also gives
<emphasis>80</emphasis>.</para></listitem>
</varlistentry>

<varlistentry>
<term><guibutton>Rsh</guibutton> right shifts the
value (performs an integer divide by 2) n times.</term>
<listitem><para><userinput>16 Rsh 2 =</userinput> gives
<emphasis>4</emphasis> (16 divided by 2 twice).</para>
<para><userinput>16.999 Rsh 2 =</userinput> also gives
<emphasis>4</emphasis>.</para>
</listitem>
</varlistentry>
</variablelist>

</sect1>

<sect1 id="and-or-xor">
<title>Cmp, And, Or and Xor</title>

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

<variablelist>
<varlistentry>
<term><guibutton>Cmp</guibutton> performs a 1's complement (inverts the
bits).</term>
<listitem><para><userinput>101 Cmp</userinput> gives
<emphasis>111...111010</emphasis></para> </listitem>
</varlistentry>

<varlistentry>
<term><guibutton>AND</guibutton> does a logical AND.</term>
<listitem><para><userinput>101 AND 110 =</userinput> gives
<emphasis>100</emphasis></para> </listitem>
</varlistentry>

<varlistentry>
<term><guibutton>OR</guibutton> does the logical OR.</term>
<listitem><para><userinput>101 OR 110 =</userinput> gives
<emphasis>111</emphasis></para> </listitem>
</varlistentry>

<varlistentry>
<term><guibutton>XOR</guibutton> performs the logical
XOR (exclusive OR) operation.</term>
<listitem><para><userinput>101 XOR 110 =</userinput> gives
<emphasis>11</emphasis></para> </listitem>
</varlistentry>

</variablelist>
</sect1>
</chapter>


<chapter id="questions-and-answers">
<title>Questions and Answers</title>

<qandaset>


<qandaentry>
<question><para>How do I get e, the Euler number?</para></question>
<answer><para>Press <userinput>1 Shift e<superscript>x</superscript></userinput> in the &kcalc; window,
press <userinput>1 <keycombo action="simul">&Ctrl;<keycap>2</keycap></keycombo> <keycap>N</keycap></userinput> on the keyboard
or use the <menuchoice><guimenu>Constants</guimenu><guimenuitem>Mathematics</guimenuitem>
</menuchoice> menu.</para></answer>
</qandaentry>

<qandaentry>
<question><para>How do I get two fixed digits after the period?</para></question>
<answer><para>Select <menuchoice><guimenu>Settings</guimenu><guimenuitem>
Configure &kcalc;...</guimenuitem></menuchoice> on the menu bar, this will
bring up the configuration dialog. Check <guilabel>Set decimal
precision</guilabel> and adjust the spin control so that it shows a
2.</para></answer> </qandaentry>

<qandaentry>
<question><para>What about Precision?</para></question>
<answer><para>The main factor determining the precision of &kcalc; is whether your libc and libmath
supports the C data type <type>long double</type>. If this is the case, &kcalc; will detect this
at compile time and use it as its fundamental data type to represent numbers.
</para>

<para>Adjust the <guilabel>Precision</guilabel> in &kcalc;'s
<guibutton>Configure</guibutton> 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 <type>long double</type>, otherwise 8 or 10.</para>

<para>Higher precision doesn't necessarily lead to better results. Play with
the precision and you will see what I mean.</para>
</answer>
</qandaentry>

</qandaset>
</chapter>

&commands;

<chapter id="copyright">
<title>Credits and License</title>

<para>&kcalc; Program Copyright &copy;:</para>
<para>&Bernd.Johannes.Wuebben; 1996-2000</para>
<para>The &kde; Team 2000-2008</para>
<para>&Evan.Teran; 2008-2013</para>

<itemizedlist>
<listitem><para>&Bernd.Johannes.Wuebben; &Bernd.Johannes.Wuebben.mail;</para></listitem>
<listitem><para>&Evan.Teran; &Evan.Teran.mail;</para></listitem>
<listitem><para>&Espen.Sand; &Espen.Sand.mail;</para></listitem>
<listitem><para>&Chris.Howells; &Chris.Howells.mail;</para></listitem>
<listitem><para>&Aaron.J.Seigo; &Aaron.J.Seigo.mail;</para></listitem>
<listitem><para>&Charles.Samuels; &Charles.Samuels.mail;</para></listitem>
<listitem><para>&David.Johnson; &David.Johnson.mail;</para></listitem>
</itemizedlist>

<para>&kcalc; was inspired by <personname><firstname>Martin</firstname> <surname>Bartlett</surname></personname>'s <application>xfrmcalc</application>,
whose stack engine is still part of &kcalc;.</para>

<para>Documentation Copyright &copy; 2001,2002,2005, 2006,2010:</para>
<itemizedlist>
<listitem><para>&Bernd.Johannes.Wuebben; &Bernd.Johannes.Wuebben.mail;</para></listitem>
<listitem><para>&Pamela.Roberts; &Pamela.Roberts.mail;</para></listitem>
<listitem><para>&J.Hall; &J.Hall.mail;</para></listitem>
<listitem><para>&Anne-Marie.Mahfouf; &Anne-Marie.Mahfouf.mail;</para></listitem>
<listitem><para><personname><firstname>Eike</firstname><surname>Krumbacher</surname></personname>
<email>eike.krumbacher@x-eike.de</email></para></listitem>
</itemizedlist>

<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
&underFDL;
&underGPL;

</chapter>

</book>

<!--
Local Variables:
mode: sgml
sgml-minimize-attributes:nil
sgml-general-insert-case:lower
sgml-indent-step:0
sgml-indent-data:nil
End:
-->
