Page 13 - М.Ю. Барышникова, А.Ф. Деон, А.В. Силантьева - СКОРОСТНЫЕ СВОЙСТВА АЛГОРИТМОВ СЛОЖЕНИЯ И ВЫЧИТАНИЯ ЦЕЛЫХ ЧИСЕЛ ПРОИЗВОЛЬНОГО РАЗМЕРА

int nb
=
pnb
;
int nc
= 0
,
которые используют три операции над
целыми числами. Их количество обозначим как
W
+
1
= 3
.
На втором этапе, выполняемом по инструкции выбора
if( a[na-1] == ’+’ && b[nb-1] == ’+’ ) //a >= 0, b >= 0
return nc = BinaryAdd( c, a, pna, b, pnb ); //c = a + b
затрачиваются четыре операции для
a
[
na
1]
== ’+’, затем четыре
операции для
b
[
nb
1]
== ’+’ и одна операция для булевой дизъюнк-
ции &&. Если условие истинно, то на выполнение операций внутри
функции
BinaryAdd
(
c, a, pna, b, pnb
)
используется количество опера-
ций, равное
BA
2
.
Если условие функции выбора ложно, то функция
BinaryAdd
( )
не выполняется. Итак, при ложном или истинном условии
осуществляется следующее количество операций:
минимальное
W
+
2
min
= 9;
максимальное
W
+
2
max
= 9 +
BA
2
.
Если на втором этапе не выполняется сложение, то следует третий
этап по инструкции выбора:
if( a[na-1] == ’-’ && b[nb-1] == ’-’ ) //a < 0, b < 0
{
nc = BinaryAdd( c, a, pna, b, pnb ); //c = a + b
c[nc-1] = ’-’; //c = -( a + b )
return nc;
}
Вычисление условия осуществляется, как и на предыдущем этапе,
за девять операций. При истинности условия выполняется функция
BinaryAdd
(
c, a, pna, b, pnb
)
за
BA
3
операций. Инструкция присва-
ивания
c
[
nc
1]
= ’–’ применяет две операции. Итак, при ложном
или истинном условии используется минимальное или максимальное
количество операций соответственно:
W
+
3
min
= 9;
W
+
3
max
= 9 +
BA
3
+ 2 = 11 +
BA
3
.
Если на третьем этапе не выполняется сложение, то по инструкции
выбора следует четвертый этап:
if( a[na-1] == ’+’ && b[nb-1] == ’-’ ) //a >= 0, b < 0
return nc = BinarySubtract( c, a, pna, b, pnb );//c = a - b
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2012
51