e 자연대수의 바닥 e의 값을 다자리수로 산출한다
void e(int *data, int keta);
data (출력) e의 값이 10진 4자리수씩 들어간 정수의 배열 keta (입력) 소수점 이하의 자리수의 지정
없음
#define LOG2_10 3.322
void e(int *data, int keta)
{
int i, j;
unsigned k, k2, n, s;
int len;
int *dap;
long x;
len = (keta-1) / 4 + 2;
for (dap = data, j = len; j--; ) *dap++ = 0;
n = keta * LOG2_10 + 1;
k = 1; k2 = 2;
s = 0; j = -1;
for (i = 1; s <= n; i++) {
if (i >= k) {
k = k2;
k2 <<= 1;
j++;
}
s += j;
}
*data = 1;
while (--i) {
x = 0;
for (j = len, dap = data; j--; ) {
x = x * 10000 + *dap;
*dap++ = x / i;
x %= i;
}
(*data)++;
}
}