source: Sophya/trunk/Eval/JET/tjet.cc@ 2363

Last change on this file since 2363 was 2363, checked in by ansari, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r2362,
which included commits to RCS files with non-trunk default branches.

File size: 3.8 KB
Line 
1#include "machdefs.h"
2
3#include <math.h>
4#include <iostream>
5#include <fstream>
6
7#include "tarrinit.h"
8#include "array.h"
9
10#include "pexceptions.h"
11#include "srandgen.h"
12
13#include "sophyainit.h"
14#include "ctimer.h"
15#include "timing.h"
16
17#include "smtx.h"
18
19//--------------------------------------------------------
20// Test d'expression template sur tableaux
21// Reza - Avril 2003
22//--------------------------------------------------------
23
24//------- Le code de smtx.cc
25
26#include "smtx.cc"
27
28//-------
29// ------------------------------------------------
30// programme de test template expressions
31// ------------------------------------------------
32
33int main(int narg, char* arg[])
34{
35
36 SophyaInit();
37 InitTim(); // Initializing the CPU timer
38
39 if (narg < 3) {
40 cout << "\n te/ TemplateExpression Test - missing arguments\n"
41 << " Usage: te NLoop NRow NCol \n" << endl;
42 return 1;
43 }
44 int N = 10;
45 int nrow = 2;
46 int ncol = 2;
47
48 N = atoi(arg[1]);
49
50 nrow = atoi(arg[2]);
51 ncol = atoi(arg[3]);
52
53 cout << " te/ TemplateExpression Test - NLoop = " << N
54 << " NRow=" << nrow << " NCol= " << ncol
55 << " Size=nr*nc= " << nrow*ncol << endl;
56
57 try {
58 cout << " ---- Verification operation ------ " << endl;
59 SimpleMatrix<int_4> mx1(4,6);
60 mx1 = 3;
61 mx1 *= 2;
62 cout << " mx1=3; mx1*=2; : " << endl;
63 cout << mx1 << endl;
64 SimpleMatrix<int_4> mx2(4,6);
65 mx2.Init(1,1);
66 SimpleMatrix<int_4> mx3(4,6), mx4;
67 mx3.Init(1000,100);
68 mx4 = mx3+mx2*2 ;
69 cout << " mx2, mx3, mx4=mx3+2mx2 " << endl;
70 cout << mx2 << endl << mx3 << endl << mx4 << endl;
71
72 int i,j,k;
73 SimpleMatrix<r_8> m1(nrow, ncol);
74 SimpleMatrix<r_8> m2(nrow, ncol);
75 SimpleMatrix<r_8> m3(nrow, ncol);
76 SimpleMatrix<r_8> m4(nrow, ncol);
77 SimpleMatrix<r_8> m5(nrow, ncol);
78 for(k=0; k<N; k++) {
79 double xxr = frand01();
80 double yyr = 2.*frand01();
81 for(i=0; i<nrow; i++)
82 for(j=0; j<ncol; j++) {
83 m1(i,j) = k*300+10.*i+j+xxr;
84 m2(i,j) = k*550+20.*i+2.*j+yyr;
85 m3(i,j) = k*860.+40.*i+7.*j+yyr*3.14;
86 }
87 }
88 PrtTim(" (1) Element access done ---");
89 // Calcul m1*c1 + m2*c2 + m3*c3;
90 for(k=0; k<N; k++) {
91 double c1 = frand01() + 1.2;
92 double c2 = frand01() + 3.5;
93 double c3 = frand01() + 6.7;
94 m5 = m1; m5.MulCst(c1);
95 m4 = m2; m4.MulCst(c2);
96 m5.AddElt(m4);
97 m4 = m3; m3.MulCst(c2);
98 m5.AddElt(m4);
99 }
100 PrtTim(" (2) Add/MulElt/Cst m1*c1 + m2*c2 + m3*c3 done ---");
101
102 for(k=0; k<N; k++) {
103 double c1 = frand01() + 1.2;
104 double c2 = frand01() + 3.5;
105 double c3 = frand01() + 6.7;
106 m5 = m1*c1+m2*c2+m3*c3;
107 }
108 PrtTim(" (3) JET: m1*c1 + m2*c2 + m3*c3 done ---");
109 // Calcul m1*c1 + m1*(m2+c2) + m2*c3;
110 for(k=0; k<N; k++) {
111 double c1 = frand01() + 1.2;
112 double c2 = frand01() + 3.5;
113 double c3 = frand01() + 6.7;
114 m3 = m1; m3.MulCst(c1);
115 m4 = m2; m4.AddCst(c2); m4.MulElt(m1);
116 m5 = m2; m5.MulCst(c3);
117 m5.AddElt(m3); m5.AddElt(m4);
118 }
119 PrtTim(" (4) Add/MulElt/Cst m1*c1 + m1*(m2+c2) + m2*c3 done ---");
120
121 for(k=0; k<N; k++) {
122 double c1 = frand01() + 1.2;
123 double c2 = frand01() + 3.5;
124 double c3 = frand01() + 6.7;
125 // m4 = SMExprAdd< r_8, SMExprMtx<r_8>, SMExprMtx<r_8> >( SMExprMtx<r_8>(m1), SMExprMtx<r_8> (m2) );
126 // Calcul m1*c1 + m1*(m2+c2) + m2*c3;
127 m5 = m1*c1 + m1*(m2+c2) + m2*c3;
128 }
129 PrtTim(" (5) JET: m5 = m1*c1 + m1*(m2+c2) + m2*c3 ---");
130 }
131 catch (PThrowable exc) {
132 cerr << " te/catched Exception " << exc.Msg() << endl;
133 }
134 catch (...) {
135 cerr << " te/catched unknown (...) exception " << endl;
136 }
137
138 cout << "\n --------------------------------------------------------" << endl;
139 PrtTim("--- End of te ---");
140 cout << " ---- END of te/TemplateExpression programme ------ " << endl;
141 return 0;
142}
143
Note: See TracBrowser for help on using the repository browser.