unsigned char *buf = new unsigned char[MAX_BUF_SIZE];
Raw pointer лучше не использовать для обладания памятью (на случай exception'a), лучше было бы так:
std::unique_ptr buf(new unsigned char[MAX_BUF_SIZE]);
Всё-таки, я считаю, лучше тогда уж писать на ассемблере или пользоваться библиотеками, на нем написанными. В примере с матрицами, скорее всего, лучший результат дал бы алгоритм Штрассена (но применительно к разностным уравнениям вопросов нет =)
Raw pointer лучше не использовать для обладания памятью (на случай exception'a), лучше было бы так:
std::unique_ptr buf(new unsigned char[MAX_BUF_SIZE]);