Simple Arithmetic:
When vCalc starts up, it first displays its 2-part main window. The left half of the window is dedicated to the current RPN stack. The right half of the window displays a list of the currently available keyboard commands.
To enter a number onto the stack, typing any numeral on the keyboard will display an entry field on the bottom of the window.
This field can then be used to edit a number, which may then be entered onto the stack by pressing the enter key.
Entering in a second number will push the existing number upwards on to the stack.
At this point, any of the four basic arithmetic operators may be invoked by pressing the appropriate key. In all cases, the numbers being operated on are removed from the stack, and the result is placed onto the stack.
Keyboard Commands:
Commands other than the basic four arithmetic operations are available as keyboard commands listed on the right side of the vCalc window. In general, the text in brackets describes the keys to be pressed to invoke the command listed on the right. As an example, entering [s] will take the square root of the top level of the RPN stack.
Some commands require combinations of keys to be pressed at the same time. Last Stack and Redo Stack are examples of this kind of command. Last stack is invoked by pressing [Control-Z]. It restores the state of the stack to the condition it was in prior to the last command. vCalc keeps track of the last 10 operations performed and allows them to be undone in reverse order using the Last Stack command.
vCalc also supports commands that are invoked by sequences of keystrokes. Commands listed with a chevron (>>) don't immediately perform any computation. Rather, they make a new set of keyboard commands available.
Pressing [m] changes the right hand display to reveal the new commands that are available. vCalc will show you what you've already typed at the top of the right half of the window. Pressing the escape key will always end the current key sequence without taking any action. One example of this is that the trignometric functions are all available as math commands.
Memory Registers:
vCalc provides a collection of 100 storage registers numbered from 0 to 99. The register commands allow values to be loaded from and stored into these registers. For example, to store the number on the top of the stack into register 12, enter the command 12 [enter] [r]>>[s]. To recall the value from the register, enter 12 [enter] [r]>>[r]. There are also commands to watch registers as they change. Entering 0 onto the stack, and pressing will watch the value in register 0.
Storing a new value in register 0 by pressing 2 [enter] 0 [enter] [r]>>[s], will cause the register display at the top of the window to be updated accordingly.
vCalc Modes:
vCalc's operation can be somewhat controlled through the use of several mode settings. These allow adjustment of the angular units used by the trignometry functions, the display format for numbers, and the default number base for binary math. One way to access these configuration settings is through the conventional Windows menu. Selecting File>>Options will display the options dialog box.
As the settings are changed in the dialog box, the display of numbers in the vCalc window changes to correspond with the currently displayed setting. Clicking OK causes the new settings to be accepted. Clicking cancel returns the configuration settings to the state they were in prior to any alterations.
There are also a series of key sequences available to access these commands. These sequences all start with [Shift-M], for mode. The sequences for setting fixed precision and scientific notation all require a number to be entered on the stack between 1 and 17. This number is the number of significant digits to be displayed. If the calculator has been requested to display numbers beyond its level of precision, the digits will be displayed as question marks.
It is also worth mentioning that the keyboard command list can be hidden from the display with the "Toggle Keyboard Help" command, available through [f1]. This can be useful when the window is too narrow to accomodate long numbers.
Binary Math
In addition to conventional real numbers, vCalc also offers binary numbers. These numbers are displayed on the stack preceeded by a '#' and followed by either a 'd', 'o', or 'h' to indicate the numeric base (d for decimal, o for octal, and h for hexadecimal).



