/* Simple implementation of pulse density modulation. Written to see * how many bytes and instructions and clock cycles it needs. */ #include inline static char pdm_next(int *error, int value, int scale) { *error -= value; if (*error < 0) { *error += scale; return 1; } else { *error -= scale; return 0; } } int main(int argc, char **argv) { int error = 0; char out[8192]; for (int ii = 0; ii < sizeof out; ii++) { out[ii] = pdm_next(&error, 79, 256); } write(1, out, sizeof out); return 0; }

AltStyle によって変換されたページ (->オリジナル) /