summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/libm/ipow.c
diff options
context:
space:
mode:
authorMystery Man <unknown@mandriva.org>2003-05-06 13:11:49 +0000
committerMystery Man <unknown@mandriva.org>2003-05-06 13:11:49 +0000
commit3f5d21d90abbd16f16ab69aec1e1a1853a93fd18 (patch)
tree3d9f5a32303a8d97b4b457949e64bb42b4850ea9 /mdk-stage1/dietlibc/libm/ipow.c
parent327bd24f8e4291bd1882de1990dd7339f781a9cb (diff)
downloaddrakx-backup-do-not-use-3f5d21d90abbd16f16ab69aec1e1a1853a93fd18.tar
drakx-backup-do-not-use-3f5d21d90abbd16f16ab69aec1e1a1853a93fd18.tar.gz
drakx-backup-do-not-use-3f5d21d90abbd16f16ab69aec1e1a1853a93fd18.tar.bz2
drakx-backup-do-not-use-3f5d21d90abbd16f16ab69aec1e1a1853a93fd18.tar.xz
drakx-backup-do-not-use-3f5d21d90abbd16f16ab69aec1e1a1853a93fd18.zip
This commit was manufactured by cvs2svn to create tag 'R9_0-AMD64'.R9_0-AMD64
Diffstat (limited to 'mdk-stage1/dietlibc/libm/ipow.c')
-rw-r--r--mdk-stage1/dietlibc/libm/ipow.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/libm/ipow.c b/mdk-stage1/dietlibc/libm/ipow.c
new file mode 100644
index 000000000..399986ea1
--- /dev/null
+++ b/mdk-stage1/dietlibc/libm/ipow.c
@@ -0,0 +1,29 @@
+#define _GNU_SOURCE
+#include <math.h>
+/*
+ * This is not standard, but often you only need such this function
+ * which is much shorter than the generic pow() function.
+ *
+ * double ipow ( double mant, int expo );
+ */
+
+double ipow ( double mant, int expo )
+{
+ double ret = 1.;
+ unsigned int e = expo; /* Some attention is necessary for expo = 2^31 */
+
+ if ( (int)e < 0 ) {
+ e = -e;
+ mant = 1./mant;
+ }
+
+ while (1) {
+ if ( e & 1 )
+ ret *= mant;
+ if ( (e >>= 1) == 0 )
+ break;
+ mant *= mant;
+ }
+
+ return ret;
+}