Главная страница Алгоритмы [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
Поскольку значения а и 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 |