OK. Ora è chiaro. I miei due centesimi:
- se le matrici che sono sempre e solamente 4 x 4 tienile in un array di 16 elementi ed accedi alla matrice tramite una macro (suppongo l'uso di C/C++) tipo GET(m, i, j) (hmm...forse questa è un po' una cazzata);
- crea a mano le permutazioni degli indici che ti servono per fare le rotazioni (per la rotazione di un passo in senso orario la permutazione è x = (12, 8, 4, 0, 13, 9, 5, 1, 14, 10, 6, 2, 15, 11, 7, 3). In pratica le permutazioni sono /hardwired/ nel codice.
- fai un solo loop e l'elemento in posizione i lo metti in posizione x_i;
- se usi gcc digli di sbrogliare i loop se possibile;

Rispondi quotando