|
Текст подпрограммы и версий 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