Текст подпрограммы и версий
sf32r_c.zip  sf32d_c.zip 
Тексты тестовых примеров
tsf32r_c.zip  tsf32d_c.zip 

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

Назначение

Вычисление сферической функции Бесселя первого рода целых порядков  Jn (x).

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

sf32r_c вычисляет сферическую функцию Бесселя первого рода целых порядков для вещественных положительных значений аргумента

     jn (x) = (π / 2x) 1/2 Jn + 1/2 (x)   , 

где  Jn + 1/2 (x) - функция Бесселя первого рода и   0 ≤ n ≤ 29.

M.A.Abramowitz, I.A.Stegun, Handbook of Mathematical Functions, Nat. Bur. Stand. Washington D.C., 1964.

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

    int sf32r_c (real *x, integer *n, real *y, integer *ierr)

Параметры

x - заданное значение аргумента  x (тип: вещественный);
n - заданное значение порядка  n (тип: целый);
y - вещественный вектоp длины  n + 1, в который в pезультате работы подпрограммы помещаются вычисленные значения  j0 (x), ..., jn (x);
ierr - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом:
ierr=65 - когда значение аргумента отрицательно;
ierr=66 - когда заданный порядок сферической функции Бесселя не принадлежит отрезку (0, 29).

Версии

sf32d_c - вычисление сферической функции Бесселя первого рода целых порядков  jn (x) с повышенной точностью.

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

utsf10_c - подпрограмма выдачи диагностических сообщений при работе подпрограммы sf32r_c.
utsf11_c - подпрограмма выдачи диагностических сообщений при работе подпрограммы sf32d_c.

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

  Для подпрограммы sf32d_c параметры x и y должны иметь тип double.

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

int main(void)
{
    /* Local variables */
    extern int sf32r_c(float *, int *, float *, int *);
    static int ierr, n;
    static float x, y[3];

    x = .1f;
    n = 2;
    sf32r_c(&x, &n, y, &ierr);

    printf("\n %16.7e %5i %5i \n",x,n,ierr);
    printf("\n %16.7e %16.7e %16.7e \n",y[0],y[1],y[2]);
    return 0;
} /* main */


Результаты:

       y(1)  =  0.998334166468, 
       y(2)  =  0.033300011902, 
       y(3)  =  0.000666190608, 

       ierr  =  0