const multiBitsSum = (inputA, inputB, carryIn) => {
let output = []
let carry = carryIn || 0
for (var i = 0; i < inputA.length; i++) {
let result = fullAdder(inputA[i], inputB[i], carry)
output[i] = result.sum
carry = result.carry
}
return {output: output, carry: carry}
}
multiBitsSum([0, 0, 1], [1, 1, 0])
const multiBitsSumByComp = (inputAHigh, inputBHigh, inputALow, inputBLow, carryIn) => {
let output = []
let carry = carryIn || 0
const lowResult = multiBitsSum(inputALow, inputBLow, carry)
const highResult = multiBitsSum(inputAHigh, inputBHigh, lowResult.carry)
return {output: highResult.output.concat(highResult.output), carry: highResult.carry}
}
multiBitsSumByComp([0, 0, 1], [1, 1, 0], [0, 0, 1], [1, 1, 1])