Главная страница  Алгоритмы 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [ 40 ] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57]

z: = zXy

tend i; Процедура была проверена для следующих вещест-ных значений аргумента: 1. х=0(0.1)1; т=0(1)3; п=0(1)3. 2. 1.2(0.2)2.8; /п=0(1)2; п=0(1)2. 3. л;=0(0.2)1; 2(2)10; т=0; п=9. Для проверки мнимых значений аргумента были взя-следующие значения параметров: ж=0(0.2)2; m=0(l)2; п=0(1)2.

Для вещественных аргументов результаты сверялись там, где это возможно, с данными работы М. Абрамовича и И. Стегуна [81]. Во всех случаях было получено совпадение по всем данным в этой работе цифрам, число которых изменялось от 6 до 8. Во всех других случаях использовалась работа П. Морзе и Г. Фесбаха [9i], дающая возможность проверить только пять цифр.

АЛГОРИТМ 486

Логарифм комплексного числа

Процедура togc вычисляет c+di, равное главному значению натурального логарифма от а+Ы, т. е. такое, что -я<;с?л. Если параметры а=Ь - 0, то осущест-Мяется выход к метке infin. В процедуре используется число 1.03972077084=In ]/8.

Эта процедура была цроверена с использованием транслятора DEUCE ALGOL. Несколько образцов контрольных данных и результатов приведены в табл. 20.

Таблица 20

-2 -2 -1 -1 +0

±S

+ 1 -1

±1

-1 +0 -2 + 1

+ 1.039721 +0.804719 +0.346573 +0.000000 +0.693147 +0.000000 +0.000000 +0.693147 +0.346573 +0.000000 +1.039721 +0.804719

-2.356194 +2.677945 -2.356194 +3.141593 -1.570796 -1.570796 + 1.570796 +1.570796 -0.785398 +0.000000 -0.785398 +0.463047



procedure logo(a,b,infin) result: (c,d);

value a,b; real a,b,c,d; label infin; begin real r,pi;

if а=ОДЬ=0 then go to infin; comment Bo избежание переполнения при вычис-Ленин aF+b и обращения этой суммы в машинный нуль в следующих операторах вводятся соответствующие множители; г: = 1.03972077084; if abs(a),<l Д abs(b) <1 then begin c: = abs(2Xa)+abs(2Xb);

d: = 8Xa/cXa + 8Xb/cXb; r:=:-r end else

begin c: = 0.25Xabs(a) +0.25Xabs(b); d: = 0.125Xa/cXa + 0.125Xb/cXb

---end; --

c:=0.5x(ln(c)+ln(d))+r; pi:=3.14l59265359;

d: = if a:70Aabs(a)abs(b) then arctan(b/a) + (if a>0 then 0 else

if bO then pi else -pi) else sign (b) X pi/2-arctan(a/b) • .

end logc;

Свидетельство к алгоритму 486

Алгоритм 486 получен в результате внесения в алгоритм 48а поправки, указанной в нижеследующем «Замечании и подтверждении к алгоритму 48а». Поскольку с этой поправкой алгоритм 48а был уже проверен на машине, то новой трансляции алгоритма 486 не делалось.

Свидетельство к алгоритму 48а

Алгоритм 48а получен в результате сокращений и ординарной переработки алгоритма 243 (Col lens D. S. «САСМ», 1964,№ И),который был предложен в «САСМ» вместо алгоритма 48 (Herndon J. R. «САСМ», 1961, № 4). Поэтому переводы «Подтверждения к алгоритму 48» (Relph А. Р. «САСМ», 1962, № 6), «Замечания к алгоритму 48» (Johnson М. L., S а п g г е п W. «САСМ», 1962, № 7) и «Подтверждения к алгоритму 48» Со 11 ens D. S. «САСМ», 1964, № 8) здесь ие приводятся как потерявшие свое значение.



Замечание и подтверждение к алгоритму 48а

М. И. Агеев, Ю. И. Марков, Москва, 1967

ГВ алгоритме 48а вместо оператора d:=0.25Xa/cXa + 0.25Xb/cXb должен быть оператор

d: = 0.125Xa/cXa+0.125Xb/cXb

РС этой поправкой алгоритм 48а был транслирован в системе ТА-1 при значениях а и Ь, приведенных в табл. 20. Результаты трансляции совпали со значениями с и из этой таблицы. Кроме того, для проверки работы процедуры, когда одновременно а и b меньше единицы, были проведены дополнительные решения, результаты которых указаны в табл. 21.

Таблица 21

Результаты трансляции

Контрольные значения

0.06

0.02

-2.76073О16

0.321750Б54

-2.76073047

0.321750560

0.01

0.01

-4.25859659

0.785398163

-4.25859860

0.78539817

-0.02

0.00

-3.91202300

3.14159265

-3.91202301

3.14159264

0.01

-0.01

-4.25859659

-0.785398163

-4.25859660

-0.785398163

0.06

-0.02

-2.76073016

-0.321750554

-2.76073046

-0.321750Б54

Поскольку значения а и b из табл. 21 являются компонентами попарных произведений чисел a + ib из табл. 20, разделенных предварительно на 10, то контрольные значения табл. 21 .легко получаются в результате простого сложения соответствующих чисел табл. 20 и вычитания числа «100=4.60517019 из полученной суммы.

АЛГОРИТМ 496

Сферическая функция Неймана (функция Сток-

eaj i[S17]

Процедура sphben вычисляет сферическую функцию Heимaнa\/cJ2xNI(x). Из процедуры предусмотрен выход к глобальной метке signal 49 в случае л:=0, когда Функция Неймана теряет смысл.




[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [ 40 ] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57]

0.024