| [2362] | 1 | PROGRAM MAIN | 
|---|
|  | 2 | IMPLICIT NONE | 
|---|
|  | 3 | C      PARAMETER M = 50000 | 
|---|
|  | 4 | DOUBLE PRECISION MX1(1000,500), MX2(1000,500), MX3(1000,500) | 
|---|
|  | 5 | DOUBLE PRECISION MX4(1000,500), MX5(1000,500) | 
|---|
|  | 6 | INTEGER I,J,K,NTIME,TYP | 
|---|
|  | 7 | DOUBLE PRECISION X,Y,Z,C1,C2,C3 | 
|---|
|  | 8 |  | 
|---|
|  | 9 | CALL FInitTim() | 
|---|
|  | 10 | NTIME = 50 | 
|---|
|  | 11 | TYP = 3 | 
|---|
|  | 12 | PRINT *,' Remplissage MX1 MX2 (1000x500) - NTimes=', NTIME | 
|---|
|  | 13 | DO K=1,NTIME | 
|---|
|  | 14 | X = FLOAT(K)*0.00314 | 
|---|
|  | 15 | Y = SIN(X) | 
|---|
|  | 16 | CALL FILLMTX(K,X,Y,MX1,MX2,MX3) | 
|---|
|  | 17 | ENDDO | 
|---|
|  | 18 |  | 
|---|
|  | 19 | PRINT *, 'FIN Remplissage ' | 
|---|
|  | 20 | CALL FPrtTim(1) | 
|---|
|  | 21 |  | 
|---|
|  | 22 | DO K=1,NTIME | 
|---|
|  | 23 | C1 = K*0.035 | 
|---|
|  | 24 | C2 = COS(C1)+0.04 | 
|---|
|  | 25 | C3 = SIN(C1*5.) | 
|---|
|  | 26 | CALL OPERMTX(K, MX1, MX2, MX5, C1, C2, C3) | 
|---|
|  | 27 | ENDDO | 
|---|
|  | 28 | PRINT *, 'FIN  MX5 = C1*MX1 + MX1 * MX2*C2 + MX2C3 ' | 
|---|
|  | 29 | CALL FPrtTim(2) | 
|---|
|  | 30 |  | 
|---|
|  | 31 | DO K=1,NTIME | 
|---|
|  | 32 | C1 = K*0.055 | 
|---|
|  | 33 | C2 = COS(C1*1.6)+0.023 | 
|---|
|  | 34 | C3 = SIN(C1*2.5) | 
|---|
|  | 35 | CALL OPADDMTX(K, MX1, MX2, MX3, MX5, C1, C2, C3) | 
|---|
|  | 36 | ENDDO | 
|---|
|  | 37 | PRINT *, 'FIN  MX5 = C1*MX1 + C2*MX2 + C3*MX3 ' | 
|---|
|  | 38 | CALL FPrtTim(3) | 
|---|
|  | 39 |  | 
|---|
|  | 40 | DO K=1,NTIME | 
|---|
|  | 41 | C1 = K*0.055 | 
|---|
|  | 42 | C2 = COS(C1*1.6)+0.023 | 
|---|
|  | 43 | C3 = SIN(C1*2.5) | 
|---|
|  | 44 | CALL MTXBLAS(K, MX1, MX2, MX3, MX4, MX5, C1, C2, C3) | 
|---|
|  | 45 | ENDDO | 
|---|
|  | 46 | PRINT *, 'FIN  MTXBLAS MX5 = C1*MX1 + C2*MX2 + C3*MX3 ' | 
|---|
|  | 47 | CALL FPrtTim(4) | 
|---|
|  | 48 |  | 
|---|
| [2366] | 49 | DO K=1,NTIME | 
|---|
|  | 50 | C1 = K*0.135 | 
|---|
|  | 51 | C2 = COS(6.*C1)+0.04 | 
|---|
|  | 52 | C3 = SIN(C1*8.5) | 
|---|
|  | 53 | CALL OPEFMTX(K, MX1, MX2, MX5, C1, C2, C3) | 
|---|
|  | 54 | ENDDO | 
|---|
|  | 55 | PRINT *, 'FIN  MX5 = C1*MX1 + MX3 + COS(C2*MX2*MX1) ' | 
|---|
|  | 56 | CALL FPrtTim(5) | 
|---|
|  | 57 |  | 
|---|
| [2362] | 58 | PRINT *, ' ------ FIN programme ---------- ' | 
|---|
|  | 59 | END | 
|---|
|  | 60 |  | 
|---|
|  | 61 | SUBROUTINE FILLMTX(K, X,Y, MX1, MX2, MX3) | 
|---|
|  | 62 | DOUBLE PRECISION X,Y | 
|---|
|  | 63 | DOUBLE PRECISION MX1(1000,500), MX2(1000,500), MX3(1000,500) | 
|---|
|  | 64 | INTEGER I,J,K | 
|---|
|  | 65 | DO I=1,1000 | 
|---|
|  | 66 | DO J=1,500 | 
|---|
|  | 67 | MX1(I,J) = K*300.+10.*I+J+X | 
|---|
|  | 68 | MX2(I,J) = K*550.+20.*I+2.*J+Y | 
|---|
|  | 69 | MX3(I,J) = K*860.+40.*I+7.*J+Y*3.14 | 
|---|
|  | 70 | ENDDO | 
|---|
|  | 71 | ENDDO | 
|---|
|  | 72 | IF (K.EQ.5) PRINT *, 'FILLMTX - 5 -> ', MX1(12,14) | 
|---|
|  | 73 | IF (K.EQ.15) PRINT *, 'FILLMTX - 15 -> ', MX2(12,15) | 
|---|
|  | 74 |  | 
|---|
|  | 75 | RETURN | 
|---|
|  | 76 | END | 
|---|
|  | 77 |  | 
|---|
|  | 78 | SUBROUTINE OPERMTX(K, MX1, MX2, MX5, C1, C2, C3) | 
|---|
|  | 79 | INTEGER I,J,K | 
|---|
|  | 80 | DOUBLE PRECISION MX1(1000,500), MX2(1000,500) | 
|---|
|  | 81 | DOUBLE PRECISION MX5(1000,500) | 
|---|
|  | 82 | DOUBLE PRECISION C1,C2,C3 | 
|---|
|  | 83 | DO I=1,1000 | 
|---|
|  | 84 | DO J=1,500 | 
|---|
|  | 85 | MX5(I,J) = C1*MX1(I,J)+MX1(I,J)*(MX2(I,J)*C2)+MX2(I,J)*C3 | 
|---|
|  | 86 | ENDDO | 
|---|
|  | 87 | ENDDO | 
|---|
|  | 88 | IF (K.EQ.5) PRINT *, 'OPERMTX - 5 -> ', MX5(20,5) | 
|---|
|  | 89 | IF (K.EQ.15) PRINT *, 'OPEEMTX - 15 -> ', MX5(20,15) | 
|---|
|  | 90 | RETURN | 
|---|
|  | 91 | END | 
|---|
|  | 92 |  | 
|---|
| [2366] | 93 | SUBROUTINE OPEFMTX(K, MX1, MX2, MX5, C1, C2, C3) | 
|---|
|  | 94 | INTEGER I,J,K | 
|---|
|  | 95 | DOUBLE PRECISION MX1(1000,500), MX2(1000,500) | 
|---|
|  | 96 | DOUBLE PRECISION MX5(1000,500) | 
|---|
|  | 97 | DOUBLE PRECISION C1,C2,C3 | 
|---|
|  | 98 | DO I=1,1000 | 
|---|
|  | 99 | DO J=1,500 | 
|---|
|  | 100 | MX5(I,J) = C1*MX1(I,J)+MX2(I,J)+ | 
|---|
|  | 101 | +                 C3*COS(C2*MX2(I,J)*MX1(I,J)) | 
|---|
|  | 102 | ENDDO | 
|---|
|  | 103 | ENDDO | 
|---|
|  | 104 | IF (K.EQ.5) PRINT *, 'OPEFMTX/COS - 5 -> ', MX5(20,5) | 
|---|
|  | 105 | IF (K.EQ.15) PRINT *, 'OPEFMTX/COS - 15 -> ', MX5(20,15) | 
|---|
|  | 106 | RETURN | 
|---|
|  | 107 | END | 
|---|
|  | 108 |  | 
|---|
| [2362] | 109 | SUBROUTINE OPADDMTX(K, MX1, MX2, MX3, MX5, C1, C2, C3) | 
|---|
|  | 110 | INTEGER I,J,K | 
|---|
|  | 111 | DOUBLE PRECISION MX1(1000,500), MX2(1000,500) | 
|---|
|  | 112 | DOUBLE PRECISION MX3(1000,500), MX5(1000,500) | 
|---|
|  | 113 | DOUBLE PRECISION C1,C2,C3 | 
|---|
|  | 114 | DO I=1,1000 | 
|---|
|  | 115 | DO J=1,500 | 
|---|
|  | 116 | MX5(I,J) = C1*MX1(I,J)+C2*MX2(I,J)+MX3(I,J)*C3 | 
|---|
|  | 117 | ENDDO | 
|---|
|  | 118 | ENDDO | 
|---|
|  | 119 | IF (K.EQ.5) PRINT *, 'OPADDMTX - 5 -> ', MX5(20,5) | 
|---|
|  | 120 | IF (K.EQ.15) PRINT *, 'OPADDMTX - 15 -> ', MX5(20,15) | 
|---|
|  | 121 |  | 
|---|
|  | 122 | RETURN | 
|---|
|  | 123 | END | 
|---|
|  | 124 |  | 
|---|
|  | 125 | SUBROUTINE MTXBLAS(K, MX1, MX2, MX3, MX4, MX5, C1, C2, C3) | 
|---|
|  | 126 | INTEGER I,J,K,NTOT | 
|---|
|  | 127 | DOUBLE PRECISION MX1(1000,500), MX2(1000,500) | 
|---|
|  | 128 | DOUBLE PRECISION MX5(1000,500) | 
|---|
|  | 129 | DOUBLE PRECISION C1,C2,C3 | 
|---|
|  | 130 | NTOT = 1000*500 | 
|---|
| [2366] | 131 | C  Sur OSF : | 
|---|
|  | 132 | C      CALL DVCAL(NTOT, C1, MX1, 1, MX5, 1) | 
|---|
|  | 133 | C      CALL DZAXPY(NTOT, C2, MX2, 1, MX5, 1, MX4, 1) | 
|---|
|  | 134 | C      CALL DZAXPY(NTOT, C3, MX3, 1, MX4, 1, MX5, 1) | 
|---|
|  | 135 | C  Sinon | 
|---|
|  | 136 | CALL DCOPY(NTOT, MX1, 1, MX5, 1) | 
|---|
|  | 137 | CALL DSCAL(NTOT, C1, MX5, 1) | 
|---|
|  | 138 | CALL DAXPY(NTOT, C2, MX2, 1, MX5, 1) | 
|---|
|  | 139 | CALL DAXPY(NTOT, C3, MX3, 1, MX3, 1) | 
|---|
| [2362] | 140 | IF (K.EQ.5) PRINT *, 'MTXBLAS - 5 -> ', MX5(20,5), | 
|---|
|  | 141 | + ' NTot=' , NTOT | 
|---|
|  | 142 | IF (K.EQ.15) PRINT *, 'MTXBLAS - 15 -> ', MX5(20,15), | 
|---|
|  | 143 | + ' NTot=' , NTOT | 
|---|
|  | 144 | RETURN | 
|---|
|  | 145 | END | 
|---|
|  | 146 |  | 
|---|