Текст подпрограммы и версий
sf17r_c.zip  sf17d_c.zip 
Тексты тестовых примеров
tsf17r_c.zip  tsf17d_c.zip 

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

Назначение

Вычисление производных функций Кельвина нулевого порядка.

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

sf17r_c вычисляет производные функций Кельвина первого рода (ber' (x) и bei' (x)) и второго рода (ker' (x) и kei' (x)) нулевого порядка.

J.F.Hart, E.W.Cheney, C.L.Lawson et al, Computer Approximations, Wiley, New York, 1968.

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

    int sf17r_c (real *x, real *berd, real *beid, real *akerd,
            real *akeid, integer *ierr)

Параметры

x - заданное значение аргумента x (тип: вещественный);
           berd -
           beid  
         akerd  
         akeid  
вычисленные значения функций ber' (x), bei' (x), ker' (x), kei' (x) соответственно (тип: вещественный);
ierr - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом:
ierr= 1 - когда значение аргумента меньше 0.; значения akerd и akeid полагаются равными 3.4e38;
ierr=66 - когда абсолютное значение аргумента больше 57.58; значения berd и beid полагаются равными 0.; в случае, когда аргумент неотрицателен, akerd и akeid также полагаются равными 0.; иначе akerd и akeid полагаются равными 3.4e38.

Версии

sf17d_c - вычисление производных функций Кельвина нулевого порядка.

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

       sf16r_c -
       sf16d_c  
подпрограммы вычисления функций Кельвина нулевого порядка с обычной точностью и повышенной точностью ( используются в sf17r_c и sf17d_c соответственно).
utsf10_c - подпрограмма выдачи диагностических сообщений при работе подпрограммы sf17r_c.
utsf11_c - подпрограмма выдачи диагностических сообщений при работе подпрограммы sf17d_c.

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

 

Для подпрограммы sf17d_c параметры x, berd, beid, akerd и akeid имеют тип double и абсолютное значение аргумента x не должно превосходить 2.04e03. При нарушении этого условия значение ierr полагается равным 66 и для отрицательного x значения akerd и akeid полагаются равными 1.7e308.

При x = 0, berd = 0., beid = 0., akeid = 0., akerd = - 3.4e38 (для sf17r_c) или - 1.7e308 (для sf17d_c).

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

int main(void)
{
    /* Local variables */
    extern int sf17r_c(float *, float *, float *, float *, float *, int *);
    static int i__;
    static float x, x1, x2, x3, x4;

    x = .6f;
    sf17r_c(&x, &x1, &x2, &x3, &x4, &i__);

    printf("\n %16.7e %16.7e %16.7e \n",x,x1,x2);
    printf("\n %16.7e %16.7e \n",x3,x4);
    printf("\n %5i \n",i__);
    return 0;
} /* main */


Результаты:

       x1    =  -0.134984812705, 
       x2    =    0.299797506834, 
       x3    =  -1.45653855074, 
       x4    =    0.348164425113, 
       i__   =    0