Speaking of alignment, I guess we should probably have a test here with unaligned arrays for both needle and haystack. To get an unaligned array one can use a construction like:
```
aligned_memory = np.empty(5 * 10 + 1, dtype=np.uint8)
unaligned = aligned_memory[1:].view(dtype=np.float64)
unaligned[:] = [0, 10, 20, 30, 40]
```