Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.ru/lib_na/cat/sf_htm_c/sf14r_c.htm
Дата изменения: Thu Mar 5 09:55:46 2015 Дата индексирования: Sun Apr 10 02:29:46 2016 Кодировка: Windows-1251 |
Текст подпрограммы и версий sf14r_c.zip sf14d_c.zip |
Тексты тестовых примеров tsf14r_c.zip tsf14d_c.zip |
Вычисление полных эллиптических интегралов первого рода.
Функция 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