# Overview ProCalc serves as a replacement for the standard Windows calculator. In contrast to its competitor, it allows entering the whole equation at once, using more advanced math – such as matrices, DMS notation or complex numbers – defining variables and functions, drawing 2D and 3D graphs and more. It is designed with simplicity in mind, so it won’t cover much of your workspace, while providing some additional mathematical firepower you might need in your everyday work.

# System requirements

ProCalc requires:

The latter requirements apply only, if you want to draw graphs.

# Basic features

The following features are available in the free version of ProCalc.

## Math expression evaluation

ProCalc is capable of doing the following calculations:

• Simple calculations.

2+2*2
= 6
(12+8)*3
= 60

The following operators are supported: +, -, *, /, \ (integer division), % (remainder), ^ (power), <<, >> (binary shift left and right), <, >, <=, >=, ==, != (value comparison operations, returns boolean values), &, |, # (binary or logical and, or and xor operations). The unary operators include: – and ! (binary negation).

• Predefined functions

sin(3.14)
= 0.00159265291648683
sqrt(2)
= 1.4142135623731

Currently, the following predefined functions are available: sin, cos, tan, ctg, arcsin, arccos, arctan, arcctg, abs, round, trunc, frac, sqrt, sqr, ln, length, copy, pos, insert, delete, uppercase, lowercase, strtoint, inttostr.

• Complex number processing.

1+2i
= 1 + 2i
(1+2i)*(3+4i)
= -5 + 10i
• Lists. The lists are supported, but not much functionality is available for them. I plan to include some functionality later. You can use the lists, however, to perform many calculations at once.

{1+2, 5*8}
= {3, 40}
• Matrices. Common matrix operations are available. Elements in row are separated by comma (,), and rows are separated by semicolon (;). Note, that you can put any numeric value into matrix, including the nested matrices. ProCalc will perform operations on them as long as they will make sense.

[1,2;3,4]*[5,6;7,8]
= [19, 22; 43, 50]
[1+2i;[1,2;3,4]]*[5,7]
= [5 + 10i, 7 + 14i; [5, 10; 15, 20], [7, 14; 21, 28]]
• Boolean operations – including value comparison.

(true | false) # true
= False
2*7<3*6

= True
• Integer fractions (use extended view to read the fraction)

26/17+43/16
= 1147/272
• DMS values. Note, that DMS is just another way to describe real values. Use the extended view to read results. Please note, that real values are represented by floating point values and operations on these may not be accurate – as in following example. This is not my fault – this is just, how the floating point math works. In future, I consider replacing the real notation for DMS values with native one, which will preserve the accuracy of results.

12:20:35+1:30:00
= 13:50:34.99
• Values in other numeric systems. Use 0h to denote hexadecimal value, 0b – binary and 0o – octal. Use extended display to read values in all available numeric systems.

0hfa & 0h1e
= 0h1a
• Defining user variables

a=5
= The variable was added!
a*20
= 100
• Defining user functions, or – if you like – macros

f(x)=2*x
= The function has been added!
f(5)
= 10
f([1,2;3,4])
[2, 4; 6, 8]

ProCalc is aware of sqrt(-1) being a complex value. However, I use the de Moivre’s formula, which operates on floating point numbers. You are already aware of their disadvantages, so don’t be suprised to see following result:

sqrt(-1)
6.12323399573677E-17 + 1i

In terms of floating point math, the above result means just 0 + 1i = 0 + i = i. If you want more accurate tool, just use Maxima or Octave. Note, that Windows calculator is not able to do such calculation.

ProCalc is also sensitive to types. So, the 1×1 matrix  is not equivalent to floating-point value 1. However, if you need to extract the value, you may use the indexer:

[1,2;3,4][0,0]
= 1
[1,2;3,4][1,1]
= 4

Note, that indexers are zero-based.

## The extended view

You can view the results of evaluation as a binary, octal or hexadecimal value, a fraction or a DMS value. ## History of operations

You can access a history of evaluations for the session. ## 2D graphs

ProCalc can draw graphs of function y = f(x). You can use all variables and functions you’ve defined in the main window. ProCalc will also reflect immediately to all changes you make – for example, if you change value of the variable or redefine the function. This way you can watch the changes of a graph in real time. ## 3D graphs

ProCalc draws graphs of function y = f(x, z). ## Value sliders

If you want to watch closely, how the graph depends on one of its parameters, you can open a Value Slider window for specific variable (or variables). With its help you can smoothly change the variable value and immediately watch the results.

# Advanced features

Some of the ProCalc features are restricted to the extended version. When you obtain the license key, ProCalc is extended with the following functionalities:

## Parametric 2D graphs

You can draw graphs defined as following: { x = f(t); y = g(t) }. ## Parametric 3D graphs

In the 3D mode, you can draw two additional kinds of parametric graphs. The first one is similar to the 2D mode and covers the functions defined as following: { x = f(t); y = g(t); z = h(t) }. Second allows one to draw parametric surfaces. These are defined by the following set: { x = f(u, v); y = g(u, v); z = h(u, v) }. ## …and more

This summary covers the 1.0 version of ProCalc. All ProTools, including the ProCalc, are under constant development, so expect some new features soon.