Bob, From the responses I guess you can conclude that your implementation is optimal. However, there may be one way to improve it - I just don't have time to follow it through. If you write the 16bit numbers: N1 = A*2^8 + B N2 = C*2^8 + D Where A,B,C, and D are 8-bit numbers, then: N1 * N2 = AC*2^16 + (BC+AD)*2^8 + BD The middle term can be re-written: BC+AD = (B-A)(C-D) + (AC + BD) Or N1*N2 = AC*2^16 + ((B-A)(C-D) + (AC + BD))*2^8 + BD Notice that the products in the (AC+BD) term now appear twice in the expression. So for the cost of more additions, you can replace one of the multiplications. At first glance, this approach doesn't seem like it'll buy anything - but it's worth a shot. Scot -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu