Safe Haskell | None |
---|---|
Language | Haskell98 |
AUTHOR
- Dr. Alistair Ward
DESCRIPTION
- Provides an alternative algorithm for the summation of rational numbers.
Functions
sum' :: (Num n, NFData n) => ChunkLength -> [n] -> n Source
- Sums a list of numbers of arbitrary type.
- Sparks the summation of
(list-length / chunk-size)
chunks from the list, each of the specified size (thought the last chunk may be smaller), then recursively sums the list of results from each spark. - CAVEAT: unless the numbers are large,
Rational
(requiring cross-multiplication), or the list long,sum
is too light-weight for sparking to be productive, therefore it is more likely to be the parallelised deep evaluation of list-elements which saves time.
sumR' :: Integral i => [Ratio i] -> Ratio i Source
- Sums a list of rational type numbers.
- CAVEAT: though faster than
sum
, this algorithm has poor space-complexity, making it unsuitable for unrestricted use.
sumR :: (Integral i, NFData i) => ChunkLength -> [Ratio i] -> Ratio i Source
- Sums a list of rational numbers.
- Sparks the summation of
(list-length / chunk-length)
chunks from the list, each of the specified size (thought the last chunk may be smaller), then recursively sums the list of results from each spark. - CAVEAT: memory-use is proportional to chunk-size.