Текст подпрограммы и версий
sf20r_c.zip  sf20d_c.zip 
Тексты тестовых примеров
tsf20r_c.zip  tsf20d_c.zip 

Функция:  sf20r_c

Назначение

Вычисление неполных эллиптических интегралов второго рода.

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

Функция sf20r_c производит вычисление интегралов вида:

                     T
   E (K, T) = ∫ (1 - K2 sin2 t) 1/2 dt      для  0 ≤ K2 ≤ 1    и    0 ≤ T ≤ π/2
                    0 

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

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

    real sf20r_c (real *rk2, real *t, integer *ierr)

Параметры

rk2, t - заданные значения аргументов K2 и T (тип: вещественный);
ierr - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы функции; при этом:
ierr=65 - когда значение rk2 меньше 0. или больше 1.; значение функции полагается равным 3.4e38;
ierr=66 - когда t меньше 0. или больше π / 2; значение функции полагается равным 3.4e38.

Версии

sf20d_c - вычисление неполных эллиптических интегралов второго рода с повышенной точностью.

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

utsf10_c - подпрограмма выдачи диагностических сообщений при работе функции sf20r_c.
utsf11_c - подпрограмма выдачи диагностических сообщений при работе функции sf20d_c.

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

  Для функции sf20d_c параметры rk2, t имеют тип double. Значение функции sf20d_c при ierr ≠ 0 полагается равным 1.7e308.

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

int main(void)
{
    /* Local variables */
    extern float sf20r_c(float *, float *, int *);
    static int ierr;
    static float t, y, rk2;

    rk2 = .75f;
    t = 1.0471975500000001f;
    y = (float)sf20r_c(&rk2, &t, &ierr);

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


Результаты:

       y  =  0.918393294308,    ierr  =  0