This is actually a bit tricky on powerpc. My approach so far had been
to try as much as possible to avoid floating point operations (with my
x86 hat on), but a complete fixed-point based function does not do as
well as a complete fp function on POWER regardless of how the code is
partitioned - I'm guessing this has to do with the fact that there are
4 fp units to play with but just 2 fixed point units. Steven pointed
this out to me last week but I had to see it first hand to really
understand it (and the fact that I had my x86 hat still firmly on).
There is scope to improve the multiplication algorithm, but my current
opinion (might change as I learn more about ppc) is that it might be
best to have the ppc code continue storing the mantissa as double,
while x86 is best served with an integer mantissa and all-int
operations. I don't know about other architectures, but AFAICT, most
of them have assembler overrides for most transcendentals.