Obtaining Accurate Error Expressions and Bounds for Floating-Point Multiplicative Algorithms