source: Sophya/trunk/SophyaProg/Tests/tstndblk.cc@ 998

Last change on this file since 998 was 945, checked in by ansari, 25 years ago

some little corr + new debug implementation cmv 16/04/00

File size: 5.3 KB
Line 
1#include "machdefs.h"
2#include <iostream.h>
3#include <stdlib.h>
4#include <stdio.h>
5#include <string.h>
6#include <math.h>
7#include <complex>
8#include <unistd.h>
9#include "ntoolsinit.h"
10#include "pexceptions.h"
11#include "ndatablock.h"
12
13//////////////////////////////////////////////////////////////////////////////
14int main(int narg,char *arg[])
15{
16//-- Decodage arguments
17int lp = 0;
18char c;
19while((c = getopt(narg,arg,"hd:")) != -1) {
20 switch (c) {
21 case 'd' :
22 sscanf(optarg,"%d",&lp);
23 break;
24 case 'h' :
25 cout<<"tstndblk [-h] [-d debug_level]"<<endl;
26 exit(-1);
27 }
28}
29
30//-- Initialization
31SophyaInit();
32const int NDim = 8;
33float *x1 = new float[NDim];
34float *x2 = new float[NDim];
35float *x3 = new float[NDim];
36for(int k=0;k<NDim;k++)
37 {x1[k]=k+1; x2[k]=(k+1)*10; x3[k]=(k+1)*100;}
38
39NDataBlock<int_4>::SetPrintDebug(lp);
40NDataBlock<r_4>::SetPrintDebug(lp);
41NDataBlock<r_8>::SetPrintDebug(lp);
42NDataBlock< complex<r_4> >::SetPrintDebug(lp);
43NDataBlock< complex<r_8> >::SetPrintDebug(lp);
44
45{ // Pour voir explicitement le travail du destructeur
46
47//-----------------------------------------------------
48cout<<endl<<"Createur par defaut Va"<<endl;
49NDataBlock<int_4> V1; V1.Print(1,99);
50try {
51 cout<<endl<<"...Createur par copie V2e(V1)"<<endl;
52 NDataBlock<int_4> V2e(V1);
53} catch(PException exc) {
54 cout<<"...Exception catched : " << exc.Msg() << endl;
55}
56
57//-----------------------------------------------------
58cout<<endl<<"Createur A1(3)"<<endl;
59NDataBlock<float> A1(3);
60cout<<endl<<"Createur B1("<<NDim<<")"<<endl;
61NDataBlock<float> B1(NDim);
62A1.FillFrom(NDim,x1); A1.Print(0,999);
63B1.FillFrom(NDim,x1); B1.Print(0,999);
64
65cout<<endl<<"Createur A2(3)"<<endl;
66NDataBlock<float> A2(3);
67A2.FillFrom(NDim,x2); A2.Print(0,999);
68cout<<endl<<"Createur B2("<<NDim<<")"<<endl;
69NDataBlock<float> B2(NDim);
70B2.FillFrom(NDim,x2); B2.Print(0,999);
71
72cout<<endl<<"Createur A3(3)"<<endl;
73NDataBlock<float> A3(3);
74A3.FillFrom(NDim,x3); A3.Print(0,999);
75cout<<endl<<"Createur B3("<<NDim<<")"<<endl;
76NDataBlock<float> B3(NDim);
77B3.FillFrom(NDim,x3); B3.Print(0,999);
78
79//-----------------------------------------------------
80cout<<endl<<"Createur par copie AA1(A1)"<<endl;
81NDataBlock<float> AA1(A1);
82
83cout<<endl<<"Createur par copie BB1(B1)"<<endl;
84NDataBlock<float> BB1(B1);
85
86{cout<<endl<<"Createur par copie {BBB1(B1)}"<<endl;
87NDataBlock<float> BBB1(B1);}
88
89{cout<<endl<<"Createur avec bridge {Abr("<<NDim<<",x3,new Bridge)}"<<endl;
90NDataBlock<float> Abr(NDim,x3,new Bridge);
91Abr.Print(0,999);
92cout<<"x3 existe encore: "<<x3[0]<<",...,"<<x3[4]<<endl;}
93
94{cout<<endl<<"Createur avec bridge {Abr("<<NDim<<",dum,NULL)}"<<endl;
95float *dum = new float[10];
96for(int i=0;i<10;i++) dum[i] = 1000.+i;
97NDataBlock<float> Abr(10,dum);
98Abr.Print(0,999);}
99
100//-----------------------------------------------------
101cout<<endl<<endl;
102NDataBlock<float> AC(3);
103AC.Reset();
104cout<<endl<<"AC=2"<<endl;
105AC = 2; AC.Print(0,999);
106AC.Reset();
107cout<<endl<<"AC=A1"<<endl;
108AC = A1; AC.Print(0,999);
109
110//-----------------------------------------------------
111cout<<endl<<endl;
112AC.Reset();
113cout<<endl<<"AC+=2"<<endl;
114AC += 2; AC.Print(0,999);
115cout<<endl<<"AC+=2+3"<<endl;
116AC += 2+3; AC.Print(0,999);
117cout<<endl<<"AC+=3"<<endl;
118AC += 3; AC.Print(0,999);
119cout<<endl<<"AC-=3"<<endl;
120AC -= 3; AC.Print(0,999);
121cout<<endl<<"AC*=10"<<endl;
122AC *= 10; AC.Print(0,999);
123cout<<endl<<"AC/=10"<<endl;
124AC /= 10; AC.Print(0,999);
125
126//-----------------------------------------------------
127cout<<endl<<endl;
128AC.Reset(1000);
129cout<<endl<<"AC+=A1"<<endl;
130AC += A1; AC.Print(0,999);
131cout<<endl<<"AC-=A1"<<endl;
132AC.Reset(1000);
133AC -= A1; AC.Print(0,999);
134cout<<endl<<"AC*=A1"<<endl;
135AC.Reset(1000);
136AC *= A1; AC.Print(0,999);
137cout<<endl<<"AC/=A1"<<endl;
138AC.Reset(1000);
139AC /= A1; AC.Print(0,999);
140
141//-----------------------------------------------------
142cout<<endl<<endl;
143cout<<endl<<"AC=A1+2"<<endl;
144AC = A1+2.f; AC.Print(0,999);
145cout<<endl<<"AC=2+A1"<<endl;
146AC = 2.f+A1; AC.Print(0,999);
147cout<<endl<<"AC=A1*2"<<endl;
148AC = A1*2.f; AC.Print(0,999);
149cout<<endl<<"AC=2*A1"<<endl;
150AC = 2.f*A1; AC.Print(0,999);
151cout<<endl<<"AC=A1-2"<<endl;
152AC = A1-2.f; AC.Print(0,999);
153cout<<endl<<"AC=2-A1"<<endl;
154AC = 2.f-A1; AC.Print(0,999);
155cout<<endl<<"AC=A1/2"<<endl;
156AC = A1/2.f; AC.Print(0,999);
157cout<<endl<<"AC=2/A1"<<endl;
158AC = 2.f/A1; AC.Print(0,999);
159
160//-----------------------------------------------------
161cout<<endl<<endl;
162cout<<endl<<"AC=A1+A2"<<endl;
163AC = A1 + A2; AC.Print(0,999);
164cout<<endl<<"AC=A2-A1"<<endl;
165AC = A2 - A1; AC.Print(0,999);
166cout<<endl<<"AC=A1*A2"<<endl;
167AC = A1 * A2; AC.Print(0,999);
168cout<<endl<<"AC=A2/A1"<<endl;
169AC = A2 / A1; AC.Print(0,999);
170
171//-----------------------------------------------------
172cout<<endl<<endl;
173cout<<endl<<"AC=A1+A2+A3"<<" "<<&A1<<","<<&A2<<","<<&A3<<endl;
174AC = A1 + A2 + A3; AC.Print(0,999);
175
176
177cout<<"\n\n\n"<<endl;
178} // Pour voir explicitement le travail du destructeur
179cout<<"Fin du Job"<<endl;
180cout<<"delete x1"<<endl; delete [] x1;
181cout<<"delete x2"<<endl; delete [] x2;
182cout<<"delete x3"<<endl; delete [] x3;
183
184//---- Final debug print
185cout<<endl<<endl<<"FINAL DEBUG SUMMARY : lp="<<lp<<endl<<endl;
186cout<<"DEBUG int_4:\n"; NDataBlock<int_4>::PrintDebug();
187cout<<"DEBUG r_4:\n"; NDataBlock<r_4>::PrintDebug();
188cout<<"DEBUG r_8:\n"; NDataBlock<r_8>::PrintDebug();
189cout<<"DEBUG complex<r_4>:\n"; NDataBlock< complex<r_4> >::PrintDebug();
190cout<<"DEBUG complex<r_8>:\n"; NDataBlock< complex<r_8> >::PrintDebug();
191
192exit(0);
193}
Note: See TracBrowser for help on using the repository browser.