Te lo ridico ancora una volta non te la prendere.
Non compila (poi non so se funziona, non voglio neanche guardarlo ora)
per via di "a" e "b", non di mres. Mi riquoto:

Hai dichiarato a e b come array a 1 dimensione:
double a[] double b[] (o double *a,double *b, stessa cosa)

dopo di che li usi come se avessero 2 dimensioni:
a[i][k] b[k][j]