%BEGIN %REAL X, Y, Z; %COMMENT %LIBRARY A6, A30; %COMMENT A6, A30 ARE THE STANDARD FUNCTIONS AND INPUT/OUTPUT ROUTINES; %REALPROCEDURE CPUTIME; %EXTERNAL REALCPUTIME; %INTEGER I, N, K, L, M, CASE; %INTEGERARRAY E1[1 : 1], E2[1 : 1, 1 : 1], E3[1 : 1, 1 : 1, 1 : 1]; %PROCEDURE P0; ; %PROCEDURE P1(X); %VALUE X; %REAL X; ; %PROCEDURE P2(X, Y); %VALUE X, Y; %REAL X, Y; ; %PROCEDURE P3(X, Y, Z); %VALUE X, Y, Z; %REAL X, Y, Z; ; %ARRAY TT[1 : 43]; %PROCEDURE PRINTTT; %BEGIN %INTEGER I; %REAL X, MIX, LOOP; %COMMENT CALCULATE AND PRINT TIME DIFFERENCES; %FOR I := 1 %STEP 1 %UNTIL 42 %DO %BEGIN TT[I] := X := TT[I + 1] - TT[I]; OUTREAL(99, X) %END; %COMMENT CALCULATE ALGOL MIX FIGURE AS FROM CCU11, MAKING ALLOWANCE FOR STATEMENT REPETITIONS; LOOP := X; MIX := 0.0; I := 1; %FOR X := 1000, 875, 769, 3337, 6242, 2750, 187.5, 125, 430, 995.6, 160.3, 384.6, 500, 166.7, 1390, 154.5, 442, 4759, 5321, 148, 4759, 0, 59, 59, 39, .73, 201, 94, 1020, 1490, 278, 831, 644, 1750, 591, 27.3, 454.5, 788, 2316, 2316, 6053 %DO %BEGIN MIX := MIX + (TT[I] - LOOP) * X / N; I := I + 1 %END; MIX := MIX + LOOP * 17800 / N; OUTREAL(99, 6524512 / MIX) %END; X := Y := Z := 1.0; L := K := M := 1; E1[1] := 1; CASE := 1; N := 10000; %COMMENT N SHOULD BE GIVEN A LARGE ENOUGH VALUE FOR THE RESOLUTION OF THE CLOCK NOT TO BE A LIMITING FACTOR TO THE ACCURACY. IF N IS MADE TOO LARGE, THEN PROCESSOR TIME WILL BE WASTED; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN X := 1.0; X := 1.0; X := 1.0; X := 1.0; X := 1.0; X := 1.0; X := 1.0; X := 1.0; X := 1.0; X := 1.0; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN X := 1; X := 1; X := 1; X := 1; X := 1; X := 1; X := 1; X := 1; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN X := Y; X := Y; X := Y; X := Y; X := Y; X := Y; X := Y; X := Y; X := Y; X := Y; X := Y; X := Y; X := Y; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN X := Y + Z; X := Y + Z; X := Y + Z; X := Y + Z; X := Y + Z; X := Y + Z; X := Y + Z; X := Y + Z; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN X := Y * Z; X := Y * Z; X := Y * Z; X := Y * Z; X := Y * Z; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN X := Y / Z; X := Y / Z; X := Y / Z; X := Y / Z; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN K := 1; K := 1; K := 1; K := 1; K := 1; K := 1; K := 1; K := 1; K := 1; K := 1; K := 1; K := 1; K := 1; K := 1; K := 1; K := 1; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN K := 1.0; K := 1.0; K := 1.0; K := 1.0; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN K := L + M; K := L + M; K := L + M; K := L + M; K := L + M; K := L + M; K := L + M; K := L + M; K := L + M; K := L + M; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN K := L * M; K := L * M; K := L * M; K := L * M; K := L * M; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN K := L %DIV M; K := L %DIV M; K := L %DIV M; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN K := L; K := L; K := L; K := L; K := L; K := L; K := L; K := L; K := L; K := L; K := 1; K := 1; K := L; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN X := L; X := L; X := L; X := L; X := L; X := L; X := L; X := L; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN L := Y; L := Y; L := Y; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN X := Y**2; X := Y**2; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN X := Y**3; X := Y**3; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO X := Y**Z; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN E1[1] := 1; E1[1] := 1; E1[1] := 1; E1[1] := 1; E1[1] := 1; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN E2[1, 1] := 1; E2[1, 1] := 1; E2[1, 1] := 1; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN E3[1, 1, 1] := 1; E3[1, 1, 1] := 1; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN L := E1[1]; L := E1[1]; L := E1[1]; L := E1[1]; L := E1[1]; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN %BEGIN %REAL A; %END; %BEGIN %REAL A; %END; %BEGIN %REAL A; %END; %BEGIN %REAL A; %END; %BEGIN %REAL A; %END; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN %ARRAY A[1 : 1]; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN %ARRAY A[1 : 500]; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN %ARRAY A[1 : 1, 1 : 1]; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN %ARRAY A[1 : 1, 1 : 1, 1 : 1]; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN %GOTO L0; L0 :; %GOTO L1; L1 :; %GOTO L2; L2 :; %GOTO L3; L3 :; %GOTO L4; L4 :; %GOTO L5; L5 :; %GOTO L6; L6 :; %GOTO L7; L7 :; %GOTO L8; L8 :; %GOTO L9; L9 :; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN %SWITCH SS := PQ; %GOTO SS[1]; PQ :; %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO X := SIN(Y); TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO X := COS(Y); TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN X := ABS(Y); X := ABS(Y); X := ABS(Y); X := ABS(Y); X := ABS(Y); %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO X := EXP(Y); TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO X := LN(Y); TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO X :=SQRT(Y); TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO X := ARCTAN(Y); TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN X := SIGN(Y); X := SIGN(Y); X := SIGN(Y); %END; TT[CASE] := CPUTIME; CASE := CASE+1; %FOR I := 1 %STEP 1 %UNTIL N %DO %BEGIN X := ENTIER(Y); X := ENTIER(Y); %END; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO P0; TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO P1(X); TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO P2(X, Y); TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO P3(X, Y, Z); TT[CASE] := CPUTIME; CASE := CASE + 1; %FOR I := 1 %STEP 1 %UNTIL N %DO ; TT[CASE] := CPUTIME; PRINTTT; %END