Before starting look at a couple of implentations of the divide-by-3 counter.

## Addition

Take out some drawing paper, but first
think of two
numbers between 0 and 10^{100}-1 and add them.

- You have been using a O(
`n`) algorithm to add. - Divide-and-conquer is difficult because of the carries.
- Define some progate P
_{m:i}and generate G_{m:i}functions. - Generate the final carry in O(log
`n`) time and O(`n`) space using a tree. - Generate the all the bits in O(log
`n`) time but with O(`n`log`n`) space. - Take a look at a few references
- Chapter 5 notes from textbook
- Adder Designs from UC-Davis
- Design of Adders for UT-Austin
- Adders and Multipliers from UC-Berkeley

- 74F182 Carry Lookahead Generator
- 74F171 Arithmetic Logic Unit