 
;Copyryght(c) 2005, Isaac Marino Bavaresco
;PIC24/dsPIC assembly:
;Input value    = W10
;Result            = W11
isqrt:        mov.w    #0x0080,W2
           mov.w    #0,W11
           do        #7,greater
           ior.w    W2,W11,W13
           mul.uu    W13,W13,W4
           cp.w    W10,W4
           bra        LTU,Greater
           ior.w    W2,W11,W11
greater:    lsr.w    W2,#1,W2
/*
C equivalent:
*/
unsigned short isqrt( unsigned short value )
   {
   unsigned short    result, exp, temp;
   for( result    = 0, exp = 0x0080; exp != 0; exp >>= 1 )
       {
       temp    = result | exp;
       if( temp * temp <= value )
           result    = temp;
       }
   return result;
   }
unsigned long isqrtl( unsigned long value )
   {
   unsigned long    result, exp, temp;
   for( result    = 0, exp = 0x00008000; exp != 0; exp >>= 1 )
       {
       temp    = result | exp;
       if( temp * temp <= value )
           result    = temp;
       }
   return result;
   }
| file: /Techref/microchip/math/sqrt/sqrt16-dsPIC-IMB.htm, 1KB, , updated: 2017/7/17 10:33, local time: 2025/10/30 17:06, 
 
216.73.216.50,10-8-63-169:LOG IN | 
| ©2025 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://www.massmind.org/techref/microchip/math/sqrt/sqrt16-dsPIC-IMB.htm"> PIC Microcontoller Math Method for square root 16 bit dsPIC</A> | 
| Did you find what you needed? | 
| Welcome to massmind.org! | 
| Welcome to www.massmind.org! | 
.