StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
TMxF110.cxx
1 //*-- Author : Valery Fine(fine@bnl.gov) 25/09/99
2 // tmxm.F -- translated by f2c (version 19970219).
3 //
4 // The test ("micky") of the set of methods to work with the plain
5 // matrix / vector "derived" from
6 // http://wwwinfo.cern.ch/asdoc/shortwrupsdir/f110/top.html
7 //
8 // $Id: TMxF110.cxx,v 1.6 2006/12/08 17:51:14 fine Exp $
9 // $Log: TMxF110.cxx,v $
10 // Revision 1.6 2006/12/08 17:51:14 fine
11 // prepare the test are to move to ROOT CVS
12 //
13 // Revision 1.5 2003/09/02 17:59:24 perev
14 // gcc 3.2 updates + WarnOff
15 //
16 // Revision 1.4 2000/03/26 03:16:05 fine
17 // Adjusted to ROOT 2.24
18 //
19 // Revision 1.3 1999/09/28 19:54:57 fine
20 // RMath has been renamed to StCL
21 //
22 // Revision 1.2 1999/09/26 23:37:22 fine
23 // test F112 package has been introduced
24 //
25 // Revision 1.1 1999/09/26 19:35:13 fine
26 // Micky test has been rearranged
27 //
28 // Revision 1.1 1999/09/24 17:15:37 fine
29 // type fixed
30 //
31 // Revision 1.1 1999/09/23 18:33:11 fine
32 // test system for StCL class has been introduced
33 //
34 //
35 
36 #include "StMicky.h"
37 #if ROOT_VERSION_CODE < ROOT_VERSION(5,13,0)
38 #include "TCL.h"
39 #else
40 #include "TCernLib.h"
41 #endif
42 #include "Stiostream.h"
43 
44 //____________________________________________________________________________________
45 void StMicky::Tmxm()
46 {
47  // Load "base" library
48 
49  /* Initialized data */
50 
51  float ac[6] = { 0.,1.,2.,3.,4.,5. };
52  float bc[8] = { 10.,20.,30.,40.,50.,60.,70.,80. };
53  float c1c[12] = { 50.,60.,70.,80.,170.,220.,270.,320.,290., 380.,470.,560. };
54  float c2c[9] = { 3.,4.,5.,9.,14.,19.,15.,24.,33. };
55  float d__[12] = { 2.,4.,6.,8.,102.,104.,106.,108.,202.,204.,206.,208. };
56  struct {
57  int e_1;
58  char e_2[4];
59  int e_3;
60  char e_4[4];
61  } equiv_30 = { 1000, {'X', 'M', 'P', 'Y'}, 0, {'3', '2', '4', ' '} };
62 
63 #ifndef tinf
64 #define tinf ((int *)&equiv_30)
65 #endif
66 
67  static struct {
68  char e_1[4];
69  int e_2;
70  } equiv_31 = { {'X', 'M', 'A', 'D'}, 0 };
71 
72 
73 #ifndef tinfa
74 #define tinfa (*(int *)&equiv_31)
75 #endif
76 
77  static struct {
78  char e_1[4];
79  int e_2;
80  } equiv_32 = { {'X', 'M', 'U', 'B'}, 0 };
81 
82 #ifndef tinfu
83 #define tinfu (*(int *)&equiv_32)
84 #endif
85 
86  static struct {
87  char e_1[4];
88  int e_2;
89  } equiv_33 = { {'M', 'P', 'Y', '1'}, 0 };
90 
91 #ifndef tinfy1
92 #define tinfy1 (*(int *)&equiv_33)
93 #endif
94 
95  static struct {
96  char e_1[4];
97  int e_2;
98  } equiv_34 = { {'M', 'A', 'D', '1'}, 0 };
99 
100 #ifndef tinfa1
101 #define tinfa1 (*(int *)&equiv_34)
102 #endif
103 
104  static struct {
105  char e_1[4];
106  int e_2;
107  } equiv_35 = { {'M', 'U', 'B', '1'}, 0 };
108 
109 #ifndef tinfu1
110 #define tinfu1 (*(int *)&equiv_35)
111 #endif
112 
113  static struct {
114  char e_1[4];
115  int e_2;
116  } equiv_36 = { {'M', 'P', 'Y', '2'}, 0 };
117 
118 #ifndef tinfy2
119 #define tinfy2 (*(int *)&equiv_36)
120 #endif
121 
122 
123  static struct {
124  char e_1[4];
125  int e_2;
126  } equiv_37 = { {'M', 'A', 'D', '2'}, 0 };
127 
128 #ifndef tinfa2
129 #define tinfa2 (*(int *)&equiv_37)
130 #endif
131 
132  static struct {
133  char e_1[4];
134  int e_2;
135  } equiv_38 = { {'M', 'U', 'B', '2'}, 0 };
136 
137 #ifndef tinfu2
138 #define tinfu2 (*(int *)&equiv_38)
139 #endif
140 
141  static struct {
142  char e_1[4];
143  int e_2;
144  } equiv_39 = { {'M', 'P', 'Y', '3'}, 0 };
145 
146 #ifndef tinfy3
147 #define tinfy3 (*(int *)&equiv_39)
148 #endif
149 
150  static struct {
151  char e_1[4];
152  int e_2;
153  } equiv_40 = { {'M', 'A', 'D', '3'}, 0 };
154 
155 #ifndef tinfa3
156 #define tinfa3 (*(int *)&equiv_40)
157 #endif
158 
159  static struct {
160  char e_1[4];
161  int e_2;
162  } equiv_41 = { {'M', 'U', 'B', '3'}, 0 };
163 
164 #ifndef tinfu3
165 #define tinfu3 (*(int *)&equiv_41)
166 #endif
167 
168  static int j;
169  static int ntimes;
170 
171  /* Local variables */
172 #ifndef _LOCALMICKYVARS_
173 #define _LOCALMICKYVARS_
174 
175 #define amin ((float *)&_BLNK__1 + 1399)
176 #define dmin__ ((float *)&_BLNK__1 + 1699)
177 #define amin2 ((float *)&_BLNK__1 + 1599)
178 #define aplus ((float *)&_BLNK__1 + 1299)
179 
180 #define aplus1 ((float *)&_BLNK__1 + 1499)
181 #define ia ((int *)&_BLNK__1)
182 #define ib ((int *)&_BLNK__1 + 1000)
183 
184 #define act ((float *)&_BLNK__1 + 1099)
185 #define bct ((float *)&_BLNK__1 + 1199)
186 #define zer ((float *)&_BLNK__1 + 1000)
187 
188 #endif
189 
190 //_______________________________________________________
191  param_1.zerlev = param_1.zerov[1];
192  TCL::vzero(zer,12);
193  TCL::mxtrp(bc, bct, 2, 4);
194  TCL::mxtrp(ac, act, 3, 2);
195 /* TEST FOR MXMPY-1-2-3 */
196  Newguy("MXMPY-1-2-3.", "TMXM ");
197  TCL::mxmpy(ac, bc, _BLNK__1.a, 3, 2, 4);
198  Mverif(1, _BLNK__1.a, c1c, 12);
199 
200  TCL::mxmpy1(ac, bct, _BLNK__1.a, 3, 2, 4);
201  Mverif(11, _BLNK__1.a, c1c, 12);
202 
203  TCL::mxmpy2(act, bc, _BLNK__1.a, 3, 2, 4);
204  Mverif(21, _BLNK__1.a, c1c, 12);
205 
206  TCL::mxmpy3(act, bct, _BLNK__1.a, 3, 2, 4);
207  Mverif(31, _BLNK__1.a, c1c, 12);
208 
209  TCL::mxmpy(ac, bc, _BLNK__1.a, 3, 0, 4);
210  Mverif(10, _BLNK__1.a, zer, 12);
211 
212  TCL::mxmpy1(ac, bct, _BLNK__1.a, 3, 0, 4);
213  Mverif(110, _BLNK__1.a, zer, 12);
214 
215  TCL::mxmpy2(act, bc, _BLNK__1.a, 3, 0, 4);
216  Mverif(210, _BLNK__1.a, zer, 12);
217 
218  TCL::mxmpy3(act, bct, _BLNK__1.a, 3, 0, 4);
219  Mverif(310, _BLNK__1.a, zer, 12);
220 
221  TCL::mxmpy(ac, ac, _BLNK__1.a, 3, 2, 3);
222  Mverif(12, _BLNK__1.a, c2c, 9);
223 /* -- TIMING */
224  if (param_1.itimes == 0) {
225  goto L100;
226  }
227  ntimes = param_1.itimes * tinf[0];
228  tinf[0] = ntimes;
229  Timed(&param_1.timerd);
230  for (j = 1; j <= ntimes; ++j)
231  TCL::mxmpy(ac, bc, _BLNK__1.a, 3, 2, 4);
232 
233  Timing(tinf);
234  tinf[1] = tinfy1;
235  Timed(&param_1.timerd);
236  for (j = 1; j <= ntimes; ++j)
237  TCL::mxmpy1(ac, bct, _BLNK__1.a, 3, 2, 4);
238 
239  Timing(tinf);
240  tinf[1] = tinfy2;
241  Timed(&param_1.timerd);
242  for (j = 1; j <= ntimes; ++j)
243  TCL::mxmpy2(act, bc, _BLNK__1.a, 3, 2, 4);
244 
245  Timing(tinf);
246  tinf[1] = tinfy3;
247  Timed(&param_1.timerd);
248  for (j = 1; j <= ntimes; ++j)
249  TCL::mxmpy3(act, bct, _BLNK__1.a, 3, 2, 4);
250 
251  Timing(tinf);
252 /* TEST FOR MXMAD-12-3- */
253 L100:
254  Newguy("MXMAD-1-2-3.", "TMXM ");
255  TCL::ucopy(c1c, _BLNK__1.a, 12);
256  TCL::vadd(_BLNK__1.a, d__, aplus, 12);
257  TCL::vsub(_BLNK__1.a, d__, amin, 12);
258  TCL::mxmpy(ac, ac, _BLNK__1.a, 3, 2, 3);
259  TCL::vadd(_BLNK__1.a, d__, aplus1, 9);
260  TCL::vsub(_BLNK__1.a, d__, amin2, 9);
261 
262  TCL::ucopy(d__, _BLNK__1.a, 12);
263  TCL::mxmad(ac, bc, _BLNK__1.a, 3, 2, 4);
264  Mverif(1, _BLNK__1.a, aplus, 12);
265 
266  TCL::ucopy(d__, _BLNK__1.a, 12);
267  TCL::mxmad1(ac, bct, _BLNK__1.a, 3, 2, 4);
268  Mverif(11, _BLNK__1.a, aplus, 12);
269 
270  TCL::ucopy(d__, _BLNK__1.a, 12);
271  TCL::mxmad2(act, bc, _BLNK__1.a, 3, 2, 4);
272  Mverif(21, _BLNK__1.a, aplus, 12);
273 
274  TCL::ucopy(d__, _BLNK__1.a, 12);
275  TCL::mxmad3(act, bct, _BLNK__1.a, 3, 2, 4);
276  Mverif(31, _BLNK__1.a, aplus, 12);
277 
278  TCL::ucopy(d__, _BLNK__1.a, 12);
279  TCL::mxmad(ac, bc, _BLNK__1.a, 3, 0, 4);
280  Mverif(10, _BLNK__1.a, d__, 12);
281 
282  TCL::mxmad1(ac, bct, _BLNK__1.a, 3, 0, 4);
283  Mverif(110, _BLNK__1.a, d__, 12);
284 
285  TCL::mxmad2(act, bc, _BLNK__1.a, 3, 0, 4);
286  Mverif(210, _BLNK__1.a, d__, 12);
287 
288  TCL::mxmad3(act, bct, _BLNK__1.a, 3, 0, 4);
289  Mverif(310, _BLNK__1.a, d__, 12);
290 
291  TCL::ucopy(d__, _BLNK__1.a, 9);
292  TCL::mxmad(ac, ac, _BLNK__1.a, 3, 2, 3);
293  Mverif(12, _BLNK__1.a, aplus1, 9);
294 
295  TCL::ucopy(d__, _BLNK__1.a, 9);
296 /* -- TIMING */
297  if (param_1.itimes == 0) {
298  goto L200;
299  }
300  tinf[1] = tinfa;
301  Timed(&param_1.timerd);
302  for (j = 1; j <= ntimes; ++j) {
303  TCL::ucopy(d__, _BLNK__1.a, 12);
304  TCL::mxmad(ac, bc, _BLNK__1.a, 3, 2, 4);
305  }
306 
307  Timing(tinf);
308  tinf[1] = tinfa1;
309  Timed(&param_1.timerd);
310 
311  for (j = 1; j <= ntimes; ++j) {
312  TCL::ucopy(d__, _BLNK__1.a, 12);
313  TCL::mxmad1(ac, bct, _BLNK__1.a, 3, 2, 4);
314  }
315 
316  Timing(tinf);
317  tinf[1] = tinfa2;
318  Timed(&param_1.timerd);
319 
320  for (j = 1; j <= ntimes; ++j) {
321  TCL::ucopy(d__, _BLNK__1.a, 12);
322  TCL::mxmad2(act, bc, _BLNK__1.a, 3, 2, 4);
323  }
324 
325  Timing(tinf);
326  tinf[1] = tinfa3;
327  Timed(&param_1.timerd);
328 
329  for (j = 1; j <= ntimes; ++j) {
330  TCL::ucopy(d__, _BLNK__1.a, 12);
331  TCL::mxmad3(act, bct, _BLNK__1.a, 3, 2, 4);
332  }
333 
334  Timing(tinf);
335 
336 /* TEST FOR MXMUB-1-2-3 */
337 L200:
338  Newguy("MXMUB-1-2-3.", "TMXM ");
339  TCL::vcopyn(d__, dmin__, 12);
340  TCL::ucopy(d__, _BLNK__1.a, 12);
341  TCL::mxmub(ac, bc, _BLNK__1.a, 3, 2, 4);
342  Mverif(1, _BLNK__1.a, amin, 12);
343 
344  TCL::ucopy(d__, _BLNK__1.a, 12);
345  TCL::mxmub1(ac, bct, _BLNK__1.a, 3, 2, 4);
346  Mverif(11, _BLNK__1.a, amin, 12);
347 
348  TCL::ucopy(d__, _BLNK__1.a, 12);
349  TCL::mxmub2(act, bc, _BLNK__1.a, 3, 2, 4);
350  Mverif(21, _BLNK__1.a, amin, 12);
351 
352  TCL::ucopy(d__, _BLNK__1.a, 12);
353  TCL::mxmub3(act, bct, _BLNK__1.a, 3, 2, 4);
354  Mverif(31, _BLNK__1.a, amin, 12);
355 
356  TCL::ucopy(d__, _BLNK__1.a, 12);
357  TCL::mxmub(ac, bc, _BLNK__1.a, 3, 0, 4);
358  Mverif(10, _BLNK__1.a, dmin__, 12);
359 
360  TCL::ucopy(d__, _BLNK__1.a, 12);
361  TCL::mxmub1(ac, bct, _BLNK__1.a, 3, 0, 4);
362  Mverif(110, _BLNK__1.a, dmin__, 12);
363 
364  TCL::ucopy(d__, _BLNK__1.a, 12);
365  TCL::mxmub2(act, bc, _BLNK__1.a, 3, 0, 4);
366  Mverif(210, _BLNK__1.a, dmin__, 12);
367 
368  TCL::ucopy(d__, _BLNK__1.a, 12);
369  TCL::mxmub3(act, bct, _BLNK__1.a, 3, 0, 4);
370  Mverif(310, _BLNK__1.a, dmin__, 12);
371 
372  TCL::ucopy(d__, _BLNK__1.a, 9);
373  TCL::mxmub(ac, ac, _BLNK__1.a, 3, 2, 3);
374  Mverif(12, _BLNK__1.a, amin2, 9);
375 
376  if (param_1.itimes == 0) goto L300;
377 
378  tinf[1] = tinfu;
379  Timed(&param_1.timerd);
380 
381  for (j = 1; j <= ntimes; ++j) {
382  TCL::ucopy(d__, _BLNK__1.a, 12);
383  TCL::mxmub(ac, bc, _BLNK__1.a, 3, 2, 4);
384  }
385 
386  Timing(tinf);
387  tinf[1] = tinfu1;
388  Timed(&param_1.timerd);
389 
390  for (j = 1; j <= ntimes; ++j) {
391  TCL::ucopy(d__, _BLNK__1.a, 12);
392  TCL::mxmub1(ac, bct, _BLNK__1.a, 3, 2, 4);
393  }
394 
395  Timing(tinf);
396  tinf[1] = tinfu2;
397  Timed(&param_1.timerd);
398 
399  for (j = 1; j <= ntimes; ++j) {
400  TCL::ucopy(d__, _BLNK__1.a, 12);
401  TCL::mxmub2(act, bc, _BLNK__1.a, 3, 2, 4);
402  }
403 
404  Timing(tinf);
405  tinf[1] = tinfu3;
406  Timed(&param_1.timerd);
407 
408  for (j = 1; j <= ntimes; ++j) {
409  TCL::ucopy(d__, _BLNK__1.a, 12);
410  TCL::mxmub3(act, bct, _BLNK__1.a, 3, 2, 4);
411  }
412 
413  Timing(tinf);
414 
415 /* -- TEST FOR MXMLRT - MXMLTR */
416 L300:
417  Newguy("MXMLRT - MXMLTR.", "TMXM ");
418  TCL::mxmpy(ac, c2c, _BLNK__1.a, 2, 3, 3);
419  TCL::mxmpy1(_BLNK__1.a, ac, _BLNK__1.b, 2, 3, 2);
420  TCL::mxmpy1(c2c, ac, &_BLNK__1.a[100], 3, 3, 2);
421  TCL::mxmpy(ac, &_BLNK__1.a[100], &_BLNK__1.b[100], 2, 3, 2);
422  Mverif(0, _BLNK__1.b, &_BLNK__1.b[100], 4);
423 
424  TCL::mxmlrt(ac, c2c, _BLNK__1.a, 2, 3);
425  Mverif(1, _BLNK__1.a, _BLNK__1.b, 4);
426 
427  TCL::mxmpy2(c1c, c2c, _BLNK__1.a, 4, 3, 3);
428  TCL::mxmpy(_BLNK__1.a, c1c, _BLNK__1.b, 4, 3, 4);
429  TCL::mxmpy(c2c, c1c, &_BLNK__1.a[100], 3, 3, 4);
430  TCL::mxmpy2(c1c, &_BLNK__1.a[100], &_BLNK__1.b[100], 4, 3, 4);
431  Mverif(10, _BLNK__1.b, &_BLNK__1.b[100], 16);
432 
433  TCL::mxmltr(c1c, c2c, _BLNK__1.a, 4, 3);
434  Mverif(11, _BLNK__1.a, _BLNK__1.b, 16);
435 
436 } /* tmxm_ */
437 #undef tinf
438 #undef tinfa
439 #undef tinfu
440 #undef tinfy1
441 #undef tinfa1
442 #undef tinfu1
443 #undef tinfy2
444 #undef tinfa2
445 #undef tinfu2
446 #undef tinfy3
447 #undef tinfa3
448 #undef tinfu3
449 
static float * mxtrp(const float *a, float *b, int i, int j)
Definition: TCernLib.cxx:230