Update to 2.0.0 tree from current Fremantle build
[opencv] / 3rdparty / lapack / pow_ii.c
diff --git a/3rdparty/lapack/pow_ii.c b/3rdparty/lapack/pow_ii.c
new file mode 100644 (file)
index 0000000..e3e3d06
--- /dev/null
@@ -0,0 +1,29 @@
+#include "clapack.h"
+
+integer pow_ii(integer *ap, integer *bp)
+{
+    integer pow, x, n;
+    unsigned long u;
+
+    x = *ap;
+    n = *bp;
+
+    if (n <= 0) {
+        if (n == 0 || x == 1)
+            return 1;
+        if (x != -1)
+            return x == 0 ? 1/x : 0;
+        n = -n;
+    }
+    u = n;
+    for(pow = 1; ; )
+    {
+        if(u & 01)
+            pow *= x;
+        if(u >>= 1)
+            x *= x;
+        else
+            break;
+    }
+    return(pow);
+}