Go backward to Trail Commands. Go up to Stack and Trail.

Keep Arguments
==============

The `K' (`calc-keep-args') command acts like a prefix for the
following command.  It prevents that command from removing its
arguments from the stack.  For example, after `2 RET 3 +', the stack
contains the sole number 5, but after `2 RET 3 K +', the stack
contains the arguments and the result: `2 3 5'.

This works for all commands that take arguments off the stack.  As
another example, `K a s' simplifies a formula, pushing the simplified
version of the formula onto the stack after the original formula
(rather than replacing the original formula).

Note that you could get the same effect by typing `RET a s', copying
the formula and then simplifying the copy.  One difference is that for
a very large formula the time taken to format the intermediate copy in
`RET a s' could be noticeable; `K a s' would avoid this extra work.

Even stack manipulation commands are affected.  TAB works by popping
two values and pushing them back in the opposite order, so `2 RET 3 K
TAB' produces `2 3 3 2'.

A few Calc commands provide other ways of doing the same thing.  For
example, `' sin($)' replaces the number on the stack with its sine
using algebraic entry; to push the sine and keep the original argument
you could use either `' sin($1)' or `K ' sin($)'.  *Note Algebraic
Entry::.  Also, the `s s' command is effectively the same as `K s t'.
See Storing Variables.

Keyboard macros may interact surprisingly with the `K' prefix.  If you
have defined a keyboard macro to be, say, `Q +' to add one number to
the square root of another, then typing `K X' will execute `K Q +',
probably not what you expected.  The `K' prefix will apply to just the
first command in the macro rather than the whole macro.

If you execute a command and then decide you really wanted to keep the
argument, you can press `M-RET' (`calc-last-args').  This command
pushes the last arguments that were popped by any command onto the
stack.  Note that the order of things on the stack will be different
than with `K': `2 RET 3 + M-RET' leaves `5 2 3' on the stack instead
of `2 3 5'.  See Undo.