## Contents

## Overview

Calculations in ProCalc are done by entering an expression into the expression textbox. ProCalc supports a number of operators and functions, as well as adding user-defined variables and functions.

## Types

ProCalc supports the following numeric types:

Type | Description | Sample | ||||
---|---|---|---|---|---|---|

Integer | 64-bit integer value ranging from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 44 | ||||

Large number | A decimal value with up to integer and fraction digits. Only addition, subtraction, multiplication, division and raising to integral (non-large) power is supported for large numbers. | 1234567890L | ||||

Binary, octal and hexadecimal values | Use 0b, 0o and 0h prefix to denote an integer in specific system. | 0b1001010 | ||||

Floating point | 64-bit double precision floating point value ranging from ±5.0 x 10^{?324} to ±1.7 x 10^{308} with 15 digits of precision. |
10.5 | ||||

Fractions | ProCalc attempts to evaluate expressions using the common fractions instead of floating point numbers as long as it is possible. If the calculations involves using floating point values or if the fraction cannot be represented as a common fraction, ProCalc converts the value into floating point value. For example, if you try to evaluate 1 / 3, the result will be a common fraction. However, if you try to evaluate 1.0 / 3 (forcing the first operand to be a floating point value), the result will be a floating point value. The fractions are automatically reduced to the simplest form. You may enter a common fraction by dividing two integers. | 4/9 | ||||

Complex numbers | A number followed by the “i” letter is considered to be a imaginary value. | 4i 1 + 2i |
||||

DMS values | A DMS value is a fraction represented as units (degrees), minutes (1/60 of a degree) and seconds (1/3600 of a degree). Internally a DMS value is stored as a common fraction (if possible). | 12:30:00 | ||||

Boolean value | Two logical values: true and false. | true | ||||

Matrices | Use the rectangular brackets [ and ] to define a matrix. Inside, use the comma symbol to separate items in row and the semicolon to denote end of row. For example, matrix:
Can be entered by using the following syntax: |
[1, 2, 3; 4-2i, 5+3i, 1/3] | ||||

Lists | A list contains one or more numeric values. Use curly brackets { and } to enter list and a comma to separate its items. | {1, 2, 3} | ||||

Strings | Use the double-quotes to denote a string. If you want to include the double-quote inside the string, write it twice: “Alice has a “”funny”” cat” | “CATS. CATS ARE NICE” |

## Supported operators

ProCalc supports the following operators:

Operator | Symbol | Samples |
---|---|---|

Addition | + | 2+2 = 4 [1,2]+[2,5] = [3,7] 1+2i + 3+4i = 4+8i |

Subtraction | – | 10-8 = 2 |

Multiplication | * | 2*2 = 4 [1,2;3,4]*[5,6;7,8] = [19, 22; 43, 50] (1+2i)*(3+4i) = 5+10i |

Division | / | 11/2 = 5.5 |

Integer division | \ | 11\2 = 5 |

Modulo | % | 11%2 = 1 |

Power | ^ | 2^10 = 1024 2L^100 = 1267650600228229401496703205376L |

Binary shift left | << | 1200<<5 = 38400 |

Binary shift right | >> | 1200>>5 = 37 |

Less than or equal | <= | 10<5 = false |

More than or equal | >= | 10>=5 = true |

Less than | < | 10<5 = false |

More than | > | 10>5 = true |

Equal | == | 10==5 = false Note, that equal operator will always return false when a floating-point value is involved in comparison |

Inequal | != | 10!=5 = true Note, that inequal operator will always return true when a floating-point value is involved in comparison |

And (logical and binary) | & | true & true = true 0hab & 0hba = 0haa |

Or (logical and binary) | | | true | false = true 10 | 25 = 27 |

Xor (logical and binary) | # | true # true = false 10 # 25 = 19 |

Unary negative value operator | – | -5 |

Unary logical negation | ! | !true = false |

## Built-in functions

The following built-in functions are available:

Definition | Description | Example |
---|---|---|

sin(x) | Sine of x. X is in radians. | sin(1) = 0.841470984807897 |

cos(x) | Cosine of x. X is in radians. | cos(1) = 0.54030230586814 |

tan(x) | Tangent of x. X is in radians. | tan(1) = 1.5574077246549 |

ctg | Cotangent of x. X is in radians. | ctg(1) = 0.642092615934331 |

arcsin(x) | The inverse sine of x. | arcsin(1) = 1.5707963267949 |

arccos(x) | The inverse cosine of x. | arccos(1) = 0 |

arctan(x) | The inverse tangent of x. | arctan(1) = 0.785398163397448 |

arcctg | The inverse cotangent of x. | arcctg(1) = 0.785398163397448 |

abs(x) | Absolute value | abs(-5) = 5 |

round(x) | Value rounded to the nearest integer. | round(2.6) = 3 round(-2.6) = -3 |

trunc(x) | Integer part of value | trunc(2.5) = 2 trunc(-2.5) = -2 |

frac(x) | Fraction part of value | frac(2.5) = 0.5 frac(-2.5) = -0.5 |

sqrt(x) | Square root of argument | sqrt(4) = 2 |

sqr(x) | Argument, squared. | sqr(2) = 4 |

ln(x) | Natural logarithm of argument | ln(1) = 0 |

length(x) | Length of a string | length(“CATS. CATS ARE NICE”) = 19 |

copy(x, start, len) | Substring of a string | copy(“CATS. CATS ARE NICE”, 0, 4) = “CATS” |

pos(x, str) | Returns position of first occurrence of a substring in string or -1 if the string was not found. | pos(“Alice has a cat”, “a”) = 7 |

insert(str, x, pos) | Inserts a string into another string | insert(“has “, “Alice a cat”, 6) = “Alice has a cat” |

delete(x, start, len) | Removes part of a string | delete(“Alice has a cat”, 0, 10) = “a cat” |

uppercase(x) | Converts a string into upper case | uppercase(“cats. cats are nice”) = “CATS. CATS ARE NICE” |

lowercase(x) | Converts a string into lower case | lowercase(“CATS. CATS ARE NICE”) = “cats. cats are nice” |

strtoint(x) | Converts string into integer value | strtoint(“5”) = 5 |

inttostr(x) | Converts integer value into string | inttostr(5) = “5” |

## Defining user variables and functions

To define user variable, use the special operator =. Variable name can consist of small and big letters and digits and must begin with a letter. ProCalc is case-insensitive, thus variable = VARIABLE.

Example:

```
a = 5
b = [1,2;3,4]
c = "Alice has a cat"
```

To define user function, use the same operator =. Function and function parameter naming rule is the same, as for the variables. Sample function definition follows:

`f(x, y)=sqrt(x^2+y^2)`

Function must have at least one parameter. Function parameter names hides variables with the same names. For example:

```
x=5
y=2
f(x)=x+y
```

In the example, y will be interpreted as a variable, but x – as a function parameter.

Return to the main manual page