Текст подпрограммы и версий sf62r_c.zip |
Тексты тестовых примеров tsf62r_c.zip |
Вычисление экспоненциального интеграла 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