There are a few important details missing in the question.
First, for which processor is this, for a S08 or S12 (or XGATE or RS08 or CF)?
Then on which kind of values (floating point, int, long, limited value range, complex numbers,...)?
ANSI C provides a floating point one only, so if you need an integral one, then
here's a C implementation by bigmac using a new Newton algorithm:
http://forums.freescale.com/freescale/board/message?board.id=16BITCOMM&message.id=6411Daniel