Fast 8 Bit Square Root
;**********************************************************************
;FAST 8 BIT SQUARE ROOT
;
;Author: Nikolai Golovchenko <golovchenko@mail.ru>
;Date: February 15, 2000
;
;Input and output in w
;ROM - 53
;RAM - 0
;Timing - 15..19 cycles including call and return
;**********************************************************************
Sqrt8f
addlw -64 ;1
skpnc
goto sqrt8_15 ;3
addlw (64-16)
skpnc
goto sqrt4_7 ;6
addlw (16-4)
skpnc
goto sqrt2_3 ;9
addlw (4-1)
skpnc
retlw 1 ;1 (15)
retlw 0 ;0 (16)
sqrt2_3
addlw (4-9)
skpnc
retlw 3 ;3 (16)
retlw 2 ;2 (17)
sqrt4_7
addlw (16-36)
skpnc
goto sqrt6_7 ;10
addlw (36-25)
skpnc
retlw 5 ;5 (16)
retlw 4 ;4 (17)
sqrt6_7
addlw (36-49)
skpnc
retlw 7 ;7 (17)
retlw 6 ;6 (18)
sqrt8_15
addlw (64-144)
skpnc
goto sqrt12_15 ;7
addlw (144-100)
skpnc
goto sqrt10_11 ;10
addlw (100-81)
skpnc
retlw 9 ;9 (16)
retlw 8 ;8 (17)
sqrt10_11
addlw (100-121)
skpnc
retlw 11 ;11 (17)
retlw 10 ;10 (18)
sqrt12_15
addlw (144-196)
skpnc
goto sqrt14_15 ;11
addlw (196-169)
skpnc
retlw 13 ;13 (17)
retlw 12 ;12 (18)
sqrt14_15
addlw (196-225)
skpnc
retlw 15 ;15 (18)
retlw 14 ;14 (19)
;**********************************************************************