|
Текст подпрограммы и версий 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