;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 09:33, local time: 2024/12/26 08:54,
18.222.179.96:LOG IN
|
©2024 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://linistepper.com/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? |