Changeset 2366 in Sophya for trunk/Eval/JET
- Timestamp:
- Apr 18, 2003, 5:48:16 PM (22 years ago)
- Location:
- trunk/Eval/JET
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Eval/JET/cmds.list
r2363 r2366 4 4 f90 -o fmtx -fast -arch host fmtx.f ftim.o -lcxml -lm 5 5 6 7 # Commande pour reconstruction du programme, avec differentes options 8 f90 -O -o cool_fmtx fmtx.f ftim.o -lcxml 9 f90 -o f90mtx f90mtx.f90 ftim.o 10 -
trunk/Eval/JET/fmtx.f
r2363 r2366 47 47 CALL FPrtTim(4) 48 48 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 49 58 PRINT *, ' ------ FIN programme ---------- ' 50 59 END … … 82 91 END 83 92 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 84 109 SUBROUTINE OPADDMTX(K, MX1, MX2, MX3, MX5, C1, C2, C3) 85 110 INTEGER I,J,K … … 104 129 DOUBLE PRECISION C1,C2,C3 105 130 NTOT = 1000*500 106 CALL DVCAL(NTOT, C1, MX1, 1, MX5, 1) 107 CALL DZAXPY(NTOT, C2, MX2, 1, MX5, 1, MX4, 1) 108 CALL DZAXPY(NTOT, C3, MX3, 1, MX4, 1, MX5, 1) 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) 109 140 IF (K.EQ.5) PRINT *, 'MTXBLAS - 5 -> ', MX5(20,5), 110 141 + ' NTot=' , NTOT -
trunk/Eval/JET/jet.h
r2363 r2366 132 132 }; 133 133 134 // -------- Classe Fonc(Expression) -------------- 135 template <class T> 136 class FSin { 137 public: 138 FSin() { } 139 FSin(FSin<T> const &) { } 140 inline T FuncVal(T x) const { return sin(x); } 141 }; 142 template <class T> 143 class FCos { 144 public: 145 FCos() { } 146 FCos(FCos<T> const &) { } 147 inline T FuncVal(T x) const { return cos(x); } 148 }; 149 template <class T> 150 class FTan { 151 public: 152 FTan() { } 153 FTan(FTan<T> const &) { } 154 inline T FuncVal(T x) const { return tan(x); } 155 }; 156 template <class T> 157 class FLog { 158 public: 159 FLog() { } 160 FLog(FLog<T> const &) { } 161 inline T FuncVal(T x) const { return log(x); } 162 }; 163 template <class T> 164 class FExp { 165 public: 166 FExp() { } 167 FExp(FExp<T> const &) { } 168 inline T FuncVal(T x) const { return exp(x); } 169 }; 170 171 template <class T, class E, class F> 172 class JETExprFunc { 173 public: 174 JETExprFunc(E e, F f) : e_(e), f_(f) { } 175 JETExprFunc( JETExprFunc<T, E, F> const & a) : e_(a.e_), f_(a.f_) { } 176 inline T EvaluateAndStep() const { return f_.FuncVal(e_.EvaluateAndStep()); } 177 virtual MtxSize const & RefSize() const { return e_.RefSize() ; } 178 inline void Reset() const { e_.Reset(); } 179 protected: 180 E e_; 181 F f_; 182 }; 134 183 135 184 … … 174 223 (JETExprMult<T,E1,E2>(e1.Expression(), e2.Expression()) ); } 175 224 225 //---- Definition Sin/Cos/Tan/Log/Exp 226 template <class T, class E> 227 JETExpression< T, JETExprFunc<T,E,FSin<T> > > Sin ( JETExpression<T,E> e) 228 { return JETExpression< T, JETExprFunc<T,E,FSin<T> > > (JETExprFunc<T,E,FSin<T> >(e.Expression(), FSin<T>() ) ); } 176 229 #endif 177 230 -
trunk/Eval/JET/tjet.cc
r2365 r2366 90 90 } 91 91 } 92 92 93 cout << " (1) Element access done ---" << endl; 93 94 PrtTim(" (1) -- "); … … 137 138 cout << " (5) JET: m5 = m1*c1 + m1*(m2+c2) + m2*c3 ---" << endl; 138 139 PrtTim(" (5) -- "); 139 } 140 141 for(k=0; k<N; k++) { 142 double c1 = frand01() + 1.2; 143 double c2 = frand01() + 3.5; 144 double c3 = frand01() + 6.7; 145 // Calcul m1*c1 + m1*(m2+c2) + m2*c3; 146 m5 = m1*c1 + m2 + c2*Sin(c3*m3+m1); 147 } 148 cout << " (6) JET: m5 = m1*c1 + m2 + c2*Sin(c3*m3+m1) ---" << endl; 149 PrtTim(" (6) -- "); 150 151 } 152 153 140 154 // Test avec les TArray / TMatrix 141 155 { … … 156 170 } 157 171 } 158 cout << " ( 6) Element access done ---" << endl;159 PrtTim(" ( 6) -- ");172 cout << " (21) Element access done ---" << endl; 173 PrtTim(" (21) -- "); 160 174 // Calcul m1*c1 + m2*c2 + m3*c3; 161 175 for(k=0; k<N; k++) { … … 169 183 m5.AddElt(m4); 170 184 } 171 cout << " ( 7) Add/MulElt/Cst m1*c1 + m2*c2 + m3*c3 done ---" << endl;172 PrtTim(" ( 7) -- ");185 cout << " (22) Add/MulElt/Cst m1*c1 + m2*c2 + m3*c3 done ---" << endl; 186 PrtTim(" (22) -- "); 173 187 174 188 for(k=0; k<N; k++) { … … 178 192 m5 = m1*c1+m2*c2+m3*c3; 179 193 } 180 cout << " (8) m1*c1 + m2*c2 + m3*c3 done ---" << endl; 181 PrtTim(" (8) -- "); 194 cout << " (23) m1*c1 + m2*c2 + m3*c3 done ---" << endl; 195 PrtTim(" (23) -- "); 196 197 for(k=0; k<N; k++) { 198 double c1 = frand01() + 1.2; 199 double c2 = frand01() + 3.5; 200 double c3 = frand01() + 6.7; 201 m5 = m1*c1 + m2 + c2*Sin(c3*m3+m1); 202 } 203 cout << " (26) m5 = m1*c1 + m2 + c2*Sin(c3*m3+m1) ---" << endl; 204 PrtTim(" (26) -- "); 205 182 206 } 183 207 }
Note:
See TracChangeset
for help on using the changeset viewer.