Текст подпрограммы и версий
sf14r_c.zip  sf14d_c.zip 
Тексты тестовых примеров
tsf14r_c.zip  tsf14d_c.zip 

Функция:  sf14r_c

Назначение

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

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

Функция sf14r_c производит вычисление следующих интегралов

                  π/2
 (1)      y =  ∫ (1 - x sin2 t) -1/2 dt             для    0 ≤ x < 1
                  0
                  π/2
 (2)      y =  ∫ (1 - x2 sin2 t) -1/2 dt            для    -1 < x < 1
                  0
                  π/2
 (3)      y =  ∫ (1 - (1 - x) sin2 t) -1/2 dt       для     0 < x ≤ 1
                  0

Алгоритм реализованный в функции, изложен в статье

W.J.Cody, Chebyshev Approximations for the Complete Elliptic Integrals K and E, Math. Comp., 19, 1965.

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

    real sf14r_c (real *x, integer *l, integer *ierr)

Параметры

x - заданное значение аргумента x (тип: вещественный);
l - задает режим работы функции (тип: целый); при этом: если
l = 1 - вычисляется интеграл (1);
l = 2 - вычисляется интеграл (2);
l = 3 - вычисляется интеграл (3);
ierr - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы функции; при этом:
ierr=65 - когда значение l меньше 1 или больше 3; значение функции полагается равным 3.4e38;
ierr=66 - когда значение аргумента меньше 0. При l = 1; значение функции полагается pавным 3.4e38;
ierr=67 - когда значение аргумента больше или pавно 1. При l = 1 и l = 2; значение функции полагается равным 3.4e38;
ierr=68 - когда значение аргумента больше 1. При l = 3; значение функции полагается pавным 3.4e38;
ierr=69 - когда значение аргумента меньше или pавно 0. При l = 3; значение функции полагается равным 3.4e38.

Версии

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

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

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

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

 

Область допустимых значений аргумента для функции sf14r_c и sf14d_c указана выше при описании параметра ierr. Для функции sf14d_c аргумент  x  имеет тип двойной точности и при нарушении области допустимых значений функция sf14d_c полагается равной 1.7e308.

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

int main(void)
{
    /* Local variables */
    extern float sf14r_c(float *, int *, int *);
    static int ierr, l;
    static float x, y;

    l = 1;
    x = 0.f;
    y = (float)sf14r_c(&x, &l, &ierr);

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


Результаты:

       y  =  1.57079632679,     ierr = 0