자연대수의 바닥 e 의 계산


함수명
e  자연대수의 바닥 e의 값을 다자리수로 산출한다
형식
void e(int *data, int keta);
인수
data  (출력) e의 값이 10진 4자리수씩 들어간 정수의 배열
keta  (입력) 소수점 이하의 자리수의 지정
함수치
없음
주의 사항

용례(e-test.c )
int data[1000];
e(data, 1000);

e 의 값(소수점 이하1만 자리수)

프로그램(e.c )
#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)++;
    }
}
설명
맥롤린 전개 ex = 1 + x/1! + x2/2! + ... + xn/n! + ... 에 x = 1 으로 일어나
   e = 1 + 1/1! + 1/2! + 1/3! + ... + 1/n! + ...
의 식을 이용해 계산한다. 게다가 우변의 제2항목 이후의 계산에서는, 계산 회수의 적은 다음의 식에 변형해 사용한다.
   (((...((1/n + 1) 1/(n-1) + 1) 1/(n-2) + 1)...) 1/3 + 1) 1/2 + 1

관련 함수