This is gen4.c in view mode; [Download] [Up]
#include <stdio.h> #include <carl/carl.h> #include <math.h> /* cc gen4.c -lfrm -lm -o gen4 */ # define SIZE 1024 main(narg, argv) int narg; char *argv[]; { float tcoef[SIZE], vcoef[SIZE], alpha[SIZE], factor, *f, *ff, scale = 0.0; float expr(); extern int exprerr; int i, j, seglen, length, nc = 0, closed = 1; if (narg < 7 || *argv[1] != '-' || *(argv[1] + 1) != 'L') { fprintf(stderr, "Usage: gen4 -Llength t1 v1 a1 ... tN vN\n"); exit(-1); } length = expr(argv[1] + 2); if (exprerr) { fprintf(stderr, "GEN4: Illegal length expression\n"); exit(-1); } j = 2; if (!strcmp(argv[2], "-o")) { closed = 0; j = 3; } if (*argv[2] == '-' && !(index("0123456789.", *(argv[2] + 1)))) j = 3; for (nc = 0; j < narg; nc++) { tcoef[nc] = expr(argv[j++]); if (exprerr) { fprintf(stderr, "GEN4: Illegal expression\n"); exit(-1); } if (nc > 0) { for (i = 0; i < nc; i++) if (tcoef[nc] <= tcoef[i]) { fprintf(stderr, "GEN4: Non-increasing T values\n"); exit(-1); } } vcoef[nc] = expr(argv[j++]); if (j < narg) alpha[nc] = expr(argv[j++]); if (exprerr) { fprintf(stderr, "GEN4: Illegal expression\n"); exit(-1); } if (fabs(vcoef[nc]) > scale) scale = fabs(vcoef[nc]); } for (i = 0; i < nc; i++) tcoef[i] *= (float) (length - closed) / tcoef[nc - 1]; if (scale == 0.0) { fprintf(stderr, "GEN4: all-zero f%d\n"); exit(-1); } for ( ff = f = (float *) malloc(length * sizeof(float)), i = 0; i < nc - 1; f += seglen - 1, i++) { seglen = floor(tcoef[i + 1] +.5) - floor(tcoef[i] +.5) + 1; trans(vcoef[i], alpha[i], vcoef[i + 1], seglen, f); } if (isatty(1)) { for (i = 0; i < length; i++) printf("%f\n", *(ff + i)); } else { for (i = 0; i < length; i++) putfloat((ff + i)); } flushfloat(); exit(0); /* Return status of 0 if all went OK */ }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.