Come si può ottimizzare la seguente porzione di codice C?
Il seguente codice calcola la trasposta delle matrici T1vec e T2vec e poi esegue la seguente operazione:
v={{T1vecT,0},{0, T2vecT}}*u
codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int u[5]={0, 0, 1, 1, 0};
double T1vec[3][3]={{-0.4787, 0.7923, -0.3783}, {-0.3296, 0.2372, 0.9139},{-0.8138, -0.5621, -0.1476}};
double T2vec[2][2]={{-0.8361, 0.5485}, {0.5485, 0.83061}};
double T1vecT[3][3], T2vecT[2][2];
double v[5]={0, 0, 0, 0, 0};
for(k=0; k<3; k++){
for(i=0; i<3; i++){
T1vecT[i][k]=T1vec[k][i];
}
}
for(k=0; k<2; k++){
for(i=0; i<2; i++){
T2vecT[i][k]=T2vec[k][i];
}
}
for(k=0; k<5; k++){
for(i=0; i<5; i++){
if(k<3 && i<3){
v[k]=v[k]+T1vecT[k][i]*u[i];
}
if(k>=3 && i>=3){
v[k]=v[k]+T2vecT[k-3][i-3]*u[i];
}
}
}