int main (int argc, char **argv) { Prop **diff; real *tVal; int j, k, n, nData, nDataSkip, nv, nValDiffuse; char buff[BUFF_LEN], *bp; FILE *fp; if ((fp = fopen (argv[1], "r")) == 0) { printf ("no file\n"); exit (0); } while (1) { bp = fgets (buff, BUFF_LEN, fp); if (*bp == CHAR_MINUS) break; NameVal (nValDiffuse); } AllocMem2 (diff, NDIFF, nValDiffuse, Prop); for (j = 0; j < NDIFF; j ++) { for (n = 0; n < nValDiffuse; n ++) PropZero (diff[j][n]); } AllocMem (tVal, nValDiffuse, real); nDataSkip = 3; nv = 0; nData = 0; while (1) { if (! (bp = fgets (buff, BUFF_LEN, fp))) break; if (! strncmp (bp, txtDiff, strlen (txtDiff))) { if (++ nData > nDataSkip) { ++ nv; for (n = 0; n < nValDiffuse; n ++) { bp = fgets (buff, BUFF_LEN, fp); tVal[n] = strtod (bp, &bp); for (j = 0; j < NDIFF; j ++) { diff[j][n].val = strtod (bp, &bp); PropAccum (diff[j][n]); } } } } } fclose (fp); printf ("%d\n", nv); for (n = 0; n < nValDiffuse; n ++) { printf ("%9.4f", tVal[n]); for (j = 0; j < NDIFF; j ++) { PropAvg (diff[j][n], nv); printf (" %9.4f %9.4f", PropEst (diff[j][n])); } printf ("\n"); } }
int main (int argc, char **argv) { real **sumAcf, **sumAcfSq, *valAcf[3], intAcfSum[3], intAcfSumSq[3], intAcfTrunc[3], intAcfTruncSq[3], deltaT, fac, x, w; int nValAcf, k, j, n, nSet, nValInt, stepAcf; char *bp, buff[BUFF_LEN]; FILE *fp; nValInt = 280; if ((fp = fopen (argv[1], "r")) == 0) { printf ("no file\n"); exit (0); } while (1) { bp = fgets (buff, BUFF_LEN, fp); if (*bp == CHAR_MINUS) break; NameVal (deltaT); NameVal (nValAcf); NameVal (stepAcf); } AllocMem2 (sumAcf, 3, nValAcf, real); AllocMem2 (sumAcfSq, 3, nValAcf, real); for (j = 0; j < 3; j ++) { for (n = 0; n < nValAcf; n ++) sumAcf[j][n] = sumAcfSq[j][n] = 0.; intAcfSum[j] = intAcfSumSq[j] = 0.; intAcfTrunc[j] = intAcfTruncSq[j] = 0.; } for (j = 0; j < 3; j ++) AllocMem (valAcf[j], nValAcf, real); nSet = 0; while (1) { if (! (bp = fgets (buff, BUFF_LEN, fp))) break; if (! strncmp (bp, txtAcf, strlen (txtAcf))) { ++ nSet; for (n = 0; n < nValAcf; n ++) { bp = fgets (buff, BUFF_LEN, fp); x = strtod (bp, &bp); for (j = 0; j < 3; j ++) { w = strtod (bp, &bp); valAcf[j][n] = w; sumAcf[j][n] += w; sumAcfSq[j][n] += Sqr (w); } } bp = fgets (buff, BUFF_LEN, fp); bp += strlen (txtintAcf); for (j = 0; j < 3; j ++) { w = strtod (bp, &bp); intAcfSum[j] += w; intAcfSumSq[j] += Sqr (w); } for (j = 0; j < 3; j ++) { w = Integrate (valAcf[j], nValInt); intAcfTrunc[j] += w; intAcfTruncSq[j] += Sqr (w); } } } fclose (fp); printf ("%d\n", nSet); for (j = 0; j < 3; j ++) { for (n = 0; n < nValAcf; n ++) { sumAcf[j][n] /= nSet; sumAcfSq[j][n] = sqrt (sumAcfSq[j][n] / nSet - Sqr (sumAcf[j][n])); } } for (j = 0; j < 3; j ++) { intAcfSum[j] /= nSet; intAcfSumSq[j] = sqrt (intAcfSumSq[j] / nSet - Sqr (intAcfSum[j])); printf ("%9.4f %9.4f %9.4f\n", intAcfSum[j], intAcfSumSq[j], intAcfSumSq[j] / intAcfSum[j]); } for (j = 0; j < 3; j ++) { intAcfTrunc[j] /= nSet; intAcfTruncSq[j] = sqrt (intAcfTruncSq[j] / nSet - Sqr (intAcfTrunc[j])); fac = intAcfSum[j] / Integrate (sumAcf[j], nValAcf); intAcfTrunc[j] *= fac; intAcfTruncSq[j] *= fac; } printf ("%d\n", nValInt); for (j = 0; j < 3; j ++) { printf ("%9.4f %9.4f %9.4f\n", intAcfTrunc[j], intAcfTruncSq[j], intAcfTruncSq[j] / intAcfTrunc[j]); } for (n = 0; n < nValAcf; n ++) { x = n * stepAcf * deltaT; printf ("%8.4f", x); for (j = 0; j < 3; j ++) printf (" %8.4f %8.4f", sumAcf[j][n], sumAcfSq[j][n]); printf ("\n"); } }
int main (int argc, char **argv) { Cmplx *work; real *corrSum[3], *corrSumSq[3], damp, deltaT, deltaTCorr, omegaMax, tMax, w, x; int doFourier, doWindow, j, k, n, nData, nFunCorr, nSet, nSetSkip, nv, nValCorr, stepCorr; char *bp, *fName, buff[BUFF_LEN]; FILE *fp; n = 1; if (-- argc < 1 || ! strcmp (argv[1], "-h")) PrintHelp (argv[0]); doFourier = 1; doWindow = 0; nSetSkip = 1; while (-- argc >= 0) { if (! strcmp (argv[n], "-t")) doFourier = 0; else if (! strcmp (argv[n], "-w")) doWindow = 1; else if (! strcmp (argv[n], "-s")) nSetSkip = atoi (argv[n] + 2); else { fName = argv[n]; break; } ++ n; } if (argc > 0) PrintHelp (argv[0]); omegaMax = 10.; tMax = 5.; if ((fp = fopen (fName, "r")) == 0) { printf ("no file\n"); exit (0); } while (1) { bp = fgets (buff, BUFF_LEN, fp); if (*bp == CHAR_MINUS) break; NameVal (deltaT); NameVal (nFunCorr); NameVal (nValCorr); NameVal (stepCorr); } deltaTCorr = stepCorr * deltaT; for (j = 0; j < 3; j ++) { AllocMem (corrSum[j], nFunCorr * nValCorr, real); AllocMem (corrSumSq[j], nFunCorr * nValCorr, real); for (n = 0; n < nFunCorr * nValCorr; n ++) corrSum[j][n] = corrSumSq[j][n] = 0.; } AllocMem (work, 2 * (nValCorr - 1), Cmplx); nData = 0; nSet = 0; while (1) { if (! (bp = fgets (buff, BUFF_LEN, fp))) break; if (! strncmp (bp, txtCorr, strlen (txtCorr))) { ++ nSet; if (nSet < nSetSkip) continue; ++ nData; for (j = 0; j < 3; j ++) { bp = fgets (buff, BUFF_LEN, fp); for (n = 0; n < nValCorr; n ++) { bp = fgets (buff, BUFF_LEN, fp); w = strtod (bp, &bp); for (k = 0; k < nFunCorr; k ++) { w = strtod (bp, &bp); corrSum[j][k * nValCorr + n] += w; corrSumSq[j][k * nValCorr + n] += Sqr (w); } } } } } fclose (fp); printf ("%d\n", nData); for (j = 0; j < 3; j ++) { for (n = 0; n < nFunCorr * nValCorr; n ++) { corrSum[j][n] /= nData; corrSumSq[j][n] = sqrt (corrSumSq[j][n] / nData - Sqr (corrSum[j][n])); } } if (doFourier) { for (j = 0; j < 3; j ++) { for (k = 0; k < nFunCorr; k ++) { for (n = 0; n < nValCorr; n ++) { if (doWindow) damp = (nValCorr - n) / (nValCorr + 0.5); else damp = 1.; CSet (work[n], corrSum[j][k * nValCorr + n] * damp, 0.); } for (n = nValCorr; n < 2 * (nValCorr - 1); n ++) work[n] = work[2 * (nValCorr - 1) - n]; FftComplex (work, 2 * nValCorr - 2); for (n = 0; n < nValCorr; n ++) corrSum[j][k * nValCorr + n] = work[n].R; } } omegaMax = Min (omegaMax, M_PI / deltaTCorr); nv = nValCorr * omegaMax / (M_PI / deltaTCorr); } else { for (j = 0; j < 3; j ++) { for (k = 0; k < nFunCorr; k ++) { for (n = 1; n < nValCorr; n ++) corrSum[j][k * nValCorr + n] /= corrSum[j][k * nValCorr]; corrSum[j][k * nValCorr] = 1.; } } tMax = Min (tMax, (nValCorr - 1) * deltaTCorr); nv = nValCorr * tMax / ((nValCorr - 1) * deltaTCorr); } for (j = 0; j < 3; j ++) { printf ("%s\n", header[j]); for (n = 0; n < nv; n ++) { if (doFourier) x = n * omegaMax / nv; else x = n * deltaTCorr; printf ("%9.4f", x); for (k = 0; k < nFunCorr; k ++) printf (" %9.4f", corrSum[j][k * nValCorr + n]); printf ("\n"); } } }