Carry-save addition allows three n-bit numbers to be added together in O(1) time by computing the sum and carry independently and in parallel. It works by using a carry-save adder (CSA) block for each bit position. A CSA block takes in three bits and outputs their sum and carry without propagating the carry. Multiple CSA blocks can be chained or arranged in a Wallace tree to add many numbers. Using a chain takes O(m + lg(n+m)) time while a Wallace tree takes O(logm + lg(n+logm)) time to add m n-bit numbers.