### 3.3 Stack Basics

Calc uses RPN notation. If you are not familiar with RPN, see RPN Calculations and the Stack.

To add the numbers 1 and 2 in Calc you would type the keys:
`1 ``RET` 2 +.
(`RET` corresponds to the `ENTER` key on most calculators.)
The first three keystrokes “push” the numbers 1 and 2 onto the stack. The
`+` key always “pops” the top two numbers from the stack, adds them,
and pushes the result (3) back onto the stack. This number is ready for
further calculations: `5 -` pushes 5 onto the stack, then pops the
3 and 5, subtracts them, and pushes the result (*-2*).

Note that the “top” of the stack actually appears at the *bottom*
of the buffer. A line containing a single ‘`.`’ character signifies
the end of the buffer; Calculator commands operate on the number(s)
directly above this line. The `d t` (`calc-truncate-stack`

)
command allows you to move the ‘`.`’ marker up and down in the stack;
see Truncating the Stack.

Stack elements are numbered consecutively, with number 1 being the top of
the stack. These line numbers are ordinarily displayed on the lefthand side
of the window. The `d l` (`calc-line-numbering`

) command controls
whether these numbers appear. (Line numbers may be turned off since they
slow the Calculator down a bit and also clutter the display.)

The unshifted letter `o` (`calc-realign`

) command repositions
the cursor to its top-of-stack “home” position. It also undoes any
horizontal scrolling in the window. If you give it a numeric prefix
argument, it instead moves the cursor to the specified stack element.

The `RET` (or equivalent `SPC`) key is only required to separate
two consecutive numbers.
(After all, if you typed `1 2` by themselves the Calculator
would enter the number 12.) If you press `RET` or `SPC` *not*
right after typing a number, the key duplicates the number on the top of
the stack. `RET` * is thus a handy way to square a number.

The `DEL` key pops and throws away the top number on the stack.
The `TAB` key swaps the top two objects on the stack.
See Stack and Trail Commands, for descriptions of these and other stack-related
commands.