Текст подпрограммы и версий
zp54r_c.zip  zp54d_c.zip 
Тексты тестовых примеров
tzp54r_c.zip  tzp54d_c.zip 

Функция:  zp54r_c

Назначение

Вычисление присоединенного полинома Лежандра первого рода.

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

Подпрограмма - функция zp54r_c вычисляет значение в точке  X присоединенного полинома Лежандра первого рода

                PLM(X)  =  (- 1)M (1 - X2)M/2   dM( PL(X) )/dXM  , 

где PL (X) = ( 1/( 2L L!) ) dL( (X2 - 1)L )/dXL
является полиномом Лежандра первого рода  L - й степени.

Справочник по специальным функциям. Под ред. Абрамовица М. и Стиган И. Изд - во "Наука", 1979.

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

    real zp54r_c (integer *l, integer *m, real *x, integer *ierr)

Параметры

l, m - заданные значения  L и  M (тип: целый);
x - заданное значение агрумента (тип: вещественный);
ierr - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы - функции; при этом:
ierr=65 - когда значения  l и  m не удовлетворяют соотношению 0 ≤ m ≤ l;
ierr=66 - когда значение  x лежит вне отрезка [- 1, 1].

Версии

zp54d_c - вычисление присоединенного полинома Лежандра первого рода в режиме удвоенной точности; при этом параметр  x должен иметь тип double, а функция zp54d_c должна быть описана как double .

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

utzp12_c -
utzp13_c  
подпрограммы выдачи диагностических сообщений при работе функций zp54r_c и zp54d_c соответственно.

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

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

int main(void)
{
    /* Builtin functions */
    double sqrt(double);

    /* Local variables */
    static int ierr;
    extern float zp54r_c(int *, int *, float *, int *);
    static float x, r1, r2;

    x = .5f;
    r1 = (float)zp54r_c(&c__2, &c__1, &x, &ierr);

    r2 = (float)sqrt(1 - x * x) * -3 * x;
    printf("\n %15.6e \n", r1);
    printf("\n %15.6e \n", r2);
    printf("\n %5i \n", ierr);
    return 0;
} /* main */


Результаты:

          r1   = - 1.29904 
          ierr = 0