Текст подпрограммы и версий ( Фортран )
sf13r.zip  sf13d.zip 
Тексты тестовых примеров ( Фортран )
tsf13r.zip  tsf13d.zip 
Текст подпрограммы и версий ( Си )
sf13r_c.zip  sf13d_c.zip 
Тексты тестовых примеров ( Си )
tsf13r_c.zip  tsf13d_c.zip 
Текст подпрограммы и версий ( Паскаль )
sf13r_p.zip , sf13e_p.zip
Тексты тестовых примеров ( Паскаль )
tsf13r_p.zip , tsf13e_p.zip

Функция:  SF13R

Назначение

Вычисление экспоненциальных интегралов.

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

Функция SF13R производит вычисления следующих интегралов

                   x
 (1)      y =  ∫ (et / t) dt ,                       для  x > 0.0
                -∞
                    
 (2)      y = - ∫ (e - t / t) dt ,                   для  x < 0.0
                   -x
                   
 (3)      y =  ∫ (e - t / t) dt ,                    для  x > 0.0
                  x
                           x
 (4)      y =  e - x  ∫ (et / t) dt ,              для  x > 0.0
                        -∞
                            
 (5)      y = - e - x  ∫ (e - t / t) dt ,          для  x < 0.0
                           -x

Алгоритм, реализованный в функции, изложен в статье
W.J.Cody, H.C.Thacher, Rational Chebyshev Approximation for the Exponential Integral Ei (x), Math. Comp. 23, 1969.

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

    FUNCTION  SF13R (X, L, IERR) 

Параметры

X - заданное значение аргумента  x (тип: вещественный);
L - задает режим работы функции (тип: целый); при этом если:
L = 1 - вычисляется интеграл (1), если  x > 0.0. или интеграл (2), если  x < 0.0;
L = 2 - вычисляется интеграл (3), если  x > 0.0;
L = 3 - вычисляется интеграл (4), если  x > 0.0, или интеграл (5), если  x < 0.0;
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы функции; при этом:
IERR= 1 -  когда аргумент задан отрицательным числом при L = 2; вычисления производятся с использованием абсолютного значения аргумента;
IERR=66 - когда значение L меньше 1 или больше 3; значение SF13R полагается равным 3.4E38;
IERR=67 - когда значение аргумента pавно 0.; значение SF13R полагается равным 3.4E38, если L = 2, или - 3.4E38, если L = 1 или 3;
IERR=68 - когда значение аргумента превосходит 43.66 при L = 1; значение SF13R полагается равным 3.4E38;
IERR=69 - когда значение аргумента меньше - 41.18 при L = 1 или 2; значение SF13R полагается равным 0.

Версии

SF13D - вычисление экспоненциальных интегралов (1) - (5) с повышенной точностью.

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

UTSF10 - подпрограмма выдачи диагностических сообщений при работе функции SF13R.
UTSF11 - подпрограмма выдачи диагностических сообщений при работе функции SF13D.

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

 

Область допустимых значений аргумента для функций SF13R и SF13D указана выше при описании параметра IERR, при этом в случае функции SF13D вместо 3.4E38 берется значение 1.7D308. Kpоме того, для функции SF13D аргумент  x имеет тип двойной точности и его максимальное значение pавно 2.04E3 при L = 1 или 2 (IERR = 68), а минимальное значение pавно - 2050 при L = 1 или 2 (IERR = 69).

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

         X = -0.5
         L = 1
         Y = SF13R (X, L, IERR)

Результаты: 

        Y = -0.559773594775,   IERR = 0