jbjebi
10-22-2011, 05:56 PM
hello. I need help on NAN error.
I have two data set of 2*2 array and want to calculate average and standard error from them.
the arrays are Ldata[i][j] and Rdata[i][j], of which each element is a structure.
'i' runs from 0 to 95 and 'j' runs from 0 to 994.
I calculated average and average of square for each i, that is, sum over j(0~994) and get 96*2 numbers.
My code is like this :
for(j=0;j<T_SUP;j++){
for(i=0;i<n;i++){
Lavg[j]+=Ldata[i][j].Re;
Ravg[j]+=Rdata[i][j].Re;
Lavgsqr[j]+=(Ldata[i][j].Re)*(Ldata[i][j].Re);
Ravgsqr[j]+=(Rdata[i][j].Re)*(Rdata[i][j].Re);
}
Lavg[j]/=(double)n;
Ravg[j]/=(double)n;
Lavgsqr[j]/=(double)n;
Ravgsqr[j]/=(double)n;
}
here T_SUP=96, n=995.
It is a simple code, but the results i got had errors.
part of the results is like this :
1.65927877636165E+02 2.76070821725818E+04
1.26235062991787E+02 1.59824584847397E+04
9.61712581846613E+01 9.27823852576923E+03
7.33170496897583E+01 5.39356871353874E+03
5.59046671535362E+01 3.13669103534178E+03
4.26358025373460E+01 1.82497347823173E+03
3.25324479306918E+01 1.06288515111161E+03
2.48371361006079E+01 6.19748708397692E+02
NAN 3.61295254889204E+02
1.44695804797956E+01 2.10526428400531E+02
1.10431099231493E+01 1.22679873320664E+02
8.42562467527492E+00 7.14489220048574E+01
See NAN here? It happens only at j=18 and j=90 from 'Lavg' variable.
Lavgsqr, Ravg has no such error..
Of course I tried checking Lavg[i][18] but it was totally OK, and now I'm confused. I think that this code is symmetric for variables and indices so I wonder how can error like this occur. Can it be from floating point number operation?
I desperatly need help. Any suggestion for how this happened and how to solve it?
P.S. Solved. I simply didn't initialize the variables. Now I feel retarded..
I have two data set of 2*2 array and want to calculate average and standard error from them.
the arrays are Ldata[i][j] and Rdata[i][j], of which each element is a structure.
'i' runs from 0 to 95 and 'j' runs from 0 to 994.
I calculated average and average of square for each i, that is, sum over j(0~994) and get 96*2 numbers.
My code is like this :
for(j=0;j<T_SUP;j++){
for(i=0;i<n;i++){
Lavg[j]+=Ldata[i][j].Re;
Ravg[j]+=Rdata[i][j].Re;
Lavgsqr[j]+=(Ldata[i][j].Re)*(Ldata[i][j].Re);
Ravgsqr[j]+=(Rdata[i][j].Re)*(Rdata[i][j].Re);
}
Lavg[j]/=(double)n;
Ravg[j]/=(double)n;
Lavgsqr[j]/=(double)n;
Ravgsqr[j]/=(double)n;
}
here T_SUP=96, n=995.
It is a simple code, but the results i got had errors.
part of the results is like this :
1.65927877636165E+02 2.76070821725818E+04
1.26235062991787E+02 1.59824584847397E+04
9.61712581846613E+01 9.27823852576923E+03
7.33170496897583E+01 5.39356871353874E+03
5.59046671535362E+01 3.13669103534178E+03
4.26358025373460E+01 1.82497347823173E+03
3.25324479306918E+01 1.06288515111161E+03
2.48371361006079E+01 6.19748708397692E+02
NAN 3.61295254889204E+02
1.44695804797956E+01 2.10526428400531E+02
1.10431099231493E+01 1.22679873320664E+02
8.42562467527492E+00 7.14489220048574E+01
See NAN here? It happens only at j=18 and j=90 from 'Lavg' variable.
Lavgsqr, Ravg has no such error..
Of course I tried checking Lavg[i][18] but it was totally OK, and now I'm confused. I think that this code is symmetric for variables and indices so I wonder how can error like this occur. Can it be from floating point number operation?
I desperatly need help. Any suggestion for how this happened and how to solve it?
P.S. Solved. I simply didn't initialize the variables. Now I feel retarded..