|
Текст подпрограммы и версий sf28r_c.zip sf28d_c.zip |
Тексты тестовых примеров tsf28r_c.zip tsf28d_c.zip |
Вычисление модифицированной функции Бесселя первого рода нулевого порядка I0 (x).
sf28r_c вычисляет модифицированную функцию Бесселя первого рода нулевого порядка I0 (x) для вещественных x.
J.F.Hart, E.W.Cheney, C.L.Lawson et al, Computer Approximations, Wiley, New York, 1968.
real sf28r_c (real *x, integer *ierr)
Параметры
| x - | заданное значение аргумента x (тип: вещественный); |
| ierr - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы функции; при этом: |
| ierr=1 - | когда значение аргумента меньше 0; функция вычисляется для абсолютного значения аргумента; |
| ierr=65 - | когда значение аргумента больше 67.35; значение функции полагается равным 3.4e38. |
Версии
| sf28d_c - | вычисление модифицированной функции Бесселя первого рода нулевого порядка I0 (x) с повышенной точностью. |
Вызываемые подпрограммы
| utsf10_c - | подпрограмма выдачи диагностических сообщений при работе функции sf28r_c. |
| utsf11_c - | подпрограмма выдачи диагностических сообщений при работе функции sf28d_c. |
Замечания по использованию
|
Для функции sf28d_c параметр x имеет тип double и его областью допустимых значений является полуинтервал 0 ≤ x < 2070. При ierr = 65 значение функции sf28d_c полагается равным 1.7e308. Если значение x меньше нуля, то вычисляется I0 ( |x| ). |
int main(void)
{
/* Local variables */
static int ierr;
extern float sf28r_c(float *, int *);
static float r__, x;
x = 1.f;
r__ = (float)sf28r_c(&x, &ierr);
printf("\n %16.7e %16.7e \n",x,r__);
printf("\n %5i \n",ierr);
return 0;
} /* main */
Результаты:
r__ = 1.26606587768
ierr = 0