calc: Operating on Selections

 
 11.1.4 Operating on Selections
 ------------------------------
 
 Once a selection is made, all Calc commands that manipulate items on the
 stack will operate on the selected portions of the items instead.  (Note
 that several stack elements may have selections at once, though there
 can be only one selection at a time in any given stack element.)
 
    The ‘j e’ (‘calc-enable-selections’) command disables the effect that
 selections have on Calc commands.  The current selections still exist,
 but Calc commands operate on whole stack elements anyway.  This mode can
 be identified by the fact that the ‘*’ markers on the line numbers are
 gone, even though selections are visible.  To reactivate the selections,
 press ‘j e’ again.
 
    To extract a sub-formula as a new formula, simply select the
 sub-formula and press <RET>.  This normally duplicates the top stack
 element; here it duplicates only the selected portion of that element.
 
    To replace a sub-formula with something different, you can enter the
 new value onto the stack and press <TAB>.  This normally exchanges the
 top two stack elements; here it swaps the value you entered into the
 selected portion of the formula, returning the old selected portion to
 the top of the stack.
 
                 3    ...                    ...                    ___
          (a + b)  . . .           17 x y . . .           17 x y + V c
      2*  ...............      2*  .............      2:  -------------
              . . . .                 . . . .                2 x + 1
 
                                          3                      3
      1:  17 x y               1:  (a + b)            1:  (a + b)
 
    In this example we select a sub-formula of our original example,
 enter a new formula, <TAB> it into place, then deselect to see the
 complete, edited formula.
 
    If you want to swap whole formulas around even though they contain
 selections, just use ‘j e’ before and after.
 
    The ‘j '’ (‘calc-enter-selection’) command is another way to replace
 a selected sub-formula.  This command does an algebraic entry just like
 the regular ‘'’ key.  When you press <RET>, the formula you type
 replaces the original selection.  You can use the ‘$’ symbol in the
 formula to refer to the original selection.  If there is no selection in
 the formula under the cursor, the cursor is used to make a temporary
 selection for the purposes of the command.  Thus, to change a term of a
 formula, all you have to do is move the Emacs cursor to that term and
 press ‘j '’.
 
    The ‘j `’ (‘calc-edit-selection’) command is a similar analogue of
 the ‘`’ (‘calc-edit’) command.  It edits the selected sub-formula in a
 separate buffer.  If there is no selection, it edits the sub-formula
 indicated by the cursor.
 
    To delete a sub-formula, press <DEL>.  This generally replaces the
 sub-formula with the constant zero, but in a few suitable contexts it
 uses the constant one instead.  The <DEL> key automatically deselects
 and re-simplifies the entire formula afterwards.  Thus:
 
                    ###
          17 x y + # #          17 x y         17 # y          17 y
      1*  -------------     1:  -------    1*  -------    1:  -------
             2 x + 1            2 x + 1        2 x + 1        2 x + 1
 
    In this example, we first delete the ‘sqrt(c)’ term; Calc
 accomplishes this by replacing ‘sqrt(c)’ with zero and resimplifying.
 We then delete the ‘x’ in the numerator; since this is part of a
 product, Calc replaces it with ‘1’ and resimplifies.
 
    If you select an element of a vector and press <DEL>, that element is
 deleted from the vector.  If you delete one side of an equation or
 inequality, only the opposite side remains.
 
    The ‘j <DEL>’ (‘calc-del-selection’) command is like <DEL> but with
 the auto-selecting behavior of ‘j '’ and ‘j `’.  It deletes the selected
 portion of the formula indicated by the cursor, or, in the absence of a
 selection, it deletes the sub-formula indicated by the cursor position.
 
    (There is also an auto-selecting ‘j <RET>’ (‘calc-copy-selection’)
 command.)
 
    Normal arithmetic operations also apply to sub-formulas.  Here we
 select the denominator, press ‘5 -’ to subtract five from the
 denominator, press ‘n’ to negate the denominator, then press ‘Q’ to take
 the square root.
 
           .. .           .. .           .. .             .. .
      1*  .......    1*  .......    1*  .......    1*  ..........
          2 x + 1        2 x - 4        4 - 2 x         _________
                                                       V 4 - 2 x
 
    Certain types of operations on selections are not allowed.  For
 example, for an arithmetic function like ‘-’ no more than one of the
 arguments may be a selected sub-formula.  (As the above example shows,
 the result of the subtraction is spliced back into the argument which
 had the selection; if there were more than one selection involved, this
 would not be well-defined.)  If you try to subtract two selections, the
 command will abort with an error message.
 
    Operations on sub-formulas sometimes leave the formula as a whole in
 an “un-natural” state.  Consider negating the ‘2 x’ term of our sample
 formula by selecting it and pressing ‘n’ (‘calc-change-sign’).
 
             .. .                .. .
      1*  ..........      1*  ...........
           .........           ..........
          . . . 2 x           . . . -2 x
 
    Unselecting the sub-formula reveals that the minus sign, which would
 normally have canceled out with the subtraction automatically, has not
 been able to do so because the subtraction was not part of the selected
 portion.  Pressing ‘=’ (‘calc-evaluate’) or doing any other mathematical
 operation on the whole formula will cause it to be simplified.
 
             17 y                17 y
      1:  -----------     1:  ----------
           __________          _________
          V 4 - -2 x          V 4 + 2 x