Chapters: 1: Introduction 2: Simple example 3: Invocation 4: Finer Control 5: X-Y Plots 6: Contour Plots 7: Image Plots 8: Examples 9: Gri Commands 10: Programming 11: Environment 12: Emacs Mode 13: History 14: Installation 15: Gri Bugs 16: Test Suite 17: Gri in Press 18: Acknowledgments 19: License Indices: Concepts Commands Variables | ### 9.3.40: ``rpnfunction`'
    `rpnfunction name replacement-words'
Create a new keyword for use in rpn expressions. Inside any RPN expression which follows this line, the word ``name`' will be substituted with the indicated replacement words. For example, the following shows the definition and use of a function which computes the sine of twice an angle, by multiplying whatever is on the stack by ``2`', and then taking the sine of the result.
    rpnfunction sin2 2 * sin
    show "expect the number 1 to follow: " {rpn 45 sin2}
The replacement words will have any synonyms in them translated first, unless they start with an underscore followed by a double backslash. Similarly, variables are substituted unless they start with an underscore. These exceptions are to allow the use of the ``defined`' operator (see rpn Mathematics). Note: The mathematical constants ``e`' and ``pi`' are stored using ``rpnfunctions`'. Also, two ``rpnfunctions`' are provided for finding the slope and intercept of a line joining two points, e.g.
    # Expect answers 1 and 10 ...
    show "slope=" {rpn 0 1 1 11 linear_slope}
    show "inter=" {rpn 0 1 1 11 linear_intercept}
These are useful in ``set grid missing above .intercept. .slope.`' and ``set z missing above .intercept. .slope.`'.