Con che compilatore/opzioni lo stai compilando? Visto che c'è molto calcolo in virgola mobile potrebbe beneficiare delle SSE...
Provato a cercare i colli di bottiglia con un profiler?
Inoltre, sei sicuro della misurazione del tempo? Una singola prova "a freddo" del codice non è significativa (cache fredda, branch predictor ancora non "istruito", ...) , dovresti ripetere il codice un tot di volte (ottenendo un tempo più grande e quindi meno affetto da errori di misura) e vedere quanto ci mette in tutto, eventualmente ripetendo la prova è confrontando poi media e deviazione standard con quella che viene da MatLab.