int main(int argc, char **argv) { int fprd = FPERIOD, iprd = IPERIOD, i, j, seed = SEED; long next = SEED; FILE *fp = stdin; double x, p1, p2, inc, pc; Boolean gauss = GAUSS; if ((cmnd = strrchr(argv[0], '/')) == NULL) cmnd = argv[0]; else cmnd++; while (--argc) if (**++argv == '-') { switch (*(*argv + 1)) { case 'p': fprd = atoi(*++argv); --argc; break; case 'i': iprd = atoi(*++argv); --argc; break; case 'n': gauss = TR; break; case 's': seed = atoi(*++argv); --argc; break; case 'h': usage(0); default: fprintf(stderr, "%s : Invalid option '%c'!\n", cmnd, *(*argv + 1)); usage(1); } } else fp = getfp(*argv, "rb"); if (gauss & (seed != 1)) next = srnd((unsigned int) seed); if (freadf(&p1, sizeof(p1), 1, fp) != 1) return (1); pc = p1; for (;;) { if (freadf(&p2, sizeof(p2), 1, fp) != 1) return (0); if ((p1 != 0.0) && (p2 != 0.0)) inc = (p2 - p1) * (double) iprd / (double) fprd; else { inc = 0.0; pc = p2; p1 = 0.0; } for (j = fprd, i = (iprd + 1) / 2; j--;) { if (p1 == 0.0) { if (gauss) x = (double) nrandom(&next); else x = mseq(); } else { if ((pc += 1.0) >= p1) { x = sqrt(p1); pc = pc - p1; } else x = 0.0; } fwritef(&x, sizeof(x), 1, stdout); if (!--i) { p1 += inc; i = iprd; } } p1 = p2; } return 0; }
int main(int argc, char **argv) { int l = LENG, normal = NORMAL; double zero, pulse, period = PERIOD, i; if ((cmnd = strrchr(argv[0], '/')) == NULL) cmnd = argv[0]; else cmnd++; while (--argc) if (**++argv == '-') { switch (*(*argv + 1)) { case 'l': l = atoi(*++argv); --argc; break; case 'p': period = atof(*++argv); --argc; break; case 'n': normal = atoi(*++argv); --argc; break; case 'h': usage(0); default: fprintf(stderr, "%s : Invalid option '%c'!\n", cmnd, *(*argv + 1)); usage(1); } } switch (normal) { case 0: pulse = 1; break; case 1: pulse = sqrt(period); break; case 2: pulse = period; break; } zero = 0.0; i = 0.5; if (period >= 1.0) while (l--) if (--i >= 0.0) fwritef(&zero, sizeof(zero), 1, stdout); else { i += period; fwritef(&pulse, sizeof(pulse), 1, stdout); } else if (period != 0.0) { fprintf(stderr, "-p : frame period must be 0.0 or more than 1.0!\n"); usage(1); } else while (l--) { pulse = mseq(); fwritef(&pulse, sizeof(pulse), 1, stdout); } return (0); }