jbjebi

10-22-2011, 06: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..