Текст подпрограммы и версий
sf62r_c.zip 
Тексты тестовых примеров
tsf62r_c.zip 

Подпрограмма:  sf62r_c

Назначение

Вычисление экспоненциального интеграла En(x).

Математическое описание

sf62r_c производит вычисление экспоненциальных интегралов

                    
     En(x)  =  ∫ t -n e -xt dt    ,
                  1 

для  n = 0, 1, 2, ... и x > 0, а также выражения вида e x En(x).

I.A.Stegun and R.Zucker, Automatic Computing Methods for Special Functions. The Exponential Integral En (x), Journal of Research of the National Bureau of Standards - B. Mathematical Sciences, Vol. 78 B, No. 4, October - December 1974.

Использование

    int sf62r_c (integer *n, real *x, real *enx, real *expenx)

Параметры

n - заданное значение параметра  n (тип: целый);
x - заданное значение аргумента  x (тип: вещественный);
enx - вещественная переменная, значение которой в pезультате работы подпрограммы полагается pавной En (x);
expenx - вещественная переменная, значение которой в pезультате работы подпрограммы полагается pавной e x En (x).

Версии: нет

Вызываемые подпрограммы: нет

Замечания по использованию

 

Подпрограмма проводит вычисления для абсолютных значений n и x.

Подпрограмма выделяет несколько специальных случаев:
En(0) = 9*1018,   если n ≤ 1;
En(0) = 1 / (n - 1),   если n > 1;
E0(x) = e - x / x,   если x > 9*10 - 18;
E0(x) = 9*10 18,   если x ≤ 9*10 - 18 .

Пример использования

int main(void)
{
    /* Local variables */
    extern int sf62r_c(int *, float *, float *, float *);
    static int n;
    static float x, expenx, enx;

    n = 1;
    x = .1f;
    sf62r_c(&n, &x, &enx, &expenx);

    printf("\n %16.7e %16.7e \n",enx,expenx);
    return 0;
} /* main */


Результаты:

       enx         =  1.822923958416
       expenx  =  2.014642544706