Статус документа
Статус документа

ГОСТ 20397-82 Средства технические малых электронных вычислительных машин. Общие технические требования, приемка, методы испытаний, маркировка, упаковка, транспортирование и хранение, гарантии изготовителя (с Изменениями N 1-6)

ПРИЛОЖЕНИЕ 5
Рекомендуемое

     
ПРОГРАММА ВЕТСТОУН
Аннотация


Программу Ветстоун применяют для определения производительности комплексов при решении научно-технических задач.

Программа является синтетической, она состоит из 11 модулей, осуществляющих:

работу с простыми переменными и массивами;

арифметические преобразования с фиксированной и плавающей запятой;

вызовы подпрограмм с передачей параметров;

вычисление стандартных функций.

Долевое участие каждого модуля в общем времени работы программы определяют с помощью весовых коэффициентов.

Время работы программы регулируется параметром внешнего цикла . Для программа содержит 100000 операций Ветстоун.

Программа построена настолько тщательно, что на времени ее выполнения практически не отражается оптимизирующая работа трансляторов.

С целью учета накладных расходов осуществляют два прогона программы, например, для и . В качестве расчетного показателя принимают время , где , - время работы и программы для и .

В тексте приводятся две версии программы:

типовая программа 1 - программа Ветстоун для операндов с одинарной точностью;

типовая программа 2 - программа Ветстоун для операндов с двойной точностью.

При расчете производительности на программе Ветстоун используется единица измерения "операций Ветстоун в секунду".

С

PROGRAM WHETSTONE 1

С

ОДИНАРНАЯ ТОЧНОСТЬ

С

COMMON Т, Т1, Т2, Е1 (4), J, К, L


Т =0.499975


Т1=0.5002


Т2=2.0


I=


N1=0


N2=12*I


N3=14*I


N4=345*I


N5=0


N6=210*I


N7=32*I


N8=899*I


N9=616*I


N10=0


N11=93*I

С*************

MODULE 1: SIMPLE IDENTIFIERS ******** **********


X1=1.0


X2=1.0


X3=-1.0


X4=-1.0


IF (N1) 19, 19, 11

11

DO 18 I=1, N1, 1


X1=(X1+X2+X3-X4)*T


Х2=(Х1+Х2-Х3+Х4)*Т


Х3= (Х1-Х2+Х3+Х4)*Т


Х4=(-Х1+Х2+Х3+Х4)*Т

18

CONTINUE

19

CONTINUE

С

CALL POUT (N1, N1, N, X1, X2, Х3, Х4)

С************

MODULE : 2 ARRAY ELEMENTS ********** ********


E1 (1)=1.0


E1 (2) =1.0


E1 (3)=1.0


E1 (4)=1.0


IF (N2) 29, 29, 21

21

DO 28 I=1, N2, 1


E1 (1)=(E1 (1)+E1 (2)+E1 (3)-E1 (4))*T


E1 (2)= (E1 (1)+E1 (2)-E1 (3)+E1 (4))*T


E1 (3)=E1 (1)-E1 (2)+E1 (3)+E1 (4)))*T


E1 (4)=(-E1 (1)+E1 (2)+E1 (3)+E1 (4))*T

28

CONTINUE

29

CONTINUE

С

CALL POUT (N2, N3, N2, E1 (1), E1 (2), E1 (3), E1 (4))

С************

MODULE 3: ARRAY AS PARAMETER ****************


E1 (1)=1.0


E1 (2)=-1.0


E1 (3)=-1.0


E1 (4)=-1.0


IF (N3) 39, 39, 31

31

DO 38 I=1, N3, 1

38

CALL PA (E1)

39

CONTINUE

С4

CALL POUT (N3, N2, N2, E1 (1), N1 (2) N1 (3), N1 (4))

С************

MODULE 4: CONDITIONAL JUMPS **************


J=1


IF (N4) 49, 49, 41

41

DO 48 I=1, N4, 1


IF (J-1) 43, 42, 43

42

J=2


GOTO 44

43

J=3

44

IF (J-2) 46, 46, 45

45

J=0


GOTO 47

46

J=1

47

IF (J-1) 411, 412, 412

411

J=1


GOTO 48

412

J=0

48

CONTINUE

49

CONTINUE

С4

CALL POUT (N, J, J, X1, X2, Х3, Х4)

С************

MODULE 5: OMITTED ***********************

С************

MODULE 6: INTEGER ARITHMETIC **********************


J=1


K=2


L=3


IF (N6) 69, 69, 61

61

DO 68 I=1, N6, 1


J=J*(K-J)*(L-K)


K=L*K-(L-J)*K


L=(L-K)*(K+J)


E1 (L-1)=J+K+L


E1 (K-1)=J*K*L

68

CONTINUE

69

CONTINUE

С

