Текст подпрограммы и версий
sf50r_p.zip , sf50e_p.zip
Тексты тестовых примеров
tsf50r_p.zip , tsf50e_p.zip

Функция:  SF50R (модуль SF50R_p)

Назначение

Вычисление полных эллиптических интегралов третьего рода П (x, k).

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

Функция SF50R производит вычисление интегралов вида:

                    π/2                    
   П (x, k) =  ∫  dt / (1 + x sin 2 t) (1 - k 2 sin 2 t) 1 / 2
                   0
   для    0 ≤ k 2 ≤ 1   и   x ≠ - 1 

J.F.Hart, E.W.Cheney, C.L.Lawson et al, Computer Approximations, Wiley, New York, 1968.

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

function SF50R(X :Real; RK2 :Real; var IERR :Integer): Real;

Параметры

X, RK2 - заданные значения аргументов x и k2 соответственно (тип: вещественный);
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы функции; при этом:
IERR=65 - когда значение X pавно - 1; значение функции полагается равным 3.4E38;
IERR=66 - когда значение RK2 меньше 0 или больше или pавно 1; значение функции полагается равным 3.4E38.

Версии

SF50E - вычисление полных эллиптических интегралов третьего рода с расширенной (Extended) точностью.

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

       SF14R -
       SF14E  
вычисление полных эллиптических интегралов первого рода с обычной и расширенной (Extended) точностью (используются в SF50R и SF50E соответственно).
       SF15R -
       SF15E  
вычисление полных эллиптических интегралов второго рода с обычной и расширенной (Extended) точностью (используются в SF50R и SF50E соответственно).
       SF19R -
       SF19E  
вычисление неполных эллиптических интегралов первого рода с обычной и расширенной (Extended) точностью (используются в SF50R и SF50E соответственно).
       SF20R -
       SF20E  
вычисление неполных эллиптических интегралов второго рода с обычной и расширенной (Extended) точностью (используются в SF50R и SF50E соответственно).
UTSF14 - подпрограмма выдачи диагностических сообщений при работе функции SF50R.
UTSF15 - подпрограмма выдачи диагностических сообщений при работе функции SF50E.

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

  Для функции SF50E параметры X и RK2 имеют тип Extended. Значение SF50E при IERR ≠ 0 полагается pавным 1.7E308.

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

Unit tsf50r_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, SF50R_p;

function tsf50r: String;

implementation

function tsf50r: String;
var
IERR :Integer;
X,RK2,R :Real;
begin
Result := '';  { результат функции }
X := 1.0;
RK2 := 0.5;
R := SF50R(X,RK2,IERR);
Result := Result + Format(' %20.16f  %5d ',[R,IERR]) + #$0D#$0A;
UtRes('tsf50r',Result);  { вывод результатов в файл tsf50r.res }
exit;
end;

end.


Результаты:   R  =  1.27312736674 ,    IERR = 0