Figure 1 shows the data flow in REC/R, which is not very extensive. There is essentially one array, of ample dimension, which will hold the coordinates of the line segments which are going to be drawn. Rather than define a segment by its endpoints, only the terminal point for each segment is provided. Since an initial point has to start the sequence, it is provided by a different operator. For ease of remembrance, it is the capital letter corresponding to the ongoing movement; remember that sentences start with capital letters.
Although simple graphs suffice to show solutions, either as functions or in the phase plane, they are hardly complicated enough to justify the construction of a whole elaborate program such as REC-R. Rather, it is the graphing of multiple solutions, usually obtained as the result of varying some parameter or other, which justifies all the additional effort.
Superposing multiple curves is less and less informative as the number of curves increases, but offsetting them from one another helps to maintain their identity. Even so, as the curves cross back and forth over one another, the overall graph can become quite confusing, which is the point at which the corves might be considered as having been inscribed on an opaque surface of which only the visible portion is drawn.
This was one of the first tasks given to computer graphics, whose solution was to maintain horizons as auxiliary curves and then to display only maxima and minima in comparison with the horizon, rather than the data itself. To do this well implies calculating good intersections of the data with the horizons, which implies adding these intersections to the list of function arguments.
REC-R does not take this step, but has provision for checking values relative to the horizon and storing the new horizon. The operators G and g produce ordinary pen movements, H and h take into account the horizone. The whole horizon apparatus is initialized by A, while a generates successive offsets.
Since graphing is independent of Runge-Kutta integration, there are two variables to be kept track of. The first, the horizontal coordinate of the graph and its increment, are initialized by S. The increment is applied, one step at a time, by s. Vertical positioning is adjusted by u, to get a constant y-offset.
The second variable is the one belonging to the independent variable of the Runge-Kutta integration, which is initialized by o and incremented automatically by one of the integration operators r or /tt R. Its value, when needed, can be placed on the pushdown stack by v. That might be done when the graphical and integration step were equal, since the program which does the actual plotting, the PostScript functions moveto and lineto gets arguments which take into acount the physical dimensions and resolution of the screen, as well as typical ranges of potentials.
However, very little has been done to incorporate variable scaling or changes of coordinates into the pen movement operators. One facility which has been provided, however, is the use of the hyperbolic tangent to compress the range of a variable with the clipping operator c.
Aside from operators related to presenting the graph, there are others related to producing the data, which are all related to the step by step development of the numerical integration. Accordingly individual elements of either the coefficient matrix or the solution matrix, can be brought to the pushdown list for graphing. Beyond that, the potentials included in SERO as examples all have parameters, whose values can be set and incremented according to the desired graph.