The following graphics illustrates the basic user interface

Unicalc is an expression based scientific calculator with a shell style input.

What does that mean?

A standard calculator works as follows. Consider you want to calculate the sum of two numbers, lets say 42 and 7 for simplicity reasons. What does that have to do with an expression?

**42 +7 = 49**

is an expression whick is obviously true for decimal numbers.

Now comes the difference between a standard calculator and an expression based one:

lets compute the Sine of Pi (which is zero) and type the **Pi **Key and then **sin** the calculator then responds with zero. In Unicalc you type in the expression exactly as it reads:

**sin(Pi) **

and then hit the EXE key.

This way you can form any complex expression:

Unicalc can store as much variables as your memory can take.

You can simply use the green letter keys A to F and assign them with

A=1 [EXE]

the calculator responds with

>A=1

and

B=2 [EXE]

To use variables for calculations you would type:

A * 2 + 3 * B [EXE]

Variables can bes uses in any expression and the name can be any string. If you would like to use more letters, just hit the [KEY] button to open up the keyboard.

Number conversion with UC is done very easily. There are three number systems available:

- Decimal DEC
- Hexadecimal HEX
- Binary BIN

To select the numer system, press the according DEC,HEX or BIN button. You can do calculations in each number system as well. Currently in HEX and BIN mode only integer numbers are working.

The current selected number system is shown in the status line at the top of the display as DEC, HEX and BIN as we´ll.

To convert a number from one system to another, type in for example while being in decimal mode

255 [HEX]

The calculator response is FF.

**Notation of hex numbers **

In order to work with hexadecimal numbers you must prefix them with a 0x (the green 0x button) such that **a0 **becomes 0xa0.

The build in functions are as follows

**Abs(Single)**

Returns the absolute value of a single-precision floating-point number.

**Acos(Single)**

Returns the angle whose cosine is the specified number.

**Acosh(Single)**

Returns the angle whose hyperbolic cosine is the specified number.

**Asin(Single)**

Returns the angle whose sine is the specified number.

**Asinh(Single)**

Returns the angle whose hyperbolic sine is the specified number.

**Atan(Single)**

Returns the angle whose tangent is the specified number.

**Atan2(Single, Single)**

Returns the angle whose tangent is the quotient of two specified numbers.

**Atanh(Single)**

Returns the angle whose hyperbolic tangent is the specified number.

**BitDecrement(Single)**

Returns the next smallest value that compares less than x.

**BitIncrement(Single)**

Returns the next largest value that is greater than x.

**Cbrt(Single)**

Returns the cube root of a specified number.

**Ceiling(Single)**

Returns the smallest integral value that is greater than or equal to the specified single-precision floating-point number.

**CopySign(Single, Single)**

Returns a value with the magnitude of x and the sign of y.

**Cos(Single)**

Returns the cosine of the specified angle.

**Cosh(Single)**

Returns the hyperbolic cosine of the specified angle.

**Exp(Single)**

Returns e raised to the specified power.

**Floor(Single)**

Returns the largest integral value less than or equal to the specified single-precision floating-point number.

**FusedMultiplyAdd(Single, Single, Single)**

Returns (x * y) + z, rounded as one ternary operation.

**IEEERemainder(Single, Single)**

Returns the remainder resulting from the division of a specified number by another specified number.

**ILogB(Single)**

Returns the base 2 integer logarithm of a specified number.

**Log(Single)**

Returns the natural (base e) logarithm of a specified number.

**Log(Single, Single)**

Returns the logarithm of a specified number in a specified base.

**Log10(Single)**

Returns the base 10 logarithm of a specified number.

**Log2(Single)**

Returns the base 2 logarithm of a specified number.

**Max(Single, Single)**

Returns the larger of two single-precision floating-point numbers.

**MaxMagnitude(Single, Single)**

Returns the larger magnitude of two single-precision floating-point numbers.

**Min(Single, Single)**

Returns the smaller of two single-precision floating-point numbers.

**MinMagnitude(Single, Single)**

Returns the smaller magnitude of two single-precision floating-point numbers.

**Pow(Single, Single)**

Returns a specified number raised to the specified power.

**Round(Single)**

Rounds a single-precision floating-point value to the nearest integral value, and rounds midpoint values to the nearest even number.

**Sign(Single)**

Returns an integer that indicates the sign of a single-precision floating-point number.

**Sin(Single)**

Returns the sine of the specified angle.

**Sinh(Single)**

Returns the hyperbolic sine of the specified angle.

**Sqrt(Single)**

Returns the square root of a specified number.

**Tan(Single)**

Returns the tangent of the specified angle.

**Tanh(Single)**

Returns the hyperbolic tangent of the specified angle.

**Truncate(Single)**

Calculates the integral part of a specified single-precision floating-point number.

<code>! - not > - greater than < - lower than + - plus - - minus * - multiply / - divide = - equals | - bitwise or ||- logical or & - bitwise and && - logical and << shift left >> shift right % - modulo </code>