Generate 1-D Array
------------------

We will demonstrate the use of options for creating 1-D arrays via :doc:`/gmtmath`.
Make an evenly spaced coordinate array from *min* to *max* in steps of *inc*, e.g.::

    gmt math -o0 -T3.1/4.2/0.1 T =
    3.1
    3.2
    3.3
    3.4
    3.5
    3.6
    3.7
    ...

Append **+b** if we should take :math:`\log_2` of *min* and *max*, get their nearest integers,
build an equidistant :math:`\log_2`-array using *inc* integer increments in :math:`\log_2`, then undo
the :math:`\log_2` conversion. E.g., **-T**\ 3/20/1\ **+b** will produce this sequence::

    gmt math -o0 -T3/20/1+b T =
    4
    8
    16

Append **+l** if we should take :math:`\log_{10}` of *min* and *max* and build an
array where *inc* can be 1 (every magnitude), 2, (1, 2, 5 times magnitude) or 3
(1-9 times magnitude).  E.g., **-T**\ 7/135/2\ **+l** will produce this sequence::

    gmt math -o0 -T7/135/2+l T =
    10
    20
    50
    100

For output values less frequently than every magnitude, use a negative integer *inc*::

    gmt math -o0 -T1e-4/1e4/-2+l T =
    0.0001
    0.01
    1
    100
    10000

Append **+i** if *inc* is a fractional number and it is cleaner to give its reciprocal
value instead.  To set up times for a 24-frames per second animation lasting 1 minute, run::

    gmt math -o0 -T0/60/24+i T =
    0
    0.0416666666667
    0.0833333333333
    0.125
    0.166666666667
    ...

Append **+n** if *inc* is meant to indicate the *number* of equidistant coordinates
instead.  To have exactly 5 equidistant values from 3.44 and 7.82, run::

    gmt math -o0 -T3.44/7.82/5+n T =
    3.44
    4.535
    5.63
    6.725
    7.82

Alternatively, let *inc* be a *file* with output coordinates in the first column,
or provide a comma-separated *list* of specific coordinates, such as the first 6
Fibonacci numbers::

    gmt math -o0 -T0,1,1,2,3,5 T =
    0
    1
    1
    2
    3
    5

**Notes**: (1) If you need to pass the list nodes via a dataset file yet be understood
as a list (i.e., no interpolation), then you must set the file header to contain the string "LIST". (2) Should
you need to ensure that the coordinates are unique and sorted (in case the
*file* or *list* are not sorted or have duplicates) then supply the **+u** modifier.

If you only want a *single* value
then you must append a comma to distinguish the list from the setting of an increment.

If the module allows you to set up an absolute time series, append a valid time unit from the list
**y**\ ear, m\ **o**\ nth, **d**\ ay, **h**\ our, **m**\ inute, and **s**\ econd
to the given increment; add **+t** to ensure time column (or use **-f**). **Note**: The internal time
unit is still controlled independently by :term:`TIME_UNIT`.  The first 7 days of March 2020::

    gmt math -o0 -T2020-03-01T/2020-03-07T/1d T =
    2020-03-01T00:00:00
    2020-03-02T00:00:00
    2020-03-03T00:00:00
    2020-03-04T00:00:00
    2020-03-05T00:00:00
    2020-03-06T00:00:00
    2020-03-07T00:00:00

A few modules allow for **+a** which will paste the coordinate array to the output table.

Likewise, if the module allows you to set up a spatial distance series (with distances computed
from the first two data columns), specify a new increment as *inc* with a geospatial distance unit from the list
**d**\ egree (arc), **m**\ inute (arc), **s**\ econd (arc), m\ **e**\ ter, **f**\ oot, **k**\ ilometer,
**M**\ iles (statute), **n**\ autical miles, or s\ **u**\ rvey foot; see **-j** for calculation mode.
To interpolate Cartesian distances instead, you must use the special unit **c**.

Finally, if you are only providing an increment and will obtain *min* and *max* from the data, then it is
possible (*max* - *min*)/*inc* is not an integer, as required.  If so, then *inc* will be adjusted to fit the range.
Alternatively, append **+e** to keep *inc* exact and adjust *max* instead (keeping *min* fixed).
