/galculator

GTK 2 / GTK 3 based scientific calculator

Primary LanguageCGNU General Public License v2.0GPL-2.0

galculator
==========

a GTK 2  / GTK 3 based scientific calculator 

For installation information see the INSTALL file.
For a list of shortcuts, see doc/shortcuts
There is a short man page (man galculator)
Information on Formula Entry mode can be found below.
In general, galculator's homepage galculator.sf.net is the most reliable
and up2date source of information.

RPMs: a spec file is included (galculator.spec). Thanks to Victor. Or
download at http://dag.wieers.com/packages/galculator/ (thanks to Dag Wieers) 
DEBs: galculator is in DEBIAN/unstable. Thanks to seb128.

Formula Entry Mode
==================

Since version 1.2.0 galculator features a formula entry mode. This mode is one 
more step towards a calculator accepting input as written on the paper. 
galculator's formula entry mode aims to provide all the features of the 
algebraic mode (and even to go beyond ...).

This part of galculator is developed actively. This section gives an overview 
of the functions currently implemented and points out some restrictions.

Formula entry mode accepts decimal numbers as input as well as hexadecimal, 
binary and octal numbers. The latter three have to be entered with a prefix:

Number base	Prefix(es)	Example
decimal		none		-3.1415
hexadecimal	0x or 0h	0xAF
binary		0b		0b1001
octal		0o		0o777

All algebraic operations and functions of the algebraic mode are supported. The 
following table lists all available operations:

Operation			identifier	
+, -, *, /			+, -, *, /
percent x%y (x percent of y)	%
power x^y			^
module (MOD)			mod, MOD
left shift (LSH)		<<
right shift (INV + LSH)		>>
AND				&, and, AND
OR				|, or, OR
XOR				xor, XOR

Let's speak of factorial and complement as functions. Most functions' argument 
has to be enclosed by brackets. Therefore sin 3 is not allowed and has to be 
written as sin(3). User defined functions can be used in formula entry mode 
without any restrictions!

Function			Function identifier	Example
Trigonometric functions: 
Sine, Cosine, Tangent		sin, cos, tan		sin(0.5)
their inverse			asin, acos, atan	asin(0.5)
their hyperbolic variants	sinh, cosh, tanh	sinh(0.5)
and the inverse of those	asinh, acosh, atanh	asinh(0.5)
natural logarithm (base e)	ln			ln(3)
logarithm (base 10)		log			log(3)
square root			sqrt			sqrt(3)
factorial			!			(3)!, 3! brackets are 
							optional
complement			~			~(3) brackets are 
							mandatory

If formula entry mode's parser encounters an (syntax) error, the formula entry 
text is turned red.

Paper Mode
==========

Since version 1.3.0 galculator features a paper mode, which offers a very 
simple GUI along with the functionality of formula entry mode. In the entry
field, enter the expression following the same rules as for formula entry mode. 
Hitting return or clicking the button to the right will evaluate the expression 
and add it as well as the result to the list view above. Double click on any 
row of that list view to copy the corresponding expression to the entry field.

User defined functions
======================

Since version 1.2.1 galculator also features user defined functions. They can 
be called with the fun button next to the constant button and work like the 
other function buttons like sin, cos, etc. (except that inverse and hyperbolic 
are not supported). User functions can be defined in the Preferences dialog 
(Functions page). The function name can be any string beginning with a letter. 
So far, only a single variable is allowed. Expression gives the string 
expression of the function with respect to the specified variable:

Function		Name	Variable	Expression
f(x)=1-x		f	x		1-x

User defined functions can depend on other user functions:

Function		Name	Variable	Expression
g(x)=1/(1-x)=1/f(x)	g	x		1/f(x)

User functions can also be called from formula entry mode.

Some random notes
=================

Left shifting is done with the LSH button.
3 << 4 	"shift 3 four times to the left" 	3 LSH 4 =
As a right shift is somehow the inverse of a left shift, right shifting is done 
by first activating INV and than clicking the LSH button:

23 >> 5 	"shift 23 five times to the right" 	23 INV LSH 5

You can change number base, angle base and the notation mode by simply clicking 
on the corresponding module in the display's second line. If changing from e.g. 
decimal number base to binary mode results in an "inf" value on the display, 
the initial value was too big. Due to the limited display length every mode 
has its own limits:

decimal		IEEE floating point numbers
hexadecimal	-2147483648 .. 2147483647 (0h80000000 .. 0h7FFFFFFF)
octal		-34359738368 .. 34359738367 (0o400000000000 .. 0o377777777777)
decimal		-32768 .. 32767 (0b1000000000000000 .. 0b111111111111111)

If computing in hexadecimal, octal or binary mode, inf means that an overflow 
has happened.

If in hexadecimal, octal or binary signed mode, a negative number won't be 
represented with a leading minus but as 2's complement with respect to the 
chosen variable length.

It is not possible to close unwanted braces straightforward. 1+((()) won't 
reduce the stack of open braces, there will remain three open braces. It is 
difficult to tell a "compute as soon as possible" calculator what an empty pair 
of braces means: in 1+() the empty braces mean 0 (1+0=1) but in 1*() the empty 
braces mean 1 (1*1=1). Therefore you have to enter a corresponding number in 
order to close braces at the moment, e.g. 1+((0)) will do.

The percent operation works as "x percent of y". So if there is 37 on the 
display and you press the percent button and enter 123, you get as result 
37% of 123.

If you press the [EE] button the display will never become 0e+ but 1e+ instead.

There is a simple plausibility check for the character choosen as thousand's
separator: it must not be a number in the configured number base and for
a decimal number base neither decimal point nor "e" (exponent identifier
string) nor "-" (minus).

Shortcuts
=========

doc/shortcuts

http://galculator.sf.net
simon floery (simon.floery@rechenraum.com)