Changeset 3089 in Sophya for trunk/SophyaProg/Tests
- Timestamp:
- Oct 11, 2006, 12:58:10 PM (19 years ago)
- Location:
- trunk/SophyaProg/Tests
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaProg/Tests/tfft.cc
r3077 r3089 11 11 #include "fftpserver.h" 12 12 #include "fftmserver.h" 13 #include "fftmayer.h" 13 14 #include "fftwserver.h" 14 15 #include "ntoolsinit.h" … … 48 49 static int prtlev = 0; 49 50 51 //------------------------------------------------- 50 52 template <class T> 51 53 void TestFFTPack(T seuil, sa_size_t num) … … 106 108 } 107 109 110 //------------------------------------------------- 108 111 template <class T> 109 112 int TestFFTS(T seuil, FFTServerInterface & ffts, sa_size_t num) … … 197 200 } 198 201 199 200 201 202 202 inline void MayerFFTForw(r_4* d, int sz) { 203 fht_r4(d, sz); 204 } 205 inline void MayerFFTForw(r_8* d, int sz) { 206 fht_r8(d, sz); 207 } 208 209 //------------------------------------------------- 210 template <class T> 211 int MultiFFTTest(T t, sa_size_t sz, int nloop, bool fgp) 212 { 213 cout <<" ===> MultiFFTTest<T=r_" << sizeof(T) << "> NLoop= " << nloop << " ArrSz= " << sz << endl; 214 TVector< T > in(sz), incopie(sz); 215 216 incopie = in = RandomSequence(); 217 FFTPackServer fftp(false); 218 TVector< complex<T> > outc; 219 220 PrtTim("MultiFFT-LoopStart"); 221 222 if (fgp) { 223 cout << " --- Test effectue avec FFTPack " << endl; 224 for(int kk=0; kk<nloop; kk++) { 225 in = incopie; 226 // fftp.FFTForward(in, outc); 227 fftp.fftf(sz, in.Data()); 228 } 229 } 230 else { 231 cout << " --- Test effectue avec FFTMayer " << endl; 232 for(int kk=0; kk<nloop; kk++) { 233 in = incopie; 234 // in += 0.01; 235 MayerFFTForw(in.Data(), sz); 236 } 237 } 238 PrtTim("MultiFFT-LoopEnd"); 239 cout << " ----- End ---- MultiFFTTest<T> ----" << endl; 240 return 0; 241 } 242 243 244 245 //------------------------------------------------- 246 //------------------------------------------------- 247 //------------------------------------------------- 203 248 int main(int narg, char* arg[]) 204 249 { … … 209 254 if (narg < 3) { 210 255 cout << "tfft/ args error - \n Usage tfft size p/P/M/W [f/d/F/D PrtLev=0 MaxNPrt=50 diffthr] \n" 256 << " OR tfft size P/M FL/DL/FZ/DZ [NFFT=10] \n" 211 257 << " 1D real/complex-FFT test (FFTServer) \n" 212 258 << " size: input vector length \n " 213 259 << " p=FFTPackTest P=FFTPack, M=FFTMayer, W= FFTWServer \n " 214 260 << " F/f:float, D/d:double F/D:random in_vector (default=D) \n" 215 << " diffthr : Threshold for diff checks (=10^-6/10^-4 double/float)" << endl; 261 << " FL/DL : perform NFFT on a serie of float[size] or double[size] " 262 << " FZ/DZ : perform NFFT on a series of complex<float>[size] or complex<double>[size] " 263 << " diffthr : Threshold for diff checks (=10^-6/10^-4 double/float)" 264 << endl; 216 265 return(1); 217 266 } … … 239 288 dtyp = toupper(dtyp); 240 289 290 241 291 FFTServerInterface * ffts; 242 292 if (*arg[2] == 'M') ffts = fftm.Clone(); 243 293 else if (*arg[2] == 'W') ffts = fftw.Clone(); 244 294 else ffts = fftp.Clone(); 295 296 int nloop = 0; 297 bool fgpack = true; 298 if (arg[3][1] == 'L') { // MultiFFT test 299 nloop = 10; 300 if (narg > 4) nloop = atoi(arg[4]); 301 if (*arg[2] == 'M') fgpack = false; 302 } 303 245 304 246 305 cout << "\n ============================================= \n" … … 255 314 cout << " ------ Testing FFTServer for double (r_8)----- " << endl; 256 315 if (*arg[2] == 'p') TestFFTPack(ds, sz); 316 else if (nloop > 0) rc = MultiFFTTest(ds, sz, nloop, fgpack); 257 317 else rc = TestFFTS(ds, *ffts, sz); 258 318 } … … 260 320 cout << " ------ Testing FFTServer for float (r_4)----- " << endl; 261 321 if (*arg[2] == 'p') TestFFTPack(fs, sz); 322 else if (nloop > 0) rc = MultiFFTTest(fs, sz, nloop, fgpack); 262 323 else rc = TestFFTS(fs, *ffts, sz); 263 324 } -
trunk/SophyaProg/Tests/tswfits.cc
r2890 r3089 11 11 #include "swfitsdtable.h" 12 12 13 #include "datatable.h" 14 #include "fitshdtable.h" 15 13 16 void test_fdtable() ; 17 static long NROW = 64; 18 static long NPRT = 10; 14 19 15 20 int main(int narg, char *arg[]) … … 17 22 SophyaInit(); 18 23 FitsIOServerInit(); 24 if (narg < 3) { 25 cout << "Erreur arg/Usage: tswfits NRowTable NPRT" << endl; 26 return 1; 27 } 28 NROW = atoi(arg[1]); 29 NPRT = atoi(arg[2]); 19 30 try { 20 /*21 if (*arg[1] == 'd') test_dvl();22 else if (*arg[1] == 'n') test_ntuple();23 // else if (*arg[1] == 'x') test_xntuple();24 else if (*arg[1] == 'X') test_Xntuple();25 */26 31 test_fdtable(); 27 32 } … … 35 40 cerr << "tswfits-main() , Catched ... ! " << endl; 36 41 } 42 37 43 } 38 44 … … 40 46 void test_fdtable() 41 47 { 42 cout << "======= test_fdtable: simple DataTable+FITStest ======= " << endl;48 cout << "======= test_fdtable: simple SwapOnFits test ======= " << endl; 43 49 int SWSEGSZ = 4; 44 50 vector<int_8> tags; 45 51 { 46 cout << " Creation FITSDataSwapper<double> swout(so) avec swseg.fits " << endl;52 cout << "1/ Creation FITSDataSwapper<double> swout(so) avec swseg.fits " << endl; 47 53 vector<string> ttype, tform, tunit; 48 54 ttype.push_back("D-Col1"); … … 74 80 } 75 81 { 76 cout << " 6/ Creation PPFDataSwapper<float> avec lecture depuis swseg.ppf" << endl;82 cout << "2/ Creation FITSDataSwapper<double> avec lecture depuis swseg.fits" << endl; 77 83 FitsInOutFile si("swseg.fits", FitsInOutFile::Fits_RO); 78 84 si.MoveAbsToHDU(2); 79 85 FITSDataSwapper<double> swin(si, 1); 80 86 SwSegDataBlock<double> swsd(swin, tags, SWSEGSZ); 81 cout <<" 7/ Recopie ds SegDataBlock<float> depuis SwSegDataBlock<float> et print" << endl;87 cout <<"2.b/ Recopie ds SegDataBlock<double> depuis SwSegDataBlock<double> et print" << endl; 82 88 SegDataBlock<double> segd; 83 89 segd = swsd; … … 86 92 87 93 { 88 cout << "8/ Creation SwFitsDataTable sur myswtable.fits " << endl; 94 cout << " ------------------------------------------------ " << endl; 95 cout << "3/ Creation SwFitsDataTable sur myswtable.fits " << endl; 89 96 FitsInOutFile so("!myswtable.fits", FitsInOutFile::Fits_Create); 90 SwFitsDataTable dt(so, 16);97 SwFitsDataTable dt(so, 45); 91 98 // define table columns 92 99 dt.AddFloatColumn("X0_f"); 93 100 dt.AddFloatColumn("X1_f"); 94 101 dt.AddDoubleColumn("X0X0pX1X1_d"); 95 cout << " 8.b/ start fill " << endl;102 cout << "3.b/ start fill " << endl; 96 103 // Fill the table 97 104 r_8 x[5]; 98 for(int i=0; i<63; i++) { 99 if (i < 5) cout << " DBG - i= " << i << endl; 105 int pmod = NROW/50; 106 if (pmod < 10) pmod = 10; 107 for(int i=0; i<NROW; i++) { 108 // if (i%pmod == 0) cout << " DBG - i= " << i << endl; 100 109 x[0] = (i%9)-4.; x[1] = (i/9)-3.; x[2] = x[0]*x[0]+x[1]*x[1]; 101 110 dt.AddLine(x); 102 111 } 103 cout << " 8.c/ End fill " << endl;112 cout << "3.c/ End fill " << endl; 104 113 105 114 // Printing table info 106 115 cout << dt ; 116 for(int k = 0; k<NPRT; k++) 117 cout << "Line[" << k << "] " << dt.LineToString(k) << endl ; 118 107 119 } 120 { 121 cout << " ------------------------------------------------ " << endl; 122 cout << "4/ Lecture SwFitsDataTable depuis myswtable.fits " << endl; 123 FitsInOutFile si("myswtable.fits", FitsInOutFile::Fits_RO); 124 si.SkipEmptyFirstHDU(); 125 SwFitsDataTable dt(si,40,false); 126 // si >> dt; 127 // Printing table info 128 cout << dt ; 129 for(int k = 0; k<NPRT; k++) 130 cout << "Line[" << k << "] " << dt.LineToString(k) << endl ; 131 } 132 108 133 cout << "============ FIN test_fdtable ======== ======= " << endl; 109 134 }
Note:
See TracChangeset
for help on using the changeset viewer.