OSDN Git Service

reduce number of shifts
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 4 May 2007 22:35:56 +0000 (22:35 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 4 May 2007 22:35:56 +0000 (22:35 +0000)
Originally committed as revision 8891 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavutil/internal.h

index 244e3c0..ce168dd 100644 (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;