reduce number of shifts

Originally committed as revision 8891 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer 2007-05-04 22:35:56 +00:00
parent fd735e4b77
commit 45221f7f61
1 changed files with 5 additions and 4 deletions

View File

@ -189,15 +189,16 @@ extern const uint8_t ff_sqrt_tab[128];
static inline int ff_sqrt(int a)
{
int ret=0;
int s;
int s, b;
if(a<128) return ff_sqrt_tab[a];
for(s=15; s>=0; s--){
int b= (1<<(s*2)) + (ret<<s)*2;
for(s=30; s>=0; s-=2){
ret+=ret;
b= (1+2*ret)<<s;
if(b<=a){
a-=b;
ret+= 1<<s;
ret++;
}
}
return ret;