To enter a binary number, pressing [#] will display an edit field that can be used to enter a binary number. The preceeding '#' character signals to vCalc that the number to be entered is a binary number. A trailing 'd', 'o', or 'h' can be used to specify that the numeric base is different from the current default. Otherwise, the number is interpreted according to the current default base. If there is an error parsing the number, vCalc will report a 'Syntax Error'.
Binary numbers in vCalc are 64-bit signed integers. This means that compared to the floating point numbers used in this tutorial to this point, vCalc binary numbers carry more digits of precision, can't be a fractional value, And are limited to a range of approximately -9.22x10^18 to 9.22x10^18 (in terms of floating point numbers). Negative binary numbers are displayed in decimal mode with a preceeding negative sign. In the octal and hexadecimal modes, they are displayed according to the two's complement convention. vCalc supports bitwise AND, OR, NOT, and XOR operations through the keys [&], [|], [~], and [^], respectively.
Statistics:
vCalc also offers a powerful set of statistical functions that may be used to calculate averages, standard deviations, covariances, correlation coefficients, and various types of regressions. The first step to any statistical calculation is to clear out the current dataset. The key sequence [d]>>[Shift-D] will create a new dataset and store it in register 99. All but a few of the statistics commands implicitly operate on the dataset in register 99, so there's a shorthand command that can be used to establish a watch on the current dataset: [d]>>[w].
The dataset displayed above is an empty dataset. The text "n=0" indicates that there are no data points, and "?-Dataset" indicates that the current number of columns in the dataset is unknown. The first data point entered into the dataset defines the number of columns. vCalc currently supports datasets with one column or two columns. Each kind of dataset has a data entry command. [Control-Enter] will enter the top level of the stack into the x column of a 1 column dataset. [Control-Shift-Enter] will enter the top two levels of the stack into the x and y columns of a two column dataset. The number of columns in the dataset has a direct effect on the result of subsequent commands. For example, calculating the mean of a 2 column dataset will return two means, one for each column. The same computation on a 1 column dataset will only return one mean.
As an example, after loading the following five data points into vCalc ((1, 1), (2, 2), (3, 4), (5, 8), (6, 16)), the display will look like this.
Calculating the mean with [d]>>[m] returns two means, the first for the x column, the second for the y.
The same thing is true for the standard deviations calculated by [d]>>[s].
The "All Totals" command, [d]>>[Shift-T], is a little different. "All Totals", returns all the usual totals statistical calculators use to compute results. In order, this is what it returns:
The number of data points
The sum of all the x values
The sum of squares of all the x values
The sum of all the y values
The sum of squares of all the y values
The sum of all the x values multiplied by their corresponding y value.
Internally, vCalc does not usually use these sums for its statistical calculations. Calculations based on these sums alone aren't numerically stable under certain circumstances. To compensate for this, vCalc internally mean centers all of the data values before doing its statistical arithmetic.
Regressions, Linear and Otherwise
With a 2-column dataset, vCalc can compute a linear regression with the [d]>>[l] command. On our existing dataset, that yields:
From top to bottom, the first stack result is the slope of the fit line, the second stack result is the y-intercept. These results can be immediately reused by the "Predict X" and "Predict Y" commands ([d]>>[p]>>[x] and [d]>>[p]>>[y]). Entering a Y value and invoking "Predict X" will produce a predicted X value as the result. "Predict Y" works the same way to predict Y values from X values. Unlike virtually every other vCalc command, "Predict X" and "Predict Y" leave their first two arguments (the slope and intercept) on the stack. This is to make it easy to use them several times in a row without worrying about recomputing or storing your regression results. If the typical destructive behavior is desired, there are equivalent commands under [d]>>[p]>>[Shift-X] and [d]>>[p]>>[Shift-Y] that consume the slope and intercept.
There are also facilities for computation of non-linear regressions. To accomplish this, vCalc has commands that apply a Log operation to all the x's in a dataset or all the y's in a dataset. However, since these commands irrecoverably change the dataset they do not operate on the default dataset in register 99. They operate on the dataset on the first level of the stack. To retrieve the dataset to the stack, enter 99 [r]>>[r].
As an aside: As with any other vCalc object, datasets can be left on the stack or stored into another register as a backup.
To consolidate multiple datasets into one overall dataset, they can also be added with the <+> key.
Back to the original dataset: since the current dataset is obviously exponential, it makes sense to apply a log operation to the y values with [d]>>[a]>>[y]. On the stack, the result of this operation looks like the same dataset, but in reality the stored values are quite different.
To run the regression, store it back into register 99 and rerun the linear regression.
To confirm that this is the appropriate regression to run, the correlation coefficient can be calculated with [d]>>[c].
Since it's essentially 1.0 within the rounding error of the calculator, it's safe to say that this is the appropriate type of fit.