Parallel bubble sort.
A sequential implementation of insertion sort.
Bitonic merge sort.
Data-parallel implementation of quicksort. Note that this quicksort, while parallel, is quite slow. In almost all cases you should use radix- or merge sort instead.
A non-comparison-based sort that sorts an array in O(k n) work and O(k log(n)) span, where k is the number of bits in each element.
Utility functions for arrays.
Simple functional combinators.
Basic mathematical modules and functions.
The default prelude that is implicitly available in all Futhark files.
Various Second-Order Array Combinators that are operationally parallel in a way that can be exploited by the compiler.
Transforming arrays of tuples into tuples of arrays and back again. These are generally very cheap operations, as the internal compiler representation is always tuples of arrays.
Irregular segmented operations, like scans and reductions.