#include #include int main(int argc, char **argv) { FILE *in1 = stdin; FILE *in2 = fdopen(3, "r"); FILE *out = stdout; double m1, m2; if (argc == 1) { m1 = m2 = 0.5; } else if (argc == 3) { m1 = atof(argv[1]); m2 = atof(argv[2]); fprintf(stderr, "%f %f\n", m1, m2); } else { fprintf(stderr, "%s", "usage: rawadd [m1 m2] out\n"); exit(1); } while (1) { int c; short v1, v2, vo; c = fgetc(in1); if (c == EOF) break; v1 = c; c = fgetc(in1); if (c == EOF) break; v1 = v1 + (c << 8); c = fgetc(in2); if (c == EOF) break; v2 = c; c = fgetc(in2); if (c == EOF) break; v2 = v2 + (c << 8); vo = (short)(((double)v1)*m1 + ((double)v2)*m2); fprintf(out, "%c%c", vo & 0xFF, (vo>>8) & 0xFF); } exit(0); }