How to multiply by 3 a natural number in n-bit binary representation?
Adding x to 2x(x shifted one bit position to the higher significance positions) reads simple enough.
For a ripple carry adder, this requires 2 half adders and n-2 full adders.
But shouldn't knowing one summand is twice the other allow improvements?
Simplifications, even speed-up?
Simple/cheap and fast depend on the cost and timing model,
including the set of primitives to build from.
Other metrics include power-delay product.
Programmable logic basic building blocks ever changing,
I'm most comfortable with # of transistors in static CMOS,
say, no more than 7 channels in series (between any output and either power rail).
This would make the basic gate the And-Or-Invert gate starting from two transistors per input; I suggest to include odd and even parity up to 5 inputs (implementation options including pass transistors/gates).