Merged general precision multiplication with code.
Have to just handle the special situation where precision is 1, in which case we don't need the carry variable, and where precision is not i + j, but i + j -1, because a multiplication by a 1-bit value returns the same precision as the current value.