do we really need to support pre C89 compilers?
its no problem to do this in three steps, but at some point you have to draw the line what you want to support.

currently its only used twice and I don't see the need to do it more often. Its just so square and reciprocal are not slower than their explicit counter parts which do the same if the input pointers are equal.
The functions are obsolete on amd64 now.