CALL POUT (N6, J, K, E1 (1), E1 (2), E1 (3), E1 (4)

С************

MODULE 7: TRIGONOMETRIC FUNCTION **********


X=0.5


Y=0.5


IF (N7) 79, 79, 71

71

DO 78 I=1, N7, 1

X=T*ATAN(T2*SIN (X)*COS (X)/(COS (X+Y)+COS (Х-Y)-1.0))

Y=T*ATAN(T2*SIN(Y)*COS((Y)/COS(X+Y)+CОS(X-Y)-1.0))

78

CONTINUE

79

CONTINUE

С


С

CALL POUT (N7, J, K, X, X, Y, Y)

С************

MODULE 8: SUBROUTINE CALLS**************


X=1.0


Y=1.0


Z=1.0


IF (N8) 89, 89, 81

81

DO 88 I=1, N8, 1

88

CALL P3 (X, Y, Z)

89

CONTINUE

С

CALL POUT (N8, J, К, X, Y, Z, Z)

С************

MODULE 9: ARRAY REFERENCES *******


J=1


K=2


L=3


E1 (1)=1.0


E1 (2) =2.0


E1 (3)=3.0


IF (N9) 99, 99, 91

91

DO 98 I=1, N9, 1

98

CALL PO

99

CONTINUE

С

CALL POUT (N9, J, K, E1 (1), E1 (2), E1 (3), E1 (4)

С************

MODULE 10: INTEGER ARITHMETICS ********


J=2


K=3


IF (N10) 109, 109, 101

101

DO 108 I=1, N10, 1


J=J+K


K=J+K


J=K-J


K=K-J-J

108

CONTINUE

109

CONTINUE

С

CALL POUT (N10, J, K, X1, X2, Х3, Х2)

С************

MODULE 11: STANDARD FUNCTION ********


X=0.75


IF (N11) 119, 119, 111

111

DO 118 I=1, N11, 1

118

X=SQRT (EXP (ALOG (H)/T1))

119

CONTINUE

С

CALL POUT (N11, J, К, X, X, X, X)

С

STOP


END


SUBROUTINE PA (E)


COMMON T, T1, T2


DIMENSION E (4)


J=0

1

E (1)=(Е (1)+E (2)+E (3)-E (4))*T

E (2)=(E (1)+E (2)-E (3)+E (4))*T

E (3)=(E (1)-E (2)+E (3)+E (4))*T

E (4)=(-E (1)+E (2)+E (3)+E (4))/T2


J=J+1


IF (J-6) 1, 2, 2

2

CONTINUE


RETURN


END


SUBROUTINE PO


COMMON T, T1, T2, E1 (4), J, К, L


E1 (J)=E1 (K)


E1 (K)=E1 (L)


E1 (L)=E1 (J)


RETURN


END


SUBROUTINE P3 (X, Y, Z)


COMMON T, T1, T2


X1=X


Y1=Y


X1=T*(X1+Y1)


Y1=T*(X1+Y1)


Z=(Х1+Y1)/T2


RETURN


END

SUBROUTINE POUT (N, J, K, X1, X2, Х3, Х4)

C

WRITE (1, 1) N, J, K, X1, X2, X2, Х4

1

FORMAT ('     ', 317, 4E12, 4)


RETURN

END

С

PROGRAM WHETSTONE 2

C

ДВОЙНАЯ ТОЧНОСТЬ

C

COMMON T, T1, T2, E1 (4), J, K, L

IMPLICIT DOUBLE PRECISION (A-H, O-Z)


T =0.499975


T 1=0.5002


T2=2.0


I=


N1=0


N2=12*I


N3=14*I


N4=345*I


N5=0


N6=210*I


N7=32*I


N8=899*I


N9=616*I


N10=0


N11=93*I

C*************

MODULE 1: SIMPLE IDENTIFIERS*******************


X1 =1.0


Х2=-1.0


Х3=-1.0


X4=-1.0


IF (N1) 19, 19, 11

11

DO 18 I=1, N1, 1


X1=(X1+X2+X3-X4) *T


Х2=(Х1+Х2-Х3+Х4)*Т


Х3=(X1-Х2+Х3+Х4) *Т


Х4=(-Х1+Х2+Х3+Х4)*Т

18

CONTINUE

19

CONTINUE

С

CALL POUT (N1, N1, N, XI, X2, ХЗ, Х4)

С***********

MODULE : 2 ARRAY ELEMENTS ************ ******


E1 (1)=1.0


E1 (2) =1.0


E1 (3)=1.0


E1 (4)=1.0


IF (N2) 29, 29, 21

21

DO 28 I=1, N2, 1


E1 (1)=(E1 (1)+E1 (2)+E1 (3)-E1 (4))*T


E1 (2)=(E1 (1)+E1 (2)-E1 (3)+E1 (4))*T


E1 (3)=(E1 (1)-E1 (2)+E1 (3)+E1 (4)))*T


E1 (4)=(-E1 (1)+E1 (2)+E1 (3)+Е1 (4))*Т

28

CONTINUE

29

CONTINUE

С

CALL POUT (N2, N3, N2, E1 (1), E1 (2), E1 (3), E1 (4))

С***********

MODULE 3: ARRAY AS PARAMETER *******************


E1 (1)=1.0


E1 (2)=-1.0


E1 (3)=-1.0


E1 (4)=-1.0


IF (N3) 39, 39, 31

31

DC 38 I=1, N3, 1

38

CALL PA (E1)

39

CONTINUE

С4

CALL POUT (N3, N2, N2, E1 (1), N1 (2), N1 (3), N1 (4))

С**********

MODULL 4: CONDITIONAL JUMPS ********** ****


J=1


IF (N4) 49, 49, 41

41

DO 48 I=1, N4, 1


IF (J-1) 43, 42, 43

42

J=2


GOTO 44

43

J = 3

44

IF (J-2) 46, 46, 45

45

J=0


GOTO 47

46

J=1

47

IF (J-1) 411, 412, 412

411

J=1


GOTO 48

412

J=0

48

CONTINUE

49

CONTINUE

С4

CALL POUT (N4, J, J, X1, X2, Х3, Х4)

C************

MODULE 5: OMITTED***********************

C************

MODULE 6: INTEGER ARITHMETIC ************


J=1


K=2


L=3


IF (N6) 69, 69, 61

61

DO 68 I=1, N6, 1


J=J*(K-J)*(L-K)


K=L*K-(L-J)*K


L=(L-K)*(K+J)


E1 (L-1)=J+K+L


E1 (K-1)=J*K*L

68

CONTINUE

69

CONTINUE

C

CALL POUT (N6, J, К, E1 (1), E1 (2), E1 (3), E1 (4))

C**********

MODULE 7: TRIGONOMETRIC FUNCTION**********


X=0.5


Y=0.5


IF (N7) 79, 79, 71

71

DO 78 I=1, N7, 1

X=T*ATAN(T2*SIN(X)*COS(X)/(COS(X+Y)+COS(X-Y)-1.0))

Y=T*ATAN (T2*SIN(Y)*COS (Y)/(COS(X+Y)+COS(X-Y)-1.0))

78

CONTINUE

79

CONTINUE

C

С

POUT (N7, J, K, X, X, Y, Y)

С************

MODULE 8: SUBROUTINE CALLS ***************


X=1.0


Y = 1.0


Z= 1.0


IF (N8) 89, 89, 81

81

DO 88 I=1, N8, 1

88

CALL P3 (X, Y, Z)

89

CONTINUE

C

CALL POUT (N8, J, K, X, Y, Z, Z)

С************

MODULE 9: ARRAY REFERENCES *******


J=1


K=2


L=3


E1 (1)=1.0


E1 (2)=2.0


E1 (3)=3.0


IF (N9) 99, 99, 91

91

DO 98 I=1, N9, 1

98

CALL PO

99

CONTINUE

C

CALL POUT (N9, J, K, E1 (1), E1 (2), E1 (3), E1 (4))

C**********

MODULE 10: INTEGER ARITHMETICS ********


J=2

K=3


IF (N10) 109, 109, 101

101

DO 108 I=1, N10, 1


J =J+K


K=J+K


J =K-J


K=K-J-J

108

CONTINUE

109

CONTINUE

С

CALL POUT (N10, J, K, X1, X2, Х3, Х4)

C************

MODULE 11: STANDARD FUNCTION ********


X=0.75


IF (N11) 119, 119, 111

111

DO 118 I=1, N11, 1

118

X=SQRT(EXP (ALOG (X)/T1))

119

CONTINUE

С

CALL POUT (N11, J, K, X, X, X, X)

С

END OF TIME INTERVAL


END


SUBROUTINE PA (E)


IMPLICIT DOUBLE PRECISION (A-H, O-Z)


DIMENSION E (4)


COMMON T, T1, T2


J=0

1

E (1)=(E(1)+E (2)+E (3)-E (4))*T


E (2)=(E (1)+E (2)-E (3)+E (4))*T


E (3)=(E (1)-E (2)+E (3)+E (4))*T


E (4)=(-E (1)+E (2)+E (3)+E (4))/T2


J=J+1


IF (J-6) 1, 2, 2

2

CONTINUE


RETURN


END


SUBROUTINE PO


IMPLICIT DOUBLE PRECISION (A-H, O-Z)


COMMON T, T1, T2, E1 (4), J, K, L


E1 (J)=E1 (K)


E1 (K)=E1 (L)


E1 (L)=E1 (J)


RETURN


END


SUBROUTINE P3 (X, Y, Z)


IMPLICIT DOUBLE PRECISION (A-H, O-Z)


COMMON T, T1, T2


X1=X


Y1=Y


X1=T*(X1+Y1)


Y1=T*(X1+Y1)


Z=(X1+Y1)/T2


RETURN


END


SUBROUTINE POUT (N, J, K, X1, X2, Х3, Х4)


IMPLICIT DOUBLE PRECISION (A-H, O-Z)

С

WRITE (1, 1) N, J, K, X1, X2, X2, Х4

1

FORMAT ('     ', 317, 4E12, 4)


RETURN

END