|
Текст подпрограммы и версий sf83r_c.zip sf83d_c.zip |
Тексты тестовых примеров tsf83r_c.zip tsf83d_c.zip |
Вычисление неполного эллиптического интеграла el2 (x, kc, a, b) второго рода общего вида.
Подпрограмма - функция sf83r_c вычисляет неполный эллиптический интеграл второго рода общего вида:
x
el2(x, kc, a, b) = ∫ [(a + b t 2) dt] / [ (1 + t 2) ( (1 + t 2)(1 + kc2 t 2) ) 1/2 ] ,
0
где x ≥ 0, kc, a, b - вещественные числа.
Справочник по специальным функциям. Под ред. Абрамовица М. и Стиган И., Изд - во "Наука", 1979.
real sf83r_c (real *x, real *rkc, real *a, real *b)
Параметры
|
x, rkc - a, b | заданные значения аргументов x, kc, a и b соответственно (тип: вещественный). |
Версии
| sf83d_c - | вычисление неполного эллиптического интеграла el2 (x, kc, a, b) второго рода общего вида в режиме удвоенной точности; при этом все параметры функции sf83d_c должны иметь тип double, а сама функция должна быть описана как double. |
Вызываемые подпрограммы: нет
Замечания по использованию: нет
int main(void)
{
/* Builtin functions */
double sqrt(double);
/* Local variables */
extern float sf83r_c(float *, float *, float *, float *);
static float a, r__, x, rkc, rkc2;
x = 1.0471975500000001f;
rkc2 = .25f;
rkc = (float)sqrt(rkc2);
a = 1.f;
r__ = (float)sf83r_c(&x, &rkc, &a, &rkc2);
printf("\n %16.7e %16.7e \n",rkc,r__);
return 0;
} /* main */
Результат: r__ = 0.746321