### 0.1. Array Interpolation: `(import (slib array-interpolate))`

This library provides two functions to obtain interpolated values or arrays formed from interpolated values of a source array.

#### 0.1.1. interpolate-array-ref

`interpolate-array-ref` takes an array and a sequence of index positions as real numbers. This is very similar to `array-ref`, however the index positions need not be integers and so define a point within the array. The function returns an interpolated value based on the coordinates nearest to that point.

For example:

```> (define arr (list->array 2 #() '((1 2 3) (4 5 6))))
> (interpolate-array-ref arr 1 0.1)
4.1```

The call to `interpolate-array-ref` selects the row of index 1, which is (4 5 6), and position 0.1 within that row. The value returned is (+ (* 0.9 4) (* 0.1 5)) = 4.1, the intermediate value between 4 and 5 lying a tenth of the way from 4.

Similarly:

```> (define arr (list->array 2 #() '((1 2 3) (4 5 6))))
> (interpolate-array-ref arr 0.5 0.25)
2.75```

The first index is mid-way between rows index 0 and index 1, and the second index is between the columns index 0 and index 1.

The interpolated value is calculated as:

1. (+ (* 0.75 4) (* 0.25 5)) = 4.25, a quarter of the way between the 4 and 5 (columns 0 and 1 in row 1)

2. (+ (* 0.75 1) (* 0.25 2)) = 1.25, a quarter of the way between the 1 and 2 (columns 0 and 1 in row 2)

3. (+ (* 0.5 4.25) (* 0.5 1.25)) = 2.75, midway between these two values (rows 1 and 2)

#### 0.1.2. resample-array!

`resample-array!` takes two arrays of equal rank but unequal dimension. The first array is filled with values formed by interpolating its values from the second array.

```> (define arr1 (list->array 2 #() '((1 2 3 4) (5 6 7 8))))
> (define arr2 (make-array #() 2 3))
> (array->list arr2)
((0 0 0) (0 0 0))
> (resample-array! arr2 arr1)
> (array->list arr2)
((1 5/2 4) (5 13/2 8))```

The interpolation process retains the outer corners. So `arr2` preserves the 1, 4, 5 and 8 in its corners. The value of 5/2 in the first row is obtained from the middle value of the first row, computed as: `(interpolate-array-ref arr1 0 1.5)`