static void poll() { if( up_button ) up_pressed = true; else if( up_pressed ) { up_pressed = false; ++current_note_no; } if( down_button ) down_pressed = true; else if( down_pressed ) { down_pressed = false; --current_note_no; } gpos += 2.0f/5.0f; led1 = static_cast<float>( ( sint( gpos ) + 1 ) / 2 ); led2 = static_cast<float>( ( sint( gpos + gpos_diff ) + 1 ) / 2 ); led3 = static_cast<float>( ( sint( gpos + gpos_diff * 2 ) + 1 ) / 2 ); led4 = static_cast<float>( ( sint( gpos + gpos_diff * 3 ) + 1 ) / 2 ); }
int main(int argc, char **argv) { FILE *fin, *fou, *ftr, *fl; char *inputFile, *inputFileList, s[80]; int cnt, cnt1, cnt2, cnt3, numTok, numRuns; struct gebData ghdr; Mario *rawEvts, *evt; Event_Signal e; struct decomp_state *a; struct crys_intpts *x; sdiag *sd; preprocCnt pcnt; postprocCnt postCnt; int holenum, xtalnum; Basis_Point *b; char ch; int verboseFlag = 0, fileListFlag = 0, sintFlag = 0, testFlag = 0; int stat, numhdr = 0, numevt = 0, maxevt = 100, num, seg, i, j, k, l, m, n; char seglabel[] = {'n', 'l', 'r', 'u', 'd'}; struct option opts[] = {{"verbose", no_argument, 0, 'v'}, {"sint", no_argument, 0, 's'}, {"filename", required_argument, 0, 'f'}, {"numevts", required_argument, 0, 'n'}, {"filelist", required_argument, 0, 'l'}, {"debug", no_argument, 0, 'd'}, { 0, 0, 0, 0}}; struct { char *filename; int run; int seg; Mario *rawEvts; int numEvts; } runList[32]; struct config { int holenum; int xtalnum; char *basisName; char *detMapName; char *filterName; char *trGainName; char *xTalkParsName; } cfg = {109, 0, "../coinc/q4a8_basis_xt.dat", "../coinc/detmap_Q4pos4_CC09.txt", "../coinc/filter.txt", "../coinc/tr_gain_Q4pos4_CC09.txt", "../coinc/q4a8_xtalk_pars_in.txt"}; while ((ch = getopt_long(argc, argv, "vsf:l:n:t", opts, 0)) != -1) { switch(ch) { case 'v': verboseFlag = 1; fprintf(stdout, "I'm verbose ..\n"); break; case 's': sintFlag = 1; break; case 'f': inputFile = optarg; break; case 'l': inputFileList = optarg; fileListFlag = 1; break; case 'n': maxevt = atoi(optarg); break; case 't': testFlag = 1; break; default: fprintf(stderr, "usage: vegcat [-vf:l:n:]\n"); exit(1); } } printf("vegcat\n"); if (testFlag == 1) { fou = fopen("test1.csv", "w"); assert(fou != 0); fprintf(fou, "x0,y0,z0,dx,dy,dz\n"); fprintf(stdout, "basis test\n"); a = dl_decomp_init(cfg.basisName, 1); // 1 to suppress diag info if (a == 0) { fprintf(stderr, "decomp init failed!\n"); exit(1); } //(void) read_basis(cfg.basisName); cnt = 0, cnt1 = 0, cnt2 = 0; for (i = 0; i < MAX_SRAD; i++) { for (j = 0; j < MAX_SPHI; j++) { for (k = 0; k < MAX_SZZZ; k++) { if (grid_pos_lu[3][i][j][k] > 0) { b = basis + grid_pos_lu[3][i][j][k]; // convert b to event signal memset(&e, 0, sizeof(Event_Signal)); for (m = 0; m < 37; m++) { for (n = 0; n < 50; n++) { e.signal[m][n] = b->signal[m][n]; } } e.total_energy = 1000.; e.seg_energy[3] = 1000.; e.core_e[0] = e.core_e[1] = e.core_e[2] = e.core_e[3] = 1000.; x = dl_decomp(a, &e, &postCnt); if (x->num == 1) { fprintf(fou, "%f,%f,%f,%f,%f,%f\n", b->x, b->y, b->z, fabs(b->x - x->intpts[0].x), fabs(b->y - x->intpts[0].y), fabs(b->z - x->intpts[0].z)); cnt1++; } if (x->num == 2) { cnt2++; fprintf(stdout, "%f,%f,%f\n", b->x, b->y, b->z); } if (x->num == 3) { cnt3++; } //printf("cnt = %d, x->num = %d\n", cnt, x->num); cnt++; } } } } fprintf(stdout, "cnt = %d, cnt1 = %d, cnt2 = %d, cnt3 = %d\n", cnt, cnt1, cnt2, cnt3); exit(1); } for (i = 0; i < 32; i++) { runList[i].rawEvts = malloc(maxevt * sizeof(Mario)); runList[i].filename = malloc(80); runList[i].numEvts = 0; } if (fileListFlag == 1) { fl = fopen(inputFileList, "r"); if (fl == 0) { fprintf(stderr, "could not open file %s\n", inputFileList); exit(1);} cnt = 0; while (cnt < 32 && fgets(s, 80, fl) != 0) { numTok = sscanf(s, "%s %d %d", runList[cnt].filename, &runList[cnt].run, &runList[cnt].seg); if (numTok != 3) { fprintf(stderr, "wrong fmt - line %d, %s\n", cnt + 1, inputFileList); exit(1);} cnt++; } } else { strncpy(runList[0].filename, inputFile, 80); runList[0].run = 1, runList[0].seg = 15; // defaults cnt = 1; } numRuns = cnt; assert(( fou = fopen("out.csv", "w")) != 0); if (sintFlag == 1) { sint_init(cfg.basisName, cfg.trGainName); } else { /* std decomp init */ stat = startPreProcess(100, cfg.detMapName, cfg.filterName, cfg.trGainName, cfg.xTalkParsName); if (stat < 0) { fprintf(stderr, "startPreProcess failed!\n"); exit(1); } a = dl_decomp_init(cfg.basisName, 1); // 1 to suppress diag info if (a == 0) { fprintf(stderr, "decomp init failed!\n"); exit(1); } } for (i = 0; i < numRuns; i++) { fin = fopen(runList[i].filename, "r"); if (fin == 0) { fprintf(stderr, "could not open file %s .. skipping\n", inputFile); continue;} while ((runList[i].numEvts < maxevt) && (fread(&ghdr, sizeof(struct gebData), 1, fin) == 1)) { if (ghdr.type == 100) { num = fread(runList[i].rawEvts + runList[i].numEvts++, sizeof(Mario), 1, fin); assert(num == 1); } else { fseek(fin, ghdr.length, SEEK_CUR); } } fclose(fin); } ftr = fopen("tr.csv", "w"); if (ftr == 0) { fprintf(stderr, "could not open file tr.csv\n"); exit(1);} fprintf(ftr, "run,evt,seg,ch,val\n"); for (i = 0; i < numRuns; i++) { for (j = 0; j < runList[i].numEvts; j++) { evt = runList[i].rawEvts + j; // j'th evt in run i for (k = 0; k < 5; k++) { seg = (k == 0) ? runList[i].seg : neigh[runList[i].seg][k - 1]; for (l = 0; l < 300; l++) { fprintf(ftr, "%d,%d,%c,%d,%d\n", runList[i].run, j + 1, seglabel[k], l + 1, evt->wf[seg][l]); } } } } fclose(ftr); sd = calloc(1, sizeof(sdiag)); /* single interaction diagnositcs */ fprintf(fou, "run, evt, tled, int, seg, x, y, z, e\n"); for (i = 0; i < numRuns; i++) { rawEvts = runList[i].rawEvts; for (j = 0; j < runList[i].numEvts; j++) { if (sintFlag == 0) { stat = preProcessMario(rawEvts + j, &e, &pcnt); x = dl_decomp(a, &e, &postCnt); } else { x = sint(rawEvts + j, sd); exit(1); // hack } x->crystal_id = cfg.holenum * 4 + cfg.xtalnum; /* HLC -- Set crystal_id properly so later rotations, etc. make sense. */ for (k = 0; k < x->num; k++) { fprintf(fou, "%d, %d, %5.1f, %d, %d, %5.2f, %5.2f, %5.2f, %7.2f\n", runList[i].run, j + 1, x->cfd, k + 1, x->intpts[k].seg, x->intpts[k].x, x->intpts[k].y, x->intpts[k].z, x->intpts[k].e); } } fprintf(stdout, "%s, %d evts\n", runList[i].filename, runList[i].numEvts); } return 0; }
int main(void) { boost::scoped_ptr<int> sint(new int); *sint = 100; std::cout << *sint << std::endl; return EXIT_SUCCESS; }
/* Main program */ int MAIN__(void) { /* Initialized data */ static integer nd[10] = { 120,54,49,32,4,3,2 }; /* Format strings */ static char fmt_1001[] = "(\0020N\002,i5,\002 RFFTF \002,e10.3,\002 RFF" "TB \002,e10.3,\002 RFFTFB \002,e10.3,\002 SINT \002,e10.3," "\002 SINTFB \002,e10.3,\002 COST \002,e10.3/7x,\002 COSTFB " "\002,e10.3,\002 SINQF \002,e10.3,\002 SINQB \002,e10.3,\002 SI" "NQFB \002,e10.3,\002 COSQF \002,e10.3,\002 COSQB \002,e10.3/7x," "\002 COSQFB \002,e10.3,\002 DEZF \002,e10.3,\002 DEZB \002,e" "10.3,\002 DEZFB \002,e10.3,\002 CFFTF \002,e10.3,\002 CFFTB " " \002,e10.3/7x,\002 CFFTFB \002,e10.3)"; /* System generated locals */ integer i__1, i__2, i__3, i__4, i__5, i__6; doublereal d__1, d__2, d__3, d__4; doublecomplex z__1, z__2, z__3; /* Builtin functions */ double sqrt(doublereal), sin(doublereal), cos(doublereal); integer pow_ii(integer *, integer *); double atan(doublereal), z_abs(doublecomplex *); integer s_wsfe(cilist *), do_fio(integer *, char *, ftnlen), e_wsfe(void); /* Local variables */ doublereal a[100], b[100]; integer i__, j, k, n; doublereal w[2000], x[200], y[200], ah[100], bh[100], cf, fn, dt, pi; doublecomplex cx[200], cy[200]; doublereal xh[200]; integer nz, nm1, np1, ns2; doublereal arg, tfn, tpi; integer nns; doublereal sum, arg1, arg2; integer ns2m; doublereal sum1, sum2, dcfb; integer ifac[64], modn; doublereal rftb, rftf; extern /* Subroutine */ void cost(integer *, doublereal *, doublereal *, integer *), sint(integer *, doublereal *, doublereal *, integer * ); doublereal dezb1, dezf1, sqrt2; extern /* Subroutine */ void cfftb(integer *, doublecomplex *, doublereal *, integer *), cfftf(integer *, doublecomplex *, doublereal *, integer *); doublereal dezfb; extern /* Subroutine */ void cffti(integer *, doublereal *, integer *), rfftb(integer *, doublereal *, doublereal *, integer *); doublereal rftfb; extern /* Subroutine */ void rfftf(integer *, doublereal *, doublereal *, integer *), cosqb(integer *, doublereal *, doublereal *, integer *), rffti(integer *, doublereal *, integer *), cosqf(integer *, doublereal *, doublereal *, integer *), sinqb(integer *, doublereal *, doublereal *, integer *), cosqi(integer *, doublereal *, integer *), sinqf(integer *, doublereal *, doublereal *, integer *), costi(integer *, doublereal *, integer *); doublereal azero; extern /* Subroutine */ void sinqi(integer *, doublereal *, integer *), sinti(integer *, doublereal *, integer *); doublereal costt, sintt, dcfftb, dcfftf, cosqfb, costfb; extern /* Subroutine */ void ezfftb(integer *, doublereal *, doublereal *, doublereal *, doublereal *, doublereal *, integer *); doublereal sinqfb; extern /* Subroutine */ void ezfftf(integer *, doublereal *, doublereal *, doublereal *, doublereal *, doublereal *, integer *); doublereal sintfb; extern /* Subroutine */ void ezffti(integer *, doublereal *, integer *); doublereal azeroh, cosqbt, cosqft, sinqbt, sinqft; /* Fortran I/O blocks */ static cilist io___58 = { 0, 6, 0, fmt_1001, 0 }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* VERSION 4 APRIL 1985 */ /* A TEST DRIVER FOR */ /* A PACKAGE OF FORTRAN SUBPROGRAMS FOR THE FAST FOURIER */ /* TRANSFORM OF PERIODIC AND OTHER SYMMETRIC SEQUENCES */ /* BY */ /* PAUL N SWARZTRAUBER */ /* NATIONAL CENTER FOR ATMOSPHERIC RESEARCH BOULDER,COLORADO 80307 */ /* WHICH IS SPONSORED BY THE NATIONAL SCIENCE FOUNDATION */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* THIS PROGRAM TESTS THE PACKAGE OF FAST FOURIER */ /* TRANSFORMS FOR BOTH COMPLEX AND REAL PERIODIC SEQUENCES AND */ /* CERTIAN OTHER SYMMETRIC SEQUENCES THAT ARE LISTED BELOW. */ /* 1. RFFTI INITIALIZE RFFTF AND RFFTB */ /* 2. RFFTF FORWARD TRANSFORM OF A REAL PERIODIC SEQUENCE */ /* 3. RFFTB BACKWARD TRANSFORM OF A REAL COEFFICIENT ARRAY */ /* 4. EZFFTI INITIALIZE EZFFTF AND EZFFTB */ /* 5. EZFFTF A SIMPLIFIED REAL PERIODIC FORWARD TRANSFORM */ /* 6. EZFFTB A SIMPLIFIED REAL PERIODIC BACKWARD TRANSFORM */ /* 7. SINTI INITIALIZE SINT */ /* 8. SINT SINE TRANSFORM OF A REAL ODD SEQUENCE */ /* 9. COSTI INITIALIZE COST */ /* 10. COST COSINE TRANSFORM OF A REAL EVEN SEQUENCE */ /* 11. SINQI INITIALIZE SINQF AND SINQB */ /* 12. SINQF FORWARD SINE TRANSFORM WITH ODD WAVE NUMBERS */ /* 13. SINQB UNNORMALIZED INVERSE OF SINQF */ /* 14. COSQI INITIALIZE COSQF AND COSQB */ /* 15. COSQF FORWARD COSINE TRANSFORM WITH ODD WAVE NUMBERS */ /* 16. COSQB UNNORMALIZED INVERSE OF COSQF */ /* 17. CFFTI INITIALIZE CFFTF AND CFFTB */ /* 18. CFFTF FORWARD TRANSFORM OF A COMPLEX PERIODIC SEQUENCE */ /* 19. CFFTB UNNORMALIZED INVERSE OF CFFTF */ sqrt2 = sqrt(2.0); nns = 7; i__1 = nns; for (nz = 1; nz <= i__1; ++nz) { n = nd[nz - 1]; modn = n % 2; fn = (real) n; tfn = fn + fn; np1 = n + 1; nm1 = n - 1; i__2 = np1; for (j = 1; j <= i__2; ++j) { x[j - 1] = sin((real) j * sqrt2); y[j - 1] = x[j - 1]; xh[j - 1] = x[j - 1]; /* L101: */ } /* TEST SUBROUTINES RFFTI,RFFTF AND RFFTB */ rffti(&n, w, ifac); pi = 3.141592653589793238462643383279502884197169399375108209749445923; dt = (pi + pi) / fn; ns2 = (n + 1) / 2; if (ns2 < 2) { goto L104; } i__2 = ns2; for (k = 2; k <= i__2; ++k) { sum1 = 0.0; sum2 = 0.0; arg = (real) (k - 1) * dt; i__3 = n; for (i__ = 1; i__ <= i__3; ++i__) { arg1 = (real) (i__ - 1) * arg; sum1 += x[i__ - 1] * cos(arg1); sum2 += x[i__ - 1] * sin(arg1); /* L102: */ } y[(k << 1) - 3] = sum1; y[(k << 1) - 2] = -sum2; /* L103: */ } L104: sum1 = 0.0; sum2 = 0.0; i__2 = nm1; for (i__ = 1; i__ <= i__2; i__ += 2) { sum1 += x[i__ - 1]; sum2 += x[i__]; /* L105: */ } if (modn == 1) { sum1 += x[n - 1]; } y[0] = sum1 + sum2; if (modn == 0) { y[n - 1] = sum1 - sum2; } rfftf(&n, x, w, ifac); rftf = 0.0; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__2 = rftf, d__3 = (d__1 = x[i__ - 1] - y[i__ - 1], abs(d__1)); rftf = max(d__2,d__3); x[i__ - 1] = xh[i__ - 1]; /* L106: */ } rftf /= fn; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { sum = x[0] * 0.5; arg = (real) (i__ - 1) * dt; if (ns2 < 2) { goto L108; } i__3 = ns2; for (k = 2; k <= i__3; ++k) { arg1 = (real) (k - 1) * arg; sum = sum + x[(k << 1) - 3] * cos(arg1) - x[(k << 1) - 2] * sin(arg1); /* L107: */ } L108: if (modn == 0) { i__3 = i__ - 1; sum += (real) pow_ii(&c_n1, &i__3) * 0.5 * x[n - 1]; } y[i__ - 1] = sum + sum; /* L109: */ } rfftb(&n, x, w, ifac); rftb = 0.0; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__2 = rftb, d__3 = (d__1 = x[i__ - 1] - y[i__ - 1], abs(d__1)); rftb = max(d__2,d__3); x[i__ - 1] = xh[i__ - 1]; y[i__ - 1] = xh[i__ - 1]; /* L110: */ } rfftb(&n, y, w, ifac); rfftf(&n, y, w, ifac); cf = 1.0 / fn; rftfb = 0.0; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__2 = rftfb, d__3 = (d__1 = cf * y[i__ - 1] - x[i__ - 1], abs( d__1)); rftfb = max(d__2,d__3); /* L111: */ } /* TEST SUBROUTINES SINTI AND SINT */ dt = pi / fn; i__2 = nm1; for (i__ = 1; i__ <= i__2; ++i__) { x[i__ - 1] = xh[i__ - 1]; /* L112: */ } i__2 = nm1; for (i__ = 1; i__ <= i__2; ++i__) { y[i__ - 1] = 0.0; arg1 = (real) i__ * dt; i__3 = nm1; for (k = 1; k <= i__3; ++k) { y[i__ - 1] += x[k - 1] * sin((real) k * arg1); /* L113: */ } y[i__ - 1] += y[i__ - 1]; /* L114: */ } sinti(&nm1, w, ifac); sint(&nm1, x, w, ifac); cf = 0.5 / fn; sintt = 0.0; i__2 = nm1; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__2 = sintt, d__3 = (d__1 = x[i__ - 1] - y[i__ - 1], abs(d__1)); sintt = max(d__2,d__3); x[i__ - 1] = xh[i__ - 1]; y[i__ - 1] = x[i__ - 1]; /* L115: */ } sintt = cf * sintt; sint(&nm1, x, w, ifac); sint(&nm1, x, w, ifac); sintfb = 0.0; i__2 = nm1; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__2 = sintfb, d__3 = (d__1 = cf * x[i__ - 1] - y[i__ - 1], abs( d__1)); sintfb = max(d__2,d__3); /* L116: */ } /* TEST SUBROUTINES COSTI AND COST */ i__2 = np1; for (i__ = 1; i__ <= i__2; ++i__) { x[i__ - 1] = xh[i__ - 1]; /* L117: */ } i__2 = np1; for (i__ = 1; i__ <= i__2; ++i__) { i__3 = i__ + 1; y[i__ - 1] = (x[0] + (real) pow_ii(&c_n1, &i__3) * x[n]) * 0.5; arg = (real) (i__ - 1) * dt; i__3 = n; for (k = 2; k <= i__3; ++k) { y[i__ - 1] += x[k - 1] * cos((real) (k - 1) * arg); /* L118: */ } y[i__ - 1] += y[i__ - 1]; /* L119: */ } costi(&np1, w, ifac); cost(&np1, x, w, ifac); costt = 0.0; i__2 = np1; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__2 = costt, d__3 = (d__1 = x[i__ - 1] - y[i__ - 1], abs(d__1)); costt = max(d__2,d__3); x[i__ - 1] = xh[i__ - 1]; y[i__ - 1] = xh[i__ - 1]; /* L120: */ } costt = cf * costt; cost(&np1, x, w, ifac); cost(&np1, x, w, ifac); costfb = 0.0; i__2 = np1; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__2 = costfb, d__3 = (d__1 = cf * x[i__ - 1] - y[i__ - 1], abs( d__1)); costfb = max(d__2,d__3); /* L121: */ } /* TEST SUBROUTINES SINQI,SINQF AND SINQB */ cf = 0.25 / fn; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { y[i__ - 1] = xh[i__ - 1]; /* L122: */ } dt = pi / (fn + fn); i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { x[i__ - 1] = 0.0; arg = dt * (real) i__; i__3 = n; for (k = 1; k <= i__3; ++k) { x[i__ - 1] += y[k - 1] * sin((real) (k + k - 1) * arg); /* L123: */ } x[i__ - 1] *= 4.0; /* L124: */ } sinqi(&n, w, ifac); sinqb(&n, y, w, ifac); sinqbt = 0.0; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__2 = sinqbt, d__3 = (d__1 = y[i__ - 1] - x[i__ - 1], abs(d__1)); sinqbt = max(d__2,d__3); x[i__ - 1] = xh[i__ - 1]; /* L125: */ } sinqbt = cf * sinqbt; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { arg = (real) (i__ + i__ - 1) * dt; i__3 = i__ + 1; y[i__ - 1] = (real) pow_ii(&c_n1, &i__3) * 0.5 * x[n - 1]; i__3 = nm1; for (k = 1; k <= i__3; ++k) { y[i__ - 1] += x[k - 1] * sin((real) k * arg); /* L126: */ } y[i__ - 1] += y[i__ - 1]; /* L127: */ } sinqf(&n, x, w, ifac); sinqft = 0.0; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__2 = sinqft, d__3 = (d__1 = x[i__ - 1] - y[i__ - 1], abs(d__1)); sinqft = max(d__2,d__3); y[i__ - 1] = xh[i__ - 1]; x[i__ - 1] = xh[i__ - 1]; /* L128: */ } sinqf(&n, y, w, ifac); sinqb(&n, y, w, ifac); sinqfb = 0.0; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__2 = sinqfb, d__3 = (d__1 = cf * y[i__ - 1] - x[i__ - 1], abs( d__1)); sinqfb = max(d__2,d__3); /* L129: */ } /* TEST SUBROUTINES COSQI,COSQF AND COSQB */ i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { y[i__ - 1] = xh[i__ - 1]; /* L130: */ } i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { x[i__ - 1] = 0.0; arg = (real) (i__ - 1) * dt; i__3 = n; for (k = 1; k <= i__3; ++k) { x[i__ - 1] += y[k - 1] * cos((real) (k + k - 1) * arg); /* L131: */ } x[i__ - 1] *= 4.0; /* L132: */ } cosqi(&n, w, ifac); cosqb(&n, y, w, ifac); cosqbt = 0.0; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__2 = cosqbt, d__3 = (d__1 = x[i__ - 1] - y[i__ - 1], abs(d__1)); cosqbt = max(d__2,d__3); x[i__ - 1] = xh[i__ - 1]; /* L133: */ } cosqbt = cf * cosqbt; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { y[i__ - 1] = x[0] * 0.5; arg = (real) (i__ + i__ - 1) * dt; i__3 = n; for (k = 2; k <= i__3; ++k) { y[i__ - 1] += x[k - 1] * cos((real) (k - 1) * arg); /* L134: */ } y[i__ - 1] += y[i__ - 1]; /* L135: */ } cosqf(&n, x, w, ifac); cosqft = 0.0; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__2 = cosqft, d__3 = (d__1 = y[i__ - 1] - x[i__ - 1], abs(d__1)); cosqft = max(d__2,d__3); x[i__ - 1] = xh[i__ - 1]; y[i__ - 1] = xh[i__ - 1]; /* L136: */ } cosqft = cf * cosqft; cosqb(&n, x, w, ifac); cosqf(&n, x, w, ifac); cosqfb = 0.0; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__2 = cosqfb, d__3 = (d__1 = cf * x[i__ - 1] - y[i__ - 1], abs( d__1)); cosqfb = max(d__2,d__3); /* L137: */ } /* TEST PROGRAMS EZFFTI,EZFFTF,EZFFTB */ ezffti(&n, w, ifac); i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { x[i__ - 1] = xh[i__ - 1]; /* L138: */ } tpi = atan(1.0) * 8.0; dt = tpi / (real) n; ns2 = (n + 1) / 2; cf = 2.0 / (real) n; ns2m = ns2 - 1; if (ns2m <= 0) { goto L141; } i__2 = ns2m; for (k = 1; k <= i__2; ++k) { sum1 = 0.0; sum2 = 0.0; arg = (real) k * dt; i__3 = n; for (i__ = 1; i__ <= i__3; ++i__) { arg1 = (real) (i__ - 1) * arg; sum1 += x[i__ - 1] * cos(arg1); sum2 += x[i__ - 1] * sin(arg1); /* L139: */ } a[k - 1] = cf * sum1; b[k - 1] = cf * sum2; /* L140: */ } L141: nm1 = n - 1; sum1 = 0.0; sum2 = 0.0; i__2 = nm1; for (i__ = 1; i__ <= i__2; i__ += 2) { sum1 += x[i__ - 1]; sum2 += x[i__]; /* L142: */ } if (modn == 1) { sum1 += x[n - 1]; } azero = cf * 0.5 * (sum1 + sum2); if (modn == 0) { a[ns2 - 1] = cf * 0.5 * (sum1 - sum2); } ezfftf(&n, x, &azeroh, ah, bh, w, ifac); dezf1 = (d__1 = azeroh - azero, abs(d__1)); if (modn == 0) { /* Computing MAX */ d__2 = dezf1, d__3 = (d__1 = a[ns2 - 1] - ah[ns2 - 1], abs(d__1)); dezf1 = max(d__2,d__3); } if (ns2m <= 0) { goto L144; } i__2 = ns2m; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__3 = dezf1, d__4 = (d__1 = ah[i__ - 1] - a[i__ - 1], abs(d__1)), d__3 = max(d__3,d__4), d__4 = (d__2 = bh[i__ - 1] - b[ i__ - 1], abs(d__2)); dezf1 = max(d__3,d__4); /* L143: */ } L144: ns2 = n / 2; if (modn == 0) { b[ns2 - 1] = 0.0; } i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { sum = azero; arg1 = (real) (i__ - 1) * dt; i__3 = ns2; for (k = 1; k <= i__3; ++k) { arg2 = (real) k * arg1; sum = sum + a[k - 1] * cos(arg2) + b[k - 1] * sin(arg2); /* L145: */ } x[i__ - 1] = sum; /* L146: */ } ezfftb(&n, y, &azero, a, b, w, ifac); dezb1 = 0.0; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__2 = dezb1, d__3 = (d__1 = x[i__ - 1] - y[i__ - 1], abs(d__1)); dezb1 = max(d__2,d__3); x[i__ - 1] = xh[i__ - 1]; /* L147: */ } ezfftf(&n, x, &azero, a, b, w, ifac); ezfftb(&n, y, &azero, a, b, w, ifac); dezfb = 0.0; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ d__2 = dezfb, d__3 = (d__1 = x[i__ - 1] - y[i__ - 1], abs(d__1)); dezfb = max(d__2,d__3); /* L148: */ } /* TEST CFFTI,CFFTF,CFFTB */ i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { i__3 = i__ - 1; d__1 = cos(sqrt2 * (real) i__); d__2 = sin(sqrt2 * (real) (i__ * i__)); z__1.r = d__1, z__1.i = d__2; cx[i__3].r = z__1.r, cx[i__3].i = z__1.i; /* L149: */ } dt = (pi + pi) / fn; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { arg1 = -((real) (i__ - 1)) * dt; i__3 = i__ - 1; cy[i__3].r = 0.0, cy[i__3].i = 0.0; i__3 = n; for (k = 1; k <= i__3; ++k) { arg2 = (real) (k - 1) * arg1; i__4 = i__ - 1; i__5 = i__ - 1; d__1 = cos(arg2); d__2 = sin(arg2); z__3.r = d__1, z__3.i = d__2; i__6 = k - 1; z__2.r = z__3.r * cx[i__6].r - z__3.i * cx[i__6].i, z__2.i = z__3.r * cx[i__6].i + z__3.i * cx[i__6].r; z__1.r = cy[i__5].r + z__2.r, z__1.i = cy[i__5].i + z__2.i; cy[i__4].r = z__1.r, cy[i__4].i = z__1.i; /* L150: */ } /* L151: */ } cffti(&n, w, ifac); cfftf(&n, cx, w, ifac); dcfftf = 0.0; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ i__3 = i__ - 1; i__4 = i__ - 1; z__1.r = cx[i__3].r - cy[i__4].r, z__1.i = cx[i__3].i - cy[i__4] .i; d__1 = dcfftf, d__2 = z_abs(&z__1); dcfftf = max(d__1,d__2); i__3 = i__ - 1; i__4 = i__ - 1; z__1.r = cx[i__4].r / fn, z__1.i = cx[i__4].i / fn; cx[i__3].r = z__1.r, cx[i__3].i = z__1.i; /* L152: */ } dcfftf /= fn; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { arg1 = (real) (i__ - 1) * dt; i__3 = i__ - 1; cy[i__3].r = 0.0, cy[i__3].i = 0.0; i__3 = n; for (k = 1; k <= i__3; ++k) { arg2 = (real) (k - 1) * arg1; i__4 = i__ - 1; i__5 = i__ - 1; d__1 = cos(arg2); d__2 = sin(arg2); z__3.r = d__1, z__3.i = d__2; i__6 = k - 1; z__2.r = z__3.r * cx[i__6].r - z__3.i * cx[i__6].i, z__2.i = z__3.r * cx[i__6].i + z__3.i * cx[i__6].r; z__1.r = cy[i__5].r + z__2.r, z__1.i = cy[i__5].i + z__2.i; cy[i__4].r = z__1.r, cy[i__4].i = z__1.i; /* L153: */ } /* L154: */ } cfftb(&n, cx, w, ifac); dcfftb = 0.0; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ i__3 = i__ - 1; i__4 = i__ - 1; z__1.r = cx[i__3].r - cy[i__4].r, z__1.i = cx[i__3].i - cy[i__4] .i; d__1 = dcfftb, d__2 = z_abs(&z__1); dcfftb = max(d__1,d__2); i__3 = i__ - 1; i__4 = i__ - 1; cx[i__3].r = cy[i__4].r, cx[i__3].i = cy[i__4].i; /* L155: */ } cf = 1.0 / fn; cfftf(&n, cx, w, ifac); cfftb(&n, cx, w, ifac); dcfb = 0.0; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { /* Computing MAX */ i__3 = i__ - 1; z__2.r = cf * cx[i__3].r, z__2.i = cf * cx[i__3].i; i__4 = i__ - 1; z__1.r = z__2.r - cy[i__4].r, z__1.i = z__2.i - cy[i__4].i; d__1 = dcfb, d__2 = z_abs(&z__1); dcfb = max(d__1,d__2); /* L156: */ } s_wsfe(&io___58); do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer)); do_fio(&c__1, (char *)&rftf, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&rftb, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&rftfb, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&sintt, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&sintfb, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&costt, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&costfb, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&sinqft, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&sinqbt, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&sinqfb, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&cosqft, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&cosqbt, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&cosqfb, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&dezf1, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&dezb1, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&dezfb, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&dcfftf, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&dcfftb, (ftnlen)sizeof(doublereal)); do_fio(&c__1, (char *)&dcfb, (ftnlen)sizeof(doublereal)); e_wsfe(); /* L157: */ } return 0; } /* MAIN__ */
signed short ZString::word( bool *error, int base ) const { return sint( error, base ); }
bool save_ntf(const std::string& filename, float min_value, float max_value, int sizex, int sizey, const float * data) { fileh = fopen(filename.c_str(), "wb"); if (!fileh) return false; // be sure that this value fits with your platform! sint(0); // INTEL (little endian) = 0, MOTOROLA = 1 sint(0); // Reaktor 3.0 = 0 sint(1); // Undefined = 0, Float32Bits = 1 sint(sizex); // X size (horizontal) sint(sizey); // Y size (vertical) sfloat(min_value); // Min - Value Properties sfloat(max_value); // Max - Value Properties sfloat(0.01f); // Stepsize - Value Properties sfloat(0.0f); // Default - Value Properties sint(0); // Display Format - Value Properties // 0 = Numeric, 1 = Midi Note, 2 = % // unfortunately, these don't seem to be used by reaktor sint(0x000000); // DefaultValueColor sint(0x004000); // MinValueColor sint(0x80ffff); // MaxValueColor sint(0); // X-Units 0 = Index, 1 = [0...1], 2 = milliseconds, 3 = tempo ticks // the following values don't mean much for // the kind of table we produce. i just chose some arbitrary values. sfloat(44100.f); // float X-SamplesPerSecond sfloat(120.f); // float X-BPM sfloat(1.f); // float X-SamplesPerTick sint(1); // int X-TicksPerBeat sint(1); // int X-BeatsPerBar sfloat(0.f); // float X-Offset sfloat(1.f); // float X-CustomRange sfloat(1.f); // float X-CustomRatio sint(0); // int Y-Units sfloat(44100.f); // float Y-SamplesPerSecond sfloat(120.f); // float Y-BPM sfloat(1.f); // float Y-SamplesPerTick sint(1); // int Y-TicksPerBeat sint(1); // int Y-BeatsPerBar sfloat(0.f); // float Y-Offset sfloat(1.f); // float Y-CustomRange sfloat(1.f); // float Y-CustomRatio // write the table data for (int i=0; i<sizex*sizey; ++i) sfloat(data[i]); fclose(fileh); return true; }