On 2010-03-30 20:36:04 +0200, Jeroen Van Der Bossche wrote: > The if statement is there exactly to address under- and overflow and > nothing else. It's not because it looks simple that I didn't think > it through. I know exactly how floating point multiplication works, > and this implementation of *(2^c) doesn't violate under/overflow, > denormalisation when e=0, rounding rules or rules about > NaN/infinity.
However, extracting the exponent, and putting the new exponent back to the floating-point number probably takes significant time (not even mentioning the tests on the exponent) compared to what is done entirely in hardware. I think that before anyone looks at this, you should post benchmarks. Also, the pipeline can stall due to the "if". Perhaps not in your case. But a compiler cannot know that (the other branch is taken when the value is 0, and this should not be regarded as rare). -- Vincent Lefèvre <vinc...@vinc17.net> - Web: <http://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)