+double tenpower(int n)
+{
+ double t = 1.0;
+ int i;
+ for (i = 0; i < n; i++) {
+ t *= 10;
+ }
+ for (i = 0; i > n; i--) {
+ t /= 10;
+ }
+ return t;
+}
+
+int getexponant (double *f, int maxexp)
+{
+ int exp = 0;
+ while (*f > 10) {
+ *f /= 10;
+ exp++;
+ }
+ while (*f < 1) {
+ *f *= 10;
+ exp--;
+ }
+ *f += tenpower (maxexp - 1);
+ if (*f >= 10) {
+ *f /= 10;
+ exp++;
+ }
+
+ return exp;
+}