**GEN** Routines: Line/Exponential Segment Generators

## GEN05, GEN07

**f** # time size 5 a n1 b n2 c . . .
**f** # time size 7 a n1 b n2 c . . .

### Description

These subroutines are used to construct functions from segments of exponential curves (**GEN05)** or straight lines (**GEN07**).

### Initialization

*size * – number of points in the table. Must be a power of 2 or power-of-2 plus 1 (see **f statement**).

*a, b, c,* etc. – ordinate values, in odd-numbered pfields p5, p7, p9, . . . For **GEN05** these must be nonzero and must be alike in sign. No such restrictions exist for **GEN07**.

*n1, n2*, etc. – length of segment (no. of storage locations), in even-numbered pfields. Cannot be negative, but a zero is meaningful for specifying discontinuous waveforms (e.g. in the example below). The sum *n1* + *n2* + .... will normally equal *size* for fully specified functions. If the sum is smaller, the function locations not included will be set to zero; if the sum is greater, only the first *size* locations will be stored.

### Note

If p4 is positive, functions are post-normalized (rescaled to a maximum absolute value of 1 after generation). A negative p4 will cause rescaling to be skipped.

Discrete-point linear interpolation implies an increase or decrease along a segment by equal differences between adjacent locations; exponential interpolation implies that the progression is by equal ratio. In both forms the interpolation from *a* to *b* is such as to assume that the value *b* will be attained in the n + 1th location. For discontinuous functions, and for the segment encompassing the end location, this value will not actually be reached, although it may eventually appear as a result of final scaling.

### Example

**f** 1 0 256 7 0 128 1 0 -1 128 0

This describes a single-cycle sawtooth whose discontinuity is mid-way in the stored function.

**GEN** Routines: Line/Exponential Segment Generators