Текст подпрограммы и версий sf84r_c.zip sf84d_c.zip |
Тексты тестовых примеров tsf84r_c.zip tsf84d_c.zip |
Вычисление полного эллиптического интеграла cel (kc, p, a, b) второго рода общего вида.
Подпрограмма - функция sf84r_c вычисляет полный эллиптический интеграл второго рода общего вида:
∞ cel( kc, p, a, b) = ∫ [(a + b t 2) dt] / [ (1 + p t 2) ( (1 + t 2)(1 + kc2 t 2) ) 1/2 ] , 0
где kc, p, a, b - вещественные числа
Справочник по специальным функциям. Под ред. Абрамовица М. и Стиган И., Изд - во "Наука", 1979.
real sf84r_c (real *rkc, real *p, real *a, real *b)
Параметры
rkc, p - a, b | заданные значения аргументов kc, p, a и b соответственно (тип: вещественный) |
Версии
sf84d_c - | вычисление полного эллиптического интеграла cel (kc, p, a, b) второго рода общего вида в режиме удвоенной точности; при этом все параметры функции sf84d_c должны иметь тип double, а сама функция должна быть описана как double. |
Вызываемые подпрограммы: нет
Замечания по использованию
Если rkc = 0 и b = 0, то значение функции полагается равным 1. Если rkc = 0 и b ≠ 0, то значение функции полагается равным наибольшему представимому на используемой машине числу (это означает, что при данном условии интеграл расходится) |
int main(void) { /* Local variables */ extern float sf84r_c(float *, float *, float *, float *); static float a, b, p, r__, rkc; rkc = .5f; p = 1.f; a = 1.f; b = 1.f; r__ = (float)sf84r_c(&rkc, &p, &a, &b); printf("\n %16.7e \n",r__); return 0; } /* main */ Результат: r__ = 2.15652