## Function `loop( start, end, step )`

Description:
  Returns a floating point array like the values taken in a for-loop with given start, end, and step arguments. For a positive step, the notional loop corresponds to:

          for (double x = start; x < end; x += step)

  Note that numerical precision issues may result in the output array differing from its expected length by 1 (it is generally risky to rely on exact comparison of floating point values). If you want to be sure of the number of elements you can use the `sequence` function instead.

Parameters:
  `start` (floating point)
    value for first element of output array
  `end` (floating point)
    first value beyond last element of output array
  `step` (floating point)
    increment between output array values; may not be zero

Return Value (array of floating point):
  array with approximately `(end-start)/step` (or 0) elements

Examples:
  - `loop(10, 12, 0.5) = (10.0, 10.5, 11.0, 11.5)`
  - `loop(0, 10, 3) = (0., 3., 6., 9.)`
  - `loop(5, 0, -1) = (5., 4., 3., 2., 1.)`

Signature:
  `double[] loop(double, double, double)`