Go forward to Editing Stack Entries. Go backward to Stack and Trail. Go up to Stack and Trail.

Stack Manipulation Commands
===========================

To duplicate the top object on the stack, press RET or SPC (two
equivalent keys for the `calc-enter' command).  Given a positive
numeric prefix argument, these commands duplicate several elements at
the top of the stack.  Given a negative argument, these commands
duplicate the specified element of the stack.  Given an argument of
zero, they duplicate the entire stack.  For example, with `10 20 30'
on the stack, RET creates `10 20 30 30', `C-u 2 RET' creates `10 20 30
20 30', `C-u - 2 RET' creates `10 20 30 20', and `C-u 0 RET' creates
`10 20 30 10 20 30'.

The LFD (`calc-over') command (on a key marked Line-Feed if you have
it, else on `C-j') is like `calc-enter' except that the sign of the
numeric prefix argument is interpreted oppositely.  Also, with no
prefix argument the default argument is 2.  Thus with `10 20 30' on
the stack, LFD and `C-u 2 LFD' are both equivalent to `C-u - 2 RET',
producing `10 20 30 20'.

To remove the top element from the stack, press DEL (`calc-pop').  The
`C-d' key is a synonym for DEL.  (If the top element is an incomplete
object with at least one element, the last element is removed from
it.)  Given a positive numeric prefix argument, several elements are
removed.  Given a negative argument, the specified element of the
stack is deleted.  Given an argument of zero, the entire stack is
emptied.  For example, with `10 20 30' on the stack, DEL leaves `10
20', `C-u 2 DEL' leaves `10', `C-u - 2 DEL' leaves `10 30', and `C-u 0
DEL' leaves an empty stack.

The M-DEL (`calc-pop-above') command is to DEL what LFD is to RET: It
interprets the sign of the numeric prefix argument in the opposite
way, and the default argument is 2.  Thus M-DEL by itself removes the
second-from-top stack element, leaving the first, third, fourth, and
so on; `M-3 M-DEL' deletes the third stack element.

To exchange the top two elements of the stack, press TAB
(`calc-roll-down').  Given a positive numeric prefix argument, the
specified number of elements at the top of the stack are rotated
downward.  Given a negative argument, the entire stack is rotated
downward the specified number of times.  Given an argument of zero,
the entire stack is reversed top-for-bottom.  For example, with `10 20
30 40 50' on the stack, TAB creates `10 20 30 50 40', `C-u 3 TAB'
creates `10 20 50 30 40', `C-u - 2 TAB' creates `40 50 10 20 30', and
`C-u 0 TAB' creates `50 40 30 20 10'.

The command M-TAB (`calc-roll-up') is analogous to TAB except that it
rotates upward instead of downward.  Also, the default with no prefix
argument is to rotate the top 3 elements.  For example, with `10 20 30
40 50' on the stack, M-TAB creates `10 20 40 50 30', `C-u 4 M-TAB'
creates `10 30 40 50 20', `C-u - 2 M-TAB' creates `30 40 50 10 20',
and `C-u 0 M-TAB' creates `50 40 30 20 10'.

A good way to view the operation of TAB and M-TAB is in terms of
moving a particular element to a new position in the stack.  With a
positive argument n, TAB moves the top stack element down to level n,
making room for it by pulling all the intervening stack elements
toward the top.  M-TAB moves the element at level n up to the top.
(Compare with LFD, which copies instead of moving the element in level
n.)

With a negative argument -n, TAB rotates the stack to move the object
in level n to the deepest place in the stack, and the object in level
n+1 to the top.  M-TAB rotates the deepest stack element to be in
level n, also putting the top stack element in level n+1.

See Selecting Subformulas, for a way to apply these commands to
any portion of a vector or formula on the stack.