Abstract
Using Haskell as a digital circuit description language, we transform a ripple carry adder that requires O(n) time to add two n-bit words into a parallel carry lookahead adder that requires O(log n) time. The ripple carry adder uses a scan function to calculate carry bits, but this scan cannot be parallelized directly since it is applied to a non-associative function. Several techniques are applied in order to introduce parallelism, including partial evaluation and symbolic function representation. The derivation given here constitutes a semi-formal correctness proof, and it also brings out explicitly each of the ideas underlying the algorithm.
Cite
CITATION STYLE
O’Donnell, J. T., & Rünger, G. (2004). Derivation of a logarithmic time carry lookahead addition circuit. Journal of Functional Programming, 14(6), 697–713. https://doi.org/10.1017/S0956796804005180
Register to see more suggestions
Mendeley helps you to discover research relevant for your work.