One small (but slow) method of calculating SQRT(N):
Number = N ; Number to take square root of
SQRT = 0
K=1
Do While Number > 0
Number = Number - K
SQRT = SQRT + 1
K = K + 2
End Do
Another fairly simple (but much faster) method of calculating sqrt(n): is the Newton method:
s(i+1) = { s(i)*s(i) + p }/{ 2*s(i) }
or in more detail
Number = N ; input value
;-- we want to finish with s^2 approximately equal to N.
Do While (...?...)
s = ( s*s + N ) / ( 2 * s ) ; the average of "s" and "N/s".
End Do
The Newton method requires a 8-bit into 16-bit division algorithm.
For more theory see
If you want tested implementations for a particular processor, see:
Comments: