19 ifstream filestream[2];
20 filestream[0].open(file1.c_str());
21 filestream[1].open(file2.c_str());
22 if (!filestream[0] || !filestream[1]){
23 cout <<
" Error, could not load files " << endl;
33 for (
int ifile = 0; ifile < 2; ifile++){
34 filestream[ifile] >> nwaves[ifile];
35 filestream[ifile] >> nentries[ifile];
36 filestream[ifile] >> dimensionx[ifile] >> dimensiony[ifile];
39 if (!filestream[0].good() || !filestream[1].good()){
40 cout <<
" Error, could not read header of files " << endl;
44 if (nwaves[0] != nwaves[1] ||
45 nentries[0] != nentries[1] ||
46 dimensionx[0] != dimensionx[1] ||
47 dimensiony[0] != dimensiony[1])
49 cout <<
" Error, the header differ! " << endl;
52 if (dimensionx[0] > 100 || dimensiony[0] > 100){
53 cout <<
" cannot process more than 100 x 100 entries, sorry " << endl;
56 complex<double> entries[2][100][100];
58 cout <<
" reading matrix of size " << dimensionx[0] <<
" X " << dimensiony[0] << endl;
61 for (
int ix = 0; ix < dimensionx[0] ; ix++){
62 for (
int iy = 0; iy < dimensiony[0]; iy++){
63 for (
int ifile = 0; ifile < 2; ifile++){
64 filestream[ifile] >> entries[ifile][ix][iy];
65 if (!filestream[ifile].good()){
66 cout <<
" Error reading matrix, aborting " << endl;
74 for (
int ifile = 0; ifile < 2; ifile++){
75 filestream[ifile] >> nwaves[ifile];
76 if (!filestream[ifile].good()){
77 cout <<
" Error reading number of waves, aborting " << endl;
82 if (nwaves[0] != nwaves[1]){
83 cout <<
" Error: number of waves differs, aborting " << endl;
86 cout <<
" reading " << nwaves[0] <<
" waves" << endl;
88 map<string,int> waves[2];
90 for (
int ifile = 0; ifile < 2; ifile++){
91 for (
int iwave = 0; iwave < nwaves[ifile]; iwave++){
94 filestream[ifile] >> key >> position;
95 if (!filestream[ifile].good()){
96 cout <<
" Error reading waves, aborting " << endl;
100 int slashpos = key.rfind(
'/');
101 if (slashpos != (
int) string::npos){
102 key.erase(0, slashpos+1);
104 waves[ifile][key] = position;
109 if (waves[0].size() != waves[1].size()){
110 cout <<
" Error: waves differ " << endl;
113 if (waves[0].size() != (
unsigned) nwaves[0]){
114 cout <<
" Error: number of different waves is not correct, aborting " << endl;
120 for ( map<string,int>::iterator itx = waves[0].begin(); itx != waves[0].end(); itx++){
121 for ( map<string,int>::iterator ity = waves[0].begin(); ity != waves[0].end(); ity++){
122 if (entries[0][itx->second][ity->second] != entries[1][waves[1][itx->first]][waves[1][ity->first]]){
123 cout <<
" Error: wave " << itx->first <<
" differs " << endl;
130 if (ncomperisons != nwaves[0]*nwaves[0]){
131 cout <<
" Unexpected error: number of comparisons is too low! " << endl;
134 filestream[0].close();
135 filestream[1].close();
137 cout <<
" files seem to be equivalent " << endl;