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

### 10.9.8: rpn Examples

Here are some reverse-polish expressions and the corresponding algebraic interpretations:

- ``{rpn 1 2 + 10 / }`' = (1+2)/10

- ``{rpn .a. .b. + .c. + .d. / }`' = (.a.+.b.+.c.)/.d.

- ``{rpn e 2 / }`' = e/2 (Gri knows values of ``e'' and ``pi'')

- ``{rpn 23 sin 100 * 12 cos + }`' = cos(12) + 100sin(23)

- ``{rpn 5 2 power }`' = 25

- ``{rpn 2 log exp }`' = exp(log 2)

- ``{rpn 2 ln exp10 }`' = 10^ln2

- ``{rpn 1.7 floor }`' = 1 (rounds down to nearest integer. Note that the floor of -1.7 is -2)

- ``{rpn 10.1 2 remainder }`' = 0.1 (remainder of 10.1 after division by 2; see C function ``remainder(x,y)`')

- ``{rpn -10.1 2 remainder }`' = -0.1

- ``{rpn -10.1 -2 remainder }`' = -0.1

- ``{rpn .num. 10 > }`' = 1 if 10 exceeds .num., or 0 otherwise

NOTES:

- The units of ``sin`', ``cos`', etc, are degrees, not radians.
- The scales of the plot are accessible to ``rpn`'. For example, with the command

      draw label "hi" at 10 20

  you draw the indicated string at the indicated location in user coordinates. To put it 0.15 centimetres to the right of this location and 0.1 centimetres lower, you could do as follows:

      draw label "\label" at \
          {rpn .x. xusertocm 0.15 + xcmtouser} \
          {rpn .y. yusertocm 0.10 - ycmtouser}

  (Note that the x and y scales have individual translations from "user" to "cm" coordinates.)

- Some conversion factors are built into ``rpn`'; ``cmtopt`' converts from centimetres to points (by dividing by 28.45; the conversion factor to inches is 72.27) while ``pttocm`' converts from points to centimetres. For example, here is how to label a data curve with a label placed near the last y-value of the data set:

      draw curve
      .y. = {rpn ..ylast.. yusertocm 0.5 - ycmtouser}
      draw label "Smoothed" at ..xlast.. .y.